網路層
:區塊鏈網路的 p2p 協議主要用於節點間傳輸交易資料和區塊資料,位元幣和以太坊的
p2p
協議基於
tcp
協議實現,
hyperledger fabric
的 p2p
協議則基於
協議實現。
共識層:
q1:訊息在不可靠通道上的傳播問題
a1:拜占庭容錯(
byzantinefault-tolerant
,bft)
q2:決節點自由進出可能帶來的女巫攻擊問題
a2:位元幣用了工作量證明(
pow),以太坊用了基於權重的權益證明(
pos)
資料層:
一、資料結構:merkle tree / merkle patricia tree
位元幣:
以太坊:
merkle patricia tree 有三種節點:
1.擴充套件節點(extension node):型別字首
|公共鍵部分
|下一節點的
hash
2.分支節點(branch node):型別字首
|後續為(0—
f)的鍵的
hash|空
3.葉子節點(leaf node):型別字首
|剩餘部分鍵
二、資料模型
位元幣:基於交易的模型,每一筆交易與上一級交易鏈結,使用者餘額有交易計算而來
以太幣/hyperledger:基於賬戶的模型,維護了乙個賬戶狀態資料庫,便於應用開發
三、資料儲存
非結構化資料如hash值等存入非結構化資料庫,位元幣、以太坊、hyperledger用了leveldb;結構化資料(使用者資訊等)可存入結構化資料
智慧型合約層:
在以太坊中,部署後的合約存放在區塊鏈上,每次被呼叫時才被以太坊虛擬機器(evm)載入執行;在 hyperledger fabric 中,部署後的合約被打包成 docker 映象,每個節點基於該映象啟動乙個新的 docker 容器並執行合約中的初始化方法,然後等待被呼叫。外部應用通過呼叫智慧型合約來實現各種交易,如果呼叫涉及到修改操作,需要先在全網達成共識,之後修改操作會被記錄在區塊鏈,修改結果會被存在狀態資料庫。
應用層
1.準備節點:個各礦工去獲取前塊hash,時間戳等必要資訊,填入區塊頭
2.交易收集:在上一節點確定到新節點生成期間內的所有交易都被廣播到全網,每個礦工 都要收集這些資訊
3.計算merkle根:當交易達到要求時計算所有交易的
merkle tree
的root hash
,填入區塊 頭
4.算力競爭(挖礦):每個節點都有自己的nonce值,填入區塊頭後將區塊體進行雜湊兩 次,對映到乙個數字,如果該數字小於難度值,則該節點獲得記賬權即挖礦獎 勵,並將該區塊廣播,如果該數字大於難度值則調整
nonce
重新計算
hash。
5.驗證:其他節點收到成功算出nonce的節點的廣播(
nonce,merkle root),
驗證該值,驗 證成功則將該節點加入區塊鏈,並進行下一輪
a給b轉錢
位元幣:
1.b將自己的公鑰
pubkeyb
,進行2
次hash
(sha256
,ripemd160
)得到自己的位址
pubkeyb.hash
2.a收到pubkey.hash
3.a進行交易填寫交易資訊
4.a對交易簽名
sig=tx|siga
5.把sig和
pubkeya
放入輸入指令碼
scriptsig
6.完成交易,將輸出廣播
區塊鏈技術基礎學習(一)
區塊鏈和位元幣 區塊鏈的特點 區塊鏈的型別 區塊鏈的底層架構 區塊鏈的關鍵技術點 區塊鏈存在問題 1 區塊鏈 block chain 2 位元幣 bitcoin 一種基於點對點支付的 由分布式網路系統生成的數字貨幣。流通 市場 去信任化 不可篡改 共識演算法形成的強大算力 單一節點非法篡改無法影響到...
區塊鏈技術
區塊鏈本質上是乙個對等網路 peer to peer 的分布式賬本資料庫。位元幣的底層就採用了區塊鏈的技術架構。區塊鏈本身其實是一串鏈結的資料區塊,其鏈結指標是採用密碼學雜湊演算法對區塊頭進行處理所產生的區塊頭雜湊值。每乙個資料塊中記錄了一組採用雜湊演算法組成的樹狀交易狀態資訊,這樣保證了每個區塊內...
區塊鏈技術
目前,比較火的區塊鏈逐漸被重視起來,其根源與其說是其技術上帶來的人類的共識與寫作機制的轉變,不如說是由位元幣炒作帶來的利潤衝擊了投機者的內心。不過,這並不一定就是壞事,對於區塊鏈這個技術而言,是有利的,因為這樣的環境下,會帶來無數的開發者磨刀立馬,為其注入力量。區塊鏈是一種能夠包含交易資訊的從前往後...