時間:2023-07-04|瀏覽:218
作者:晏文春
在之前的科普文章里,我們曾介紹過比特幣挖礦的過程:礦工通過不斷嘗試,直到找到合適的隨機數(shù),挖出新的區(qū)塊,并獲得相應的獎勵。
有一些讀者留言希望對挖礦過程進行更詳細的介紹。在本文中,我們將從不同的角度介紹,用三分鐘讓你了解比特幣挖礦。
01、講個故事給你聽
02、比特幣挖礦就像召喚“神龍”
召喚神龍需要集齊7顆龍珠。比特幣挖礦和召喚神龍很相似,需要集齊6顆“龍珠”,才能挖出比特幣。我們先來了解一下,比特幣區(qū)塊的構造。
比特幣區(qū)塊主要由兩部分組成:區(qū)塊頭和區(qū)塊體。區(qū)塊體用來保存該區(qū)塊包含的所有交易,一個完整的區(qū)塊一般大小不超過1M。
區(qū)塊頭中包含了版本、父區(qū)塊頭哈希值(也就是前一個區(qū)塊)、該區(qū)塊中默克爾樹根的哈希值、時間戳、難度目標和隨機數(shù)(Nonce)6個字段。區(qū)塊頭的大小固定為80字節(jié),12500個區(qū)塊頭的大小總共為1M。
請注意:讀到這里,如果發(fā)現(xiàn)這些名詞看不懂,沒關系,忽略它們,把它們當作是一顆顆”龍珠“,不會影響到你對挖礦的理解。
對于挖礦來說,收集到區(qū)塊頭里的“6顆龍珠”就有機會“召喚神龍”。6顆“龍珠”就是區(qū)塊頭中的6個字段,“神龍”就是挖出的新區(qū)塊,你對“神龍”許的愿望就是比特幣獎勵,包括創(chuàng)建新區(qū)塊的獎勵和該區(qū)塊中所含交易的手續(xù)費。
我們先來了解一下比特幣挖礦的6顆“龍珠”分別是什么,容不容易得到?6個字段中,除了隨機數(shù)需要不斷嘗試尋找,其他的5個字段都是很容易獲得的。
1、版本字段:用來跟蹤軟件升級的版本號,可從軟件信息中獲得;
2、父區(qū)塊頭的哈希值:父區(qū)塊被挖出后,其區(qū)塊頭哈希值就確定了,也很容易得到;
3、該區(qū)塊中默克爾樹根的哈希值:當一個區(qū)塊包含的交易確定后,這個字段也就確定了;
4、時間戳:指該區(qū)塊產生的近似時間,也是確定的;
5、難度目標:該區(qū)塊工作量證明算法的難度目標,系統(tǒng)給出的,同樣是確定的;
也就是說,在區(qū)塊頭中的6顆“龍珠”中,有5顆是很容易獲得的,并且是相對確定的。只有第6顆“龍珠”——隨機數(shù)(Nonce),是個不確定的、需要礦工不斷嘗試尋找的變量。
只有找到合適的隨機數(shù),才能召喚出“神龍”——挖出新的區(qū)塊,獲得比特幣獎勵。
什么樣的隨機數(shù)才是合適的呢?對區(qū)塊頭的6顆“龍珠”進行哈希運算,如果結果小于或等于系統(tǒng)給定的難度目標值,那么這個隨機數(shù)就是合適的,成功“召喚神龍”——挖出新的區(qū)塊,并獲得相應的比特幣獎勵。這就是比特幣挖礦的過程。
03、小結
讓我們來總結一下:比特幣挖礦和《七龍珠》中的召喚神龍類似,需要集齊6顆“龍珠”才能成功召喚神龍。
在這6顆“龍珠”中,有5顆是很容易獲得的,只有第6顆——隨機數(shù),需要礦工不斷嘗試尋找。只有找到合適的隨機數(shù),也就是對區(qū)塊頭中的6顆“龍珠”整體進行哈希運算,得到的結果小于等于難度目標值,才算挖出新的區(qū)塊,獲得相應的比特幣獎勵。
相比于集齊7顆龍珠才能召喚神龍,集齊6顆“龍珠”才能召喚比特幣,你覺得哪個更難呢?快來留言區(qū)寫下你的思考吧。