邏輯分層 |
比特幣 |
以太坊 |
應用(合約)層 |
記賬、轉賬 |
EVM、DAPP |
激勵層 |
挖礦、交易 |
發行,分配機制 |
共識層 |
工作量 |
POW,POS,DPOS,PBFT |
網路層 |
P2P |
P2P、傳播機制、驗證機制 |
資料層 |
區塊資料、鏈式結構、數位簽章 雜湊函數、Merkle樹、非對稱式加密 |
區塊資料、鏈式結構、數位簽章 雜湊函數、Merkle樹、非對稱式加密等最佳化 |
分叉
軟分叉和硬分叉(向前相容、向後相容)
使用者餘額
UTXO模型 Unspent Transaction Output, 表示未花費的輸出。
賬戶模型 記錄賬戶餘額。
UTXO優點 私密性比較強,理論上可以為每一筆輸出設定一個地址。 無需維護餘額等狀態值。 UTXO是獨立資料記錄,可以通過並行極大的提升區塊鏈交易驗證速度。 無需關心事務問題,只需要關心輸出指令碼即可。 UTXO無法分割,每次交易都需要多個輸出,分別為支出與找零。 賬戶模型優點 可以快速擷取賬戶的餘額,而比特幣需要將指定地址所擁有的所有UTXO中的未花費交易總值整合。 節省空間的,因為每筆交易只有一個輸入一個輸出。 可以較容易的實現圖靈完備的智能合約。
P2P 網路 P2P原理
NAT 網路位址轉譯
NAT原理與NAT穿透
資料驗證
SPV Simplified Payment Verification 簡單支付驗證
merkle tree演算法
BASE58 基於BASE64升級
SHA256 安全散列演算法
非對稱式加密
共識演算法
POW: power of work 表示工作量(公有鏈)
POS:Proof of Stake,股權證明 (公有鏈)
DPOS:Delegated Proof of Stake,委任權益證明(公有鏈)
PBFT:Practical Byzantine Fault Tolerance,實用拜占庭容錯演算法 (聯盟鏈 私人鏈)
Raft,paxos 協議
參考:共識演算法
比特幣交易資料結構
資料區塊的交易記錄中,詳細記載了比特幣的交易記錄和相關細節。其中在比特幣收支詳情裡面,記錄了收支的比特幣地址和merkle節點值等情況,因此收支詳情是交易記錄中最重要的部分。
完整的交易記錄結構如下表格:
版本變更過程
比特幣支出和接收交易的結構
在資料區塊中,比特幣支出和接收交易是寫在一起的,整個收支記錄包括很多比記錄。每一比記錄都有自己的索引編號以供查詢。
每一比記錄中包括了產生時間、引用交易的雜湊值、交易記錄索引編號、比特幣支出地址、支出地址數量等細節。每一比收支交易記錄都有一個Merkle節點值,這個hash節點值是整個Merkle樹的一部分,決定了每一個地址都不能重複交易和被偽造。
收支交易結構圖如下:
資料區塊結構 hexdump程式把資料區塊檔案轉化為十六進位+ASCII表示,編者解釋一下:每一個資料區塊記錄了六個內容:神奇數、區塊大小、資料區塊頭部資訊、交易計數、交易詳情。在這當中, 資料區塊頭部資訊 的HASH值是下一個新區塊的HASH值的參考目標數,最後一項 交易詳情 記錄了該區塊中所有的交易記錄(編者會在以後詳細說明交易記錄的結構)。
資料區塊結構如下圖:
資料區塊頭部結構
資料區塊頭部結構中記錄了:版本號碼、前一個區塊的記錄、Merkle樹的根值、時間戳記、目標特徵值、隨機數。
在比特幣礦工挖礦的過程就是產生新的資料區塊的過程,這個過程需要對比前一個資料區塊頭部的HASH值和隨機數,如果滿足一定條件則產生新的區塊。 Merkle樹 的根值為該區塊中所有被記錄交易的根節點HASH值,中本聰用一個HASH樹來對每一比交易進行數位簽章,以確保每一比交易都不可偽造和沒有重複交易,Merkle樹就是HASH樹的一種。資料區塊頭部結構如下圖: