一文讀懂區(qū)塊鏈技術(shù)架構(gòu)-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)公司從2013年開始,先為陽東等服務(wù)建站,陽東等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為陽東企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

區(qū)塊鏈就是一個分布式、有著特定結(jié)構(gòu)的數(shù)據(jù)庫,是一個有序,每一個塊都連接到前一個塊的鏈表。也就是說,區(qū)塊按照插入的順序進行存儲,每個塊都與前一個塊相連。這樣的結(jié)構(gòu),能夠讓我們快速地獲取鏈上的最新塊,并且高效地通過哈希來檢索一個塊。

1、區(qū)塊鏈六層模型

一個標(biāo)準(zhǔn)的區(qū)塊鏈項目,應(yīng)該至少包含數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層這三層,應(yīng)用層、合約層、激勵層可以不包含。

以一個交易的例子來說明這模型所起的作用,假如說,我們有三個角色,
A有100btc,B有0btc,c是礦工,現(xiàn)在A給B轉(zhuǎn)10個btc,
1、A->B轉(zhuǎn)賬10比特幣,數(shù)據(jù)層
2、轉(zhuǎn)賬交易要確認(rèn),需要廣播出去,網(wǎng)絡(luò)層
3、把交易打包到區(qū)塊形成新的區(qū)塊,并且加入到區(qū)塊鏈,共識層
4、第三步的獎勵,激勵層
5、錢包,應(yīng)用層

區(qū)塊鏈開發(fā)語言

2、區(qū)塊鏈模型之?dāng)?shù)據(jù)層

1)數(shù)據(jù)層的特點是:

  • 不可篡改

  • 全備份

  • 完全平等(數(shù)據(jù)、權(quán)限、代碼)

要實現(xiàn)這樣的特點,依靠是鏈?zhǔn)浇Y(jié)構(gòu),如下

Prev Hash:父區(qū)塊哈希,特定值的掃描。比方說SHA-256下的隨機散列值,保證數(shù)據(jù)的可靠性和不可篡改。
Nonce:隨機數(shù),類似于區(qū)塊的隨機散列值

2)、數(shù)據(jù)層之?dāng)?shù)據(jù)結(jié)構(gòu):

  • 區(qū)塊:一種包含在公開賬簿(區(qū)塊鏈)里的聚合了交易信息的容器數(shù)據(jù)結(jié)構(gòu),包含區(qū)塊頭和區(qū)塊主體,區(qū)塊頭 + 區(qū)塊體 <= 1M (比特幣的擴容在討論中)

    • 區(qū)塊頭:80個字節(jié)

    • 區(qū)塊體:每個區(qū)塊包含2000個交易,平均每個交易至少是250字節(jié)。因此,包含完整交易的區(qū)塊比區(qū)塊頭的4千倍還要大。

  • 區(qū)塊頭
    區(qū)塊頭由三組區(qū)塊元數(shù)據(jù)(Blockmeta)組成
    一組元數(shù)據(jù):父區(qū)塊哈希值,用于該區(qū)塊與區(qū)塊鏈中的前一區(qū)塊相連接
    二組元數(shù)據(jù):Merkle根,一種用來有效地總結(jié)區(qū)塊中所有交易的數(shù)據(jù)結(jié)構(gòu)
    三組元數(shù)據(jù):難度目標(biāo),時間戳和Nonce與生產(chǎn)區(qū)塊相關(guān)

  • 區(qū)塊頭哈希值
    產(chǎn)生:通過SHA256算法對區(qū)塊頭進行二次哈希計算得到的數(shù)字指紋
    特點:是唯一,可計算
    存儲:不包含在區(qū)塊的數(shù)據(jù)結(jié)構(gòu)里,可存儲在獨立的數(shù)據(jù)庫表中

  • 區(qū)塊高度
    產(chǎn)生:節(jié)點在接受來自比特幣網(wǎng)絡(luò)的區(qū)塊時,動態(tài)地識別該區(qū)塊在網(wǎng)絡(luò)中的位置(區(qū)塊高度)
    特點:不是唯一的(短時間)
    存儲:不包含在區(qū)塊的數(shù)據(jù)結(jié)構(gòu)里,可存儲在獨立的數(shù)據(jù)庫表中

補充:1.安全散列算法(The Secure Hash Algorithm,SHA)美國國家安全局 (NSA) 設(shè)計,美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST) 發(fā)布的一系列密碼散列函數(shù)。

2.第一個區(qū)塊高度為0,2016年2月25號區(qū)塊高度大約為399,900

3)、數(shù)據(jù)層之區(qū)塊的鏈接

  • 1、比特幣的完整節(jié)點保存了區(qū)塊鏈從創(chuàng)世區(qū)塊起的一個本地副本,該區(qū)塊鏈的本地副本會不斷地更新用于擴展這個鏈條。

  • 2、一個節(jié)點從網(wǎng)絡(luò)接收傳入的區(qū)塊時,它會驗證這些區(qū)塊,然后鏈接到現(xiàn)有的區(qū)塊鏈上。

  • 3、對于一個新區(qū)塊,節(jié)點會在“父區(qū)塊哈希值”字段里找出包含它的父區(qū)塊的哈希值。

4)、數(shù)據(jù)層之創(chuàng)世區(qū)塊

  • 1、創(chuàng)世塊是指塊鏈的第一個塊,現(xiàn)在的比特幣客戶端版本把塊號定為0,以前的版本把該塊塊號定為1。

  • 2、交易的輸入:The Times 03/Jan/2009 Chancellor on brink of second bailout for banks。(翻譯:《泰晤士報》,2009年1月3日,財政大臣正站在第二輪救助銀行業(yè)的邊緣)。

  • 3、創(chuàng)世塊的收益不可能被花掉,因為創(chuàng)世塊是用代碼表示的(這個巧合可能是故意的),盡管如此,其50BTC收益還是被發(fā)送到地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。

備注:

難度公式:difficulty = difficulty_1_target / current_target。
difficulty_1壓縮值:0x1d00ffff
difficulty_1_target固定值:0xffff2^(8(0x1d-3)) -------這兩個值都是固定的

current(計算目標(biāo))壓縮值:0x1729d72d(10進制為38818029,如下圖中的計算目標(biāo))
current(計算目標(biāo))固定值:0x29d72d2^(8(0x17-3))

難度系數(shù)difficulty= 0xffff2^(8(0x1d-3)) / 0x29d72d2^(8(0x17-3))
即,計算目標(biāo)越小,難度系數(shù)越高

比特幣區(qū)塊鏈瀏覽器 https://blockchain.info/zh-cn/

5)、數(shù)據(jù)層之時間戳

時間戳,指的是各個節(jié)點本地的時間戳

  • 區(qū)塊產(chǎn)生頻率:10 分鐘

  • 區(qū)塊拒絕條件:

    • 上限 > 前7個塊的時間戳的中位數(shù)

    • 下限 < 系統(tǒng)平均時間之后2小時

6)、數(shù)據(jù)層之交易記錄

7)、數(shù)據(jù)層之私鑰,公鑰,錢包地址

比特幣系統(tǒng)使用了橢圓曲線簽名算法,算法的私鑰由32個字節(jié)隨機數(shù)組成,通過私鑰可以計算出公鑰,公鑰經(jīng)過一系列哈希算法和編碼算法得到比特幣地址,地址也可以理解為公鑰的摘要(hash)。

8)、數(shù)據(jù)層之記賬原理

已知:發(fā)送方(張三 公鑰地址):19anBP……iPitVr
接收方(李四 公鑰地址):1Eu8Uk…….Xy7i2B
金額:10 BTC

9)、數(shù)據(jù)層之交易簽名,校驗流程

一個廣播出去的區(qū)塊交易數(shù)據(jù)包含三部分,

  • 原始數(shù)據(jù),包含轉(zhuǎn)賬金額和對方錢包地址

  • 簽名,使用轉(zhuǎn)賬人私鑰對原始數(shù)據(jù)進行簽名

  • 公鑰,轉(zhuǎn)賬人公鑰(公鑰是根據(jù)私鑰產(chǎn)生的,可以私鑰簽名的數(shù)據(jù)進行驗簽)

10)、數(shù)據(jù)層之非對稱加密算法

在“加密”和“解密”的過程中分別使用兩個密碼

  • 私鑰:是信息擁有者才知道的,可以加密信息或者解密公鑰數(shù)據(jù)(信息的安全性)

  • 公鑰:是公開全網(wǎng)可見的,用公鑰來驗證信息,加密數(shù)據(jù)(信息的真實性);
    非對稱加密橢圓曲線加密算法(ECC)>secp256k1

11)、數(shù)據(jù)層之Merkle樹

Merkle 樹是一種哈希二叉樹,用于快速遞歸和校驗大規(guī)模數(shù)據(jù)完整性,是一種平衡樹(如果是奇數(shù)個交易,則多余的那個自己復(fù)制自己)

  • 每個區(qū)塊都包括了產(chǎn)生于該區(qū)塊的所有交易,并且以Merkle 樹表示

  • H(A)=SHA256(SHA256(交易A))

  • H(AB)=SHA256(SHA256(H(A)+H(B)))

  • 為了證明區(qū)塊中存在某個特定的交易,只需要計算log2(N)個哈希,16筆交易可以由4個哈希+Merkle樹根來證明了,65535交易,只需16個哈希

SPV : 簡單支付驗證,一個節(jié)點只需要僅下載區(qū)塊頭(80字節(jié))+Merkle路徑就能證明一筆交易的存在,這個節(jié)點稱之為輕節(jié)點。

如上圖,假如我們想要確定H(K)這筆交易的準(zhǔn)確性,證明方法:

1)服務(wù)器A,輕節(jié)點,只有區(qū)塊頭,沒有區(qū)塊體,但是能夠與全2節(jié)點通信,獲得Merkle樹的hash;

2)服務(wù)器B,全節(jié)點,區(qū)塊頭和區(qū)塊體都有;

3)確定Merkle路徑(H(L),H(IJ),H(MNOP),H(ABCDEFGH))

4)向全及誒單請求數(shù)據(jù)(H(L),H(IJ),H(MNOP),H(ABCDEFGH))

5)進行驗證,多次hash運算,最后跟Merkle根做hash比較

12)、哈希(hash)函數(shù)

哈希函數(shù):Hash(原始信息) = 摘要信息
原始信息可以是任意的信息,hash之后會得到一個簡短的摘要信息。

哈希函數(shù)有幾個特點:

  • 同樣的原始信息用同一個哈希函數(shù)總能得到相同的摘要信息

  • 原始信息任何微小的變化都會哈希出面目全非的摘要信息

  • 從摘要信息無法逆向推算出原始信


3、區(qū)塊鏈模型之網(wǎng)絡(luò)層

1)、網(wǎng)絡(luò)層之?dāng)?shù)據(jù)傳播和驗證

  • 新的交易向全網(wǎng)進行廣播

  • 每一個節(jié)點都將收到的交易信息納入一個區(qū)塊中

  • 每個節(jié)點都嘗試在自己的區(qū)塊中找到一個具有足夠難度的工作量證明(挖礦)

  • 當(dāng)一個節(jié)點找到了一個工作量證明(獲得打包區(qū)塊的資格),它就向全網(wǎng)進行廣播(新打包的區(qū)塊)

  • 當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過的,其他節(jié)點才認(rèn)同該區(qū)塊的有效性

  • 其他節(jié)點表示他們接受該區(qū)塊,而表示接受的方法,則是在跟隨該區(qū)塊的末尾,制造新的區(qū)塊以延長該鏈條,而將被接受區(qū)塊的隨機散列值視為先于新區(qū)塊的隨機散列值

2)、網(wǎng)絡(luò)層之P2P技術(shù)

P2P組網(wǎng)技術(shù)早期應(yīng)用在BT這類P2P下載軟件中,這就意味著區(qū)塊鏈具有自動組網(wǎng)功能,支持TCP,UDP等通信協(xié)議

3、區(qū)塊鏈模型之共識層

拜占庭將軍問題:如何讓不信任,不可靠的多方,協(xié)同工作,達成統(tǒng)一目標(biāo)——靠共識。
拜占庭將軍問題是Leslie Lamport(2013年的圖靈講得主)用來為描述分布式系統(tǒng)一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子(互不信任的多支軍隊同時保持進攻或者防守)。

共識層封裝了網(wǎng)絡(luò)節(jié)點的各類共識機制算法,共識機制算法是區(qū)塊鏈的核心技術(shù),因為這決定了區(qū)塊的產(chǎn)生,而記賬決定方式將會影響整個系統(tǒng)的安全性和可靠性。

目前已經(jīng)出現(xiàn)了十余種共識機制算法,其中比較最為知名的有

  • 工作量證明機制(PoW,Proof of Work)

  • 實用拜占庭容錯算法(PBFT)

  • 權(quán)益證明機制(PoS,Proof ofStake)

  • 股份授權(quán)證明機制(DPoS,Delegated Proof of Stake)等。

  • POW:工作量證明機制

    比特幣通過對這個系統(tǒng)做出一個簡單的(事后看是簡單的)修改解決了這個問題,它為發(fā)送信息加入了成本,這降低了信息傳遞的速率,并加入了一個隨機元素以保證在一個時間只有一個城邦(或者很少)可以進行廣播,同時在廣播時會附上自己的簽名,這個過程就像將軍A(節(jié)點)像其他的將軍發(fā)起一個進攻(或者防守)提議一樣,如果是誠實的將軍就會立刻同意,只要誠實的將軍占比大于51%,那么大家行動就會保持一致。
    它加入的成本是“工作量證明”,并且它是基于計算一個隨機哈希算法(挖礦)的。

    不過在進行工作量證明之前,記賬節(jié)點會做進行如下準(zhǔn)備工作:

    • 收集廣播中還沒有被記錄賬本的原始交易信息

    • 檢查每個交易信息中付款地址有沒有足夠的余額

    • 驗證交易是否有正確的簽名

    • 把驗證通過的交易信息進行打包記錄

    • 添加一個獎勵交易:給自己的地址增加12.5比特幣
      如果節(jié)點爭奪記賬權(quán)成功的話,就可以得到12.5比特幣的獎勵。

  • PBFT:實用拜占庭容錯算法
    PBFT是一種狀態(tài)機副本復(fù)制算法,即服務(wù)作為狀態(tài)機進行建模,狀態(tài)機在分布式系統(tǒng)的不同節(jié)點進行副本復(fù)制。每個狀態(tài)機的副本都保存了服務(wù)的狀態(tài),同時也實現(xiàn)了服務(wù)的操作。執(zhí)行過程如下

    PBFT對每個副本節(jié)點提出了兩個限定條件:

    1、所有節(jié)點必須是確定性的。也就是說,在給定狀態(tài)和參數(shù)相同的情況下,操作執(zhí)行的結(jié)果必須相同;

    2、所有節(jié)點必須從相同的狀態(tài)開始執(zhí)行。在這兩個限定條件下,即使失效的副本節(jié)點存在,PBFT算法對所有非失效副本節(jié)點的請求執(zhí)行總順序達成一致,從而保證安全性。

    • 客戶端向主節(jié)點發(fā)送請求調(diào)用服務(wù)操作

    • 主節(jié)點通過廣播將請求發(fā)送給其他副本

    • 所有副本都執(zhí)行請求并將結(jié)果發(fā)回客戶端

    • 客戶端需要等待2f+1個不同副本節(jié)點發(fā)回相同的結(jié)果,作為整個操作的最終結(jié)果。

  • Pos:股權(quán)證明

    就是一個根據(jù)你持有貨幣的量和時間,給你發(fā)利息的一個制度。

    類似于財產(chǎn)儲存在銀行,這種模式會根據(jù)你持有數(shù)字貨幣的量和時間,分配給你相應(yīng)的利息。

    在股權(quán)證明POS模式下,有一個名詞叫幣齡,每個幣每天產(chǎn)生1幣齡,

    比如:比如你持有100個幣,總共持有了30天,那么,此時你的幣齡就為3000,這個時候,如果你發(fā)現(xiàn)了一個POS區(qū)塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區(qū)塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那么在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣。

    POS的存在主要是從經(jīng)濟學(xué)上的考慮和創(chuàng)新。

  • DPos:股份授權(quán)證明機制(又稱受托人機制)

    原理是讓每一個持有比特股的人進行投票,由此產(chǎn)生101位代表 , 我們可以將其理解為101個超級節(jié)點或者礦池,而這101個超級節(jié)點彼此的權(quán)利是完全相等的。
    從某種角度來看,DPOS有點像是議會制度或人民代表大會制度。如果代表不能履行他們的職責(zé)(當(dāng)輪到他們時,沒能生成區(qū)塊),他們會被除名,網(wǎng)絡(luò)會選出新的超級節(jié)點來取代他們。

    DPOS的出現(xiàn)最主要還是因為礦機的產(chǎn)生,大量的算力在不了解也不關(guān)心比特幣的人身上,類似演唱會的黃牛,大量囤票而絲毫不關(guān)心演唱會的內(nèi)容。

數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層是構(gòu)建區(qū)塊鏈技術(shù)的必要元素,缺少任何一層都將不能稱之為真正意義上的區(qū)塊鏈技術(shù)。

作者:張凱_9908  來源:簡書

互聯(lián)互通社區(qū)


互聯(lián)互通社區(qū)專注于IT互聯(lián)網(wǎng)交流與學(xué)習(xí),旨在打造最具價值的IT互聯(lián)網(wǎng)智庫中心,關(guān)注公眾號:互聯(lián)互通社區(qū),每日獲取最新報告并附帶專題內(nèi)容輔助學(xué)習(xí)。方案打造與宣講、架構(gòu)設(shè)計與落地、人員招聘與培訓(xùn)、數(shù)據(jù)中臺建設(shè)等技術(shù)咨詢與服務(wù)合作請+微信:hulianhutongshequ

網(wǎng)頁題目:一文讀懂區(qū)塊鏈技術(shù)架構(gòu)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article14/cdijde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、軟件開發(fā)全網(wǎng)營銷推廣、企業(yè)網(wǎng)站制作搜索引擎優(yōu)化、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營