區塊鏈核心技術
學習目標
- 理解區塊鏈底層核心技術:哈希函數、默克爾樹、數字簽名、加密技術
- 掌握主流共識機制的原理與分類
- 瞭解區塊的運行原理與整體架構
- 認識聯盟鏈的特點與應用場景
前置知識
- 基本的計算機科學概念(數據結構、算法)
- 對密碼學有初步認知(非必須)
- 已閱讀 01-Web3 概述與願景
一、哈希函數
1.1 甚麼是哈希函數
哈希函數(Hash Function)是一種將任意長度的輸入映射為固定長度輸出的數學函數。輸出的結果稱為哈希值(Hash Value)或摘要(Digest)。
輸入(任意長度) → 哈希函數 → 輸出(固定長度)
例如:
SHA-256("Hello") → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("Hello!") → 334d016f755cd6dc58c53a86e183882f8ec14f52fb05345887c8a5edd42c87b7
僅僅多了一個感嘆號,輸出就完全不同——這就是哈希函數的雪崩效應。
1.2 哈希函數的特點
| 特性 | 說明 |
|---|---|
| 正向計算容易 | 給定輸入,可以快速算出哈希值 |
| 逆向推導困難 | 給定哈希值,幾乎不可能反推出原始輸入 |
| 抗碰撞性 | 很難找到兩個不同的輸入,使得它們的哈希值相同 |
| 確定性 | 相同的輸入永遠產生相同的輸出 |
| 雪崩效應 | 輸入的微小變化會導致輸出的巨大變化 |
1.3 常見的哈希算法
MD5:
- 輸出長度 128 位(32 個十六進制字符)
- 計算速度快,但安全性已被破解
- 目前僅用於文件完整性校驗等非安全場景
SHA-256:
- 輸出長度 256 位(64 個十六進制字符)
- 比特幣採用的哈希算法
- 安全性高,目前尚未被破解
- 是區塊鏈領域最廣泛使用的哈希算法
哈希函數在區塊鏈中的應用極為廣泛:區塊哈希、交易哈希、默克爾樹、工作量證明(挖礦)等都依賴於哈希函數。
二、默克爾樹與默克爾證明
2.1 甚麼是默克爾樹
默克爾樹(Merkle Tree)是一種樹形數據結構,它的每個葉子節點是數據塊的哈希值,每個非葉子節點是其子節點哈希值的組合哈希。
Root Hash
/
Hash01 Hash23
/ /
Hash0 Hash1 Hash2 Hash3
| | | |
Data0 Data1 Data2 Data3
- 葉子節點:原始數據的哈希值
- 中間節點:子節點哈希拼接後再次哈希
- 根節點(Merkle Root):整棵樹的"指紋",代表了所有數據的摘要
2.2 默克爾證明
默克爾證明(Merkle Proof)用於高效驗證某條數據是否包含在默克爾樹中,而不需要下載全部數據。
驗證過程:
假設要驗證 Data1 是否在樹中:
1. 提供 Data1 的哈希 Hash1
2. 提供兄弟節點 Hash0
3. 計算 Hash01 = Hash(Hash0 + Hash1)
4. 提供兄弟節點 Hash23
5. 計算 Root = Hash(Hash01 + Hash23)
6. 將計算結果與已知的 Merkle Root 對比,一致則驗證通過
優勢:
- 驗證一條數據只需要 O(log n) 個哈希值,而非 O(n) 條全部數據
- 這使得輕節點(SPV 節點)可以在不存儲完整區塊鏈的情況下驗證交易
三、數字簽名
數字簽名是區塊鏈中身份驗證和交易授權的核心技術。
3.1 基本原理
數字簽名基於非對稱加密(公鑰密碼學),包含一對密鑰:
- 私鑰(Private Key):只有持有者知道,用於簽名
- 公鑰(Public Key):公開的,任何人都可以用來驗證簽名
3.2 簽名與驗證流程
簽名過程(發送方):
1. 對原始數據計算哈希值
2. 用私鑰對哈希值進行加密,生成數字簽名
3. 將原始數據和數字簽名一起發送
驗證過程(接收方):
1. 用發送方的公鑰解密數字簽名,得到哈希值 A
2. 對收到的原始數據計算哈希值,得到哈希值 B
3. 對比 A 和 B,一致則驗證通過
3.3 在區塊鏈中的作用
- 身份驗證:證明交易確實是由私鑰持有者發起的
- 防篡改:交易內容一旦被修改,簽名驗證就會失敗
- 不可否認:簽名者無法否認自己簽過的交易
在區塊鏈中,你的私鑰就是你的身份。常說的"Not your keys, not your coins"(不是你的私鑰,就不是你的幣),強調的正是私鑰的重要性。
四、加密技術
區塊鏈中使用的加密技術主要分為兩大類:
4.1 對稱加密
- 加密和解密使用同一把密鑰
- 優點:計算速度快
- 缺點:密鑰分發睏難——如何安全地將密鑰傳遞給對方?
- 常見算法:AES、DES、3DES
4.2 非對稱加密
- 加密和解密使用不同的密鑰(公鑰加密,私鑰解密)
- 優點:解決了密鑰分發問題,公鑰可以公開
- 缺點:計算速度比對稱加密慢
- 常見算法:RSA、ECC(橢圓曲線加密)
區塊鏈主要使用橢圓曲線加密(ECC),特別是 secp256k1 曲線(比特幣和以太坊均採用)。相比 RSA,ECC 在同等安全級別下密鑰更短、計算更快,非常適合資源受限的場景。
五、共識機制
共識機制是區塊鏈的核心,它解決了一個根本問題:在沒有中心化權威的情況下,如何讓所有節點對數據達成一致?
根據"先寫後共識"還是"先共識後寫",可以將主流共識機制分為兩大類。
5.1 先寫入後共識
這類機制先讓節點提出區塊,再由網絡確認其合法性。
POW(工作量證明,Proof of Work):
- 節點通過消耗算力解決數學難題來競爭記賬權
- 最先解出難題的節點獲得出塊權和獎勵
- 代表項目:比特幣
- 優點:安全性經過十多年驗證,去中心化程度高
- 缺點:能耗巨大、交易確認慢
POS(權益證明,Proof of Stake):
- 節點根據質押的代幣數量和時間來競爭記賬權
- 質押越多,獲得出塊權的概率越大
- 代表項目:以太坊 2.0
- 優點:能耗低、效率高
- 缺點:可能導致"富者越富"
DPOS(委託權益證明,Delegated Proof of Stake):
- 代幣持有者投票選出一定數量的"代表"(超級節點)來輪流出塊
- 代表項目:EOS
- 優點:交易速度快、吞吐量高
- 缺點:去中心化程度降低,容易形成寡頭
POX(混合證明):
- 結合 POW 和 POS 的優點
- 不同階段或不同功能使用不同的共識方式
- 試圖在安全性、去中心化和性能之間取得平衡
5.2 先共識後寫入
這類機制先讓節點就區塊內容達成共識,再將區塊寫入鏈。
PBFT(實用拜佔庭容錯,Practical Byzantine Fault Tolerance):
- 節點之間通過多輪投票達成共識
- 能容忍不超過 1/3 的惡意節點
- 優點:交易最終性強(一旦確認就不可逆)、延遲低
- 缺點:節點數量增加時通信開銷急劇增長,不適合大規模公鏈
Chained-BFT:
- PBFT 的改進版本,將共識過程流水線化
- 每一輪的投票同時也是對前一輪的確認
- 降低了通信複雜度,提高了吞吐量
- 代表項目:Diem(原 Libra)
Tower-BFT:
- 利用時間作為共識的輔助手段
- 節點對某個區塊投票後,必須等待一定時間才能改變投票
- 等待時間隨投票輪次指數增長,使得歷史區塊越來越難被推翻
- 代表項目:Solana
六、區塊運行原理
一個區塊的基本結構包含:
6.1 區塊頭(Block Header)
| 字段 | 說明 |
|---|---|
| 前一區塊哈希 | 指向上一個區塊,形成鏈式結構 |
| 時間戳 | 區塊創建的時間 |
| 默克爾根 | 該區塊所有交易的默克爾樹根哈希 |
| 難度目標 | POW 中的挖礦難度(僅 POW 鏈) |
| Nonce | 礦工嘗試的隨機數(僅 POW 鏈) |
6.2 區塊體(Block Body)
- 包含該區塊內的所有交易記錄
- 交易被組織成默克爾樹,根哈希存在區塊頭中
6.3 運行流程
- 用戶發起交易,用私鑰簽名後廣播到網絡
- 各節點收到交易後放入交易池(Mempool)
- 出塊節點從交易池中選取交易,打包成區塊
- 通過共識機制確認區塊的合法性
- 確認後的區塊被追加到鏈上,交易正式生效
- 所有節點同步最新狀態
區塊之間通過"前一區塊哈希"首尾相連,形成一條不可篡改的鏈。如果篡改了某個歷史區塊的數據,其哈希值就會改變,導致後續所有區塊的"前一區塊哈希"都失效——攻擊者必須重新計算之後所有區塊的哈希,在算力上這幾乎不可能實現。
七、聯盟鏈
7.1 甚麼是聯盟鏈
聯盟鏈(Consortium Blockchain)是介於公有鏈和私有鏈之間的區塊鏈形態。它由多個已知的組織共同維護,只有獲得授權的節點才能參與共識和讀寫數據。
7.2 聯盟鏈的特點
| 特點 | 說明 |
|---|---|
| 部分去中心化 | 由多個聯盟成員共同管理,而非完全開放或單一機構控制 |
| 可控性強 | 節點准入需要審批,網絡行為可監管 |
| 數據不默認公開 | 數據僅對聯盟成員可見,支持隱私保護 |
| 交易速度快 | 節點數量有限且互相信任,共識效率遠高於公有鏈 |
7.3 聯盟鏈 vs 公有鏈
| 維度 | 公有鏈 | 聯盟鏈 |
|---|---|---|
| 參與者 | 任何人 | 授權組織 |
| 去中心化程度 | 高 | 中等 |
| 交易速度 | 較慢(BTC ~7 TPS) | 較快(可達數千 TPS) |
| 隱私性 | 數據公開 | 數據可控 |
| 典型場景 | 加密貨幣、DeFi | 企業協作、政務 |
八、應用場景
區塊鏈技術(尤其是聯盟鏈)已在多個領域落地應用:
8.1 商品溯源
- 商品從原材料到終端消費者的每一個環節都記錄在鏈上
- 消費者掃碼即可查看完整的流轉鏈路
- 數據不可篡改,有效防止造假
- 典型案例:食品安全溯源、奢侈品防偽、藥品追蹤
8.2 公益慈善
- 捐款的每一筆去向都記錄在鏈上,公開透明
- 捐贈者可以實時追蹤資金流向
- 解決了傳統慈善的信任危機
- 杜絕資金挪用和暗箱操作
8.3 供應鏈金融
- 核心企業的信用可以通過區塊鏈傳遞給上下游中小企業
- 應收賬款可以在鏈上確權和流轉
- 金融機構基於鏈上數據為中小企業提供融資
- 降低了信息不對稱,提高了融資效率
8.4 互助保險
- 保險規則寫入智能合約,理賠條件透明
- 符合條件時自動觸發理賠,無需人工審核
- 參與者共同管理資金池
- 降低了運營成本和道德風險
九、整體架構
區塊鏈系統的整體架構通常分為以下幾層:
| 層級 | 說明 |
|---|---|
| 應用層 | DApp、智能合約、用戶界面 |
| 合約層 | 智能合約引擎、虛擬機(EVM 等) |
| 共識層 | 共識算法(POW、POS、PBFT 等) |
| 網絡層 | P2P 網絡、節點通信、數據廣播 |
| 數據層 | 區塊結構、鏈式存儲、默克爾樹、數字簽名 |
每一層都承擔特定的職責,共同構成了完整的區塊鏈系統。
十、百度超級鏈(XuperChain)
百度超級鏈(XuperChain)是百度自主研發的區塊鏈底層技術,也是國內較有代表性的聯盟鏈平台之一。
主要特點
- 自主知識產權:核心技術完全自研,擁有多項專利
- 高性能:單鏈可達數萬 TPS,滿足大規模商用需求
- 靈活共識:支持可插拔的共識機制,可根據場景選擇 PBFT、DPOS 等
- 智能合約:支持 Solidity 和 C++ 等多語言合約開發
- 隱私保護:內置多種隱私計算方案
- 開源開放:核心代碼已開源,降低了企業接入門檻
XuperChain 已在政務、司法、醫療、金融等領域有落地應用,是國內企業級區塊鏈解決方案的重要選擇之一。
小結
本篇介紹了區塊鏈的核心技術棧:哈希函數保證數據完整性,默克爾樹實現高效驗證,數字簽名確保身份認證,加密技術保護數據隱私,共識機制解決去中心化環境下的信任問題。這些技術共同構成了區塊鏈的技術基座。聯盟鏈將這些技術應用於企業協作場景,在商品溯源、公益慈善、供應鏈金融等領域已經產生了實際價值。
上一篇:01-Web3 概述與願景
下一篇:03-智能合約與 Solidity 基礎(待續)
主題測試文章,只做測試使用。發佈者:Walker,轉轉請注明出處:https://walker-learn.xyz/archives/7479
