礦工如何為某些 BIP 投票?
我知道礦工是唯一可以為某個 BIP 投票的人,但我想知道,他們在技術上是如何做到這一點的?他們如何送出投票?我發現他們是通過
coinbase
交易來做的,但我找不到任何細節。謝謝!
請在此處查看我的回答,以解決您的一些誤解。TL;DR:礦工在塊中表示支持某些規則更改以協調啟動,而不是確定它是否被接受。
至於用於信號的實際機制,過去使用了一個數字:
早期的軟分叉(直到 2012 年年中)使用了一種簡單的基於時間的啟動機制:實施這些提議的節點軟體在特定日期之後對所有帶有時間戳的區塊執行新規則。在 BIP16 的情況下,這個日期是根據礦工信號確定(和修改)的,但是這個信號只是為了人類解釋;節點沒有採取自動行動來響應它。
具體來說,這裡使用的信號是在 coinbase 交易的欄位中放置一個帶有支持消息的字元串,
scriptSig
否則礦工可以免費放入任何東西。下一代軟分叉使用塊頭的
nVersion
欄位來發送信號(直到 2015 年)。其中每一個都使用了後續版本號(BIP34 使用了第 2 版;BIP66 使用了第 3 版;BIP65 使用了第 4 版)。每當編號為 N-1000..N-1 的 750 個區塊(即 75%)具有更高的提案版本號時,區塊 N 將受提案規則的約束。每當編號為 N-1000..N-1 的區塊中有 950 個(所以 95%)這樣做時,下一個區塊也需要發出信號 - 導致最終鎖定。
基於版本位的信令:BIP68 / 112 / 113 , BIP141 / 143 / 144 , BIP91 , BIP341 / 342
相對鎖定時間 (BIP68/112/113) 和隔離見證 (BIP141/143/144) 的推出使用了不同的機制,它有自己的文件BIP9。它為每個提議指定使用塊頭
nVersion
欄位的一個特定位,以及一個有限狀態機來確定何時發出信號以及何時啟動。其目的是/是允許啟動多個並發提案,而無需在下一個提案推出之前完成一個提案。這是先前機制的一個缺點,因為如果不發出啟動第 3 版提案的信號,就不可能啟動第 4 版提案。由於各種原因,segwit 並非完全沒有爭議,最終啟動是通過元提案 BIP91 進行的。BIP91 本身使用 BIP9 來啟動,然後它又強制要求 BIP141/143/144 的信令,導致其在 2017 年 8 月啟動。
目前預計主根擴展將在 2021 年 11 月中旬左右啟動。BIP341/342 使用基於版本位的修改啟動機制,啟動門檻值較低,啟動高度最小,稱為“快速試驗”方法。
未來?
免責聲明:我是這篇文章中列出的幾個文件(BIP9、BIP30、BIP66、BIP141/143/144、BIP340/341/342)的(共同)作者。