Block

塊雜湊數據

  • January 26, 2014

伙計們,我有幾點我不清楚。1)在下面的連結中,它說我們必須組合和散列一些欄位。但是,當我通過從游泳池中說 getwork 來獲得工作時。我得到的也在下面。問題是我找不到第一個連結、Version、hashPrevBlock 等中列出的欄位。

<https://en.bitcoin.it/wiki/Block_hashing_algorithm>

得到工作結果。

{   'data':'0000000271112b7a1cf8e97b8367102f7e155499bf5c7303cbcdd4360000000000000000427719b35a84bc7732edd34ff3a6278dc4ac0ec2a9544e6088bc0bd719e17a8e52db3b211902666600000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000',
'hash1':'00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000',
'target':'0000000000000000000000000000000000000000000000000000ffff00000000',
'midstate':'45aebb01c0fdb704ee7d2bbf02665943f50f299ff8bb252e614100065bc5c20c'
}

2)它在第一個連結中說“每當 Nonce 溢出(它經常發生)時,生成事務的 extraNonce 部分就會增加,這會改變 Merkle 根。” 我應該為extranonce添加額外的32位嗎?

3)反轉標題的原因是什麼?

  1. 您發布的連結指的是整個挖礦過程,如果您使用的是 ASIC 或其他能夠每秒生成 4 gigahashes 或更多的硬體解決方案,您將需要該連結。如果您正在使用getwork,那麼大部分資訊都是不相關且令人困惑的。
  2. 見上文 (1)。使用getwork時不用擔心extraNonce;您可以getwork再次請求並從伺服器獲取新data字元串。
  3. 反轉標頭(實際上反轉標頭中的每個 32 位字)的原因是它在發送給您之前已經反轉(轉換為小端),您需要撤消該反轉,將其放回大-endian 形式。

使用 getwork 時您需要做的就是:

  • 轉換為data大端
  • 獲取 80 字節標頭的 sha256 散列的 sha256 散列
  • getwork如果該雜湊值低於門檻值,則使用適當的帶有數據的 RPC 呼叫將帶有目前隨機數的標頭髮送到伺服器
  • 每次都用不同的 nonce 再次嘗試(80 個字節中的最後 4 個字節是 nonce)

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