Script

使用 bitcoinjs 創建一個 OP_CSV 交易

  • June 2, 2020

我正在開發一種用於生成時間鎖定契約的工具。我的兌換腳本如下所示:

OP_HASH160 <revocationHash> OP_EQUAL
OP_IF
   <bobPubKey>
OP_ELSE
   <timeDelay> OP_CHECKSEQUENCEVERIFY OP_DROP
   <alicePubKey>
OP_ENDIF
OP_CHECKSIG

目標是 Alice 可以在一段時間後花掉這些資金,而 Bob 可以通過證明雜湊原像的知識隨時花掉它們。

通過撤銷雜湊消費很容易。但是,我在建構基於時間鎖花費的事務時遇到了麻煩,事實證明這更加困難。本質上,我的問題是:

  1. <timeDelay>值代表什麼?例如,我如何將資金鎖定 2 個區塊?
  2. 根據我的閱讀,需要設置支出交易的序列號。但是應該設置什麼?
  3. 我如何使用bitcoinjs-lib或其他庫實際實現此功能?

在 bitcoin-js 你可以做這樣的事情

aliceToBobRedeemScript =  bitcoin.script.compile([,
bitcoin.opcodes.OP_IF,
 bitcoin.opcodes.OP_HASH160,
 aliceSecretHash,
 bitcoin.opcodes.OP_EQUALVERIFY,
 bobPrivKey.getPublicKeyBuffer(),
bitcoin.opcodes.OP_ELSE,
 bitcoin.script.number.encode(10),
 bitcoin.opcodes.OP_NOP3,
 bitcoin.opcodes.OP_DROP, 
 alicePrivKey.getPublicKeyBuffer(),
bitcoin.opcodes.OP_ENDIF,
bitcoin.opcodes.OP_CHECKSIG
]);

舊的 atomicswap 展示中有一些範常式式碼,它沒有 csv,但顯示了其他內容,例如如何簽署自定義交易等

<https://github.com/rubensayshi/counterparty-p2sh-demo/blob/master/atomic-swap.js#L163-L185>

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