作者: Jameson Lopp
翻譯&校對: 閔敏 & 阿劍
人們在討論不同密碼學貨幣的共識機制時經常會產生爭議,主要是因為他們對這些密碼學貨幣用來保護賬本歷史數據的安全模型缺乏了解(定義)。雖然所有共識模型都是在防範各種理論上的攻擊,但是了解這些模型的目的非常重要。
安全模型可以分為兩個部分:假設(assumption)和保證(guarantee)。如果用作輸入的假設成立,則安全模型輸出的保證也應成立。
讓我們來深入探索比特幣為其全節點運營者提供的安全模型。
求真
“用戶間信任需求最小化是比特幣的優勢之一。我個人甚至認為這是比特幣最大的優勢。” —— Pieter Wuille
分佈式賬本旨在提供有序的事件記錄,因為在分佈式系統中你不能單純地信任時間戳。
新的參與者剛加入一個區塊鍊網絡時,會從軟件硬編碼的創世塊開始下載所有可獲得的區塊,然後鑑別整條區塊鏈的有效性。
比特幣安全模型最重要的假設之一是絕大多數礦工都是誠實的—— 他們在努力保護區塊鏈的安全性,而不是試圖破壞它。實際上,縱觀比特幣的發展史,得益於有效的礦工激勵機制,這個假設至今未被打破,雖然已經有人懷疑它能否長期保持。
有了這個假設作為前提,全節點運營者完全可以確信:
- 除礦工之外沒人能增發比特幣,而且比特幣的供應量會嚴格按照發行計劃表增加。
- 沒有私鑰就無法花費對應的比特幣。
- 沒有人可以重複花費同一筆比特幣。
在比特幣區塊鏈強有力的保證下,全節點運營者還可以確信以下兩點:
- 任何比特幣區塊都是在其時間戳的大約兩小時內創建的。
- 他們正在同步的是“真實的” 區塊鏈歷史。
從技術層面來講,比特幣區塊需要經過大量檢查:
- 所有區塊都遵守共識規則:
- 每個區塊都與其父塊相連
- 每個區塊都達到目標難度值,並且有充足的工作量證明
- 區塊時間戳位於與上一最新區塊之間的時間窗口內
- 默克爾根與區塊所記載的交易相匹配
- 區塊大小不超過上限
- 每個區塊的第一筆(也只有第一筆)交易是coinbase 交易
- Coinbase 輸出不超過區塊獎勵
- 區塊內包含的簽名操作不超過許可範圍
- 所有交易都遵守共識規則:
- 輸入值和輸出值都是合理的
- 交易只花費還未被花費過的輸出
- 所有即將花費的輸入都有有效簽名
- coinbase 交易創建後的100 個區塊內,該coinbase 交易的輸出無法花費
- 當某筆交易仍處在區塊確認的窗口期,其輸出就不能花費
- 篇幅有限,其餘規則不作贅述
熱力學安全性
區塊內的交易一經確認無法回滾,除非有人花費大量能源重寫這條鏈。只要沒有攻擊者擁有全網50% 以上的算力,且誠實的節點可以快速通信,發生交易回滾的概率就會隨著交易確認次數呈指數級下降。其它類型的攻擊(例如,自私挖礦)雖然沒有這麼高的能耗需求,但是實施起來很難。
– 來源:Yonatan Sompolinsky1 和Aviv Zohar 撰寫的Bitcoin’s Security Model Revisited –
從比特幣礦工當前的累積工作量來看,攻擊者需要計算出將近10^26 個哈希值,才能從創世塊開始構建出一條累積工作量證明更多的鏈。全節點會將這條鏈視為“合法” 的鏈。
– 來源:http://bitcoin.sipa.be –
我們來計算一下51% 攻擊的成本:
一台螞蟻礦機S9 的功耗是 0.1 J/GH(10^9 hash)。
10^26 哈希 * 0.1 J / 10^9 哈希 = 10^15 J
10^15 J = 2,777,777,778 kw/h * $0.10 kw/h = $277,777,778(重寫整條區塊鏈所需的電力成本)
撰寫