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