2024 年 3 月 20 日,我遭遇了一次數據庫勒索。數據庫被清空,對方留下了一段英文消息,聲稱已經備份全部數據,要求在 48 小時內支付 0.0117 枚比特幣,否則將公開並刪除數據。
按照當時的幣價粗略換算,這筆贖金約為 5,500 元人民幣。至於對方是否真的保留了可恢復的數據,僅憑留言無法確認。
這段經歷引出了一個問題:對方為什麼指定比特幣收款?一個沒有銀行負責記賬的系統,又如何確認這筆錢究竟屬於誰?
理解這些問題,可以從私鑰和賬本開始,再逐步走到共識、智能合約,以及去中心化的邊界。
一、從一封勒索信說起
比特幣允許參與者通過網絡發起價值轉移,轉賬過程無需逐筆獲得某一家銀行的批准。跨地域轉移的便利,以及地址與現實身份之間並不直接對應的特點,使它也成為部分勒索者索要贖金的工具。
但比特幣的交易記錄公開可查。地址雖然通常不直接顯示姓名,卻可能通過交易關聯、交易所記錄或其他信息與現實身份聯繫起來。因此,使用比特幣不能等同於完全匿名,更不意味著資金流向無法追蹤。
從這次勒索經歷切入,是因為一筆收款要求,恰好觸及了區塊鏈最基本的能力:在參與者彼此不認識、缺少統一記賬機構的情況下,維護一份能夠驗證的資產記錄。
傳統銀行由銀行及其相關清算體系維護賬戶和轉賬記錄。比特幣則把驗證記錄的能力交給運行相應軟件的節點,並通過協議協調哪些記錄進入共同接受的歷史。
兩者都需要規則。區別在於規則由誰執行,以及參與者能夠獨立驗證到什麼程度。
二、私鑰控制的究竟是什麼
“我有一枚比特幣”,很容易讓人聯想到錢包裡放著一枚硬幣。實際使用中,錢包主要幫助用戶管理密鑰、查詢鏈上記錄,以及構造和簽署交易。
比特幣採用未花費交易輸出,也就是 UTXO 模型。可以把它理解為:歷史交易留下了一些尚未使用的輸出,每一項輸出都規定了後續花費它需要滿足的條件。錢包將自己能夠控制的輸出彙總,顯示為餘額。
當用戶轉賬時,錢包選擇可花費的輸出,創建新的交易輸出,並通過私鑰生成簽名。節點依據相應條件驗證簽名和交易,確認這筆支出是否獲得授權,是否試圖重複花費已經用掉的輸出。
私鑰因此具有直接的支配意義。對於常見的自託管錢包,掌握私鑰或助記詞的人,通常就能夠授權轉移對應資產。錢包軟件可以重新安裝,但丟失密鑰後,通常沒有一箇中心客服能夠替用戶重置支配權。
這裡還需要區分自託管錢包與交易所賬戶。如果資產存放在中心化交易所,用戶看到的餘額通常是平臺內部賬本中的記錄,鏈上私鑰由平臺管理。用戶能否提幣,還依賴平臺的實際資產、服務狀態和提幣規則。
因此,“資產在鏈上”和“用戶自己控制私鑰”是兩件需要分別確認的事。使用區塊鏈應用時,首先值得問的就是:誰真正有權簽署這筆資產轉移?
三、陌生節點如何維護同一本賬
如果只是把賬本複製到很多服務器,仍然無法解決一個關鍵問題:當不同節點收到相互衝突的交易時,應當接受哪一份歷史?
以比特幣為例,一筆交易通常會經歷以下過程:
- 錢包構造並簽署交易,將它提交給網絡中的節點。
- 節點檢查交易是否符合規則,符合轉發條件時再傳播給其他節點。
- 礦工從候選交易中組織區塊,並進行工作量證明計算。
- 其他節點獨立驗證新區塊及其中的交易,再依據共識規則更新本地賬本。
礦工與驗證節點的職責並不相同。礦工競爭產生新區塊,驗證節點檢查區塊是否滿足自己執行的協議規則。一個區塊即使包含大量計算工作,只要違反規則,遵守規則的節點仍會拒絕它。
當網絡短暫出現不同分支時,比特幣節點會在符合規則的候選鏈中,依據累計工作量選擇接受的鏈。這與“多數服務器舉手投票”有明顯區別。簡單增加服務器數量,並不會自動獲得相應的共識權重。
一筆交易進入區塊後,稱為獲得確認。後面繼續接上新區塊,會增加改寫這段歷史所需的工作量。比特幣的確認具有概率性,業務系統通常根據金額和風險要求設置確認數,確認越多,因鏈重組而改變記錄的風險通常越低。
對於無效交易,節點會拒絕將其作為有效交易接受。對於有效區塊之間的分支切換,則可能發生鏈重組,需要重新判斷部分交易的確認狀態。這些情形不能統一描述為“多數節點否認後,所有操作就像從未發生”。
挖礦的收益從哪裡來
礦工產生有效區塊後,可以通過區塊中的特殊交易領取區塊補貼,以及該區塊所包含交易的手續費。
區塊補貼來自協議規定的發行機制。比特幣的初始區塊補貼為 50 BTC,並按每 210,000 個區塊減半的規則遞減。節點會檢查領取的金額是否超過允許範圍,超額領取會導致區塊無效。
這套機制同時處理了發行和激勵問題。礦工承擔設備、電力與機會成本,協議讓符合條件的區塊獲得收益。手續費則由交易的輸入總額與輸出總額之差形成,礦工通常會結合手續費水平和區塊容量決定收錄哪些交易。
以上描述針對比特幣的工作量證明。不同區塊鏈可以採用不同機制,例如以太坊目前使用權益證明,不能把“挖礦”當作所有區塊鏈統一的運行方式。
四、智能合約如何執行規則
比特幣已經展示瞭如何維護可驗證的交易歷史。以太坊等平臺進一步提供了通用程序的執行環境,使應用可以把部分業務規則放到鏈上執行。
智能合約是在鏈上特定地址部署的程序,包含代碼和狀態。用戶提交交易調用它的功能,網絡按照規則執行,再將結果納入鏈上狀態。
從軟件工程角度看,需要區分幾種東西:白皮書用於說明設計,協議規定系統如何運行,節點軟件實現這些規則,智能合約則是部署在相應鏈上執行的程序。它們彼此關聯,但不能混用。
代幣合約就是一個常見例子。它可以記錄各地址的餘額,處理轉移和授權。誰可以增發、是否能夠暫停、是否存在凍結地址的權限,都取決於具體實現及其管理機制。
一筆交易為什麼會出現多條轉移記錄
原分享中有一張 Polygon 鏈上交易的截圖:一次合約調用,頁面列出了三條代幣轉移事件。

圖片摘自原分享 PPT,保留代幣轉移與手續費區域。截圖中的 MATIC 名稱及美元估值為當時頁面顯示。
截圖中,同一筆交易涉及 DAI 的多次轉移,並出現了一條從零地址開始的 aToken 轉移事件。這說明一次業務操作可能觸發多個合約調用和狀態變化,區塊瀏覽器再將相關事件展示為多條記錄。
頁面上的代幣轉移記錄與網絡手續費需要分別看待。手續費單獨列在交易費用字段中,不能把第三條轉移記錄直接認作礦工費。截圖展示的具體代幣數量也不應在不瞭解合約精度和兌換規則時,直接當作等額關係解釋。
這些記錄來自合約事件。事件便於錢包、瀏覽器和索引服務展示執行結果,但進一步核實一筆業務操作,仍需要結合合約地址、代碼和實際狀態。
鑄造、銷燬與零地址
在 ERC-20 代幣中,鑄造通常意味著增加總供應量,並增加某個地址的餘額。ERC-20 標準建議,創建代幣時發出來源為零地址的 Transfer 事件,方便外部系統識別。
常見實現也會在銷燬時減少總供應量,併發出目標為零地址的事件。例如 OpenZeppelin 的實現,就明確區分了普通轉移、鑄造和銷燬時對餘額及總供應量的處理。
零地址在這裡承擔特殊標記的作用,不能僅憑頁面顯示就推斷髮生了供應量變化。某些操作只是把資產送到難以使用的地址,是否真正減少了合約記錄的總供應量,還需要查看具體邏輯。
同樣,部署一個代幣合約,只能說明某套記賬與轉移規則已經存在。交易需求、市場流動性和價格形成仍需要參與者。增加流動性能夠改善交易條件,卻無法單獨保證資產具有持續價值,稀缺性也不足以獨立解釋價格。
五、去中心化之後,信任仍在哪裡
區塊鏈讓參與者能夠驗證規則與記錄,但一個完整應用通常還涉及託管機構、網站、數據服務和現實資產。底層賬本的性質,不能直接代表整個應用的性質。
中心化交易所仍然依賴平臺賬本
中心化交易所通常在內部系統完成撮合和餘額變化,充值、提幣等環節再與鏈上交互。用戶在平臺內完成一次買賣,並不意味著鏈上一定發生一筆對應轉賬。
這種方式有利於提供低延遲撮合和複雜交易功能,同時也把資產保管、內部記賬和提款履約集中到了平臺。鏈上能夠查到平臺的部分資產,並不足以獨立證明全部客戶負債和內部賬目。
因此,底層資產採用區塊鏈,與平臺本身採取中心化經營並不矛盾。判斷託管風險,需要同時看資產控制權和內部業務機制。
穩定幣把信任延伸到了鏈下
USDT 這類由發行機構管理的穩定幣,將鏈上代幣與現實金融體系聯繫起來。理解它時,需要分別看鏈上的轉移規則,以及發行方的儲備、發行和贖回安排。
鏈上合約能夠執行代幣轉移,卻無法自行保證某個銀行賬戶已經收到美元,也不能獨立證明鏈下儲備是否充足、能否及時變現。儲備可以包含不同類型的資產,具體構成需要查看發行方的披露,不能簡單等同於同額銀行現金。
“市場價格接近一美元”與“任何持有人都能隨時直接向發行方兌換一美元”也有區別。直接贖回涉及資格、條款和操作條件,二級市場價格還會受到流動性和市場預期影響。
穩定幣讓鏈上交易獲得了更熟悉的計價單位,同時保留了對發行機構及鏈下體系的信任依賴。
合約公開之後,還需要檢查控制權
即使合約代碼公開,應用也可能保留升級、暫停或增發等權限。如果這些權限由少數密鑰控制,用戶實際上仍然依賴管理者妥善使用權限,以及正確保護密鑰。
依賴現實價格或其他外部信息的合約,還需要預言機等數據機制。鏈上程序會按收到的數據執行,但數據是否準確、是否及時,仍有自己的信任與故障邊界。
對一個具體應用,我更關注以下問題:
| 需要確認的事項 | 對用戶意味著什麼 |
|---|---|
| 誰保管私鑰、誰能夠簽署資產轉移 | 資產由用戶直接控制,還是依賴託管方履約。 |
| 誰能夠升級、暫停或修改關鍵參數 | 當前看到的規則未來能由誰改變,需要哪些批准。 |
| 業務依賴哪些鏈下資產與數據 | 哪些事實能夠鏈上驗證,哪些仍需要相信機構或外部輸入。 |
| 用戶能否獨立核驗並退出 | 網站或服務商失效後,用戶是否仍有可用方式查看和處理資產。 |
去中心化可以分別發生在記賬、驗證、託管、治理和訪問入口等環節。評價一個系統時,把這些環節逐項拆開,比只看它是否使用區塊鏈更有幫助。
規則、代價與適用範圍
作為開發者,我更關心區塊鏈適合解決怎樣的協作問題。如果多個參與方需要共同維護記錄,又不願把最終控制權完全交給其中一家,可獨立驗證的賬本與規則便有討論價值。
這些能力也有代價:共識會限制吞吐並增加確認等待,鏈上公開性需要額外考慮隱私,密鑰管理與合約錯誤則可能帶來難以撤銷的後果。對由單一組織負責運營、權限邊界明確的業務,數據庫、審計日誌和備份機制往往更直接。
回到開頭的勒索事件,收款工具可以使用區塊鏈,數據庫的訪問控制和備份恢復仍然需要在原系統中解決。一個環節採用了去中心化技術,不會自動補齊其他環節的安全能力。
我理解的“去中心化的藝術”,在於具體安排控制權和驗證能力:哪些事情由規則保障,哪些仍依賴機構,出現錯誤時又由誰承擔後果。看清這些邊界,才能判斷一套設計究竟解決了什麼問題,以及它帶來的代價是否值得。
參考資料
本文由個人分享《區塊鏈:去中心化的藝術》整理改寫。開頭事件與鏈上交易示例來自原分享,機制說明結合以下資料核對:
- Bitcoin Core:區塊驗證、累計工作量選鏈與區塊補貼實現
- Ethereum:智能合約介紹
- ERC-20:代幣接口與 Transfer 事件標準
- OpenZeppelin:ERC20 的轉移、鑄造與銷燬實現
穩定幣的具體儲備與贖回安排會變化,可進一步查閱 Tether 儲備披露及服務條款,以發行方適用披露和條款為準。