Script
使用 bitcoinjs 創建一個 OP_CSV 交易
我正在開發一種用於生成時間鎖定契約的工具。我的兌換腳本如下所示:
OP_HASH160 <revocationHash> OP_EQUAL OP_IF <bobPubKey> OP_ELSE <timeDelay> OP_CHECKSEQUENCEVERIFY OP_DROP <alicePubKey> OP_ENDIF OP_CHECKSIG
目標是 Alice 可以在一段時間後花掉這些資金,而 Bob 可以通過證明雜湊原像的知識隨時花掉它們。
通過撤銷雜湊消費很容易。但是,我在建構基於時間鎖花費的事務時遇到了麻煩,事實證明這更加困難。本質上,我的問題是:
<timeDelay>
值代表什麼?例如,我如何將資金鎖定 2 個區塊?- 根據我的閱讀,需要設置支出交易的序列號。但是應該設置什麼?
- 我如何使用
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>