Soft-Fork

比特幣核心能否將 lockinontimeout 參數選擇完全留給比特幣核心使用者而不設置預設值?

  • March 22, 2021

Taproot BIP 8 啟動機制的 lockinontimeout (LOT) 參數似乎沒有壓倒性的共識。我知道有些人會強烈反對這樣做,但比特幣核心能否發布一個版本,讓使用者在執行軟體之前被迫在將 LOT 設置為真或假之間做出選擇?這在技術上可行嗎?

Matt Corallo 和 ZmnSCPxj 在比特幣開發者郵件列表中回答了這個問題。

馬特科拉洛

比特幣核心沒有基礎設施來處理具有相同數據目錄的切換共識規則 - 在以 uasf=true 執行一段時間後,有效塊將被標記為無效,並且需要進行額外的開發以啟用切換回 uasf=false。這是正確的複雜且關鍵的程式碼,所需的審查和測試週期似乎不值得。

相反,發布此類選項的唯一實用方法是將其視為單獨的鏈(與 regtest、testnet 和 signet 的處理方式相同),包括其自己的單獨數據目錄等。

ZmnSCPxj補充說

在不暗示其他任何事情的情況下,這可以通過維護兩個datadirs 並執行兩個客戶端的使用者來解決。這將有一個執行 LOT=X 的“外部”客戶端(其中 X 是使用者喜歡的任何值)和一個最多為 0.21.0 的“內部”客戶端,它不會強加任何 LOT 規則。然後內部客戶端使用connect=指令在本地連接到外部客戶端並僅連接到該客戶端,將其用作防火牆。外部客戶端可以執行修剪以減少磁碟空間資源的使用(如果使用者需要,內部客戶端可以保持不修剪,例如對於需要查找任意短通道 ID 的 LN 實現)。頻寬使用應該相同,因為內部客戶端只連接到外部客戶端,作業系統應該優化這種情況。但是,CPU 使用率翻了一番。(大體的想法來自 gmax,只是為了清楚起見,雖然下面的用法來自我)

然後,使用者可以根據使用者偏好在外部客戶端上選擇 LOT=C 或 LOT=!C(其中 C 是比特幣核心最終附帶的任何內容)。

如果 Taproot 沒有被 MASF 啟動並且 LOT=!U 是後來的主宰(其中 U 是使用者決定的任何內容),使用者可以決定只銷毀外部節點並將內部節點直接連接到網路(可選升級內部節點到 LOT=!U) 作為“在經濟方面改變主意”的一種方式。然後內部節點將跟隨主導鏈。

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