Bitcoin-Core-Development

比特幣開發者如何確保他們的修改不會影響共識規則或正在執行的網路協議?

  • December 17, 2020

我了解比特幣共識規則是由每個節點單獨執行的。然而,大多數人執行的是預設版本的比特幣核心,這使得比特幣開發者完成的實現極為重要。

所以我的問題就在標題中:他們如何保證實現不會影響共識規則或網路協議?

雖然我也知道每個比特幣版本都是經過極其謹慎和廣泛的測試發布的,但我一直想知道是否存在這樣的系統實踐。任何指針將不勝感激。

“最大的努力”。正式的證明無濟於事。一個人所能做的就是編寫測試,就像任何其他編寫良好的軟體一樣。

他們還維護一些依賴項的分支,例如 LevelDB,並且不更新其中的一些,例如BerkeleyDB

看看出了什麼問題。尤其是 2013 年的硬分叉,如果他們能夠確保一致的協議不變,就不會發生。

長期的核心貢獻者對核心程式碼庫的哪些部分接觸或可能影響網路節點之間的共識有一個大致的了解。然而,共識是“狡猾的”,過去曾有過一些例子,其中做出的改變在當時並不被認為是關鍵的共識,但事實證明是這樣。MCCCS 在上面的答案中強調了其中一些範例。

Pieter Wuille在 2020 年 1 月的 Chaincode Labs播客中討論了定義什麼是共識和什麼不是共識的挑戰。

我認為從中學到的一件事是指定您的共識規則是非常困難的。這並不意味著你不能嘗試,但誰會想到你正在使用的數據庫層中的配置設置實際上在語義上洩漏到了比特幣隱式定義的共識規則中。當然,您可以將其歸因於人為失敗。我們應該閱讀文件並意識到這一點。

我們可以討論在嘗試抽象程式碼庫中有意促成共識的部分時的邊界,但很難說清楚該程式碼對共識程式碼沒有影響,因為錯誤可能會洩漏。我認為要學習的其中一件事是,您確實需要旨在在共識系統中使用的軟體,在該系統中,您不僅要求如果每個人的行為正確,每個人都接受正確的答案,而且每個人都會同意什麼是同步中的無效數據。

引用自:https://bitcoin.stackexchange.com/questions/100616