區(qū)塊鏈民珍,按照時間為節(jié)點绍刮,按順序?qū)⑼粫r間段內(nèi)產(chǎn)生的為區(qū)塊以鏈條的方式組合成特定的數(shù)據(jù)結(jié)構(gòu)。
利用加密鏈式區(qū)塊結(jié)構(gòu)來驗證與存儲數(shù)據(jù)想暗。
區(qū)塊鏈數(shù)據(jù)全部基于分布式系統(tǒng)結(jié)構(gòu),采用純數(shù)學方法建立信任關(guān)系帘不。
比特幣是區(qū)塊鏈的主要應用说莫。
比特幣
PoW(Proof of work)的共識過程(挖礦)是各節(jié)點競爭解決一個數(shù)學問題。比特幣系統(tǒng)同時發(fā)行一定數(shù)量的比特幣獎勵解決問題的礦工寞焙。
當前時間段的所有比特幣交易打包計入一個新的區(qū)塊储狭,并按照時間加入主鏈。
區(qū)塊鏈技術(shù)解決了雙重支付問題和拜占庭將軍問題棺弊。
雙重支付問題:兩次或多次使用“同一筆錢”完成支付晶密。通過分布式節(jié)點的驗證和共識機制解決。
拜占庭將軍問題:缺少可信任的中央節(jié)點時模她,如何達成共信稻艰。通過數(shù)字加密和分布式共識,實現(xiàn)了軟件定義的信用侈净。
數(shù)據(jù)層封裝了底層數(shù)據(jù)區(qū)塊尊勿,時間戳等技術(shù)
網(wǎng)絡層包括分布式組網(wǎng)機制
共識層
激勵層包括了經(jīng)濟因素,經(jīng)濟激勵
合約層主要是區(qū)塊鏈可編程的基礎(chǔ)畜侦,包含各種腳本
數(shù)據(jù)層
默克爾樹(Merkle Tree)
圖中是一棵二叉默克爾樹(MT)元扔,它的每一個葉子節(jié)點都是一個數(shù)據(jù)塊。和hash list類似旋膳,但是比hash list 更靈活澎语。在從可信的源獲得文件的MT樹根(Top Hash)后,就可以從其他不可信的源獲取MT验懊。通過可信的樹根來檢查MT擅羞。如果MT是損壞的,就從其他源獲取MT义图。
MT主要用于數(shù)據(jù)校驗减俏,在分布式系統(tǒng)中,數(shù)據(jù)存儲于多個不同的機器上碱工,如果更新了一臺機器上的數(shù)據(jù)娃承,則必須保證所有機器上數(shù)據(jù)的一致性。而只發(fā)送文件的hash值則能高效進行數(shù)據(jù)校驗怕篷。校驗過程中历筝,如果樹根不對,則檢驗樹根對應的兩個子節(jié)點的hash值廊谓,直到找到hash值不同的一個或幾個數(shù)據(jù)塊漫谷。
在區(qū)塊鏈中,每次當用戶試圖添加一個新的區(qū)塊(代表交易)時蹂析,這一改變就將被其他用戶采用基于MT的方法驗證舔示。
數(shù)據(jù)區(qū)塊
鏈式結(jié)構(gòu):如果有兩個礦工同時挖出兩個新的區(qū)塊鏈接的話,區(qū)塊主鏈可能會出現(xiàn)暫時的“分叉”現(xiàn)象电抚,解決方法是約定礦工總是選擇在累計工作量最大的區(qū)塊后鏈接惕稻。所以后續(xù)區(qū)塊的礦工將通過計算和比較,鏈接到累計工作量證明最大化的鏈上蝙叛,形成更長的新主鏈俺祠。
如圖所示,比特幣一般通過調(diào)用操作系統(tǒng)底層的隨機數(shù)生成器來生成256位隨機數(shù)作為私鑰借帘。先生成65字節(jié)的隨機數(shù)蜘渣,該公鑰用于產(chǎn)生比特幣交易時使用的地址(33字符)。現(xiàn)有的比特幣和區(qū)塊鏈系統(tǒng)中肺然,根據(jù)實際應用需求已經(jīng)衍生出多私鑰加密技術(shù)蔫缸,滿足多重簽名。
網(wǎng)絡層
組網(wǎng)方式
區(qū)塊鏈系統(tǒng)的節(jié)點一般具有分布式际起、自治性拾碌、開放可自由進出等特性。一般用P2P組織節(jié)點街望。
按照節(jié)點存儲數(shù)量可以分為全節(jié)點和輕量級節(jié)點校翔。全節(jié)點保存了創(chuàng)世區(qū)塊到目前的完整數(shù)據(jù)。
數(shù)據(jù)傳播協(xié)議
生成一個區(qū)塊后灾前,將傳播到全網(wǎng)其他所有節(jié)點驗證防症。“幽靈協(xié)議”解決因區(qū)塊數(shù)據(jù)確認速度快而導致的高區(qū)塊作廢率和隨之而來的安全性風險哎甲。
當交易時蔫敲,只要足夠多的節(jié)點作出相應即可整合進區(qū)塊賬本中。
數(shù)據(jù)驗證機制
比特幣的礦工節(jié)點會收集和驗證P2P網(wǎng)絡中的尚未確認的交易數(shù)據(jù)烧给,并對照預定義的標準清單燕偶,從各方面校驗交易數(shù)據(jù)的有效性并整合到當前區(qū)塊。
區(qū)塊鏈和云存儲础嫡,前者是完全的“去中心化”指么,后者是基于中心化結(jié)構(gòu)的多重存儲和備份的“多中心化”。
共識層
早期的比特幣采用PoW機制保證分布式記賬的一致性榴鼎。后來又提出PoS和DPOS共識機制伯诬。
PoW:引入分布式節(jié)點的算力競爭來保證數(shù)據(jù)一致性和共識的安全性。各礦工共同解決一個求解復雜但驗證容易的SHA256數(shù)學難題(挖礦)巫财。該數(shù)學難題可表示為:根據(jù)當前難度值盗似,通過搜索求解一個合適的隨機數(shù)使得區(qū)塊頭各元數(shù)據(jù)的雙SHA256哈希值小于或等于目標哈希值。
PoW步驟:1.搜索未完成交易平项,增加一個用于發(fā)行新比特幣獎勵的Coinbase交易赫舒。2.計算區(qū)塊體交易集合的Merkle根計入?yún)^(qū)塊頭悍及,隨機數(shù)置零,并填寫除隨機數(shù)以外的區(qū)塊頭元數(shù)據(jù)接癌。3.隨機數(shù)加1心赶,計算當前雙SHA256哈希值,如果小于或等于目標哈希值缺猛,則成功缨叫。4.如果一定時間內(nèi)未成功,則更新時間戳并重新計算Merkle根繼續(xù)搜索荔燎。
一般目標哈希值有多個前導零耻姥,前導零越多哈希值越小計算越困難。比特幣的控制生成時間平均10分鐘左右有咨。
PoS:PoS使用權(quán)益證明代替PoW中的工作量證明來獲得區(qū)塊記賬權(quán)琐簇。權(quán)益體現(xiàn)為節(jié)點對特定數(shù)量貨幣的所有權(quán),稱為幣齡或幣天數(shù)摔吏。幣齡=特定數(shù)量的幣與其最后一次交易的時間長度的乘積鸽嫂。每次交易都會消耗幣齡。10幣×10天=100幣齡
PoS共識過程中難度與消耗幣齡成反比征讲,幣齡消耗最多的區(qū)塊會被鏈接到主鏈据某。所以PoS解決了PoW消耗大量算力的問題。
DPOS:選票機制诗箍,獲得最多票數(shù)且愿意成為前101個節(jié)點進入“董事會”癣籽,按照既定的時間表輪流對交易進行打包結(jié)算并生產(chǎn)一個新區(qū)塊。每個區(qū)塊被簽署之前滤祖,必須先驗證前一個區(qū)塊已經(jīng)被信任的節(jié)點簽署筷狼。授權(quán)的代表可以從每筆交易的手續(xù)費中獲得收入,同時要繳納相當于生產(chǎn)一個區(qū)塊收入100倍的保證金匠童。如果代表錯過簽署埂材,可以被收回選票并投票取消代表。DPOS大大較少了參與的節(jié)點數(shù)量汤求,實現(xiàn)快速共識驗證俏险。
激勵層
比特幣PoW中的經(jīng)濟獎勵有兩部分:新發(fā)行比特幣獎勵和交易流通過程中的手續(xù)費。
發(fā)行機制:比特幣系統(tǒng)每個區(qū)塊發(fā)行比特幣數(shù)量是遞減的扬绪。創(chuàng)世區(qū)塊起的每個區(qū)塊發(fā)行50個竖独,后來每隔4年(21萬個區(qū)塊)每區(qū)塊發(fā)行數(shù)量降低一半。一直到比特幣總數(shù)穩(wěn)定在2100萬挤牛。
目前比特幣交易的手續(xù)費默認是萬分之一個比特幣莹痢,這會獎勵給記賬者。
分配機制:目前已存在13中不同的分配機制(Bitcoinmining.com)。主流礦池通常采用PPLNS竞膳、PPS航瞭、PROP等機制。
合約層
合約層封裝區(qū)塊鏈系統(tǒng)的各類腳本代碼顶猜、算法以及由此生成的更為復雜的智能合約沧奴。
現(xiàn)存問題
安全問題
基于PoW的區(qū)塊鏈的主要問題是51%問題,即節(jié)點通過掌握全網(wǎng)超過51%的算力就有能力篡改和偽造數(shù)據(jù)(美劇硅谷中有發(fā)生)长窄。
基于PoS的區(qū)塊鏈一定程度上解決了51%問題,但也引入了N@S問題纲菌。
區(qū)塊鏈的隱私保護挠日,是通過類似電子郵件地址的地址標識實現(xiàn)數(shù)據(jù)傳輸,而區(qū)塊鏈數(shù)據(jù)都是公開的翰舌。
效率問題
區(qū)塊鏈每個節(jié)點都要保存一份數(shù)據(jù)備份嚣潜,對于龐大的數(shù)據(jù)存儲很困難。
比特幣的交易速度最快每秒7筆椅贱,限制了應用懂算。
比特幣區(qū)塊生成時間10分鐘左右,交易確認時間一般也為10分鐘庇麦。
資源問題
PoW共識過程的算力沒有任何實際價值计技,這些算力都被“浪費”了。