人們在討論不同密碼學貨幣的共識機制時經常會產生爭議,主要是因為他們對這些密碼學貨幣用來保護賬本歷史數據的安全模型缺乏了解(定義)。雖然每個共識機制的安全模型旨在防范各種理論上的攻擊,但是了解這些模型的目的非常重要。
安全模型可以分為兩個部分:假設(assumption)和保證(guarantee)。如果用作輸入的假設成立,則安全模型輸出的保證也應成立。
讓我們來深入探索比特幣為其全節點運營者提供的安全模型。
“用戶間信任需求最小化是比特幣的優勢之一。我個人甚至認為這是比特幣最大的優勢。” —— Pieter Wuille
分布式賬本旨在提供有序的事件記錄,因為在分布式系統中你不能單純地信任時間戳。
新的參與者剛加入一個區塊鏈網絡時,會從軟件硬編碼的創世塊開始下載所有可獲得的區塊,然后鑒別整條區塊鏈的有效性。
比特幣安全模型最重要的假設之一是絕大多數礦工都是誠實的 —— 他們在努力保護區塊鏈的安全性,而不是試圖破壞它。實際上,縱觀比特幣的發展史,得益于有效的礦工激勵機制,這個假設至今未被打破,雖然已經有人懷疑它能否長期保持。
有了這個假設作為前提,全節點運營者完全可以確信:
除礦工之外沒人能增發比特幣,而且比特幣的供應量會嚴格按照發行計劃表增加。
沒有私鑰就無法花費對應的比特幣。
沒有人可以重復花費同一筆比特幣。
在比特幣區塊鏈強有力的保證下,全節點運營者還可以確信以下兩點:
任何比特幣區塊都是在其時間戳的大約兩小時內創建的。
他們正在同步的是 “真實的” 區塊鏈歷史。
從技術層面來講,比特幣區塊需要經過大量檢查:
所有區塊都遵守共識規則:
每個區塊都與其父塊相連
每個區塊都達到目標難度值,并且有充足的工作量證明
區塊時間戳位于與上一最新區塊之間的時間窗口內
默克爾根與區塊鎖記載的交易相匹配
區塊大小不超過上限
每個區塊的第一筆(也只有第一筆)交易是 coinbase 交易
Coinbase 輸出不超過區塊獎勵
區塊內包含的簽名操作不超過許可范圍
所有交易都遵守共識規則:
輸入值和輸出值都是合理的
交易只花費未花費輸出
所有即將花費的輸入都有有效簽名
coinbase 交易創建后的 100 個區塊內,該 coinbase 交易的輸出無法花費
比特幣全網未確認交易數量為15053筆:金色財經報道,據BTC.com數據顯示,目前比特幣全網未確認交易數量為15053筆,全網算力為328.81 EH/s,24小時交易速率為3.39交易/s,目前全網難度為43.05 T,預測下次難度上調0.48%至43.26 T,距離調整還剩4天19小時。[2023/3/6 12:43:56]
當某筆交易仍處在區塊確認的窗口期,其輸出就不能花費
篇幅有限,其余規則不作贅述
區塊內的交易一經確認無法回滾,除非有人花費大量能源重寫這條鏈。
只要沒有攻擊者擁有全網 50% 以上的算力,且誠實的節點可以快速通信,發生交易回滾的概率就會隨著交易確認次數呈指數級下降。其它類型的攻擊(例如,自私挖礦)雖然沒有這么高的能耗需求,但是實施起來很難。
從比特幣礦工當前的累積工作量來看,攻擊者需要計算出將近 10^26 個哈希值,才能從創世塊開始構建出一條累積工作量證明更多的鏈。全節點會將這條鏈視為 “合法” 的鏈。
我們來計算一下 51% 攻擊的成本:
一臺螞蟻礦機 S9 的功耗是 0.1 J/GH(10^9 hash)。
10^26?hash * 0.1 J / 10^9 hash = 10^15?J
10^15?J = 2,777,777,778 kw/h * \$0.10 kw/h = $277,777,778(重寫整條區塊鏈所需的電力成本)
撰寫本文時,一個區塊必須達到?253,618,246,641 的目標難度值,這大約需要:
253,618,246,641 * 2^48?/ 65535 = 1.09 * 10^21?hash
1.09 * 10^21?hash * 0.1 J / 10^9?hash = 1.09 * 10^11?J
1.09 * 10^11 J = 30,278 kw/h * \$0.10 kw/h = $3,028(創建每個區塊所需的電力成本)
因此,我們可以說比特幣具有熱力學安全性。
你可以調整上述計算中的一些變量來降低成本,但我們可以肯定的是,僅重寫整條區塊鏈就需要價值數百萬美元的電力。然而,在最壞的情況下,擁有如此強大算力的攻擊者能夠將交易回滾至 2014 年 —— 我們很快就會深入探究其原因。
馬斯克:特斯拉很可能會恢復接受比特幣支付:金色財經報道,特斯拉CEO埃隆·馬斯克在The ? Word會議上表示,特斯拉、SpaceX和我都不會出售任何比特幣。 特斯拉很可能會繼續接受比特幣支付。馬斯克稱,看起來比特幣正在更多地轉向可再生能源,有轉向超過50%的可再生能源的趨勢。 在這種情況下,特斯拉將恢復接受比特幣。此外,馬斯克稱自己是去中心化金融的粉絲。[2021/7/22 1:08:29]
另外請注意,購買和運行礦機所需的成本并未考慮在內。
由于比特幣協議認為累積工作量證明最多的鏈才是合法的鏈(最長鏈原則是常見的誤解),新加入網絡的對等節點只需與另一個誠實的對等節點建立連接,就可以找到合法的鏈。
這也被稱為抗女巫攻擊,這意味著攻擊者無法通過運行多個不誠實的對等節點來向某個對等節點提供虛假信息。
上圖顯示了一個近乎最糟糕的情況:你的節點遭受了大規模女巫攻擊,但是依然與一個誠實的節點保持連接,就可以通過這個節點連接至真正的區塊鏈。只要有一個誠實的對等節點將真實的區塊鏈數據傳輸給你的全節點,你的節點就會識破那些試圖欺騙你的女巫攻擊者,然后將它們忽略。
當你的節點同步至區塊鏈頂端時,你就會發現比特幣協議通過其它一些有趣的屬性來維護全網共識。
《比特幣和其它密碼學貨幣的研究視角及挑戰》的作者指出,以下特性對密碼學貨幣的穩定性來說至關重要:
最終共識。在任何時候,所有遵守規則的節點都要就最終的 “合法” 區塊鏈的最新一個區塊達成共識。
指數級收斂。深度為 n 的分叉的概率是 O(2?n)。這使得用戶堅信他們的交易可以在 “k 次確認” 后得到永久結算。
活性。新區塊會不斷生成,支付適當交易費的有效交易會在合理時間內被打包上鏈。
正確性。在累積工作量證明最多的鏈上,所有區塊內包含的交易都是有效的。
公平性。擁有全網總算力 X % 的礦工可以挖出大約 X% 的區塊。
論文作者指出,比特幣看起來具備上述特性,至少是在假設大部分礦工都保持誠實的前提下。這就是區塊獎勵和工作量證明機制想要達到的目的。
還有許多其它算法可以用來維護分布式系統中的共識,例如:
權益證明(PoS)
幣齡證明(Proof of Coin Age)
質押證明(Proof of Deposit)
燃燒證明(Proof of Burn)
活動量證明(Proof of Activity)
USDT占比特幣交易比重約為56.81%:金色財經消息,據cryptocompare數據顯示,目前比特幣交易情況按照交易幣種排名,排名名第一的是USDT,占比為56.81%;排名第二的是美元,占比為15.88%;排名第三的是BUSD,占比為5.23%;排名第四的是歐元,占比為4.84%;排名五的是日元,占比為4.44%[2021/3/31 19:31:25]
耗時證明(Proof of Elapsed Time)
聯合共識(Federated Consensus)
實用型拜占庭容錯(Practical Byzantine Fault Tolerance)
上述算法創建了不同的安全模型 —— 與工作量證明最明顯的區別在于,基于這些算法的系統都是以消耗內部資源(幣或聲譽)而非外部資源(電力)來達成共識的。受其影響,這些系統對網絡中驗證者的激勵措施和信任需求各不相同,極大地改變了安全模型。
一個常見的誤區是,比特幣有一個明確定義的安全模型。
事實上,無論是過去還是現在,比特幣協議都沒有一個正式定義的規范或安全模型。我們能做的最好的事情就是研究系統參與者的動機和行為,以便更好地理解和描述比特幣的安全模型。
盡管如此,經常有人誤解了比特幣協議的一些特性。
一些區塊鏈存在很嚴重的隱患,因為開發者在節點軟件中增加了專斷設定的已簽名檢查點,表示 “開發人員已經確認區塊 X 位于正確的那條鏈上”。這是一個極端中心化的單點問題。
值得一提的是,比特幣有 13 個被硬編碼的檢查點,但是這些檢查點并沒有像被專斷設定的檢查點那樣改變安全模型。最后一個檢查點被添加到了 Bitcoin Core 0.9.3 內,區塊高度是 295000 (創建于 2014 年 4 月 9 日)。這個區塊的難度值是 6,119,726,089,所需電力成本約為:
6,119,726,089 * 2^48?/ 65535 = 2.62 * 10^19?hash
2.62 * 10^19?hash * 0.1 J / 10^9?hash = 2.62 * 10^9?J
2.62 * 10^9?J = 728 kw/h * \$0.10 kw/h = \$73(創建該區塊所需的電力成本)
因此,如果女巫攻擊者將一個新加入的節點(需要從頭開始進行同步)圍住,幾乎不需要任何成本就可以在較低的區塊高度創建較短的區塊鏈,但是不能超過檢查點。
如果女巫攻擊者將一個節點從同步超過區塊高度 295,000 的網絡分離出來,就能以每個區塊 73 美元的成本開始提供虛假區塊,至少是在發生難度調整之前。但是,受害節點同步的區塊鏈越長,攻擊者創建一條累積工作量證明更多的鏈所需的成本越高。
P2P比特幣市場Paxful宣布支持USDT:P2P比特幣市場Paxful宣布增加對Tether穩定幣USDT的支持。據悉,Paxful自2015年推出以來一直是一個純比特幣平臺,Paxful首席執行官Ray Youssef表示,在服務金融的實際使用案例方面,穩定幣做得更好,尤其是在新興市場。(The Block)[2020/9/9]
Greg Maxwell?和?Pieter Wuille?都表示,他們希望某天能完全移除檢查點。Bitcoin Core 的維護負責人 Wladimir van der Laan 指出,對于那些想要了解比特幣安全模型的人來說,檢查點是經常產生困惑的根源。
可以說,位于區塊高度?295,000 的檢查點意味著,全節點 “相信”?Bitcoin Core 開發者所說的 2014 年 4 月 9 日之前的區塊都是有效的。但是,全節點依然會檢查每個區塊頭里的默克爾哈希值,也就是說,交易歷史的有效性依然受到工作量證明的保護。首次同步歷史區塊鏈時,這些舊的檢查點可以改善性能(跳過簽名驗證),盡管 libsecp256k1 的引入讓性能差異變得不那么明顯。
檢查點存在的目的主要有三個:
防止節點的內存被有效但低工作量證明的區塊頭占滿。
跳過早期區塊內的簽名(提升性能)。
估量同步進度。
在撰寫這篇文章時,Greg Maxwell 提出使用累積工作量證明檢查來代替檢查點。一旦節點成功同步了某條包含超過?5.4 * 10^24 次哈希計算工作量的鏈,累積工作量證明較少的那條鏈就會被拒絕。這恰好與 2014 年 9 月創建的區塊 320,000 的工作量大致相符,這時單個區塊的難度值約為 27,000,000,000。
當難度值為 27,000,000,000 時,挖礦需要計算大約 27,000,000,000 * 2^48?/ 65535 = 1.16 * 10^20 次哈希函數。
1.16 * 10^20?hash * 0.1 J / 10^9?hash = 1.16 * 10^10?J
1.16 * 10^10 J = 3,222 kw/h * \$0.10 kw/h = \$322(平均創建每個區塊所需的電力成本)
因此,根據提議進行修改后,如果女巫攻擊者將一個需要從頭開始同步的全新節點完全包圍起來,就可以從任一區塊開始向這個節點發送虛假的區塊數據,而且幾乎不需要成本。如果女巫攻擊者將一個已經同步超過區塊 320,000 的節點完全包圍起來,那么從區塊?320,000 開始向該節點發送每個虛假區塊的成本是 322 美元。
聲音 | Andreas Antonopoulos:比特幣ETF獲批是早晚的事,但我不看好:比特幣安全專家Andreas Antonopoulos近日表示,ETF違背了點對點現金的基本原則。一種點對點的現金不會是通過托管人運作的,用戶應該能夠直接控制自己的資金,因為他們能夠直接控制私鑰。控制了私鑰,你的比特幣才真的是你的;沒有私鑰,你就不算真正持有比特幣。ETF就是一個價值數十億美元的工具。[2018/8/16]
簡而言之,如果一個實體可以完全控制你的節點的網絡連接,無論是采用哪種方式對節點的初始同步進行檢查,攻擊成本都相對較低;如果你的節點的網絡連接不受任何實體的控制,就可以輕而易舉地忽略來自攻擊者的區塊。
另外,每個區塊鏈系統都將創世塊硬編碼到了節點軟件中。你可能會覺得,“共享歷史” (即,賬本)是一種社會契約 —— 一旦某個區塊的歷史足夠悠久,網絡中的所有參與者之間都會達成共識,認為這個區塊永遠都不會被回滾。當開發者選定一個早期挖出的區塊并用它來創建檢查點時,更多是作為一種公認的完整性檢查,而非對歷史的客觀描述。
除了檢查點之外,節點如何實現自引導也是一個問題。目前,比特幣節點的自引導流程是檢查節點是否在本地存儲了之前從對等節點那里了解到的數據。如果沒有的話,節點將查詢一組被硬編碼到軟件中的 “DNS 種子”。這些種子負責維護一個連接良好的比特幣節點的列表,并將這個列表返回給你的節點。
正如我們可以從代碼中看到的那樣,Bitcoin Core?0.13 目前使用由?Pieter Wuille、Matt Corallo、Luke Dashjr、Christian Decker、Jeff Garzik 和 Jonas Schnelli?運行的 DNS 種子。任何人都可以使用?Pieter Wuille 的比特幣種子生成器軟件或?Matt Corallo 的軟件來運行 DNS 種子。但是,他們必須說服某個全節點實現的開發者將他們的 DNS 種子主機添加至對方的軟件。
新節點的引導過程僅僅依賴 6 個 DNS 種子,這看似又是一個極端中心化的單點問題。但是別忘了,比特幣的安全模型只需要你連接到一個誠實的對等節點,就足以抵御女巫攻擊。
因此,一個新的節點只需能夠連接到一個沒有遭受攻擊的 DNS 種子即可,這個種子會返回誠實節點的 IP 地址。但是,為了防范所有 DNS 節點因某種原因全都無法訪問的情況,還有一個備用方案 —— 一個被硬編碼到軟件中的可靠節點 IP 地址的列表,會隨著每個新版本發布而更新。
在圍繞這些初始化參數構建的安全模型下,全節點運營者不需要信任 X 個 DNS 種子或 Y 個?Bitcoin Core 軟件開發者會向他們提供真實的數據,只需要相信有 1/X 的 DNS 節點沒有遭受攻擊,或 1/Y 的?Bitcoin Core 軟件開發者會誠實地審查被硬編碼的對等節點更改的有效性即可。
從更深層次來看,你在運行一個全節點時,會在一定程度上信任你正在運行的硬件和軟件。
你可以采用多種方法將你的二進制文件的簽名與?van der Laan 的進行核對,以此驗證軟件是否可靠,但是很少會有人愿意惹這個麻煩。至于如何驗證硬件的可靠性,這是個棘手的問題。如果你需要一個安全的硬件解決方案,最接近的選擇是?ORWL。如果有人試圖篡改 ORWL,會觸發它的 “自毀” 機制。?
但是,由于 CPU、RAM 等重要硬件通常都是專有的,你永遠也無法 100% 確定它們不會遭到入侵。
當你開始研究比特幣系統中不同參與者之間的關系時,會發現自己如墜五里霧中。
運行全節點的目的是保護你的金融主權。這就意味著,一旦你安裝并運行了特定版本的軟件,即表明你與該軟件以及其他所有網絡參與者都達成了一項協議 —— 不僅你會遵守該軟件的規則,而且其他網絡參與者也必須遵守這些規則。
因此,如果人們想要對軟件的規則做出無法向后兼容的更改,你必須運行新版本的軟件來表示你明確同意這些規則更改。另一方面,如果是向后兼容的規則更改,即使你不同意,也可以在網絡中實行。
有人高度概括了比特幣內部的分權制衡:
比特幣治理的三大權力部門:
全節點(可以否決礦工和開發者)
礦工(可以否決開發者)
開發者(可以幫助其他人繞開某些否決)
需要注意的是,全節點軟件不會自動更新,這是設計使然。自動更新會導致權力的天平向開發者傾斜,讓開發者可以在未經節點和礦工許可的情況下強制更改規則。
可惜的是,雖然規則更改在技術層面上有可能是向后兼容的,但是多年來的經驗告訴我們足夠有創意的軟分叉也是可以實現違背舊版本規則的更改的。例如,Vitalik Buterin 曾經提過這樣一個設想:通過軟分叉將比特幣的區塊時間從 10 分鐘縮短到 2 分鐘,這必然會加快比特幣的發行速度。
面對不喜歡的軟分叉,全節點有一張王牌:利用硬分叉與其他支持軟分叉的礦工劃清界限。這(在設計上)執行起來很難,而且引發了關于如何衡量共識和找到經濟比重高的節點等諸多問題。
從技術上來說,這種硬分叉可以通過將挖礦算法從雙?SHA256 改成另一種哈希函數來實現。一旦成功,所有 SHA256 ASIC 礦機將無法用來挖比特幣。因此,節點運營者應該時刻警惕比特幣生態中發生的變化,并提醒礦工越權會有被取代的風險。
許多博弈論都會討論礦工操作及其對比特幣安全性的威脅,我在之前的文章中推測了挖礦生態可能會發生怎樣的變化。雖然比特幣挖礦的中心化程度不盡如人意,但是迄今為止依然運作良好。這是因為比特幣礦工投入了大量資金,他們不會冒著巨大的損失在一個受到所有人監視的系統中作惡。
很多比特幣用戶使用輕量級客戶端而非全節點訪問網絡,因為前者需要消耗的資源要少得多,但依然能夠提供很強的安全性。
使用簡易支付驗證(SPV)的客戶端會下載整條鏈上所有區塊的區塊頭的完整副本。這就意味著,自比特幣誕生以來,下載和存儲需求會隨時間的推移呈線性增長。詳情見比特幣白皮書的第 8 節。
中本聰在白皮書中寫道,SPV 客戶端 “無法自行驗證交易,但是通過把交易與區塊鏈關聯起來,它可以看到網絡中的節點已經接受了該交易,隨著越來越多區塊上鏈,則進一步證實網絡已經接受了該交易”。SPV 假設經過 X 個區塊確認后的交易偽造成本極高。
SPV 看似具備堪比全節點的安全性,但是它引入了額外的假設:只要一個區塊的區塊頭和工作量證明有效,它包含的所有交易也都是有效的。因為 SPV 客戶端不會驗證本文第 1 節中提到的所有共識規則,所以它們假設響應交易查詢請求的節點已經驗證過了共識規則。
另一個較小的安全性差異在于對等節點有可能向你隱瞞信息。如果你運行了一個全節點,對等節點可以向你隱瞞未確認的交易和區塊。但是,一旦你從對等節點那里獲得了一個區塊,就沒人可以向你隱瞞這個區塊中的任何交易。另一方面,如果你運行的是 SPV 客戶端,對等節點有可能向你提供區塊頭,然后隱瞞對應區塊中的交易信息。
SPV 客戶端可以查詢某個地址的相關交易。盡管對等節點使用虛假交易來欺騙 SPV 客戶端會付出很高的代價(需要挖出一個帶有充分 PoW 的區塊),但是它們可以謊稱 SPV 客戶端用來查詢交易的布隆過濾器(bloom filter)沒有結果。另外還要注意的一點是,由于布隆過濾器的缺陷,SPV 在隱私性上遭受了嚴重破壞。
BitcoinJ 在一篇文章中很好地闡述了 SPV 的安全性模型。關于未確認交易,他們指出:
在 SPV 模式下,只要你所連接的節點將某個交易轉發給你,你就只能相信這個交易是有效的。如果攻擊者能夠確保你所連接的節點都是他的,就可以向你發送一個完全無效的交易(花費根本不存在的錢),而你會認可這個交易是有效的。
對于普通用戶來說,SPV 的安全性已經 “足夠高” 了。盡管如此,我們還可以利用 SPV 欺詐證明對其進行改進。雖然人們已經就欺詐證明進行了一些討論,但是關于如何將它們構建到比特幣協議內的提案尚未實現。
如果你沒有運行全節點(以及實際用它來驗證交易),那你至少要在一定程度上信任第三方,這會導致安全性模型產生差異。請注意,這不需要所有用戶和企業直接在 Bitcoin Core 的 RPC API 上構建他們的軟件。
一些替代基礎設施配置包括但不限于:
1)使用安卓版比特幣錢包、GreenAddress?或?Stash?等移動錢包配置僅查詢你自己的全節點的錢包。
2)在 SPV 節點庫(如 BitcoinJ)上構建應用并將這些應用設置成僅連接你自己的全節點。在?BitcoinJ 中,這可以通過定義你自己的?SeedPeer?并在初始化過程中將其傳遞給你的 PeerGroup?來實現。通過?libbitcoin,你可以使用該示例定義與特定節點的網絡連接。
3)構建一個兼容?Bitcoin Core 的 JSON-RPC API 的代理服務器。這個 API 不僅會向第三方服務發送一些調用,也會通過調用本地全節點自動驗證第三方服務返回的數據。BitGo 的 BitGoD 軟件就是一個例子。這種混合模型可以達到兩全其美的效果:你可以使用第三方提供的高級功能,同時保留自己的金融主權。
顯然,運行自己的全節點是最安全的方案,需要的假設也最少。構建一臺能夠運行可靠全節點的計算機只需幾百美元。你不妨算一下這筆賬,再決定是否值得付出這些來保護自己的金融主權。
感謝 Kristov Atlas、Eric Martindale、Andrew Miller 和 Kiara Roble 對本文的審閱和反饋。
據路透社報道,Pelosi在9月26日(周日)宣布日期時表示她相信該法案將獲得通過,她說:“我這么說吧,我們將在本周通過該法案.
1900/1/1 0:00:00自推出后,“Internet Computer”(互聯網計算機) 席卷了加密貨幣市場。這是一個雄心勃勃的項目,得到了業內一些主要公司的支持.
1900/1/1 0:00:00想象一下在不久的將來,一個二月的陰雨天,您醒來,戴上智能眼鏡,接收每日天氣通知、會議、任務和其他日常待辦事項,然后這個設備會詢問您想在哪里喝每天早晨的咖啡.
1900/1/1 0:00:00Loot的熱度已經漸漸走下坡路,當財富效應逐漸褪去,冷靜之后,或許才是真正思考以及創造價值的時候。無論成功與否,這都是一場有趣的實驗,指引NFT前進的方向.
1900/1/1 0:00:00孫宇晨花千萬美元買的NFT頭像 30秒快讀 1.270萬美元買一張“瘋狂的石頭”,1050萬美元買一個社交媒體頭像,推特創始人將自己的第一條推特拍出了290萬美元.
1900/1/1 0:00:00這場由?NFT?引發的數字藝術還在拼命井噴,幾乎所有形式的?NFT?都在過去幾個月的時間內擁有極高的知名度.
1900/1/1 0:00:00