辟谣|bitcoin core0.16.1版本没有删除区块大小限制——带你认识区块大小限制参数...
作者:閃電HSL 第0章 引言
比特幣(BTC)節點客戶端在6月15日發布了最新的版本,Bitcoin core 0.16.1,本次更新有一部分內容是“Miner block size removed”,這一點被國內最知名的媒體平臺們翻譯錯了,又因轉載或抄襲的原因導致國內媒體幾乎清一色地將此信息傳播為bitcoin core0.16.1刪除了區塊大小限制——這意味著一次硬分叉。
本文解釋“Miner block size removed”的真實含義。 第1章 bitcoin core中區塊大小的限制 BTC和BCH都有區塊大小的限制,現在的BTC區塊上限是1M交易區塊+3M見證區塊,BCH區塊大小上限是32M。本文重點解釋BTC的區塊大小限制,因為BCH的區塊大小限制是非常簡潔的,相對來說,BTC因為部署了隔離見證,導致區塊大小限制變得更復雜。
在部署隔離見證之前,BTC的代碼中使用一個參數叫MAX_BLOCK_SIZE,來約束區塊大小,其值為1000000字節,即約為1M。在bitcoin core 0.13版本后,即開始部署隔離見證后,這個參數被拆分為三個參數,分別為:
MAX_BLOCK_SERIALIZED_SIZE=4M;
MAX_BLOCK_WEIGHT=4M;
MAX_BLOCK_BASE_SIZE=1M。
上述三個參數的具體含義是,
一個區塊的數據字節大小,由原來使用MAX_BLOCK_SIZE約束為1M,改為一個區塊大小由兩個部分構成,一個叫交易數據區塊,另一個叫見證數據區塊; 其中交易數據區塊由MAX_BLOCK_BASE_SIZE約束為1M;
而見證數據區塊大小由MAX_BLOCK_SERIALIZED_SIZE約束為了“4M-1M”,即減去交易數據區塊大小,實際值為3M。
MAX_BLOCK_WEIGHT主要是在以后的版本起作用。
這三個參數一直保留在bitcoin core 0.13和0.14版本的軟件中,但在0.15.0版本這三個參數又變了。在bitcoin core 0.15版本中,刪除了MAX_BLOCK_BASE_SIZE=1M,但區塊數據大小的限制邏輯沒有任何改變,只是改成了一個公式來約束,公式中使用的就是MAX_BLOCK_WEIGHT。
總結,BTC因為隔離見證的部署,區塊數據大小限制改成了交易數據區塊上限為1M,見證數據區塊上限為3M,總區塊大小上限為4M。這個限制邏輯在隔離見證部署后,一直到現在也沒有變過,但具體實現方法,是有改變的。
新發布的bitcoin core 0.16.1版本沒有改變區塊數據大小限制。 那這些bitcoin core 0.16.1版本改的“Miner block size removed”是什么東西呢?
第2章 bitcoin core的挖礦過程中構造區塊大小的設定 比特幣系統中,礦池在構造區塊過程是允許自定義區塊大小上限的,礦池通過調用一個函數來自定義區塊大小上限,這個函數有兩個參數。在bitcoin core 0.14版本中,這兩個參數的名字叫(-blockmaxsize,DEFAULT_BLOCK_MAX_SIZE),其中前面這個blockmaxsize就是礦工自己可以自定義的區塊大小上限值,而后面這個DEFAULT就是默認值,即如果礦池自己不自定義,則使用默認值。這個默認值,在隔離見證部署后就是4M了。
在2017年前,礦池就是通過這個自定義區塊上限來打包區塊的,最早礦池都自定義為500K,后來交易變多了,又統一改成了750K。其中還有一陣子,有一家礦池忘記了修改這個值,一直打包750K的區塊,但全網已經堵的不行了,別的礦池都打包1M區塊,這家礦池被罵成屎了。
在bitcoin core 0.15版本中,上述函數的這兩個參數改了個名字,被改成了(-blockmaxweight,DEFAULT_BLOCK_MAX_WEIGHT),但通過代碼映射的辦法,依然允許0.14版本的那兩個參數名字可以使用,即當礦池在使用bitcoin core 0.15版本時,也可以使用-blockmaxsize這個參數名來自定義區塊大小,但系統會自動映射成-blockmaxweight。
在6月15日bitcoin core0.16.1版本發布時,上述的映射過程被刪除了,也就是現在如果礦池使用的是bitcoin core 0.16.1版本的軟件,將不在允許使用-blockmaxsize這個參數名,只能使用-blockmaxweight這個參數名。但礦池限制區塊大小的業務邏輯沒有任何變化。
這就是bitcoin core 0.16.1版本發布時的變更說明里描述的“Miner block size removed”里的真實含義。
第3章 給bitcoin core寫版本變更說明的人語文不好 這次中文社區對Bitcoin core 0.16.1版本發布的變更說明的翻譯錯誤,根本原因是英文原文就寫錯了,英文原文寫成了“Miner block size removed”,應該寫成“Miner block size's name had been changed”。
如果沒有程序員的幫忙,估計沒人能譯對。我也是在程序員的幫助下才搞懂的。
第4章 bitcoin core 0.16.1版本是和以往版本兼容的 本次版本更新說明,中文社區還有一個廣泛的翻譯錯誤,將bitcoin core 0.16.1版本的兼容性譯成了和以往版本不兼容,這是嚴重的翻譯錯誤。
如果按翻譯所說的bitcoin core 0.16.1不兼容以往的版本,那就意味著BTC將迎來一次硬分叉。
版本更新說明的原文是“Downgrading warning”,其真實描述的是兼容性指的是:使用bitcoin core 0.16.1版本生成的錢包文件——wallet.dat——是不能被以前的版本使用的,但以前的版本,如0.15,創建的錢包文件是可以被bitcoin core 0.16.1版本使用的。 這個翻譯錯誤就屬于中文譯者不認真了,怪不得人家Core語文不好。
總結
以上是生活随笔為你收集整理的辟谣|bitcoin core0.16.1版本没有删除区块大小限制——带你认识区块大小限制参数...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Eclipse中使用JUnit4进行单
- 下一篇: 方向梯度直方图(HOG)和颜色直方图的一