圖解區塊鏈讀後整理
這本書非業配,只是單純在2、3年前因想知道區塊鏈是什麼買的,從2020下半年斷斷續續看到今天才整理完成。
只專注技術範圍的整理,未列入人物篇和應用篇。
----------------------------------------
Part 1 - 從以下角度看區塊鏈的特點:
1.帳本演變:
分散式帳本
記帳演變
會計:因應企業所有者與企業經營者因帳目產生的信任問題而生的職位
存在訊息不對稱及信用問題
比特幣的底層應用:被看作一個分散式共用帳本
=> 3個特點:1. 無限增加的巨型帳本 2. 加密且有順序的帳本 3. 去中心化(共同維護)
2.價值轉移:
網路無法傳遞貨幣,而區塊鏈是一種價值傳輸網路
一些只能轉移而不能分享的有價值訊息往往需要信用背書
目前的網際網路協定不支援價值轉移功能,因而目前的價值轉移往往不是直接傳輸,而是由一個中心花化的協力廠商做背書(涉及人的參與)
區塊鏈可構建一種純粹的點對點的價值轉移體系,在不需各節點互信的情況下,保證系統內資料記錄的完整性和安全性。
3.信用成本:
區塊鏈是比特幣金融系統中的核心技術,它的實質是一個不斷增加的分散式結算資料庫
區塊鏈用演算法:自動安全地交換資料,能實時自動撮合、強制執行,且成本很低。
數位化的訊息都可加入區塊鏈,只要能入鏈,訊息產權就可以明確
信任是建立在區塊鏈上的,所以公信力可被多方交叉驗證與監督
區塊鏈公信力特點:1. 區塊鏈是分散式的,在網路上有許多獨立節點,每個節點都有一份備份訊息。有授權的人可從任意節點下載全部訊息,且不可竄改
4.技術創新:
區塊鏈是比特幣的底層技術,可以說它是一種分散式資料存儲模式,也可以說它是儲存加密貨幣(例如比特幣)的交易記錄的公共帳本。記錄是加密的。
區塊鏈是為了滿足比特幣獨特的需求才被創造出來的。區塊鏈的產生是伴隨著比特幣而出現的
Part 2 - 解釋區塊鏈
1.比特幣基本原則:
一個純粹的點對點電子現金系統,中間不需透過任何金融機構
不需授信的協力廠商支援就能防止雙重支付
對全部交易加上時間戳,並併入一個不斷延展的基於雜湊演算法的工作量證明的鏈條作為交易記錄,且不可更改
最長的鏈條不僅將作為被觀察的事件序列的證明,且被視為來自CPU(中央處理器)的計算能力最大的池
這個系統本身需要的基礎設施非常少,節點可以隨時離開和重新加入網路
2.區塊鏈:
區塊鏈技術,又被稱為分散式帳本,每個節點都可顯示總帳,然後維護總帳,且不能竄改帳本
區塊鏈本質上是一個去中心化的分散式帳本,其本身是一系列使用密碼學而產生的互相關聯的資料塊,每一個資料塊中包含了多筆比特幣的網路交易有效確認的訊息
去中心化的系統:不需要銀行,也不需要支付寶。這個模型不需要信任關係和擁有公信力的組織
區塊鏈,其他規則用來相互制約:
Q: 憑什麼幫你記帳? A: 獎勵第一個聽到喊話並記錄在小本子上的人,就是「比特幣挖礦」的簡單說明
Q:分叉問題聽誰的? A: 誰長聽誰的。記帳規則變複雜,使每個人記帳時間變不同。
Q: 雙花問題:如何保證一個巴巴拉能量在實際的交易中只被支付了一次呢? A: 交易發生的一刻起,比特幣的交易資料就被蓋上時間戳;而當這筆交易資料被打包到一個區塊中後,就算完成一次確認。連續進行6次確認後,這筆交易就不可逆轉了。每一次的確認時間都需要一定時間,前一筆和後一筆交易同時得到確認幾乎是不可能的。區塊鏈的全網記帳需要在整個網路中達成共識,雙花問題無法產生。
3.區塊鏈的核心概念:
一、區塊:
為區塊鏈的基本結構單元,由包含元資料的區塊頭和包含交易資料的區塊主體構成。
區塊頭包含3組元資料:
用於連接前面的區塊、索引自父區塊雜湊值的資料
挖礦難度、Nonce(隨機數,用於工作量證明演算法的計數器)、時間戳
能夠總結並快速歸納校驗區塊中所有交易資料的Merkle(默克爾)樹根資料
區塊鏈系統大約每10分鐘會建立一個區塊,其中包含該段時間裡全網範圍內發生的所有交易。每個區塊中也包含前一個區塊的ID(識別碼),一直倒推形成一個完整的交易鏈條,全網形成一條唯一的主區塊鏈。
二、雜湊演算法:
為區塊鏈中保證交易訊息不被篡改的單向密碼機制。雜湊演算法接收一段明文後,以一種不可逆的方式將其轉化為一段較短、位數固定的散列資料。
2個特點:
加密過程不可逆,無法倒推
任何一個輸入訊息的變化,都必將導致最終輸出的散列資料的變化
區塊鏈中,通常用SHA-256(安全散列演算法)做區塊加密。這種演算法的輸入長度為256位,輸出的是一串長度為32位元組的隨機散列資料。
區塊鏈透過雜湊演算法對一個交易區塊中的交易訊息進行加密
區塊鏈的雜湊值能唯一且準確地標示一個區塊
區塊鏈中任意節點透過簡單的雜湊計算都可獲得這個區塊的雜湊值,計算出的雜湊值沒有變化就表示區塊中的訊息沒有被竄改
三、公鑰和私鑰:
俗稱’不對稱加密方式’,是對以前的’對稱加密方式’(利用使用者名稱與密碼)的加強
公鑰用來加密/驗章,是給大家用的;私鑰用來解密/簽章,由個人擁有
在比特幣系統中,私鑰本質上是32個位元組組成的數組,公鑰和位址的生成都依賴私鑰,有了私鑰就能生成公鑰和位址,就可花費對應位址上面的比特幣。私鑰花費比特幣的方式就是對這個私鑰所對應的未花費的交易進行簽名。
在區塊鏈中,使用公鑰和私鑰來標示身分。公鑰和私鑰還可以保證分散式網路點對點訊息傳遞的安全。
在區塊鏈的訊息傳遞中,訊息傳遞雙方的公鑰和私鑰的加密與解密往往是不成對出現的。
訊息發送者:用私鑰對訊息進行簽名,使用訊息接收方的公鑰對訊息加密。
訊息接收方:用訊息發送者的公鑰驗證訊息發送者的身分,使用私鑰對加密訊息解密。
四、時間戳:
區塊鏈中的時間戳從區塊生成的一刻起就存在於區塊之中,它對應的是每一次交易記錄的認證,證明交易記錄的真實性。
時間戳是直接寫在區塊鏈中的,而區塊鏈中已生成的區塊不可竄改。一旦竄改,生成雜湊值就會變化,變成一個無效的資料。
每一個時間戳會將前一個時間戳也納入其隨機雜湊值中。
五、Merkle樹結構:
區塊鏈利用Merkle樹的資料結構存放所有葉子節點的值,並以此為基礎生成一個統一雜湊值。
Merkle樹的葉子節點儲存的是資料訊息的雜湊值,非葉子的節點儲存的是對其下面所有葉子節點的組合進行雜湊計算後得出的雜湊值。
區塊中任意一個資料的變更都會導致Merkle樹結構發生變化。交易訊息驗證比對上,Merkle樹結構能大大減少資料的計算量,因只需驗證Merkle樹結構生成的統一雜湊值就可以了。
4.比特幣的工作流程:
區塊鏈中的第一個區塊,也就是「創世區塊」。
創世區塊誕生後,比特幣使用者透過不斷地「做題」,即透過計算尋找滿足特定SHA-256雜湊值對應的數值解。這個過程就是比特幣中的「挖礦」。
當任意一個使用者優先計算出符合要求的數值解時,就會在全網範圍內廣播,而網路中的其他節點收到這條訊息會進行驗證,若通過驗證,其他節點就會放棄計算,並將新建立的區塊加到前一個區塊的後面。
區塊含:
區塊頭:
鏈接到前面的區塊,並且為區塊鏈提供完整性。
含:雜湊值、目標數、隨機數、Merkle樹根。
區塊主體:包含區塊創建過程中的比特幣交易記錄。
挖礦:為了創建一個新的區塊,礦工必須找到滿足特定要求的SHA-256雜湊值。
雜湊值要求:
包括前一個區塊頭的雜湊值
小於或等於目標數
包括一個稱為隨機數的數字
包括所有交易的樹根
目標數:不管有多少計算能力或礦工,都保持每10分鐘創造一個區塊。
Nonce數:用於工作量證明演算法的計數器。
Merkle樹根數據:它能夠總結區塊中的所有交易並快入歸納和校驗大規模數據的完整性。
不斷重複過程中,新的區塊不斷地生成、驗證,最終形成一個主鏈。同時,雜湊演算法的難度也會調整,以此控制使用者們解出資料所用的時間。
在比特幣實際交易過程中,假設使用者A和B之間要完成一個交易,包含這筆交易的區塊向區塊鏈中所有使用者發布廣播,全網使用者通過驗證雜湊值確認這筆交易是否有效,一旦被認定有效,這個區塊會被加蓋時間戳,然後添加到區塊鏈主鏈上。
區塊鏈的本質是一個互相驗證的公開記帳系統。這個系統所做的事情,就是記錄所有帳戶發生的所有交易。每個人手上都有一份完整的帳本。所有資料公開透明,任何人都可以去查看它的原始碼。
5.區塊鏈的工作原理:
假設A和B之間要發起一筆交易。A先發起一個請求:我要建立一個新的區塊(這筆交易在網路上以”區塊”作為代表),這區塊會被廣播給網路裡的所有使用者。所有使用者驗證同意後該區塊就被添加到主鏈上。這條鏈上擁有永久和透明可查的交易記錄。全球一本帳,每個人都可尋找。
區塊鏈技術實際上是一個分散式資料庫,由所有節點共同維護、共同記帳的。所有的單一節點都無法竄改它。
如果想竄改一個記錄,需要同時控制整個網路超過51%的節點或計算能力才可以,而區塊鏈中的節點無限多且無時無刻都在增加新的節點,基本上是不可能完成的事情。
6.區塊鏈的四大特點:
1.去中心化:任意節點停止工作都不會影響系統整體的運作。
2.去信任:所有節點之間無須信任也可進行交易,因資料庫和整個系統的運作是公開透明的。
3.集體維護:系統由其中具有維護功能的所有節點共同維護的,系統中所有人共同參與維護工作。
4.可靠的資料庫:系統中每一個節點都擁有最新的完整資料庫複製,修改單個節點的資料庫是無效的,因系統會自動比較,認為最多次出現的相同資料記錄為真。
Part 3 - 比特幣分叉
1.不同的理念催生出多種擴容方案,各個方案間無法統一,於是比特幣分叉了。
2.硬分叉和軟分叉:
簡單說就是相容性的不同,軟分叉是暫時的,硬分叉是永久的。
硬分叉定義:指比特幣的區塊格式或交易格式(這就是廣泛流傳的「共識」)發生改變時,未升級的節點拒絕驗證已經升級的節點產生出的區塊,不過已經升級的節點可以驗證未升級節點產生出的區塊,然後大家各自延續自己認為正確的鏈,所以分成兩個鏈。
硬分叉特點:
1.沒有向前相容性
2.在區塊鏈層面會有分叉的兩條鏈
3.需在某個時間點全部同意分叉升級,不同意的將會進入舊鏈
軟分叉定義:指比特幣交易的資料結構發生改變時,未升級的節點可以驗證已經升級的節點產生出的區塊,且已經升級的節點也可以驗證未升級的節點產生的區塊。
軟分叉特點:
1.有較好的相容性,之前版本的部分功能可用,可不升級
2.在區塊鏈層面沒有分叉的鏈,只是組成鏈的區塊有新區塊和舊區塊之分
3.相當長的時間裡,可允許不進行升級
Part 4 - 區塊鏈的模型架構
1.區塊鏈基礎架構分為6層:資料層、網路層、共識層、激勵層、合約層、應用層。每層分別完成一項核心功能,各層之間互相配合,實現一個去中心化的信任機制。
1.資料層:
主要描述區塊鏈技術的物理形式。
首先建立的一個起始節點是「創世區塊」,之後在同樣規則下建立的規格相同的區塊透過一個鏈式的結構依次相連組成一條主鏈條。
每個區塊中也包含許多技術,如時間戳技術、雜湊函數。
2.網路層:
主要目的是實現區塊鏈網路中節點之間的訊息交流。
區塊鏈網路本質上是一個P2P(點對點)網路。每一個節點既接收訊息,也產生訊息。節點之間透過維護一個共同的區塊鏈來保持通信。
區塊鏈的網路中,每一個節點都可創造新的區塊,在新區塊被創造後會以廣播的形式通知其他節點,其他節點會對這個區塊進行驗證。
3.共識層:
能讓高度分散的節點在去中心化的系統中高校地針對區塊資料的有效性達成共識。
區塊鏈中比較常用的共識機制:工作量證明、權益證明、股份授權證明。
4.激勵層:
主要功能是提供一定的激勵措施,鼓勵節點參與區塊鏈的安全驗證工作。
以比特幣為例,獎勵機制有2種:在比特幣總量達到2100萬枚前,獎勵機制有2種,新區塊產生後系統獎勵的比特幣和每筆交易扣除的比特幣(手續費)。而當比特幣總量達到2100萬時,新產生的區塊將不再生成比特幣,這時獎勵機制主要是每筆交易扣除的手續費。
5.合約層:
主要是指各種腳本程式碼、演算法機制和智慧合約等。
以比特幣為例,比特幣是一種可編程的貨幣,合約層封裝的腳本中規定了比特幣的交易方式和過程中涉及的種種細節。
6.應用層:
封裝了區塊鏈的各種應用場景和案例。
Part 5 - 區塊鏈的基本類型:
1.公有鏈:
指全世界任何人都可讀取、任何人都能發送交易且交易能獲得有效確認,任何人都能參與共識過程的區塊鏈,共識過程決定哪個區塊可被添加到區塊鏈中。
特點:
1.保護使用者免受開發者的影響
2.讀取門檻低
3.所有資料預設公開
2.私有鏈:
指其寫入權限僅在一個組織手裡的區塊鏈,目的是對讀取權限或者對外開放權限進行限制。
特點:
1.交易速度非常快:私有鏈中少量的節點具有很高的信任度,並不需要每個節點都來驗證一個交易。
2.為隱私提供更好的保障
3.交易成本大幅降低甚至為零:私有鏈上可進行完全免費或者至少說是非常廉價的交易。如果一個實體機構控制和處理所有的交易,它就不再需要為工作收取費用。
4.有助於保護其基本的產品不被破壞:可保證既有利益,以致原有的生態體系不被破壞。
3.聯盟鏈:
指其共識過程受到預選節點控制的區塊鏈。
區塊鏈可能會允許每個人讀取,也可能會受限時於參與者走混合路線。
聯盟鏈可視為「部分去中心化」。
4.其他的說法:
區塊鏈分類中的其他幾種說法:許可鏈、混合鏈、複雜鏈。
許可鏈是指每個節點都需要許可才能加入的區塊鏈系統,私有鏈和聯盟鏈都屬於許可鏈
Part 6 - 區塊鏈的共識機制:
1.因為「類兩軍問題」和「拜占庭將軍問題」,需要達成共識。區塊鏈上的共識機制有多種,沒有一種共識機制是完美無缺的,同時也意味沒有一種共識機制是適合所有應用場景的。
2.常見的共識機制:工作量證明、權益證明、股份授權證明
3.選取其中較具特點的9種共識機制:
1.工作量證明(Proof of Work,簡稱PoW):
比特幣在區塊的生成過程中使用了PoW機制。
PoW依賴機器進行數學運算來獲取記帳權(新增區塊),資源消耗大、共識機制高、可監管性弱,同時每次達成共識需要全網共同參與運算。性能效率比較低,容錯性方面允許全網50%節點出錯。
2.權益證明(Proof of Stake,簡稱PoS):
PoS的主要理念是節點記帳權的獲得難度與節點持有的權益成反比,相比PoW,其在一定程度上減少了數學運算帶來的資源消耗,性能也得到了相應的提升,但依然是基於雜湊運算。
是PoW的一種升級。
這個系統中存在一個持幣人的集合,他們把手中的代幣放入PoS機制中,這樣他們就變成驗證者。PoS演算法在驗證者中隨機選取一個(選擇驗證者的權重依據他們投入的代幣量),給他權利產生下一個區塊。如果在一定時間內,這個驗證者沒有產生一個區塊,則選出第二個驗證者代替產生新區塊。與PoW一樣,PoS以最長的鏈為準。
3.股份授權證明(簡稱DPoS):
和PoS主要區別在節點選舉若干代理人,由代理人驗證和記帳,但其合規監管、性能、資源消耗和容錯性與PoS相似。
4.投注共識:
是乙太坊下一代的共識機制Casper引入的一個全新概念,屬於PoS。Casper的共識是按區塊達成的,而不是像PoS那樣按鏈達成。
5.瑞波共識機制:
瑞波共識演算法使一組節點能夠基於特殊節點列表形成共識。初始特殊節點列表就像一個俱樂部,要接納一個新成員,必須由該俱樂部51%的會員投票通過。
6.Pool驗證池:
基於傳統的分散式一致性技術以及資料驗證機制,Pool(聯營)驗證池是目前業界大範圍使用的共識機制。
7.實用拜占庭容錯:
此機制是一種採用「許可投票、少數服從多數」來選舉領導者並進行記帳的共識機制。每輪記帳都會由全網節點共同選舉領導者,允許33%的節點作惡,容錯性為33%。由於特別適合聯盟鏈的應用場景,實用拜占庭容錯機制及其改進演算法為目前使用最多的聯盟鏈共識演算法。
8.授權拜占庭容錯:
改進的拜占庭容錯演算法,使其能夠適用於區塊鏈系統。最大限度地確保系統的最終性,使區塊鏈能夠適用於真正的金融應用場景。
9.派克索斯演算法:
是一種傳統的分散式一致性演算法,是一種基於選舉領導者的共識機制。領導者節點擁有絕對權限。
留言
張貼留言