比特幣核心能否將 lockinontimeout 參數選擇完全留給比特幣核心使用者而不設置預設值?
Taproot BIP 8 啟動機制的 lockinontimeout (LOT) 參數似乎沒有壓倒性的共識。我知道有些人會強烈反對這樣做,但比特幣核心能否發布一個版本,讓使用者在執行軟體之前被迫在將 LOT 設置為真或假之間做出選擇?這在技術上可行嗎?
Matt Corallo 和 ZmnSCPxj 在比特幣開發者郵件列表中回答了這個問題。
馬特科拉洛說:
比特幣核心沒有基礎設施來處理具有相同數據目錄的切換共識規則 - 在以 uasf=true 執行一段時間後,有效塊將被標記為無效,並且需要進行額外的開發以啟用切換回 uasf=false。這是正確的複雜且關鍵的程式碼,所需的審查和測試週期似乎不值得。
相反,發布此類選項的唯一實用方法是將其視為單獨的鏈(與 regtest、testnet 和 signet 的處理方式相同),包括其自己的單獨數據目錄等。
ZmnSCPxj補充說:
在不暗示其他任何事情的情況下,這可以通過維護兩個
datadir
s 並執行兩個客戶端的使用者來解決。這將有一個執行 LOT=X 的“外部”客戶端(其中 X 是使用者喜歡的任何值)和一個最多為 0.21.0 的“內部”客戶端,它不會強加任何 LOT 規則。然後內部客戶端使用connect=
指令在本地連接到外部客戶端並僅連接到該客戶端,將其用作防火牆。外部客戶端可以執行修剪以減少磁碟空間資源的使用(如果使用者需要,內部客戶端可以保持不修剪,例如對於需要查找任意短通道 ID 的 LN 實現)。頻寬使用應該相同,因為內部客戶端只連接到外部客戶端,作業系統應該優化這種情況。但是,CPU 使用率翻了一番。(大體的想法來自 gmax,只是為了清楚起見,雖然下面的用法來自我)然後,使用者可以根據使用者偏好在外部客戶端上選擇 LOT=C 或 LOT=!C(其中 C 是比特幣核心最終附帶的任何內容)。
如果 Taproot 沒有被 MASF 啟動並且 LOT=!U 是後來的主宰(其中 U 是使用者決定的任何內容),使用者可以決定只銷毀外部節點並將內部節點直接連接到網路(可選升級內部節點到 LOT=!U) 作為“在經濟方面改變主意”的一種方式。然後內部節點將跟隨主導鏈。