Script

什麼是 OP_RETURN_252?

  • November 23, 2022

此 coinbase 交易中的第一個 scriptsig 操作碼是OP_RETURN_252,稍後是OP_RETURN_188.

這些不顯示在這個操作碼列表中

探勘網際網路,我發現這個rust lib有一堆這些,OP_RETURN_186OP_RETURN_255.

某處有關於這些的官方文件嗎?

什麼是 OP_RETURN_252?

這是我的猜測:

coinbase 交易中的輸入是沒有意義的。輸入的解鎖腳本 (scriptSig) 永遠無法執行。所以它永遠不會檢查有效性。它僅供礦工使用,作為一個字節數組,用於記錄一些對比特幣網路的其餘部分沒有用處的私人資訊(但請參閱下面關於 coinbase 中 BIP34 高度的註釋)。

185 (OP_NOP10) 和 253 (OP_PUBKEYHASH) 之間的操作碼未定義。

我認為 mempool.space 網站使用的解析器被愚蠢地要求在 coinbase 交易的輸入中對無意義的鎖定腳本中的字節產生反彙編的操作碼解釋。它任意將虛擬名稱 OP_RETURN_186 到 OP_RETURN_252 分配給 186-252 範圍內的字節,這些字節出現在腳本中的某個點,在非 coinbase 解鎖腳本中需要操作碼。

我猜他們選擇了以 OP_RETURN 開頭的名稱,並使這些程式碼成為 OP_RETURN 的同義詞,這樣陷入困境的解析器就可以免除解析後續字節的任何義務。

我會忽略 mempool.space 為 coinbase 輸入產生的亂碼。


某處有關於這些的官方文件嗎?

不。

部分原因是比特幣沒有官員來主持官方名單。


Coinbase 輸入

(此處導入的PW評論中的註釋更加突出)

Coinbase 輸入不是腳本——它們只是字節數組。它們從未被執行過,所以它們包含亂碼實際上並不重要。

Coinbases 必須只有一個輸入(不知道為什麼,這只是一個一直存在的規則),並且自 BIP34(height-in-coinbase,2012 年推出)以來,coinbase 輸入的 scriptSig 必須以對應於推送的腳本字節開頭塊的高度到堆棧上。然而,推送之後的字節仍然是亂碼。還有一個一直存在的規則,即 coinbase 輸入 scriptSig 的長度必須最多為 100 個字節(並且至少為 2 個字節,儘管現在它的高度推送暗示了這一點)。

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