Transactions
OP_RETURN 消息是否保留在區塊鏈上?
我已經在 OP_RETURN 上做了很多閱讀,我想了解一些似乎仍然不清楚的東西。當我們使用 OP_RETURN 創建一個事務時(我知道這不會永遠污染節點的 RAM,因為事務沒有放入 UTXO 數據庫),OP_RETURN 數據是否在區塊鏈中複製?
此處相關問題的答案(區塊鏈事務消息長度限制)指出 OP_RETURN不是比特幣協議的一部分,並且只能使用 blockchain.info 訪問 OP_RETURN 數據,這從我所了解的情況來看沒有意義閱讀,因為標準化 OP_RETURN 消息字節數的程式碼直接在比特幣原始碼中,因此是協議的一部分,對嗎?
TL;DR:我正在嘗試製作一個使用 OP_RETURN 的應用程序,我想知道 OP_RETURN 數據是否永遠存在於區塊鏈上,並且可以使用 blockchain.info 以外的 API 進行檢索。
是的,OP_RETURN 輸出永遠是區塊鏈的一部分。
這很容易證明:OP_RETURN 和隨後的消息是交易輸出集的一部分,因此更改消息會更改交易 ID,進而會更改區塊的雜湊值。如果消息在一定時間後被刪除,那麼網路上的新節點將無法同步,因為它們將無法驗證該塊。因此,所有完整節點都將永遠保留您的消息(正如您所提到的,不是在 RAM 中,而是深埋在硬碟驅動器上的文件中)。
至於實際訪問數據,除了 Blockchain.info API,我猜你可以在本地執行一個Toshi節點(在你自己的硬體上)。由於它使用 PostgreSQL,因此您可以像查詢任何數據庫一樣查詢區塊鏈。這樣,您就不會依賴任何可能導致邪惡或關閉的外部 API。然而,硬碟驅動器的需求是巨大的(甚至比比特幣核心完整節點還要糟糕)。