我遠遠不是位元幣的專家,我自己甚至沒有擁有任何一種加密貨幣,不管是位元幣或者以太幣。但是我對於區塊鏈以及位元幣算滿早之前就花過時間下去研究的,包含最根本的演算法和位元幣系統設定。
但我一直疑惑的是,儘管位元幣是開源的,任何資料都可以在網路上找到,但在大多關於位元幣的、往往不是過於亢奮就是過於悲觀的新聞報導中,很少人提到一個很重要的系統設定:網路難度重設(network difficulty change)。
在我們解釋位元幣系統中的網路難度重設到底是什麼東西之前,首先讓我直接跳到本文的結論:不知道或者無法理解位元幣的網路難度重設,就隨便談論採礦成本效益,或者虛擬貨幣相對於法定貨幣系統在管理成本上的優勢,就好像英國那些支持脫歐的群眾,盤算著趕走波蘭移民後自己能夠拿回多少生意或者藍領工作,而絲毫沒想到自己每天在Marks & Spencer採購的生鮮蔬果,泰半來自於氣候遠比英國溫和的歐陸國家。
所以到底什麼是位元幣網路難度重設?
簡單來說,當初中本聰在設計位元幣時,就已經充分理解到,位元幣既然是使用電腦開採,隨著電腦效能跟著摩爾定律提升,解決數學難題的時間就會縮短,因此區塊(乃至於位元幣)供給量就會隨著時間經過而加速,這對於位元幣想追求的穩定貨幣供給和固定貨幣總量的理想國是很根本的威脅。要解決這個問題很簡單:每隔一陣子提高位元幣系統中數學問題的難度,把平均解題時間拉回來,就可以搞定了——這就是位元幣網路難度重設的由來。
位元幣早期的一位很有名的傳教士是希臘人Andreas Antonopoulos,為了撰寫本文我翻出了幾年前閱讀過的他的暢銷著作〈Mastering Bitcoin: Unlocking Digital Cryptocurrencies>,在裡面他用白話文解釋了這個難度重設的意義:
位元幣協定包含了一個內建的演算法來規範整個系統網路中的挖礦功能。礦工為了成功在位元幣網路裡登錄一個區塊所必須處理的計算任務,其難度會被動態調整,目標是維持平均每10分鐘有一個區塊被開採出來——不管有多少礦工(和CPU)同時在處理計算任務。
上圖是本文截稿為止前兩個月的位元幣區塊產生時間以及系統難度調整走勢。其中紅色線是系統難度,大家可以看到光是在兩個月時間裡就調整了五次。而藍色線和灰色線是平均產生一個區塊的時間(平均計算基準分別為2016個和1008個區塊),可以看到雖然均線是落在600秒——也就是原始協定中設定的10分鐘左右——但最近一次難度重設後區塊產生時間卻一路爬升到超過900秒(灰色線末端),將近16分鐘,如果這種情形持續下去,系統將會再度調降難度,因此可以看到預期下次難度(綠色線)持續往下走。