首頁>Club>
比特幣用了去中心化的記賬法,賬本存在於每個節點。網路中每生成一個區塊,所有礦工都參與競爭計算,最快得出正確結果的即獲得最終記賬權。那麼,如何在網路中確定哪個礦工最先完成區塊計算呢?是否所有礦工對區塊的計算結果統一提交到一箇中心端,由它來判定誰最先完成計算,發放比特幣獎勵,然後更新整條鏈並向網路中所有節點同步?
9
回覆列表
  • 1 # 留白說

    如果對分散式,去中心化有所瞭解的話,這個問題其實不難理解,去中心化的記賬法的實現主要是透過共識演算法、P2P的結構以及賬本鏈式的結構來實現,透過共識演算法讓所有節點共同維護一個賬本。那麼共識演算法有那麼多,如說常見的Paxos演算法,Raft演算法,ZAB演算法,BFT演算法等等。那具體到比特幣,它採用的是什麼演算法呢,答案是POW(proof of work)工作量證明演算法。

    比特幣規則是這樣定的,算出區塊的雜湊必須大於等於目標值,這個區塊才能被大家認可接受,然後將這個區塊加入到各自的賬本中,如果有人傳送了一個錯誤的區塊,那麼這個人就會被加入到黑名單,別人不再接收你資訊。

    你可能就要問了,那麼多的節點如果每個節點能隨便生成區塊那麼賬本還會一致嗎?首先生成區塊是有一定的代價的,你的區塊雜湊值必須符合難度的要求,以第510000個區塊為例,區塊的雜湊是 000000000000000000152678f83ec36b6951ed3f7e1cc3b04c5828cab8017329,它得 上一個區塊是0000000000000000002292de0d9f03dfa15a04dbf09102d5d4552117b717fa86,而它的下一個區塊是0000000000000000003afdbe40a9f5f3d92bc20e65fd41afd6e2ee47b7aa3ead。要知道雜湊前面的零越多雜湊越難算出;

    其次,你生成區塊必須依賴上一個區塊,否則這這個區塊就不會被大家所認可,並不能新增到賬本中。區塊必需組成鏈式的結構,一個接著一個,中間不能重複或者跳躍。生成一個區塊大約是十分鐘,十分鐘內的全網算力來就算這個符合條件的雜湊值,如果說生成區塊的的速度太快則容易導致分叉,就是我們說的賬本資料不一致,如果生成區塊的速度太慢則交易的確認和系統處理交易的時間花費比較多。

    最後每個節點生成的區塊其他節點接收後會對其進行嚴格的驗證,包括區塊高度,難度,交易的簽名等等,這樣全網的賬本才能保證一致。

  • 2 # 追逐夢想開花

    比特幣去中心化記賬,也就是比特幣的挖礦過程。比特幣挖礦的過程是把驗證有效的交易打包放入區塊鏈的過程,則這個過程就由礦工來完成。礦工具有以下六個任務:

    1. 監聽交易廣播,並驗證這些交易的簽名是有效的和交易沒有被重複支付。2. 維護區塊鏈網路和監聽新的區塊。如果有別的礦工釋出新的區塊,礦工需要驗證該區塊是否有效,如果有效則加入區塊鏈,更新最新的區塊鏈。3. 組裝新區塊。把你想加入你的新區塊的有效交易打包,編寫梅克爾樹。4. 找到一個使新區塊有效的隨機數。這一步工作量很大,也是礦工工作最難得一個環節。當礦工把一定數量的交易編寫成梅克爾樹後,再透過隨機選取隨機數Nounce,透過雜湊函式計算該區塊的雜湊值,只有當雜湊值滿足當前區塊生成難度的要求時(如前15位為0或20位為0),該區塊才有效併入鏈,同時礦工可以得到相應的獎勵。當歷遍所有32位的Nounce後還不能生成滿足要求的雜湊值時,可以更改給礦工獎勵的幣基引數值再計算該區塊雜湊值。5. 希望你的區塊被全網接受。即使你組裝完成一個有效的新區塊,也不能保證一定可以入鏈,這一點需要點運氣,也許別的礦工和你同時找到一個有效區塊,並被大多數礦工接受,那麼你的這個新區塊就會被拋棄,而形成孤塊。6. 礦工的利潤。礦工的利潤分為挖礦獎勵和所打包交易的交易費。(1)挖礦獎勵:如果所有別的礦工接受了你的區塊,你的區塊加入到了最長鏈,那麼你就能獲得獎勵。最初獎勵是每成功生成一個區塊,該礦工得到獎勵50個比特幣,每210,000個區塊(大約4年)獎勵減半,目前獎勵為12.5個比特幣。(2)交易費:礦工打包交易,從每筆交易中會得到交易費,提供的交易費越高,該交易越能被礦工及早的加入區塊鏈。2017年12月比特幣大漲時交易費更高,因為比特幣7筆/秒的交易速度實在不能滿足當時那麼大體量的交易,因此交易費也水漲船高。
  • 中秋節和大豐收的關聯?
  • 當在公交車上遇上火災應該怎麼辦?