白話區塊鏈入門085 | 比特幣是如何維持平均10分鐘出一個區塊的

買賣虛擬貨幣

白話區塊鏈

從入門到精通,看我就夠了!

「白話區塊鏈入門」系列讓零基礎的小夥伴也能輕鬆入門,剛入門的小夥伴建議從第一期開始閱讀哦!掃描文末二維碼,獲取零基礎文集。歡迎大家在文末點贊留言,說說你最想了解的區塊鏈小知識,參與有獎哦!

作者 | 晏文春
出品|白話區塊鏈(ID:hellobtc)

之前有讀者在《白話區塊鏈入門038 |  比特幣礦工一天賺多少錢?》留言區提問:

1、誰最先找出難題的答案,誰就獲得了這一次的記賬權,其中比特幣系統出的難題是什麼樣子的?
2、隨全網算力的提高,難題的的難度係數亦提高,這是怎麼實現的?

對於第一個問題,白話區塊鏈曾在《一個經典的故事,讓你3分鐘搞懂比特幣挖礦》一文給出過解釋:

比特幣系統給礦工出的難題就是讓礦工找出符合要求的隨機數。礦工構造區塊,確定區塊頭中其他5個欄位,另一個需要不斷試錯的變數就是隨機數。只有符合要求的隨機數才能召喚“神龍”。符合要求的意思是:對整個區塊頭取雜湊值,使得該雜湊值小等於難度目標(準確的說是小於目標值Target)。

我們今天主要來回答第二個問題:比特幣系統挖礦難度目標是什麼,它是怎麼調整的?

友情提示:入門使用者建議先閱讀以下文章,有助於更好地理解本文。
一個經典的故事,讓你3分鐘搞懂比特幣挖礦
數說比特幣,瞭解比特幣必須知道這10個數字
挖礦系列文章,在後臺回覆“挖礦”獲得

 01
什麼是難度目標?

難度目標是比特幣系統中調控挖出區塊所用平均時間的引數,是區塊頭中6個欄位之一。

比特幣挖礦難度(Difficulty),是對挖礦困難程度的度量,挖礦難度越大,挖出區塊就越困難。目標值(Target)與挖礦難度成反比。難度越高,目標值越小。而難度目標是目標值透過轉化得到,是一個只有4個位元組的欄位(為了便於理解,本文將難度目標等同目標值處理)。比特幣系統正是透過調整區塊頭中難度目標來控制挖出區塊所需平均時間的。

目標值是個長度為256位元的字串,換句話說目標值約有2^256種可能的取值。調整難度目標就是調整目標值在整個輸出空間的佔比。

舉例說明:挖礦就如射擊,所有射出去的子彈都會落在一個很大的靶子上。難度目標就是這個大靶子上圈出一個範圍,這個範圍越小,被射中的難度就越高。調節難度目標,就是調節這個圈在整個靶子上的佔比。

挖礦算力增大,單位時間射擊的次數就越多,目標範圍被射中所需的時間就越短。反之,挖礦算力減小,目標範圍被擊中所需的時間就越長。而特幣系統追求的平均出塊時間為10分鐘,這時候就需要調整難度目標來實現。

 02
如何調整難度目標?

比特幣系統是怎樣調整難度目標的呢?在《白話區塊鏈入門080 |數說比特幣,瞭解比特幣必須知道這10個數字》一文中,我們介紹了比特幣系統每過2016區塊(大約為14天時間),會自動調整一次難度目標。所有區塊高度為2016整數倍的區塊,系統就會自動調整難度目標。如果上一個難度目標調整週期(也就是之前2016個區塊),平均出塊時間大於10分鐘,說明挖礦難度偏高,需要降低挖礦難度,增大難度目標(準確地說是目標值)反之,前一個難度目標調整週期,平均出塊時間小於10分鐘,說明挖礦難度偏低,需要縮小難度目標。

 03
難度目標的可調範圍

比特幣系統設定,難度目標上調和下調的範圍都有4倍的限制。舉例說明:假設上一個難度目標調整週期內的2016個區塊,由於算力暴漲,只用7天就全部挖出來了,透過難度目標調整,將難度目標縮小一倍,可以將平均出塊時間維持在10分鐘左右,但如果算力暴漲,前2016個區塊全部挖出只用了1天,那麼難度目標最小隻能調整為原來的四分之一。

 04 
總結

比特幣的算力是持續波動的,比特幣系統透過難度目標的調整,使得平均出塊時間維持在10分鐘左右。難度目標和挖礦難度成反比,挖礦難度越大,難度目標越小。當區塊高度為2016的整數倍時,比特幣系統就會在該區塊上,自動調整難度目標。如果上一個難度目標調整週期內,平均出塊時間超過10分鐘,那麼降低挖礦難度,增大難度目標;反之則提高挖礦難度,減小難度目標。難度目標上調和下調的範圍都有4倍的限制。

比特幣每2016個區塊(大約14天)調整一次挖礦難度,相比於BCH每個區塊都調整(大約10分鐘調整一次),有明顯的滯後性你認為是哪種調整方式更合理呢?為什麼呢?

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;