Script

如何在regtest模式下向bitcoind送出非標準的scriptPubKey交易?

  • May 4, 2022

我正在嘗試複製我在測試網事務的 scriptPubKey 中看到的代數難題:

OP_2DUP
OP_ADD
6e
OP_EQUAL

我認為目的是讓這個輸出可以被 的 scriptSig 使用0x37,但作者使用OP_2DUP而不是OP_DUP. 我認為你應該仍然可以用 scriptSig 來使用它0x37 0x37,儘管執行後的堆棧將有1 0x37 0x37而不是僅僅1.

我無法送出測試網事務來嘗試花費輸出,因為bitcoin-cli sendrawtransaction強制執行non-mandatory-script-verify-flag(執行後堆棧大小必須恰好為 1)。所以我的下一個想法是在 regnet 伺服器上複製這個謎題,看看我是否可以在那里花費硬幣。

我使用更正的腳本創建了一個原始交易(由不同的 regnet 輸出提供資金):

010000000001013675d91ee12f196835c019afec15f8975bc1bcca23f50e0329376ae93e5bc15b0000000000ffffffff01c808e30500000000057693016e870247304402207f369a50b6deecaf6fc0ee15037ffe460eea9d9093d8e889def1ad93f173d11b022042dac5b3db93aa665b4d45073a3c397e4cdbdbd25880d6a8a15f97cc70b0228f0121029972f24e39b359e5e29267fab7d4cf752982f95e3428b0ef14f38937e6084c3f00000000

{
 "txid": "4c56e2c6626e23f8d3afe7862332f3dbdef5e271f9931ecac8d8ffa67c43bf0b",
 "hash": "07662570c30e5505f35a328342ca6d0a3219ff2198814af44bfcc3dfad20d649",
 "version": 1,
 "size": 174,
 "vsize": 93,
 "weight": 369,
 "locktime": 0,
 "vin": [
   {
     "txid": "5bc15b3ee96a3729030ef523cabcc15b97f815ecaf19c03568192fe11ed97536",
     "vout": 0,
     "scriptSig": {
       "asm": "",
       "hex": ""
     },
     "txinwitness": [
       "304402207f369a50b6deecaf6fc0ee15037ffe460eea9d9093d8e889def1ad93f173d11b022042dac5b3db93aa665b4d45073a3c397e4cdbdbd25880d6a8a15f97cc70b0228f01",
       "029972f24e39b359e5e29267fab7d4cf752982f95e3428b0ef14f38937e6084c3f"
     ],
     "sequence": 4294967295
   }
 ],
 "vout": [
   {
     "value": 0.98765000,
     "n": 0,
     "scriptPubKey": {
       "asm": "OP_DUP OP_ADD 110 OP_EQUAL",
       "desc": "raw(7693016e87)#tcc664ka",
       "hex": "7693016e87",
       "type": "nonstandard"
     }
   }
 ]
}

但我也無法將此事務送出到我的 regnet 伺服器,因為:

% bitcoin-cli sendrawtransaction 010000000001013675d91ee12f196835c019afec15f8975bc1bcca23f50e0329376ae93e5bc15b0000000000ffffffff01c808e30500000000057693016e870247304402207f369a50b6deecaf6fc0ee15037ffe460eea9d9093d8e889def1ad93f173d11b022042dac5b3db93aa665b4d45073a3c397e4cdbdbd25880d6a8a15f97cc70b0228f0121029972f24e39b359e5e29267fab7d4cf752982f95e3428b0ef14f38937e6084c3f00000000
error code: -26
error message:
scriptpubkey

我是否必須編寫自己的送出者才能與 regnet 節點對話?(也許無論如何我都需要它來送出應答/支出交易。)

(我想我可以通過 P2SH 送出非標準腳本,但這不是我想要的,因為拼圖腳本本身需要在區塊鏈中,而不僅僅是答案腳本的雜湊。這就是拼圖/獎勵/挑戰的全部意義:任何人都可以閱讀問題陳述,如果他們能解決問題,他們可以送出腳本推送答案的交易。我知道這不安全,礦池可以竊取答案並送出他們自己的付費地址作為輸出,但這是另一天的問題。)

幫助!

你必須告訴比特幣核心允許非標準交易,這可以通過以-acceptnonstdtxn.

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