BTC協議是什麼?拆解比特幣交易驗證、區塊鏈結構與共識規則

BTC協議是什麼?拆解比特幣交易驗證、區塊鏈結構與共識規則
字号
【导读】從一筆轉帳出發,拆解 BTC 協議的實際運作:交易驗證、UTXO 模型、Script 腳本、區塊結構、工作量證明共識、2100 萬上限與減半機制,以及 BIP 流程與軟硬分叉差異。

大部分人手上有比特幣,卻很少人講得清楚「BTC 協議」到底是什麼。查資料時往往會看到一堆名詞混在一起:比特幣網絡、比特幣軟體、比特幣區塊鏈、比特幣共識。它們確實相關,但指的並不是同一件事。搞混之後,很容易得出錯誤結論,例如以為協議升級需要「礦工投票決定」,或者以為交易所顯示的帳戶餘額真的存在鏈上某個位置。

從一筆轉帳的操作出發,可以逐層拆解 BTC 協議 實際在做什麼:交易怎樣被驗證、區塊裡面裝了什麼、共識規則怎樣決定哪條鏈算數,以及在技術演進中,這套協議哪些核心始終沒變、哪些部分已經改變了鏈上生態。

BTC 協議不是一份文件,而是一套必須被執行的規則

協議的定義很樸素:一群參與者共同遵守的規則集合。比特幣協議 規定了資料怎樣編碼、簽名怎樣產生、節點收到一筆交易要檢查哪些條件、區塊要滿足什麼格式才算合法、以及當兩條鏈同時存在時,全網應該跟隨哪一條。

這裡有兩個常被誤會的層次。協議是抽象規則,Bitcoin Core 只是其中一個具體實作。就像 TCP/IP 是網絡通訊規則,而 Chrome 和 Safari 是不同的瀏覽器實作一樣。任何人都可以寫出另一套符合規則的客戶端,只要能與其他節點正確交換資料,它就是比特幣網絡的一部分。這件事的意義在於,沒有任何團隊能靠「修改官方軟體」單方面改變比特幣的規則;新條件要靠足夠多的節點與經濟參與者實際執行,才會在網絡上生效。

BTC 協議的內容大致落在四個範圍:

  • 資料格式:地址、交易、區塊的位元組結構,怎樣序列化與解析。
  • 驗證規則:哪些交易可以進入節點的記憶池,哪些區塊可以被本地接受。
  • 共識規則:工作量證明的難度調整、累積工作量最多的鏈選擇、區塊補貼發放的上限。
  • 網絡傳播:節點之間怎樣透過 P2P 廣播交易與區塊,怎樣同步歷史資料。

這四層的改動難度截然不同。改動傳播方式通常爭議較小;改動貨幣發行上限,則等於分叉出一條新鏈。因此在技術討論裡,「共識規則」與「節點政策」必須嚴格區分:前者決定區塊能否被全網接受,後者決定某個節點預設要不要轉發、要不要把未確認交易放進自己的記憶池。

從按下「發送」開始:一筆交易的真實旅程

在錢包輸入地址與金額,按下發送。那一刻錢包做的事情,比大部分人想像中複雜得多。

錢包首先要在本地資料庫挑出可以動用的「未花費輸出」,決定用哪幾個來湊足金額。湊完之後,它構造一筆交易:輸入指向那些舊輸出,輸出分成兩部分,一部分給收款地址,另一部分作為找零回到自己控制的新地址。接著錢包用私鑰對交易內容產生數位簽章,把簽章附在輸入裡,最後把整筆交易的位元組廣播給連接的節點。

節點收到之後,通常會執行幾類驗證:

  1. 位元組結構是否合法,欄位格式與長度是否符合規範。
  2. 每個輸入指向的舊輸出是否真的存在於鏈上,而且尚未被花費。
  3. 解鎖腳本搭配簽名能否通過腳本引擎驗證,簽名是否對應正確的公鑰。
  4. 輸入總額是否大於等於輸出總額,兩者的差額即為給礦工的手續費。
  5. 是否與記憶池中已有交易構成雙花,以及是否滿足該節點設定的手續費下限與標準性政策。

違反共識規則的交易,永遠不會被誠實節點納入合法區塊;但節點會不會轉發、會不會暫時放進記憶池,還取決於節點的本地政策。不同軟體與不同設定的節點,對記憶池容量、低費率交易的過濾並不完全一致。交易合法性由每個節點獨立判斷,錢包介面顯示的「已發送」僅表示交易已離開本地裝置,並不代表已經被全網區塊收錄。

UTXO 模型:「餘額」其實是錢包算出來的

比特幣協議裡沒有「帳戶餘額」這個欄位。鏈上存在的只有一堆未花費輸出,英文全稱為 UTXO(Unspent Transaction Output)。每個 UTXO 記載著具體金額與一段鎖定條件,誰能提供符合條件的解鎖證明,誰就能把它作為新交易的輸入花掉。

錢包裡顯示的 0.5 BTC,是錢包遍歷並加總所有受其私鑰控制的 UTXO 金額所得出的結果,鏈上底層從沒有儲存這個總數。這項設計帶來幾個實際特性:

  • 轉帳時可能同時消耗多個 UTXO,交易體積會因為輸入數量增多而膨脹,所需手續費也隨之上升。
  • 找零會產生一個全新的 UTXO,因此單筆轉帳往往會在鏈上創造一個新的找零地址。
  • UTXO 過於零碎時,錢包可以發起合併交易,但合併本身需要支付手續費,並會在同一個區塊中顯露這些地址間的關聯性。

相較於以太坊等採用狀態樹記錄每個帳戶餘額的模型,UTXO 模型 讓每一筆輸出的驗證完全獨立,彼此不依賴全域帳戶狀態,節點在驗證交易時具備高度的平行處理能力。

交易驗證的核心:Script 與數位簽章

每個 UTXO 都包含一段鎖定腳本(ScriptPubKey),花用它的人則要在輸入端提供解鎖腳本(ScriptSig 或 Witness)。比特幣的 Script 是一門以堆疊(Stack)為基礎的指令式語言,從左到右依序執行,執行結束時若堆疊頂端為非零值且未觸發錯誤,驗證即算通過。

Script 刻意採用非圖靈完備設計:沒有任意迴圈、沒有跳轉跳回、不能存取外部狀態。這種設計確保任何人都能精確預估腳本執行的最大成本,杜絕惡意交易使全網節點陷入無窮迴圈的風險。

腳本類型 啟用時間 主要技術特徵
P2PKH 創世初期標準 以公鑰雜湊為地址,簽名與公鑰直接放在交易輸入中
P2SH(BIP16) 2012 年軟分叉 地址對應腳本雜湊,付款方不需知道腳本細節,適合早期多簽
P2WPKH / P2WSH(BIP141) 2017 年隔離見證 簽名搬至見證區,徹底修復交易延展性,引入重量單位折扣
P2TR(BIP341/342) 2021 年 Taproot 引入 Schnorr 簽名與 MAST 結構,多簽與單簽外觀一致,隱私度提高

隔離見證(SegWit)的實施是比特幣擴展路線的轉折點。在舊格式中,簽名資料直接參與計算交易雜湊(TxID),使第三方有機會在未確認前輕微變更編碼而不破壞簽名有效性,造成交易延展性問題。SegWit 將簽名移入獨立的見證結構,固定了 TxID,為閃電網絡等鏈下狀態通道奠定了可靠的安全基礎。

區塊鏈結構:一個區塊裡到底裝了什麼

比特幣區塊由固定 80 位元組的「區塊頭」與後續的「交易列表」組合而成。區塊頭包含六個核心欄位:

BTC協議:區塊鏈結構:一個區塊裡到底裝了什麼相关概念与关系示意
比特幣區塊由固定 80 位元組的「區塊頭」與後續的「交易列表」組合而成
  • 版本號(Version):指示軟體版本及軟分叉信令信號。
  • 前一區塊雜湊(Previous Block Hash):以密碼學方式將當前區塊綁定在上一個區塊之後。
  • Merkle 根(Merkle Root):由區塊內所有交易雜湊兩兩遞迴計算出的單一 32 位元組摘要。
  • 時間戳(Timestamp):礦工記錄的出塊時間,受共識規則的時間窗口約束。
  • 難度目標(nBits):壓縮格式儲存的當前工作量門檻值。
  • 隨機數(Nonce):礦工窮舉嘗試的 4 位元組變數。

Merkle 樹的存在讓輕節點(SPV)能夠高效運作。輕節點不下載完整區塊,僅同步 80 位元組的區塊頭;當需要驗證某筆交易是否被收錄時,只需向全節點索取一條對數級別長度的 Merkle 證明路徑。代價是輕節點必須假設自己看到的是累積工作量最多的那條鏈,信任礦工提供的工作量證明。

不可篡改性來自雜湊鏈的串接機制。若有人試圖改動歷史區塊中的任一筆交易,該區塊的 Merkle 根會改變,導致區塊頭雜湊改變;後續所有區塊所引用的「前一區塊雜湊」也會全數失效。攻擊者必須重新運算該區塊之後的所有工作量,並超越全網累積算力。

區塊大小在隔離見證後改用重量單位衡量,單個區塊的總重量上限固定為 4,000,000 重量單位(Weight Units)。傳統區塊資料按 1 位元組等於 4 WU 計算,見證資料則按 1 位元組等於 1 WU 折扣計算。這也是為什麼費率通常以每虛擬位元組(sat/vB)為計量單位。

共識規則:工作量證明怎樣決定「哪條鏈算數」

挖礦本質上是受密碼學約束的暴力窮舉計算。礦工將候選區塊頭進行雙重 SHA-256 運算,若結果小於目標難度值,區塊即宣告有效;若不符則遞增 Nonce。由於 4 位元組 Nonce 的搜尋空間有限,礦工還會修改區塊第一筆交易(Coinbase 交易)中的 ExtraNonce 欄位,以獲取更大的搜尋空間。

全網難度目標每 2016 個區塊(大約兩週)調整一次。調整公式計算過去 2016 個區塊實際花費的時間與預期 20,160 分鐘的比值,使全網平均出塊間隔動態錨定在 10 分鐘左右。算力湧入時難度上調,算力退潮時難度下降,確保代幣發行節奏不因硬體迭代而脫軌。

決定哪條鏈算數的標準,是客觀累積了最多工作量證明的有效鏈,而非節點數量或任何委員會的投票。礦工可以選擇打包哪些交易,但只要打包的區塊違反任何一條共識規則,就會被全網節點立即丟棄。

當兩個礦工在相近時間各自挖出合法區塊時,網絡會暫時出現分叉。節點各自保留先收到的區塊,直到下一輪礦工在其中一個分支之上挖出新區塊。累積工作量較多的分支成為主鏈,落選分支上的交易退回記憶池重新等待打包,此過程稱為鏈重組(Reorganization)。

針對 51% 算力攻擊,現實世界的約束遠超純數學層面:維持絕對算力需負擔龐大的能源消耗與專用晶片資本;發動攻擊導致網絡信心崩潰,攻擊者持有的代幣與礦機硬體資產價值亦會同步受損。即便發動成功,攻擊者也僅能回滾近期交易進行雙花,或進行交易審查,無法憑空偽造他人私鑰簽名來盜取 UTXO,更無法擅自更改 2100 萬總量上限等共識規則。

貨幣政策:2100 萬上限與減半機制

協議在創世區塊中約定區塊補貼為 50 BTC,每產生 210,000 個區塊(約四年)補貼數額減半一次。這一遞減邏輯被硬編碼在節點驗證規則中:任何節點收到 Coinbase 補貼超標的區塊,都會判定該區塊無效並阻斷轉發。2024 年第四次減半後,區塊補貼已降至 3.125 BTC,下一次減半預計發生在 2028 年前後。

除了區塊補貼,礦工亦享有區塊中所有交易的手續費差額。隨著未來的減半推進,交易手續費在礦工收益結構中的佔比將逐步提升,成為維持全網算力安全預算的主要支柱。由於每個區塊的容量重量上限固定,區塊空間呈現天然的稀缺性,手續費水準由市場供需關係動態決定。

誰在執行規則:全節點、礦工與錢包的分工

生態中的四類參與者角色,各自承擔完全不同的功能與信任假設:

角色 主要職責 信任假設
全節點 下載、儲存並逐筆驗證所有歷史交易與區塊,獨立執行共識規則 完全去信任,只相信本地硬體算出的密碼學驗證結果
礦工 打包記憶池交易、計算區塊雜湊、提供工作量證明以爭取獎勵 必須遵守共識規則,否則產出的區塊將被全節點拒絕,白費電費
輕節點(SPV) 僅下載 80 位元組區塊頭,依賴 Merkle 路徑驗證特定交易 信任累積最多工作量的鏈上區塊均已通過全節點驗證
託管錢包 / 交易所 集中代管私鑰,在中心化資料庫中記錄內部記帳份額 完全信任託管機構的安全性、償付能力與營運信用

全節點構成了比特幣網絡的去中心化邊界。即便是掌握全網算力的礦工聯盟,也無法強迫運行全節點的商家或交易所接受不合規的區塊,全節點與經濟節點的獨立驗證能力是抵制規則任意變更的關鍵基石。

規則要怎麼改:BIP 流程與分叉的本質

協議升級通常始於 BIP(Bitcoin Improvement Proposal,比特幣改進提案)。提案詳細記錄設計動機、技術規範與向後相容性,並在社群、開發者、礦工與節點營運者之間進行多輪技術評估。提案通過僅代表形成共識,需要透過具體軟體實作並由全網節點自願部署更新。

根據與舊版本的相容方式,規則變更分為兩種:

  • 軟分叉(Soft Fork):收緊驗證條件的向後相容升級。新規則下合法的區塊,舊節點同樣視為合法;未升級節點仍能跟隨主鏈運作,只是無法獨立檢驗新規則的細節。例如 P2SH、SegWit、Taproot 均以軟分叉方式啟動。
  • 硬分叉(Hard Fork):向後不相容的共識規則改變。新規則產生的區塊會被舊版本節點判定為無效,全網所有節點必須同步升級;若社群在硬分叉規則上存在分歧且未升級節點繼續運行舊鏈,區塊鏈將永久分裂成兩條獨立運行的公鏈。

一條鏈的生存能力並非單純取決於礦工算力訊號。交易所、託管商、大型商家與廣大用戶等「經濟節點」選擇在哪一套規則下清算資產,才是決定升級能否順利確立的決定性力量。

幾個常見的誤解

誤解一:比特幣鏈上有個帳本記錄著某個地址有多少錢。
真相:底層只有散落在各區塊中的 UTXO,沒有全局帳戶餘額表。錢包軟體透過掃描屬於你的私鑰對應的未花費輸出,動態加總計算出當前餘額。

BTC協議:幾個常見的誤解相关概念与关系示意
誤解一:比特幣鏈上有個帳本記錄著某個地址有多少錢

誤解二:交易一經節點廣播,就算轉帳成功。
真相:廣播僅代表交易進入各節點的記憶池(Mempool)。記憶池中的交易可能因費率過低被節點逐出,或因鏈重組而被回滾。未經區塊確認的「零確認」交易在協議層面並不具備不可逆的最終性。

誤解三:BTC 協議足夠安全,意味著持有資產絕對安全。
真相:協議保證的是底層共識與鏈上雙花的防禦能力;私鑰洩漏、助記詞備份不當、合約釣魚或中心化交易所倒閉,皆屬於協議防護範疇之外的使用端安全事件。

協議層的拓展與當前演進

比特幣的核心共識架構維持著極高的穩定性:貨幣總量政策未曾動搖,每兩週的難度調整機制依舊運行,UTXO 資料結構保持原貌。協議層的發展主要體現在利用既有彈性進行的擴展探索:

Taproot 激活後,其帶來的腳本彈性引發了將任意資料寫入見證區的用法(如銘文與符文相關元數據),使得鏈上區塊空間需求與手續費市場經歷了顯著波動。這在社群內引發了關於「區塊空間純淨性」與「經濟安全預算持續性」的廣泛探討,實證了見證折扣政策對鏈上資料結構的深遠影響。

鏈下擴展層面,閃電網絡作為基於多簽腳本與時間鎖(HTLC)的雙向支付通道網絡,持續承載著小額即時微支付的探索。不同於鏈上廣播,閃電網絡依賴節點自發組建的通道流動性,其節點數、通道數量與網絡容量動態調整,展示了協議在第二層進行清算的技術路徑。

機構接軌方面,美國證券交易委員會(SEC)於 2024 年 1 月 10 日正式批准現貨比特幣 ETF 於受監管交易所上市(發布於 SEC 官方公告)。傳統資金得以在合規架構下獲得比特幣資產敞口,背後的託管與結算機制均在協議層之外運作,擴展了資本進入途徑,而未對底層驗證規則產生干預。

常見問題 FAQ

Q1:轉帳一般需要等「幾個確認」才算安全?

協議層本身沒有硬性規定「幾個確認」才生效,每個新區塊都會加深一筆交易的不可逆程度。一般小額轉帳等待 1 至 2 個確認(約 10-20 分鐘)即可大幅防範常見風險;交易所或大額交易通常要求 3 至 6 個確認,使發動鏈重組覆蓋該交易的經濟成本高到無法成立。

Q2:為什麼轉帳金額很小,手續費有時卻非常昂貴?

比特幣網絡的手續費並非按轉帳金額百分比收取,而是按交易在區塊中所佔用的資料體積(虛擬位元組 vB)計算。如果轉帳時動用了大量零碎的 UTXO 作為輸入,交易體積便會大幅膨脹;若同時遇上全網記憶池擁擠,單位費率(sat/vB)走高,手續費成本就會顯著增加。

Q3:既然 51% 算力無法偷走他人的幣,它到底能做什麼?

掌握過半算力的實體無法偽造別人的私鑰簽名,因此不能憑空花費他人的 UTXO。51% 攻擊所能實現的破壞主要是雙花(自己花掉一筆幣給商家或交易所,隨後秘密挖出一條更長的分支將該交易抹除以拿回代幣),或是進行交易審查,持續拒絕將特定地址的交易打包進區塊。

Q4:全節點不挖礦,為什麼對維護網絡安全如此關鍵?

全節點是比特幣共識規則的終極仲裁者。礦工的工作是提供算力打包區塊,但每個全節點都會獨立校驗區塊與交易。若礦工產出一個違反規則的區塊(例如超額發放獎勵或收錄非法簽名),全節點會拒絕該區塊的傳播。散布在全球的大量獨立全節點,杜絕了算力寡頭隨意篡改規則的可能。

admin

作者负责资讯整理、核查与撰写。 · 已发布 93 篇文章

查看作者全部文章