2014年4月7日 星期一

比特幣無限量供應的修正草案

BIP: 42
標題:比特幣無限量供應修正案
作者: Pieter Wuille
狀態:草案
類型:常規跟踪
創建於: 2014年4月1日

摘要

儘管人們普遍認為,中本聰是個對通貨膨脹鄙夷之極的金本位支持者,但他從來沒有說過這樣的話。實際上,他所編寫的代碼將讓比特幣的供應量無限增長,直到永遠。在他所建立的貨幣供應量模型裡,每經過一個Mibillenium (1024 年)將會有四個金礦被開采出來,它們之前有著相同的時間間隔,每一個金礦在140 年的歷程中被開採完。
然而,這會造成一些明顯的問題。其中最突出的問題是我們應該怎麼稱呼10億(1 Billion)比特幣,它的標識應該採用什麼樣的顏色,以及人們應該在什麼時候把這作為默認的比特幣單位。
為了解決這個問題,本文提出了一個富有爭議的修正案:將比特幣的貨幣供應量從無限變更為有限。(翻譯不易,插個廣告,歡迎打賞1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5 ^_^)

實現細節

如所周知,中本聰是一位編程大師,他對C++ 的了解是如此深入,唯一能與其匹配的只有他身後所深韻的日本文化氣息。看下面的代碼:
int64_t nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks
// which will occur approximately every 4 years.
nSubsidy >>= (nHeight / 210000);
這段代碼巧妙地依賴於C++ 規範中一個不確定的行為,或許它是為了在未來使用硬件加速而做的準備。
他把區塊的數目直接除以210000(即產量減半的塊間隔),並把結果作為二進制移位的輸入,並用在最初時的原始支出(50 BTC)上,然後將這作為基本單位。由於採用了新的金礦間隔正好是這個半衰週期的64 倍,而64 位正好是比特幣數據類型的大小,因此,在所有目前支持的平台上,每經過64 個週期後,比特幣的供應量將重歸原樣。
雖然這讓中本聰大師很好的秀了把他編程技術的嫻熟,不過我們希望比特幣的產量能夠清晰明確,否則,我們將不可避免地遭遇一場慘烈的砸盤運動。
比特幣供應圖表
需要注意的是其他一些編程語言並沒有表現出這種行為,這使得新的實現可能會更慢一些,而且通常比Bitcoin Core 更假。比如說,Python 在處理整數移位超出了它的大小的意外時將返回0。

其他解決方案

浮點近似值

一個顯而易見的重繪供應曲線圖的解決辦法是使用浮點近似值來實現,例如模擬政府救市或者量化寬鬆政策,它們都已經證明了自己的價值所在。不過不幸的是,自金融危機以來,大家都認為帶小數點的數字有貓膩,而且JavaScript 不能很好的支持整數。

截尾捨去

另一種解決辦法是將表示比特幣的總數的類型變為字符串:“21000000000000000000000” 然後每隔4年就使用字符串操作來刪除最右邊的零,並依據閏年與否加以調整:strSubsidy = strSubsidy .substr(0,strSubsidy.size() - 2); 這種風格依賴較少依賴於C++中的小聰明編程技巧,並且對於平時主要用語言的是PHP的核心開發團隊來說會更加得心應手一些。


建議

還是讓我們停止這場對長遠問題的考慮吧,畢竟到了那個時候我們都將入土為安。(除非我們去做時光旅行,低溫復甦,或者其它的生命延長技術,就像虛擬貨幣一樣,實際上只存在科技小說裡面)。
一個軟分叉(參見BIP16,BIP34,BIP62 )將於2214 年4 月1 日準備就位,到時供應量將永久設置為零。這樣做的結果將是總的貨幣供應將被限制在第42 個半衰週期,(這裡麵包括了創世塊coinbase 的輸出,而實際上它無法被花費)。

實現

相關的代碼實現在此:https://github.com/bitcoin/bitcoin/pull/3842 .

兼容性

鑑於此次變更的期限比較充裕,我們希望所有的礦工在2214 年之前將其部署。
如果他們不這樣做,並且有少數人使用久代碼繼續挖礦,可能會造成一個區塊鏈分叉。從本質上講,他們將在此時間之後挖掘傻瓜的黃金。

致謝

感謝Gregory Maxwell 提出這項解決方案,以及Mike Hearn 對Web 開發的見解。也多虧了“ditto-b”在Github 首先實現的原型。

版權

本文已向公眾公開,中文版版權歸譯者imcoddy 所有。

譯者補記:

本文首發於巴比特,轉載請保持原文信息完整。
由於這篇草案是在愚人節的時候發出來的,而且原文作者裡扯了不少程序員才能明白的調侃,所以當時大家看到這文章時,都單純把這當成了惡搞,直到Gavin 把這個代碼合併了。真亦假時假亦真,這算是今年看到的最佳愚人節惡搞之一了:)
最後陰謀論一下,沒準這本來就是本聰大叔為抗通縮所設計的本意也說不定呢。畢竟經過一百多年之後,不少私鑰已經被其主人忘記,造成了許多比特幣被永久塵封。所以說,It's not a bug, it is a feature!:P
文中所引用圖片版權歸原作者所有。
譯者:imcoddy與君共勉。
原文地址:https://github.com/sipa/bips/blob/e04e99c315dd4067e267b62f84c9eeffeeccf94e/bip-0042.mediawiki
歡迎打賞:1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5

沒有留言 :

張貼留言