Mining-Theory

哪些交易經過了“試圖贏得新區塊”的SHA256流程?

  • February 3, 2021

常說希望加入到現有區塊鏈中的新區塊,裡面填滿了交易,和a一起nonce,經過兩次SHA256,盡量做一個足夠小的數字(有很多前導0的)

不是每個礦工或礦池,都可以得到不同的交易來填寫嗎?這些交易是否“希望在大約 10 分鐘內添加到這個新區塊”?選擇一些交易是因為它們提供了很好的費用。由礦工或礦池決定進入哪個交易?那麼,礦工或礦池可以放入一筆交易、兩筆交易、0筆交易或任意數量的交易嗎?

因此,每個礦工或礦池都處理一個充滿不同交易的區塊加上一個nonce

是的,每個礦工決定將哪些交易選擇到他們的區塊模板中。區塊必須有 coinbase 交易,所有其他交易都是可選的,但區塊限制為 4,000,000 個重量單位。

讓我詳細說明一下:未確認的交易由參與節點通過 p2p gossip 協議在網路上中繼。每個節點在其記憶體池(mempool)中維護自己的未確認交易列表。礦工通常從他們的記憶體池中挑選交易來組裝塊模板。

區塊必須有一個coinbase 交易作為區塊中的第一筆交易,其餘交易必須有效且按拓撲排序。一個塊不得超過 4,000,000 個重量單位。除此之外,礦工完全可以自由選擇他們的區塊組成。只包含 coinbase 交易的區​​塊是允許的,被稱為空區塊

預計礦工希望通過收取盡可能多的交易費用來優化他們的收入。預設情況下,getBlockTemplate呼叫使用貪心算法迭代選擇具有最高有效費率的交易集,直到塊滿。礦工可以使用prioritisetransactionrpc 呼叫來重新確定交易的優先級,以考慮塊模板。一些礦工可能會使用定制軟體來建構他們的區塊。

實際上,塊模板通常在礦工之間幾乎完全重疊,因為節點應該在網路上看到相同的交易(由於中繼而有一些輕微的延遲)。然而,由於每個礦工的區塊模板都試圖通過 coinbase 交易向自己支付區塊獎勵,並且每個礦工都有不同的支付地址,因此礦工生成的每個區塊模板都是唯一的,沒有礦工會重複另一個礦工所做的工作。

給定一個塊模板,礦工通過不同的隨機數、額外隨機數、時間戳、修改版本欄位等注入隨機數據來搜尋該模板的組合空間。每個新組合都會產生一個唯一的塊頭,該塊頭使用 SHA-256d 散列。如果生成的摘要符合目標,則礦工發現了一個新塊。否則,他們會創建一個新的塊模板並重新開始。

一旦發現一個新區塊,區塊作者就會將其廣播給他們的同行。其他了解該塊的節點將其附加到他們的區塊鏈,更新他們的 UTXO 集,並從他們的記憶體池中刪除確認的交易。由於最好的鏈在每個高度只能有一個區塊,誠實的礦工繼續在舊高度挖礦是沒有意義的,因此他們會盡快切換到新高度挖礦。

你所有問題的答案都是肯定的,除了最後一個。還有更多可以變化的。Nonce,extranonce,交易順序,交易選擇,也許是時間戳(在 +/- 一個小時左右)和塊的一些其他內容可以改變以改變雜湊。難度越高,礦工就越有創造力。

引用自:https://bitcoin.stackexchange.com/questions/102150