- +1
Comunion 區塊鏈深度學習系列|挖礦和錢包原理
本系列內容包含:基本概念及原理、密碼學、共識算法、錢包及節點原理、挖礦原理及實現。
挖礦
構成區塊頭的因素都產生以后,礦工會在Nonce中隨機填入一個值,比如下圖中Nonce=14202,接著對區塊頭進行哈希運算,會產生一個哈希值,這個哈希值會和區塊頭中的難度值進行比較。
當計算哈希比難度值大的時候,系統就會判定不符合要求,此時需要返回繼續增加Nonce值,重新計算哈希值,以此不斷重復循環計算,直到計算哈希小于難度值,才會進行下一步,這就是挖出了礦。
挖出礦之后,系統會將Nonce值固定到區塊頭中,并將交易廣播到全網。

其實這里有一個問題是,既然第一個Nonce值不行的話,那為什么所有的礦工一般都是通過字征法,也就是一個一個數字相加的方式去運算呢?
有的人會認為,既然Nonce值是隨機的,那為什么填入的時候不能隨機填入呢,比如說1不行,就填100;100不行,就填500;500不行,就填2000……這樣概率是不是應該更大一些?
其實并不會,因為哈希運算的時候,即使Nonce值只改變了一個數字,但是其哈希計算結果的區別卻非常大。
也就是說,隨機碰撞去試Nonce值的計算哈希概率并不會比順序嘗試的概率大,并且還會增加礦機設計的難度。
所以,現在挖礦一般都是通過給定計算范圍的方式去計算Nonce值。
比如上圖中,14202不行,那就14203……一直到12405,這時區塊哈希小于難度值,這時也就是挖出了礦,找到了可用區塊,最后將結果廣播給全網。
需要說明的是,礦工挖出符合難度要求的區塊之后,會將這個區塊廣播給網絡中的其他節點,其他節點會驗證新收到的區塊是否符合難度要求。并且會將區塊中包含的所有交易重新驗證一遍,包括交易是否合法,交易輸入和簽名是否合法等。
如果驗證沒有問題,就會將這個區塊添加到自己本地節點的賬簿中,也就是填到鏈上,此時一筆交易完成。
數字錢包
錢包最重要的是私鑰,因為有私鑰就可以得到交易地址,并且可以通過鏈上去查詢到與交易地址相關的所有記錄以及余額。
如果私鑰丟失或者被盜了,那這個錢包就再也找不回來了。
一個錢包中也可以有多個私鑰,這取決于選用錢包的不同。
我們分析一些不同種類的錢包
不確定性錢包,這種錢包中的每個私鑰之間沒有關聯性。備份錢包的時候,需要對每個私鑰進行備份。

由于私鑰是由很長的一串無序十六進制字符串構成的,只備份一個就很容易出錯,如果再備份很多個,其這個工作量是巨大的,并且人工備份的過程中出錯的概率也會上升,一旦備份丟失或者人工記錄錯誤,這個錢包就無法找回。
不確定性錢包由于其管理難度的原因,往往容量是有限的,即私鑰和地址的產生是有限的。
確定性錢包,這種錢包中所有的私鑰是由一個主私鑰按照一定規則衍生得出。備份錢包的時候,只需要把主私鑰備份下來,并且把衍生規則記錄下來。

這種錢包可以很順利的通過主私鑰種子,拿回錢包中包含的所有私鑰和地址。其中每一個私鑰是一個根,每個私鑰管理下一個,當一個私鑰泄露的話,只要知道規則,相連的一串私鑰都會泄露,這也導致確定性錢包存在一定的不安全性。
錢包備份的時候,不是十六進制字符串的形式,而是采用12個或者24個助記詞(單詞或漢字)的形式,展現給使用者,使用者只需要備份這些助記詞就可以了。當在一個新的錢包中重新導入備份的助記詞,就可以找回之前使用的錢包。
由于確定性錢包這種確定性的關系,所以可以衍生出無數的私鑰,所以錢包中的地址也是無數多個的。
分層確定性錢包,這種所有私鑰由一個主私鑰按照一定規則衍生得出,但是會分裂成很多子私鑰,子私鑰分裂成孫私鑰,以此類推會產生無限多私鑰。這樣即使某一個子私鑰泄露了,也不會影響其他子私鑰的安全。

這種錢包是現在實際應用最多的,可以用一個主私鑰管理整個錢包,然后不同的子私鑰管理不同的數字貨幣。即使某一個鏈上的資產泄露了,也不會影響其他錢包的資產。
本文為澎湃號作者或機構在澎湃新聞上傳并發布,僅代表該作者或機構觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。





- 報料熱線: 021-962866
- 報料郵箱: news@thepaper.cn
互聯網新聞信息服務許可證:31120170006
增值電信業務經營許可證:滬B2-2017116
? 2014-2025 上海東方報業有限公司