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