Segregated-Witness

下一篇:見證中的任意數據儲存?

  • June 23, 2017

假設我想將詹姆士國王版聖經的文本一次一個地編碼到區塊鏈中(用任何有趣的想法替換它以消耗大量的區塊空間)。OP_RETURN 是不切實際的,因為我只能處理 80 字節的塊。

我注意到 SegWit 允許在見證數據中儲存更多數據——高達 3 MB/塊。

顯然,我不能使用 V0 見證程序,因為我的見證數據必須採用以下形式

<signature> <pubkey>

但是,我相信我可以使用 V1 見證程序。部署 SegWit 後不會立即支持具有該版本的腳本,但我在BIP-141中註意到了這一點:

如果版本字節為 1 到 16,則不會發生對見證程序或見證堆棧的進一步解釋,並且見證堆棧沒有大小限制。這些版本是為將來的擴展保留的。

所以這是我的計劃。我將創建一個格式如下的輸出腳本:

<0x01> <0x0000>

這是一個 V1 見證程序。根據 BIP-141,見證程序不被解釋,後續見證堆棧將沒有大小限制。

然後我將把這個輸出用於見證交易輸入。我的交易見證人編碼了一千字節的文本。

當我發布此支出交易時,它將由節點傳播。他們不能將其視為無效而拒絕,因為這會在引入 V1 腳本時破壞前向兼容性。BIP-141 沒有說明是否應該轉發此類交易(BIP-144 也沒有),所以我認為它們會轉發。

只要我支付足夠高的費用,我的交易最終應該會被探勘。我什至比使用 OP_RETURN 獲得 75% 的折扣,因為我的文本是在見證中編碼的。

協議不會阻止我。或者有嗎?

編輯:為簡單起見,假設 SegWit 已被廣泛部署,並且大多數節點都理解 V0 見證程序。顯然,非 SegWit 節點不會中繼見證交易,因為它會被認為是非標準的。我對 SegWit 節點的行為很感興趣。

您的交易雖然不是無效的,但是非標準的。由於它是非標準的,它不會被傳播並會因為不標準而被拒絕。然而,這並不意味著它不能被包含在一個塊中;它可以。它只要求礦工以及您與該礦工之間的所有節點必須執行一些接受和中繼非標準交易的軟體。但是實際上並沒有多少節點,因此您可能很難獲得良好的交易傳播。

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