
一級標題
相關閱讀:
原文鏈接:
https://blog.lopp.net/bitcoins-security-model-a-deep-dive/
相關閱讀:一級標題
安全模型誤區
另外,每個區塊鏈系統都將創世塊硬編碼到了節點軟件中。你可能會覺得,“共享歷史” (即,賬本)是一種社會契約—— 一旦某個區塊的歷史足夠悠久,網絡中的所有參與者之間都會達成共識,認為這個區塊永遠都不會被回滾。當開發者選定一個早期挖出的區塊並用它來創建檢查點時,更多是作為一種公認的完整性檢查,而非對歷史的客觀描述。
除了檢查點之外,節點如何實現自引導也是一個問題。目前,比特幣節點的自引導流程是檢查節點是否在本地存儲了之前從對等節點那裡了解到的數據。如果沒有的話,節點將查詢一組被硬編碼到軟件中的“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 種子,這看似又是一個極端中心化的單點問題。但是別忘了,比特幣的安全模型只需要你連接到一個誠實的對等節點,就足以抵禦女巫攻擊。
一級標題
一級標題
沒有絕對安全性
一級標題
圖片
一級標題
比特幣的分權制衡
當你開始研究比特幣系統中不同參與者之間的關係時,會發現自己如墜五里霧中。
運行全節點的目的是保護你的金融主權。這就意味著,一旦你安裝並運行了特定版本的軟件,即表明你與該軟件以及其他所有網絡參與者都達成了一項協議—— 不僅你會遵守該軟件的規則,而且其他網絡參與者也必須遵守這些規則。
圖片
圖片
比特幣治理的三大權力部門:
全節點(可以否決礦工和開發者)
礦工(可以否決開發者)
開發者(可以幫助其他人繞開某些否決)
需要注意的是,全節點軟件不會自動更新,這是設計使然。自動更新會導致權力的天平向開發者傾斜,讓開發者可以在未經節點和礦工許可的情況下強制更改規則。
可惜的是,雖然規則更改在技術層面上有可能是向後兼容的,但是多年來的經驗告訴我們足夠有創意的軟分叉也是可以實現違背舊版本規則的更改的。例如,Vitalik Buterin 曾經提過這樣一個設想:通過軟分叉將比特幣的區塊時間從10 分鐘縮短到2 分鐘,這必然會加快比特幣的發行速度。
面對不喜歡的軟分叉,全節點有一張王牌:利用硬分叉與其他支持軟分叉的礦工劃清界限。這(在設計上)執行起來很難,而且引發了關於如何衡量共識和找到經濟比重高的節點等諸多問題。
SPV 安全性
一級標題
SPV 安全性
圖片
圖片
中本聰在白皮書中寫道,SPV 客戶端“無法自行驗證交易,但是通過把交易與區塊鏈關聯起來,它可以看到網絡中的節點已經接受了該交易,隨著越來越多區塊上鍊,則進一步證實網絡已經接受了該交易”。 SPV 假設經過X 個區塊確認後的交易偽造成本極高。
SPV 看似具備堪比全節點的安全性,但是它引入了額外的假設:只要一個區塊的區塊頭和工作量證明有效,它包含的所有交易也都是有效的。因為SPV 客戶端不會驗證本文第1 節中提到的所有共識規則,所以它們假設響應交易查詢請求的節點已經驗證過了共識規則。
另一個較小的安全性差異在於對等節點有可能向你隱瞞信息。如果你運行了一個全節點,對等節點可以向你隱瞞未確認的交易和區塊。但是,一旦你從對等節點那裡獲得了一個區塊,就沒人可以向你隱瞞這個區塊中的任何交易。另一方面,如果你運行的是SPV 客戶端,對等節點有可能向你提供區塊頭,然後隱瞞對應區塊中的交易信息。
SPV 客戶端可以查詢某個地址的相關交易。儘管對等節點使用虛假交易來欺騙SPV 客戶端會付出很高的代價(需要挖出一個帶有充分PoW 的區塊),但是它們可以謊稱SPV 客戶端用來查詢交易的布隆過濾器( bloom filter)沒有結果。另外還要注意的一點是,由於布隆過濾器的缺陷,SPV在隱私性上遭受了嚴重破壞。
BitcoinJ 在一篇文章中很好地闡述了SPV 的安全性模型。關於未確認交易,他們指出:
一級標題
一級標題
比特幣網絡沒有127.0.0.1
如果你沒有運行全節點(以及實際用它來驗證交易),那你至少要在一定程度上信任第三方,這會導致安全性模型產生差異。請注意,這不需要所有用戶和企業直接在Bitcoin Core 的RPC API 上構建他們的軟件。
圖片
圖片
全節點:為自由故
全節點:為自由故
全節點:為自由故
顯然,運行自己的全節點是最安全的方案,需要的假設也最少。構建一台能夠運行可靠全節點的計算機只需幾百美元。你不妨算一下這筆賬,再決定是否值得付出這些來保護自己的金融主權。
感謝Kristov Atlas、Eric Martindale、Andrew Miller 和Kiara Roble 對本文的審閱和反饋。