比特幣安全性初探(上篇)基礎架構與密碼學原理

洞庭東山人 (2025-11-29 01:27:17) 評論 (0)
比特幣安全性初探(上篇)基礎架構與密碼學原理

徐令予 |撰文

一周前,我撰寫了《150 億美元比特幣被盜案的真相》,對比特幣係統的安全性進行了簡單介紹。文中指出,比特幣所依賴的密碼學算法與區塊鏈結構在整體上是安全穩固的,所謂“150 億美元比特幣被盜”事件,並非源自密碼學算法被攻破,而更可能是由低級技術錯誤或機構內部管理不善所引發。

該文發表後,一些讀者反映,由於缺乏對比特幣基本原理的了解,閱讀時難免產生內容跳躍之感,對文中觀點的理解與接受也造成困難。同時,亦有多位朋友建議,針對比特幣的基礎概念與安全設計,補充一篇更為係統且通俗易懂的科普文章,應該會受到更多讀者的歡迎。

這正是撰寫這篇文章的緣起。

事實上,盡管比特幣已廣為人知,卻對它到底是什麽、如何保存、如何交易、為何安全,仍然模糊不清。本篇將以盡量通俗的方式介紹比特幣的基本概念,隻要讀完本文的上篇,你就具備了理解比特幣的必備知識。

一、比特幣不是“賬戶和餘額”,它更像是“有序列號的紙幣”

比特幣資金不是存放在銀行係統的賬戶餘額,而是由一個個的數字化錢幣“UTXO”組成,這是理解比特幣的關鍵。

UTXO,即未花費交易輸出(Unspent Transaction Output),指的是已收到但尚未花費的數字化紙幣,它是區塊鏈上記錄的一條仍未被引用的交易輸出。UTXO 很像數字錢包中的單張紙幣,而您的比特幣總餘額則是您擁有的所有紙幣(UTXO)麵值的總和。

你可以把每個 UTXO 理解成一張紙幣:

每個 UTXO 都有一個固定麵額(例如 0.015 BTC);

每個 UTXO 都有一個地址,這個地址確定了 UTXO 的“歸屬權”。地址可以理解為紙幣上印的序列號,你知道多少個地址,如同手中握有了多少張有確定序列號的紙幣。

UTXO不可拆開使用,就像紙幣不能撕掉一半花出去。當您發送加密貨幣時,必須交付一個或多個 UTXO ,係統會為收款人創建一個新的 UTXO,並為您收到的任何“找零”創建另一個新的 UTXO。

請注意,這是UTXO和紙幣的最大區別:一張紙幣本身可以用於多次交易(你花給別人、別人再花給別人),某個序列號的紙幣在交易中可以反複使用,它可以歸屬於不同的主人。但一個 UTXO 在比特幣裏是“一次性用品”,花費後即徹底失效。每個UTXO 在交易結束後就被廢棄,它從一而終,一仆不事兩主。

二、比特幣和區塊鏈

區塊鏈是一個巨大的、不可篡改的曆史賬本,記錄所有過去發生過的所有交易,包括:

  • 哪張紙幣被花掉
  • 新紙幣(新 UTXO)發給了哪個地址
  • 金額是多少
  • 何時發生
區塊鏈通過密碼學哈希函數和分布式共識機製,將交易按區塊鏈接起來,從而保證曆史不可篡改。

基於曆史賬本數據,在係統的每個節點維護的是“當前未花費紙幣清單”,也就是 UTXO 集合。

區塊鏈就像是檔案室,保存著全部流水記錄。

UTXO 集合是最新餘額表,存放著當前每一個有效的UTXO的麵值和相對應的地址。

這兩者一起構成比特幣係統的核心結構。

區塊鏈記錄曆史 → 節點掃描曆史生成 UTXO集合 → 交易時節點隻用 UTXO

三、錢包裏存的是什麽?不是比特幣,而是“鑰匙”

許多人以為自己的比特幣保存在電腦或手機裏。事實上,比特幣的UTXO永遠存在於區塊鏈上,錢包並不保存比特幣,而是保存能動用這些UTXO的鑰匙。

錢包存放的核心內容包括:

  • 私鑰:通過數字簽名作為“錢的所有權”的唯一憑證,它必須得到嚴格保護;
  • 公鑰:由私鑰計算而來,用於驗證簽名;
  • 地址:由公鑰的哈希計算而來(相當於紙幣的序列號),收款時你隻需要公布地址,而不是公鑰本身。
錢包的本質是:比特幣UTXO的地址記錄,以及對這些錢幣的所有權提供憑證。

四、A 給 B 支付比特幣的完整過程

步驟 1:B 給 A 一個地址

B 打開錢包,生成一個新的地址,通過電郵或其它網絡社交軟件發給 A。

步驟 2:A 在錢包中填寫金額並發起支付

A 輸入金額,例如 0.01 BTC。錢包自動選擇屬於A 的某個 UTXO,例如一個0.02 BTC 的 UTXO(就像在真實錢包中拿出一張紙幣)。

步驟 3:構造交易

錢包自動構造交易:

  • 將 0.02 BTC 的地址輸入並寫進交易
  • 將 0.01 BTC 輸出給 B 提供的地址
  • 將剩餘金額找零到 A 的新地址
  • 公布與0.02 BTC 的地址相對應的公鑰
  • 使用0.02 BTC 的地址相對應的私鑰對交易進行數字簽名
步驟 4:廣播交易

交易被發送到比特幣網絡。各節點檢查簽名是否有效、UTXO 是否存在。

步驟 5:礦工更新區塊鏈

礦工將這筆有效交易寫入新的區塊。當區塊被確認後:

  • A 擁有的舊 0.02 BTC UTXO 作廢
  • B 獲得新的 0.01 BTC 的 UTXO
  • A 的找零地址獲得新的 UTXO
錢包更新餘額,交易完成。

五、本篇總結

  • 比特幣是由 UTXO 組成的係統,而不是“賬戶餘額”係統
  • 每個 UTXO 像一張紙幣,地址像序列號
  • 錢包不存比特幣,錢包存的是私鑰
  • 私鑰通過橢圓曲線算法生成公鑰,公鑰哈希生成地址
  • A 到 B 的支付流程
以上這些內容是理解比特幣係統運作的基礎。

下篇將對比特幣的安全問題作更深入的探討,內容包括:

  • 為什麽地址是公鑰的哈希?公鑰為何推遲公布
  • 簽名時隨機數 K 的意義
  • HD 錢包的分層結構和私鑰保護


徐令予 作於南加州 (2025年11月23日)