標籤:分享 自己的 分享圖片 記錄 所有權 校正 hash 驗證 左右
在之前的文章中已經說過了比特幣是一種去中心化的分散式總帳,因此各節點之間是相互不信任的。那麼比特幣網路中的所有參與者如何達成對任意一個所有權的共識呢?這篇文章就會介紹如何解決這個問題。
比特幣的共識由所有節點的4個獨立過程相互作用而產生:
1.每個節點(挖礦節點)依據標準對每個交易進行獨立驗證
2.挖礦節點通過完成工作量證明,將交易記錄獨立打包進新區塊
3.每個節點獨立的對新區塊進行校正並組裝進區塊鏈
4.每個節點對區塊鏈進行獨立選擇,在工作量證明機制下選擇累計工作量最大的區塊鏈
同時,挖礦也會獲得一定比特幣的獎勵,挖礦是一種激勵機制,這種機制實現了去中心化的安全。有了挖礦的獎勵,礦工們就有了工作的動力。。礦工通過創造一個新區塊得到的比特幣數量大約每四年減少一半。也就是說開始時為2009年1月每個區塊獎勵50個比特幣,然後到2012年11月減 半為每個區塊獎勵25個比特幣。直到2140年。屆時所有的比特幣全部發行完畢。那礦工們的主要收益就會來源於交易費。
工作量證明演算法
礦工們通過反覆計算雜湊值來獲得記賬權,為了保證10分鐘左右只有一個人可以記賬,就必須要提高記賬的難度,使得Hash的結果必須以若干個0開頭。同是為了滿足這個條件,在進行Hash時引入一個隨機數變數。之前文章在介紹區塊頭的時候就提到過 nonce(隨機數),礦工們就通過用不同 nonce值去計算區塊頭的雜湊值直到計算所得雜湊值小於難度值。難度值越小,計算的難度就越大,打個比方,不斷扔一個骰子以得到小於一個特定點數的遊戲。第一局小於6。只要你不扔出6, 你就會贏。然後下一局小於2。那麼只能扔1才行。
最長鏈選擇
當有兩名礦工在幾乎在相同的時間內,各自都算得了工作量證明解,便立即傳播自己的區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其併入並延長區塊鏈,這樣就會產生兩條不同的鏈。 比如產生兩個區塊#3458A和#3458B,節點或選擇工作量最大的一條,在整個區塊鏈網路中有些節點會接受了#3458A,有些節點接受#3458B。
收到#3458A的(挖礦)節點,會立刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受#3458B區塊的節點會以這個區塊為鏈的頂點開始產生新塊,延長這個鏈(下面稱為B鏈)。假設選擇#3458B區塊的節點先計算出下一個區塊#3459B,並廣播到全網,這是下面的鏈比上面的鏈長,則選擇的更長的鏈。
區塊鏈學習(7) 共識