之前我們已經有過了解:區塊鏈技術是為了同步比特幣的賬本。那么,曠工是怎么記賬的呢?
繼續我們的比特村的故事。
首先我們了解幾個名詞
身份與簽名機制(公鑰加密系統):在這套機制下,任何人都使用代號交易,并通過保密章證明是代號本人操作,保密章之后可以被系統識別出來。
虛擬礦工組織(挖礦群體):曠工可以根據“挖礦”的績效獲得對應的報酬。礦工可以隨時退出,也可以隨時有新的礦工加進來。
建立初始賬本(創世塊):每個村民可以根據自己的黃金數量,從系統處獲得對應的比特幣,以此作為比特幣賬本的第一頁。
接著說說比特幣交易的步驟
以老張付給老李10個比特幣為例:
1、為了支付10個比特幣,老張首先要詢問老李的代號,例如是“ABCDEFG”,同時老張也有一個代號比如是“HIJKLMN”,然后老張寫一張支付的單子,簽上自己的保密章。
2、老李用系統掃描這個保密章,證實是“HIJKLMN”這個人(也就是老張)簽署的交易單,于是把這個交易單發給曠工。
3、曠工根據這個交易單,計算新的賬本。第一個算出來的曠工把更新后的賬本同步給所有曠工。
4、交易完成。
在這篇文章里,我們著重介紹整個系統中復雜性最高的地方——在第三個步驟里,曠工是怎么計算新的賬本的。
曠工的工具:
最新的賬本:每個曠工一開始都有一本初始賬本,隨著交易的增多,每個曠工都需要及時更新最新的賬本。
空賬本紙:每個礦工都有一些空賬本紙方便記賬。按照規定的要求填入了內容之后就可以生效。
編碼生成器(哈希函數):生成器會在賬簿紙的“本賬單編號”一欄自動打印一串由“0”和“1”組成的編號,共256個。
編號生成器有如下功能:
內容相同的賬本紙生成的編號總是相同,但是如果內容哪怕只改一個字符,編號就會面目全非
這個編號無法偽造。將一張賬本紙放入,機器會判定編號是否是有效,并且判定編號和內容是否一致
(空賬本紙)
礦工的工作:
礦工們收到交易單后,馬上填寫新的賬本。他們把交易單的內容填寫到“交易清單”一欄,把自己最新賬本的最后一頁的編號抄寫到“上一張賬單編號一欄”。 注意還有個“幸運數字”,可以隨便填上一個數字,如12345。然后,將這樣賬本紙放入編號生成器,打印好編號,一張賬本就算完成了。
如果你以為礦工的工作就這么簡單,那就大錯特錯了。中本聰有個變態的規定:只有編號的前10個數均為0,這頁賬本紙才算有效。
根據之前對編號生成器的描述,要修改編號,只能修改賬本紙的內容,而“交易清單”和“上一張賬單編號”是不能修改的,那么只能改幸運數字了。于是為了生成有效的賬本紙,小組里的礦工就不斷更改幸運數字,然后不斷地生成編號,直到生成一串有效的編號。
這就奇怪了,這些礦工為什么要拼命干這看似無意義的事情呢?還記得之前說過礦工有報酬吧,這就是礦工的動力了。中本聰規定:每一張賬本紙的交易清單第一條交易為“系統給這個小組支付50個比特幣”。也就是說,如果你生成了一張有意義的賬本紙,并且被所有挖礦小組接受了,那么就意味著這條交易也被接受了,你的挖礦小組獲得了50個比特幣。
這就是礦工被叫做礦工的原因,也是為什么之前說隨著交易和礦工的活動,比特幣的數量會不斷增多。例如下面是一個挖礦過程,這個小組的公共比特幣帳號為“UVWXYZ”。
(在幸運數字嘗試到“533”時,系統生成了一頁有效賬本)
當某挖礦小組幸運的生成了一張有意義的賬本,為了得到獎勵,必須立刻請其它小組確認自己的工作。
當某個小組接到其他小組送來的賬本紙時,需要確認的信息有三個:
·賬本的編號有效
·賬本的前一頁賬本有效
·交易清單有效
第一點把賬本紙放入編碼生成器進行驗證即可;第二點需要對比自己小組的最新賬本的最后一頁編號即可;第三點確認當前每筆交易的付款人有足夠余額即可。如果三點都確認成功,該小組會承認這一頁賬本并更新自己的賬本。
PS:
1、故事只表達關鍵原理,細節并不完全相同。
2、交易平臺做中間代理時,與該機制有出入。
新聞熱點
疑難解答