為什麼不是所有的 coinbase 文本都包含區塊高度?
#511329 的 coinbase 文本以 a 開頭,#511330 以 b 開頭,#511331 以 c… 開頭(以此類推直到 z),但 #511426 例如以 F 開頭,下一個以 m 開頭,下一個與“…關於<https://coin.dance/blocks>
為什麼有些人遵守規則,有些人不遵守?
所有 coinbase 交易都包含區塊高度,並且自第 227,835 個區塊以來一直如此。它是BIP 34所要求的。由於所有其他礦工都執行此規則,因此破壞它的區塊將成為孤兒,不會成為區塊鏈的一部分。
你只是沒有在看正確的東西。高度由單個字節編碼,給出後面的字節數(目前為 0x03),然後高度為小端二進制數。Blockchain.info 以十六進制和字元形式顯示 coinbase 交易腳本,但並非所有字節都對應於可列印的 ASCII 字元,因此它為此類字節顯示一個 � 字元(字節之間似乎沒有一一對應和字元,因此它可能會嘗試將其解析為 Unicode 或其他內容)。
十進制 511329 是十六進制 0x07cd61,所以它的 coinbase 以字節開頭
0x03 0x61 0xcd 0x07
(記住,小端序)。現在 0x03 是不可列印的,而 0x61 是a
,所以你會a
在該文本中看到一個。十進制 511330 是十六進制 0x08cd62,所以你看0x03 0x62 0xcd 0x07
,而 0x62 是b
。但十進制 511426 是十六進制 0x07cdc2,所以 coinbase 開始
0x03 0xc2 0xcd 0x07
。這些都不對應於任何可列印的字元。交易繼續進行,03c2cd07ce46...
並且 0x46 是 ASCIIF
。這恰好是 coinbase 交易中的第一個可列印字元,但它根本不是塊高度的一部分;只是礦工想要包括的任何其他數據的一部分。您忽略了不可列印的字節,但您不能這樣做。同樣,511247 的 coinbase
03c3cd07fabe6d6d...
再次開始,塊高度完全包含在內,因為十進制 511427 是十六進制 0x07cdc3。碰巧第一個可列印字元是 0x6d, ASCIIm
。但這又與塊高度無關。