區塊鏈核心技術

區塊鏈核心技術

學習目標

  • 理解區塊鏈底層核心技術:哈希函數、默克爾樹、數字簽名、加密技術
  • 掌握主流共識機制的原理與分類
  • 瞭解區塊的運行原理與整體架構
  • 認識聯盟鏈的特點與應用場景

前置知識

  • 基本的計算機科學概念(數據結構、算法)
  • 對密碼學有初步認知(非必須)
  • 已閱讀 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 運行流程

  1. 用戶發起交易,用私鑰簽名後廣播到網絡
  2. 各節點收到交易後放入交易池(Mempool)
  3. 出塊節點從交易池中選取交易,打包成區塊
  4. 通過共識機制確認區塊的合法性
  5. 確認後的區塊被追加到鏈上,交易正式生效
  6. 所有節點同步最新狀態

區塊之間通過"前一區塊哈希"首尾相連,形成一條不可篡改的鏈。如果篡改了某個歷史區塊的數據,其哈希值就會改變,導致後續所有區塊的"前一區塊哈希"都失效——攻擊者必須重新計算之後所有區塊的哈希,在算力上這幾乎不可能實現。


七、聯盟鏈

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

(0)
Walker的頭像Walker
上一篇 5天前
下一篇 4天前

相關推薦

  • 引用類型詳解:數組、結構體、映射、字符串

    引用類型詳解:數組、結構體、映射、字符串 學習目標 掌握 Solidity 中四種引用類型(數組、結構體、映射、字符串/變長字節數組)的定義和使用方法。 前置知識 已學習值類型(整型、布爾、地址、定長字節數組等)。 數組(Array) storage 中的數組 Solidity 中數組分為兩種: 靜態數組 T[K]:長度固定,編譯時確定 動態數組 T[]:長…

  • Web3 概述與願景

    Web3 概述與願景 學習目標 理解 Web1、Web2、Web3 的演進歷程與核心區別 掌握 Web3 的核心理念:去中心化、數據確權、用戶主權 瞭解 Web3 帶來的創新機會與全新商業模式 熟悉 Web3 開發者的學習路線圖 前置知識 基本的互聯網使用經驗 對軟件開發有初步瞭解(非必須,但有助於理解技術部分) 一、Web1 → Web2 → Web3 的…

    Web3與WASM 16小時前
    100
  • 動態調用與Fallback機制

    動態調用與Fallback機制 學習目標 掌握 call 動態調用的語法與使用場景 理解 calldata 數據結構(selector + 參數編碼) 掌握 fallback / receive 函數的觸發機制 理解 tx、msg、block 三種上下文變量的區別 call 動態調用 基本語法 (bool success, bytes memory data…

    20小時前
    000
  • Delegatecall 與代理模式

    Delegatecall 與代理模式 學習目標 理解 delegatecall 的工作原理 掌握 Storage Layout(存儲佈局)規則 掌握代理模式與合約升級 瞭解非結構化存儲(Unstructured Storage) delegatecall 原理 甚麼是 delegatecall 語法:address.delegatecall(bytes ca…

    18小時前
    000
  • 函數定義與訪問控制

    函數定義與訪問控制 學習目標 掌握 Solidity 函數定義、可見性修飾符、交易屬性、modifier 和構造函數。 函數定義 一般形式 function fname([參數]) [可見性][交易屬性][modifier...] returns(返回值) { ... } 函數簽名:fname([參數]) —— 唯一標識一個函數 返回值:returns(返回…

    Web3與WASM 22小時前
    000
簡體中文 繁體中文 English