Multi-Signature
如何為以下 1-of-2 multisig P2SH 腳本編寫 OP_CHECKMULTISIG
OP_IF OP_SHA256 <hash of secret> OP_EQUALVERIFY <pubKey of swap> OP_CHECKSIG OP_ELSE <relative locktime> OP_CHECKSEQUENCEVERIFY OP_DROP <pubKey of refund> OP_CHECKSIG OP_ENDIF
我用於上述腳本的實際程式碼是
const script = this.app.env.bitcoin.script.compile([ hashOpcode, Buffer.from(secretHash, "hex"), this.app.env.bitcoin.opcodes.OP_EQUALVERIFY, Buffer.from(recipientPublicKey, "hex"), this.app.env.bitcoin.opcodes.OP_EQUAL, this.app.env.bitcoin.opcodes.OP_IF, Buffer.from(recipientPublicKey, "hex"), this.app.env.bitcoin.opcodes.OP_CHECKSIG, this.app.env.bitcoin.opcodes.OP_ELSE, this.app.env.bitcoin.script.number.encode(lockTime), this.app.env.bitcoin.opcodes.OP_CHECKSEQUENCEVERIFY, this.app.env.bitcoin.opcodes.OP_DROP, Buffer.from(ownerPublicKey, "hex"), this.app.env.bitcoin.opcodes.OP_CHECKSIG, this.app.env.bitcoin.opcodes.OP_ENDIF ]);
正如我們看到的,這個腳本只有一個公鑰(交換的 pubKey)來簽名。但我想用兩個公鑰簽名。我搜尋了它,但沒有找到,有人可以指導我嗎?
我只想遵循這種模式
OP_0 [Sig 1] OP_1 [PK 1][PK 2] OP_2 OP_CHECKMULTISIG
根據我從您的問題中了解到的情況(如果我錯了,請糾正我),您希望有一個腳本,該腳本
OP_IF
部分支付 1-of-2 公鑰。您可以嘗試以下腳本:OP_IF OP_SHA256 OP_DATA (0x20) <hash of secret> OP_EQUALVERIFY OP_1 OP_DATA (0x21) <pubKey of swap1> OP_DATA (0x21) <pubkey of swap2> OP_2 OP_CHECKMULTISIG OP_ELSE OP_DATA (size of relative_locktime) <relative locktime> OP_CHECKSEQUENCEVERIFY OP_DROP OP_DATA (0x21) <pubKey of refund> OP_CHECKSIG OP_ENDIF
您可以將此腳本用於:
<0> <sig1> <secret> 1