Blockchain
在區塊鏈上創建區塊的過程是什麼
一直在礦池上挖礦,盲目地騎著
> 生成塊
有人可以簡單地通過在區塊鏈上創建塊所涉及的步驟來完成這個過程嗎?
是什麼決定了我們正在探勘的區塊中包含哪些交易?
當礦工嘗試計算一個區塊時,他們會選擇他們想要添加到區塊中的所有交易,以及一個 coinbase(生成)交易到他們的地址。它們可能包括他們想要形成交易樹的任何交易,這些交易樹隨後被散列到 merkle 根中並被引用到塊的頭中。
需要注意的是,對於要被網路接受的塊,它只需要包含有效的交易:尚未花費的輸入,具有有效數量的輸入,驗證 ok 的簽名等……
在擁有一個有效的 merkle 根之後,他們建構了區塊的頭部:
- 版本(4 字節)
- 前一個塊的雜湊,從而形成一個塊鏈(32字節)
- Merkle 根,交易參考樹(32 字節)
- 時間戳,自 1970-01-01 00:00 以來的秒數(4 個字節)
- 位,網路目前難度的表示(4 個字節)
- Nonce,挖礦時遞增(4 字節)
在此處查看更多資訊以了解有關如何建構標頭的更多資訊。
然後這是您的礦工進入遊戲的地方。它從 0 的隨機數開始,散列 (sha-256 2x) 塊的標頭,然後檢查散列是否在目前目標下(如果您在池中,則為共享目標)。如果不是,它會增加隨機數並再次散列。如果雜湊值在目前目標“你找到了一個塊”之下,那麼你傳輸你的塊頭和相關交易的樹並且網路接受它。因為你在你的區塊中有一個 coinbase 交易支付給你的比特幣地址,所以這些比特幣就變成了你的。
也就是說,找到一個塊是罕見的,所以你的礦工最終會用完 nonce 來使用你然後可以更改塊頭中的參數(更可能是時間戳)或在你的交易樹中添加一個額外的 nonce 欄位,從而改變 merkle根。
至於選擇哪些交易作為區塊的一部分,主要是礦工選擇包含一個或其他交易。但通常他們會在交易中包含礦工費以獲得更多比特幣,礦工也可以選擇不包含任何交易而只獲得 coinbase 一個。通過網路傳播交易也會影響礦工包含哪些交易。