【笔记】区块链的系统架构、数据结构及运行机制
文章目錄
- 一、區塊鏈的系統框架
- 1.區塊鏈的系統架構與運行
- 2.數據層、網絡層與共識層
- 3.激勵層、合約層與應用層
- 二、區塊的概念和識別
- 1.區塊與區塊頭
- 2.區塊的識別
- 三、創世區塊與區塊的連接
- 1.創世區塊
- 2.區塊的連接
- 四、區塊鏈的數據結構
- 1.區塊鏈的結構基礎
- 2.哈希值、梅克爾根等數據及作用
- 3.難度確認、運行及其作用
- 4.時間戳、隨機數及其作用
- 五、區塊鏈的工作流程與機制
- 1.步驟與防止分叉
- 2.安全、透明與不可篡改的系統機制
- 六、從區塊鏈1.0到區塊鏈3.0的演化
- 1.區塊鏈的進化
- 2.區塊鏈1.0
- 3.區塊鏈2.0
- 4.區塊鏈3.0
一、區塊鏈的系統框架
1.區塊鏈的系統架構與運行
??區塊鏈的系統架構,主要是由數據層、網絡層與共識層構成的底層網絡,由數字貨幣、智能合約與其他“去中心化”組織等構成的應用層。下圖為區塊鏈的系統架構圖。
??區塊鏈是一個去中心的、分散式的網絡賬本,所以其系統架構也符合網絡的基本特點。該網絡賬本構成一個系統,該系統最底層、最基礎的是數據結構。這個結構就是將信息和數據采用一定的方式、格式組織起來,輸入到區塊鏈系統中并由其處理。當統一方式的數據輸入后,網絡層便開始連鏈接,在全網的節點之中進行廣播、驗證,然后在共識層中由全網達成共識而構建起區塊。所有區塊進行“組裝”,最終構建起各種系統產品的運行平臺,如公有鏈、私有鏈與聯盟鏈等。而數字貨幣、智能合約、去中心化組織等都是區塊鏈平臺上運行的產品。
??在區塊鏈的系統架構中,各個層次以交易為中心構建起一個完整的相互關聯的循環體系,這一循環模式是這樣的:
??首先,應用層的數字貨幣、智能合約等產品對于底層網絡來說,傳輸的全是數據,即應用層相當于數據層的數據輸入源。這些數據必須進入數據層,按照區塊鏈的格式進行封裝。
??其次,在數據封裝完成后,就進入分布式(P2P)網絡進行廣播,由全網節點通過一定機制進行確認。
??最后,當全網達成共識之后,區塊構建完成并連接到主鏈之上,完成一次完整交易的流程,并開始下一次交易的循環。
??這一循環過程,從技術角度講,區塊鏈中的區塊是一種記錄交易的數據結構,反映了一筆交易的資金流向。系統中已經達成交易的區塊連接在一起形成了一條主鏈,所有參與計算的節點都記錄了主鏈的信息,區塊所承載的任務數據具體包括:交易雙方私鑰、交易數量、電子貨幣數字簽名等。前一個區塊形成的散列用來將區塊連接起來,實現過往交易的順序排列。隨機數是交易達成的核心,所有“礦工”節點競爭計算隨機數,最快得到答案的節點生成一個新的區塊,并廣播到所有節點進行更新,如此完成一筆交易,然后開始新的循環。
2.數據層、網絡層與共識層
??數據層封裝了底層數據區塊的鏈式結構以及相關的非對稱公私鑰數據加密、時間戳等技術,這是整個區塊鏈技術中最底層的數據結構。
??網絡層包括分布式組網機制、數據傳播機制和數據驗證機制等,由于采用了完全的P2P組網技術,意味著區塊鏈具有自動組網功能。
??共識層主要包括封裝網絡節點的各類共識機制算法。共識機制算法是區塊領導核心技術,決定了到底有誰來記賬,而且記賬者選擇的方式將會影響整個系統的安全性和可靠性。知名的有**工作量證明機制(PoW)、權益證明機制(PoS)、委托權益證明機制(DPoS)**等。
3.激勵層、合約層與應用層
??激勵層將經濟因素集成到區塊鏈技術體系中,主要包括經濟激勵的發行機制和分配機制,該層主要出現在公有鏈、私有鏈中。激勵機制往往也是一種博弈機制,讓更多節點愿意遵守規則。
??合約層主要封裝各類腳本、算法和智能合約,是區塊鏈可編程特性的基礎。
??應用層封裝了區塊鏈的各種應用場景和案例。 在該模型中,基于時間戳的鏈式區塊結構、分布式節點共識機制、基于共識機制的經濟激勵和靈活可編程的智能合約是區塊鏈技術最具代表性的和創新點。
二、區塊的概念和識別
1.區塊與區塊頭
??區塊是區塊鏈的基本組成單元,它由一個包含元數據的區塊頭和緊跟其后的構成區塊主體的一系列交易組成。 區塊的基本數據結構如下表所示。
??區塊頭由三組區塊元數據組成。 第一組元數據引用父區塊哈希值的數據,這組元數據用于將該區塊與區塊鏈中前一區塊相連接。第二組元數據,即難度、時間戳和隨機數(Nonce),其與挖礦競爭相關。第三組元數據是梅克爾樹根,一種用來有效地總結區塊中所有交易的數據結構。區塊頭的數據結構如下表所示。
2.區塊的識別
??區塊可以通過兩種方式被識別:區塊哈希值或區塊高度。
??區塊主標識符是它的加密哈希值,通過安全散列算法-256(SHA-256)對區塊頭進行二次哈希計算而得到的數字指紋,所產生的“32字節”哈希值被稱為區塊哈希值。區塊哈希值可以唯一、明確地標識一個區塊,并且任何節點通過簡單地對區塊頭進行哈希計算都可以獨立地獲取該區塊哈希值。
??區塊哈希值可能會作為區塊元數據的一部分被存儲在一個獨立的數據庫表中,以便于索引以及更快地在在磁盤中檢索區塊。
??區塊在區塊鏈中的位置即區塊高度,區塊高度可以識別區塊。
??區塊高度和區塊哈希值不同之處在于,一個單一的區塊有一個固定、明確的區塊高度,但是兩個或兩個以上的區塊也可能有相同的區塊高度,并在區塊鏈里爭奪同一位置。一個區塊的區塊哈希值能唯一地識別一個特定的區塊,但一個區塊高度卻不一定能識別出唯一的區塊。
三、創世區塊與區塊的連接
1.創世區塊
??創世區塊是區塊鏈里面所有區塊的共同祖先,意味著從任一區塊循鏈向后回溯,最終都將到達創世區塊。 每一個節點都“知道”創世區塊的哈希值、結構、被創建的時間和里面的交易。
??因此,每個節點都把該區塊作為區塊鏈的首區塊,從而構建了一條安全的、可信的區塊鏈根,每一個節點都包含創世區塊,永遠不會被改變。
2.區塊的連接
??當某個節點接收到傳入區塊時,它會驗證這些區塊,然后鏈接到現有的區塊鏈上。為了建立這個鏈接,該節點將檢查傳入的區塊頭并尋找該區塊的“父區塊哈希值”。
??每個參與節點都可以保存整個區塊鏈的副本,只要有參與節點存在,區塊鏈數據就不會丟失。區塊鏈上的每個區塊都可以用來記錄貨幣、股權、債券、數字簽名、數字合約以及其他任何數字化內容。
四、區塊鏈的數據結構
1.區塊鏈的結構基礎
??首先,區塊鏈的數據結構是在SHA-256支持下實現的;其次,在區塊對交易封裝過程中,采用高效的梅克爾樹算法,一步一步地將繁雜的信息進行歸納和簡化;再次,為了保證區塊的順序鏈接,需要采用時間戳機制在區塊中寫入時間參數;最后,為了達成共識機制,并使全網參與的“挖礦”工作順利進行,系統在PoW共識機制下采用了難度目標和隨機數兩種設計,保證系統在一個可靠的區間內運轉。
2.哈希值、梅克爾根等數據及作用
??哈希算法將任意長度的二進制值映射為固定長度的較小二進制值,這個較小的二進制值稱為哈希值。一段明文哪怕只更改一個字母,都將產生不同的哈希值。
??哈希函數的單向、輸出數據長度固定等特征使它可以生成消息或者數據,而且哈希算法和哈希值一般用于快速查找和加密算法。
??哈希算法應用在區塊中,既減小了區塊存儲的數據量,也不影響對數據的鏈接訪問。
??每個數據區塊包含區塊頭和區塊體,區塊頭封裝了當前版本號、前一區塊哈希值、當前區塊PoW要求的隨機數(Nonce)、時間戳以及梅克爾根信息。區塊體包括當前去看經過驗證的、區塊創建過程中生成的所有交易記錄;這些記錄就是通過梅克爾樹的哈希過程生成唯一的梅克爾根后,并記入了區塊頭中。
??梅克爾根,是指梅克爾樹的根,因為梅克爾樹在計算的過程中主要用到哈希算法,或稱為梅克爾哈希樹。
3.難度確認、運行及其作用
??工作量證明機制是一個可以讓每個參與者參與交易驗證的方式,為形成一個多方共同維護并共享同一份記錄交易的賬本,一個基于零信任基礎、去中心化的P2P網絡系統。
??工作量證明是讓任一參與節點花費時間和運算資源來計算一組數學公式的結果,一旦這個結果被計算出來,其他參與節點也可用相關的數學公式去驗證這個值是否有效。進行PoW計算的過程也被形象地稱為“挖礦”,參與節點被成稱為“礦工”,計算過程如下:
??每個區塊的區塊頭包含許多固定值,只有隨機數值為隨機值,因此每個節點進行PoW計算時,通過不斷替換這個隨機值來讓這個區塊的區塊頭哈希值小于一個被設定好的難度目標值。當最接近難度目標值的哈希值產生后,該“礦工”可以向全網廣播,如果同意時間獲得超過51%節點的認可,意味著該“礦工”完成了一個新區塊,可以將其鏈接到區塊鏈上,其他“礦工”再以這一個區塊為父區塊進行下一個區塊的運算。
??區塊鏈中的難度值,是指節點要運算出低于難度目標值的哈希值,平均花費的時間,即平均要完成一次PoW計算所用的時間。
??比特幣的難度值是可以動態調整的,目前每產生2016個區塊會調整一次難度值,以每10分鐘產生一個區塊估算,大約每兩周會調整一次難度值。難度值的調整是由每個完整結點肚子自動發生的,每達到2016個區塊后,所有結點都會按統一的公式自動調整難度值。
- 新難度值公式:新難度值 = 舊難度值 x (20160分鐘 / 過去2016個區塊花費時長)
- 目標值(Target)的計算公式:目標值 = 最大目標值 / 難度值
??目標值的大小與難度值成反比。 比特幣工作量證明的完成,是以“礦工”計算出來的區塊哈希值小于目標值且最接近于目標值為判斷標準。
4.時間戳、隨機數及其作用
??時間戳,能表示一份數據在某個特定時間之前已經存在的、完整的、可驗證的數據,其通常是一個字符序列,能夠唯一地標識某一刻時間。 在區塊鏈中采用了“unix”時間計數方式,由時間戳服務器為每一個區塊加上的時間序列,記錄了該區塊的產生時間。
??比特幣挖礦的目標就是找到一個隨機數,使在這個值下的區塊頭的SHA-256哈希值輸出必須小于設定的難度值,“礦工”通過不停地變更區塊頭中的隨機數,并對每次變更后的區塊頭做雙重SHA-256運算,將結果只與當前網絡的目標值作對比,如果小于目標值,則工作量證明完成,區塊創建成功。
五、區塊鏈的工作流程與機制
1.步驟與防止分叉
??區塊鏈的工作步驟:
??全網廣播,實際上不需要讓全網所有節點收到,只要大部分節點收到即可。對于那些沒有收到的、丟失的區塊,區塊鏈系統是具有容錯能力的,如果某節點沒有收到特定區塊,當節點發現自己缺失區塊時,可以提出自己下載區塊的請求。
??節點始終都將最長的區塊鏈視為正確的鏈,并持續以此為基礎進行驗證和延長。 當其中一條被證實為較長,那么在另一條分支鏈條上工作的節點將轉換陣營,開始在較長的鏈條上工作,由此防止了區塊鏈的分叉。
2.安全、透明與不可篡改的系統機制
??時間戳把數據區塊的內容與數據區塊本身聯系起來,其重要意義在于其使數據區塊形成了新的結構。這個新的結構使各個區塊通過時間線有序地連接起來,形成了區塊的鏈條,因此才成為區塊鏈。
??通過給數據記錄印上時間標簽,使每一條數據記錄都具有唯一性,從而使數據記錄本身在區塊和區塊上的位置進行精確定位且可回溯,也給其他的校驗機制發揮協同作用提供了極大的便利性和確定性,使整個區塊鏈網絡能夠確定性地驗證某條數據記錄是否真實。
??區塊鏈網絡是一個公開的、難以攻破的、不可篡改數據記錄和制造虛假數據的誠實可信的系統。
??關鍵技術包括兩個方面:一是數據加密機制;二是共識算法。
??在數據加密機制中,一方面要有一個私鑰,另一方面要使用哈希算法等。
??共識算法,是區塊鏈中節點保持區塊數據一致、準確的基礎,主流共識算法包括工作量證明(PoW)、權益證明(PoS)、委托權益證明(DPoS)等。
六、從區塊鏈1.0到區塊鏈3.0的演化
1.區塊鏈的進化
??劃分方式1:
??區塊鏈1.0是以比特幣為代表的數字貨幣應用,其場景包括之父、流通等;區塊鏈2.0結合數字貨幣與智能合約,對金融領域的更廣泛場景和流程進行優化的應用;區塊鏈3.0則超出金融領域,旨在為各種行業提供去中心化解決方案。
??劃分方式2:
??區塊鏈1.0是可編程的數字貨幣;區塊鏈2.0是可編程的智能合約;區塊鏈3.0是可編程的社會治理。
2.區塊鏈1.0
??區塊鏈1.0主要是支撐虛擬貨幣的應用,包括轉賬、匯款、數字化支付以及加密貨幣,比特幣就是區塊鏈1.0的代表,也是最成功的數字貨幣。
??區塊鏈1.0的實質就是可編程的數字貨幣。 主要應用領域為“加密數字貨幣”,包括貨幣的發行機制、分配機制、幣值調節機制等。
??比特幣可視為區塊鏈首個在金融支付領域的應用,也是應用最廣泛的公有區塊鏈。
3.區塊鏈2.0
??區塊鏈2.0是可編程的智能合約。 主要應用領域為智能合約,智能合約能夠令各方自動執行操作,結果由軟件驗證,而非人類扮演中介。
??區塊鏈2.0的典型應用包括:(1)股權、債券合約;(2)證券與金融合約;(3)糊住保險合約;(4)權利登記、轉讓;(5)博彩;(6)防偽;(7)物聯網等。
4.區塊鏈3.0
??區塊鏈3.0可看作可編程的社會治理。
??總體有兩大類應用:
- 超越貨幣、經濟、市場的公正性應用。
- 超越貨幣、經濟、市場的效率和協作。
??區塊鏈3.0是價值互聯網的內核。區塊鏈能夠對每一個互聯網中代表價值的信息和字節進行產權確認、計量和存儲,從而實現資產在區塊鏈上可被追蹤、控制和交易的目的。
??價值互聯網的核心是由區塊鏈構造一個全球性的分布式記賬系統,它不僅能夠記錄金融業的交易,而且幾乎可以記錄任何有價值的能以嗲嗎形式進行表達的實物。實現信息的茲證明,不再依靠某個或第三人或機構獲得信任或建立信用;實現信息的共享,通過解決信任的問題來提高整個系統的運作效率。
??區塊鏈3.0的主要應用在社會治理領域,例如:
- 供應鏈自動化管理
- 自動化采購
- 智能化物聯網應用
- 產權登記
- 虛擬資產兌換、轉移
總結
以上是生活随笔為你收集整理的【笔记】区块链的系统架构、数据结构及运行机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雷达基本组成(以单基地脉冲雷达为例)
- 下一篇: windows 10 64bit下安装T