白話區塊鏈
從入門到精通,看我就夠了!
「白話區塊鏈入門」系列讓零基礎的小夥伴也能輕鬆入門,歡迎大家在文末點贊留言,說說你最想了解的區塊鏈小知識,參與有獎哦!
作者 | 晏文春
出品|白話區塊鏈(ID:hellobtc)
在之前的科普文章裡,白話區塊鏈(ID: hellobtc)介紹過比特幣挖礦:礦工透過不斷試錯,直到找到合適的隨機數,新的區塊被挖出,得到對應的區塊獎勵和交易手續費獎勵。
有部分小夥伴在後臺留言,希望能更具體的介紹一下挖礦的過程。今天白話區塊鏈就換一個角度來介紹,讓你三分鐘搞懂比特幣挖礦。
01
講個故事給你聽
這是一個遠古的傳說,世界上散落著7顆龍珠,誰集齊這7顆龍珠,並念出咒語,就能召喚神龍;神龍會實現他的一個願望。神龍在實現願望後,7顆龍珠便會自動飛散,變成石頭,一年後才可再次使用。沒錯,這個故事來自大家耳熟能詳日本著名動漫《七龍珠》。只要能看懂這個故事,就能搞懂比特幣挖礦。不信,咱走著瞧👇,
02
比特幣挖礦就是召喚“神龍”
召喚神龍需要集齊7顆龍珠。比特幣挖礦和召喚神龍很相似,需要集齊6顆“龍珠”,才能召喚出比特幣。
我們先來了解一下,比特幣區塊的構造。
比特幣區塊主要由兩部分組成:區塊頭和區塊體。區塊體用來裝載該區塊打包的所有交易,一個裝載滿交易資訊區塊,其大小一般不超過1M。
▲區塊結構簡易示意圖
區塊頭裡包含的資訊有版本、父區塊頭雜湊值(也就是前一個區塊)、該區塊中默克爾樹根的雜湊值、時間戳、難度目標、隨機數(Nonce)6個欄位。區塊頭的大小是固定的,只有80位元組,12500個區塊頭容量大小也只有1M。
請注意:讀到這裡,如果發現這些名詞看不懂,沒關係,忽視它們,把它們當成是一顆顆”龍珠“,不會影響到你對挖礦的理解。
對於挖礦而言,收集到區塊頭裡的“6顆龍珠”就有機會“召喚神龍”。6顆“龍珠”就是區塊頭裡的6個欄位,“神龍”就是挖出的新區塊,你對“神龍”許的願便是比特幣獎勵,包括建立新區塊的獎勵及該區塊中所含交易的交易費。
我們先來了解一下比特幣挖礦的6顆“龍珠”分別是什麼,容不容易得到?
6個欄位中,除了隨機數需要不斷試錯尋找,其他的5個欄位都是很容易獲得的。
1、版本欄位:是用來跟蹤軟體升級的版本號,可自動從軟體資訊得到;
2、父區塊頭的雜湊值:父區塊被挖出後,其區塊頭雜湊值就確定了,也很容易得到;
3、該區塊中默克爾樹根的雜湊值:當一個區塊打包的交易確定了,這個欄位也就確定,So Easy;
4、時間戳,是指該區塊產生的近似時間,也是確定;
5、難度目標:該區塊工作量證明演算法的難度目標,系統給出的,同樣是確定的;
也就是說,區塊頭中,6顆“龍珠”中的5顆是很容易獲得的,並且是相對確定的。只有第6顆“龍珠”——隨機數(Nonce),是個不確定的、需要礦工不斷試錯尋找的變數。
只有找到了合適的Nonce,才能召喚出“神龍”——挖出新的區塊,得到比特幣獎勵。
什麼是合適的隨機數呢?對區塊頭裡的6顆“龍珠”取雜湊值,如果這個值小於或等於系統給定的難度目標值,那麼就算是找到了合適隨機數,就能成功“召喚神龍”——挖出新區塊,得到比特幣獎勵。這就是比特幣挖礦的過程。
03
小結
我們來總結一下:比特幣挖礦和《七龍珠》裡召集神龍類似,集齊6顆“龍珠”就有機會“召喚神龍”。
6顆“龍珠”中,其中5顆很容易得到,只有第6顆——隨機數,需要礦工不斷試錯尋找。直到找出合適的隨機數,也就是對區塊頭裡的6顆“龍珠”整體進行雜湊運算,得到的值小於等於難度目標值,才算挖出新的區塊,得到相應的比特幣獎勵。
相比於集齊7顆龍珠能召喚神龍,集齊6顆“龍珠”能召喚比特幣,你覺得哪個更難呢?快來留言區寫下你的思考吧,精彩留言有機會中獎哦。