@btc-vision/bitcoin 6.5.6 → 7.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
- package/benchmark/psbt-2000-inputs.bench.ts +178 -0
- package/benchmark/signing.bench.ts +147 -0
- package/browser/address.d.ts +56 -9
- package/browser/address.d.ts.map +1 -0
- package/browser/bech32utils.d.ts +9 -1
- package/browser/bech32utils.d.ts.map +1 -0
- package/browser/bip66.d.ts +11 -6
- package/browser/bip66.d.ts.map +1 -0
- package/browser/block.d.ts +117 -11
- package/browser/block.d.ts.map +1 -0
- package/browser/branded.d.ts +20 -0
- package/browser/branded.d.ts.map +1 -0
- package/browser/crypto/crypto.d.ts +1 -0
- package/browser/crypto/crypto.d.ts.map +1 -0
- package/browser/crypto.d.ts +46 -7
- package/browser/crypto.d.ts.map +1 -0
- package/browser/ecc/context.d.ts +129 -0
- package/browser/ecc/context.d.ts.map +1 -0
- package/browser/ecc/index.d.ts +11 -0
- package/browser/ecc/index.d.ts.map +1 -0
- package/browser/ecc/types.d.ts +128 -0
- package/browser/ecc/types.d.ts.map +1 -0
- package/browser/ecpair.d.ts +99 -0
- package/browser/errors.d.ts +124 -0
- package/browser/errors.d.ts.map +1 -0
- package/browser/index.d.ts +32 -5
- package/browser/index.d.ts.map +1 -0
- package/browser/index.js +12482 -101
- package/browser/io/BinaryReader.d.ts +276 -0
- package/browser/io/BinaryReader.d.ts.map +1 -0
- package/browser/io/BinaryWriter.d.ts +391 -0
- package/browser/io/BinaryWriter.d.ts.map +1 -0
- package/browser/io/MemoryPool.d.ts +220 -0
- package/browser/io/MemoryPool.d.ts.map +1 -0
- package/browser/io/base64.d.ts +13 -0
- package/browser/io/base64.d.ts.map +1 -0
- package/browser/io/hex.d.ts +67 -0
- package/browser/io/hex.d.ts.map +1 -0
- package/browser/io/index.d.ts +17 -0
- package/browser/io/index.d.ts.map +1 -0
- package/browser/io/utils.d.ts +199 -0
- package/browser/io/utils.d.ts.map +1 -0
- package/browser/merkle.d.ts +10 -1
- package/browser/merkle.d.ts.map +1 -0
- package/browser/networks.d.ts +70 -9
- package/browser/networks.d.ts.map +1 -0
- package/browser/opcodes.d.ts +1 -0
- package/browser/opcodes.d.ts.map +1 -0
- package/browser/payments/bip341.d.ts +35 -9
- package/browser/payments/bip341.d.ts.map +1 -0
- package/browser/payments/embed.d.ts +112 -1
- package/browser/payments/embed.d.ts.map +1 -0
- package/browser/payments/index.d.ts +17 -10
- package/browser/payments/index.d.ts.map +1 -0
- package/browser/payments/p2ms.d.ts +150 -0
- package/browser/payments/p2ms.d.ts.map +1 -0
- package/browser/payments/p2op.d.ts +150 -24
- package/browser/payments/p2op.d.ts.map +1 -0
- package/browser/payments/p2pk.d.ts +154 -1
- package/browser/payments/p2pk.d.ts.map +1 -0
- package/browser/payments/p2pkh.d.ts +176 -1
- package/browser/payments/p2pkh.d.ts.map +1 -0
- package/browser/payments/p2sh.d.ts +150 -1
- package/browser/payments/p2sh.d.ts.map +1 -0
- package/browser/payments/p2tr.d.ts +185 -1
- package/browser/payments/p2tr.d.ts.map +1 -0
- package/browser/payments/p2wpkh.d.ts +161 -1
- package/browser/payments/p2wpkh.d.ts.map +1 -0
- package/browser/payments/p2wsh.d.ts +146 -1
- package/browser/payments/p2wsh.d.ts.map +1 -0
- package/browser/payments/types.d.ts +94 -64
- package/browser/payments/types.d.ts.map +1 -0
- package/browser/psbt/bip371.d.ts +34 -8
- package/browser/psbt/bip371.d.ts.map +1 -0
- package/browser/psbt/psbtutils.d.ts +56 -16
- package/browser/psbt/psbtutils.d.ts.map +1 -0
- package/browser/psbt/types.d.ts +245 -0
- package/browser/psbt/types.d.ts.map +1 -0
- package/browser/psbt/utils.d.ts +64 -0
- package/browser/psbt/utils.d.ts.map +1 -0
- package/browser/psbt/validation.d.ts +84 -0
- package/browser/psbt/validation.d.ts.map +1 -0
- package/browser/psbt.d.ts +82 -118
- package/browser/psbt.d.ts.map +1 -0
- package/browser/pubkey.d.ts +27 -6
- package/browser/pubkey.d.ts.map +1 -0
- package/browser/push_data.d.ts +24 -2
- package/browser/push_data.d.ts.map +1 -0
- package/browser/script.d.ts +33 -8
- package/browser/script.d.ts.map +1 -0
- package/browser/script_number.d.ts +17 -0
- package/browser/script_number.d.ts.map +1 -0
- package/browser/script_signature.d.ts +23 -5
- package/browser/script_signature.d.ts.map +1 -0
- package/browser/transaction.d.ts +160 -18
- package/browser/transaction.d.ts.map +1 -0
- package/browser/types.d.ts +36 -38
- package/browser/types.d.ts.map +1 -0
- package/browser/workers/WorkerSigningPool.d.ts +143 -0
- package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
- package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
- package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
- package/browser/workers/ecc-bundle.d.ts +25 -0
- package/browser/workers/ecc-bundle.d.ts.map +1 -0
- package/browser/workers/index.d.ts +91 -0
- package/browser/workers/index.d.ts.map +1 -0
- package/browser/workers/psbt-parallel.d.ts +88 -0
- package/browser/workers/psbt-parallel.d.ts.map +1 -0
- package/browser/workers/signing-worker.d.ts +37 -0
- package/browser/workers/signing-worker.d.ts.map +1 -0
- package/browser/workers/types.d.ts +365 -0
- package/browser/workers/types.d.ts.map +1 -0
- package/build/address.d.ts +57 -10
- package/build/address.d.ts.map +1 -0
- package/build/address.js +80 -24
- package/build/address.js.map +1 -0
- package/build/bech32utils.d.ts +9 -1
- package/build/bech32utils.d.ts.map +1 -0
- package/build/bech32utils.js +10 -2
- package/build/bech32utils.js.map +1 -0
- package/build/bip66.d.ts +11 -6
- package/build/bip66.d.ts.map +1 -0
- package/build/bip66.js +32 -3
- package/build/bip66.js.map +1 -0
- package/build/block.d.ts +117 -11
- package/build/block.d.ts.map +1 -0
- package/build/block.js +204 -72
- package/build/block.js.map +1 -0
- package/build/branded.d.ts +20 -0
- package/build/branded.d.ts.map +1 -0
- package/build/branded.js +7 -0
- package/build/branded.js.map +1 -0
- package/build/crypto/crypto.d.ts +1 -0
- package/build/crypto/crypto.d.ts.map +1 -0
- package/build/crypto/crypto.js +1 -0
- package/build/crypto/crypto.js.map +1 -0
- package/build/crypto.d.ts +46 -7
- package/build/crypto.d.ts.map +1 -0
- package/build/crypto.js +65 -20
- package/build/crypto.js.map +1 -0
- package/build/ecc/context.d.ts +135 -0
- package/build/ecc/context.d.ts.map +1 -0
- package/build/ecc/context.js +232 -0
- package/build/ecc/context.js.map +1 -0
- package/build/ecc/index.d.ts +11 -0
- package/build/ecc/index.d.ts.map +1 -0
- package/build/ecc/index.js +11 -0
- package/build/ecc/index.js.map +1 -0
- package/build/ecc/types.d.ts +134 -0
- package/build/ecc/types.d.ts.map +1 -0
- package/build/ecc/types.js +8 -0
- package/build/ecc/types.js.map +1 -0
- package/build/errors.d.ts +124 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +155 -0
- package/build/errors.js.map +1 -0
- package/build/index.d.ts +32 -5
- package/build/index.d.ts.map +1 -0
- package/build/index.js +26 -3
- package/build/index.js.map +1 -0
- package/build/io/BinaryReader.d.ts +276 -0
- package/build/io/BinaryReader.d.ts.map +1 -0
- package/build/io/BinaryReader.js +425 -0
- package/build/io/BinaryReader.js.map +1 -0
- package/build/io/BinaryWriter.d.ts +391 -0
- package/build/io/BinaryWriter.d.ts.map +1 -0
- package/build/io/BinaryWriter.js +611 -0
- package/build/io/BinaryWriter.js.map +1 -0
- package/build/io/MemoryPool.d.ts +220 -0
- package/build/io/MemoryPool.d.ts.map +1 -0
- package/build/io/MemoryPool.js +309 -0
- package/build/io/MemoryPool.js.map +1 -0
- package/build/io/base64.d.ts +13 -0
- package/build/io/base64.d.ts.map +1 -0
- package/build/io/base64.js +20 -0
- package/build/io/base64.js.map +1 -0
- package/build/io/hex.d.ts +67 -0
- package/build/io/hex.d.ts.map +1 -0
- package/build/io/hex.js +138 -0
- package/build/io/hex.js.map +1 -0
- package/build/io/index.d.ts +17 -0
- package/build/io/index.d.ts.map +1 -0
- package/build/io/index.js +23 -0
- package/build/io/index.js.map +1 -0
- package/build/io/utils.d.ts +199 -0
- package/build/io/utils.d.ts.map +1 -0
- package/build/io/utils.js +271 -0
- package/build/io/utils.js.map +1 -0
- package/build/merkle.d.ts +10 -1
- package/build/merkle.d.ts.map +1 -0
- package/build/merkle.js +12 -1
- package/build/merkle.js.map +1 -0
- package/build/networks.d.ts +70 -9
- package/build/networks.d.ts.map +1 -0
- package/build/networks.js +90 -4
- package/build/networks.js.map +1 -0
- package/build/opcodes.d.ts +1 -0
- package/build/opcodes.d.ts.map +1 -0
- package/build/opcodes.js +1 -0
- package/build/opcodes.js.map +1 -0
- package/build/payments/bip341.d.ts +36 -9
- package/build/payments/bip341.d.ts.map +1 -0
- package/build/payments/bip341.js +35 -15
- package/build/payments/bip341.js.map +1 -0
- package/build/payments/embed.d.ts +120 -1
- package/build/payments/embed.d.ts.map +1 -0
- package/build/payments/embed.js +215 -34
- package/build/payments/embed.js.map +1 -0
- package/build/payments/index.d.ts +17 -10
- package/build/payments/index.d.ts.map +1 -0
- package/build/payments/index.js +20 -10
- package/build/payments/index.js.map +1 -0
- package/build/payments/p2ms.d.ts +159 -1
- package/build/payments/p2ms.d.ts.map +1 -0
- package/build/payments/p2ms.js +427 -108
- package/build/payments/p2ms.js.map +1 -0
- package/build/payments/p2op.d.ts +158 -24
- package/build/payments/p2op.d.ts.map +1 -0
- package/build/payments/p2op.js +379 -93
- package/build/payments/p2op.js.map +1 -0
- package/build/payments/p2pk.d.ts +162 -1
- package/build/payments/p2pk.d.ts.map +1 -0
- package/build/payments/p2pk.js +327 -58
- package/build/payments/p2pk.js.map +1 -0
- package/build/payments/p2pkh.d.ts +185 -1
- package/build/payments/p2pkh.d.ts.map +1 -0
- package/build/payments/p2pkh.js +467 -114
- package/build/payments/p2pkh.js.map +1 -0
- package/build/payments/p2sh.d.ts +159 -1
- package/build/payments/p2sh.d.ts.map +1 -0
- package/build/payments/p2sh.js +500 -152
- package/build/payments/p2sh.js.map +1 -0
- package/build/payments/p2tr.d.ts +193 -1
- package/build/payments/p2tr.d.ts.map +1 -0
- package/build/payments/p2tr.js +592 -174
- package/build/payments/p2tr.js.map +1 -0
- package/build/payments/p2wpkh.d.ts +170 -1
- package/build/payments/p2wpkh.d.ts.map +1 -0
- package/build/payments/p2wpkh.js +429 -104
- package/build/payments/p2wpkh.js.map +1 -0
- package/build/payments/p2wsh.d.ts +155 -1
- package/build/payments/p2wsh.d.ts.map +1 -0
- package/build/payments/p2wsh.js +466 -144
- package/build/payments/p2wsh.js.map +1 -0
- package/build/payments/types.d.ts +98 -64
- package/build/payments/types.d.ts.map +1 -0
- package/build/payments/types.js +17 -13
- package/build/payments/types.js.map +1 -0
- package/build/psbt/bip371.d.ts +35 -9
- package/build/psbt/bip371.d.ts.map +1 -0
- package/build/psbt/bip371.js +113 -28
- package/build/psbt/bip371.js.map +1 -0
- package/build/psbt/psbtutils.d.ts +56 -16
- package/build/psbt/psbtutils.d.ts.map +1 -0
- package/build/psbt/psbtutils.js +71 -16
- package/build/psbt/psbtutils.js.map +1 -0
- package/build/psbt/types.d.ts +249 -0
- package/build/psbt/types.d.ts.map +1 -0
- package/build/psbt/types.js +6 -0
- package/build/psbt/types.js.map +1 -0
- package/build/psbt/utils.d.ts +68 -0
- package/build/psbt/utils.d.ts.map +1 -0
- package/build/psbt/utils.js +171 -0
- package/build/psbt/utils.js.map +1 -0
- package/build/psbt/validation.d.ts +88 -0
- package/build/psbt/validation.d.ts.map +1 -0
- package/build/psbt/validation.js +149 -0
- package/build/psbt/validation.js.map +1 -0
- package/build/psbt.d.ts +84 -120
- package/build/psbt.d.ts.map +1 -0
- package/build/psbt.js +411 -412
- package/build/psbt.js.map +1 -0
- package/build/pubkey.d.ts +27 -6
- package/build/pubkey.d.ts.map +1 -0
- package/build/pubkey.js +36 -12
- package/build/pubkey.js.map +1 -0
- package/build/push_data.d.ts +24 -2
- package/build/push_data.d.ts.map +1 -0
- package/build/push_data.js +44 -12
- package/build/push_data.js.map +1 -0
- package/build/script.d.ts +33 -8
- package/build/script.d.ts.map +1 -0
- package/build/script.js +100 -36
- package/build/script.js.map +1 -0
- package/build/script_number.d.ts +17 -0
- package/build/script_number.d.ts.map +1 -0
- package/build/script_number.js +19 -0
- package/build/script_number.js.map +1 -0
- package/build/script_signature.d.ts +23 -5
- package/build/script_signature.d.ts.map +1 -0
- package/build/script_signature.js +48 -15
- package/build/script_signature.js.map +1 -0
- package/build/transaction.d.ts +160 -18
- package/build/transaction.d.ts.map +1 -0
- package/build/transaction.js +443 -176
- package/build/transaction.js.map +1 -0
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/build/types.d.ts +36 -38
- package/build/types.d.ts.map +1 -0
- package/build/types.js +175 -57
- package/build/types.js.map +1 -0
- package/build/workers/WorkerSigningPool.d.ts +174 -0
- package/build/workers/WorkerSigningPool.d.ts.map +1 -0
- package/build/workers/WorkerSigningPool.js +553 -0
- package/build/workers/WorkerSigningPool.js.map +1 -0
- package/build/workers/WorkerSigningPool.node.d.ts +124 -0
- package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
- package/build/workers/WorkerSigningPool.node.js +753 -0
- package/build/workers/WorkerSigningPool.node.js.map +1 -0
- package/build/workers/ecc-bundle.d.ts +25 -0
- package/build/workers/ecc-bundle.d.ts.map +1 -0
- package/build/workers/ecc-bundle.js +25 -0
- package/build/workers/ecc-bundle.js.map +1 -0
- package/build/workers/index.d.ts +91 -0
- package/build/workers/index.d.ts.map +1 -0
- package/build/workers/index.js +114 -0
- package/build/workers/index.js.map +1 -0
- package/build/workers/psbt-parallel.d.ts +117 -0
- package/build/workers/psbt-parallel.d.ts.map +1 -0
- package/build/workers/psbt-parallel.js +233 -0
- package/build/workers/psbt-parallel.js.map +1 -0
- package/build/workers/signing-worker.d.ts +37 -0
- package/build/workers/signing-worker.d.ts.map +1 -0
- package/build/workers/signing-worker.js +350 -0
- package/build/workers/signing-worker.js.map +1 -0
- package/build/workers/types.d.ts +365 -0
- package/build/workers/types.d.ts.map +1 -0
- package/build/workers/types.js +60 -0
- package/build/workers/types.js.map +1 -0
- package/package.json +66 -8
- package/scripts/bundle-ecc.ts +111 -0
- package/src/address.ts +81 -44
- package/src/bech32utils.ts +3 -3
- package/src/bip66.ts +34 -24
- package/src/block.ts +196 -84
- package/src/branded.ts +18 -0
- package/src/crypto.ts +64 -26
- package/src/ecc/context.ts +277 -0
- package/src/ecc/index.ts +14 -0
- package/src/ecc/types.ts +154 -0
- package/src/ecpair.d.ts +99 -0
- package/src/errors.ts +163 -0
- package/src/index.ts +113 -9
- package/src/io/BinaryReader.ts +461 -0
- package/src/io/BinaryWriter.ts +696 -0
- package/src/io/MemoryPool.ts +343 -0
- package/src/io/base64.ts +20 -0
- package/src/io/hex.ts +155 -0
- package/src/io/index.ts +41 -0
- package/src/io/utils.ts +283 -0
- package/src/merkle.ts +14 -9
- package/src/networks.ts +9 -9
- package/src/payments/bip341.ts +34 -33
- package/src/payments/embed.ts +244 -41
- package/src/payments/index.ts +12 -10
- package/src/payments/p2ms.ts +490 -118
- package/src/payments/p2op.ts +431 -133
- package/src/payments/p2pk.ts +370 -72
- package/src/payments/p2pkh.ts +524 -130
- package/src/payments/p2sh.ts +572 -172
- package/src/payments/p2tr.ts +686 -194
- package/src/payments/p2wpkh.ts +484 -107
- package/src/payments/p2wsh.ts +526 -164
- package/src/payments/types.ts +80 -66
- package/src/psbt/bip371.ts +68 -51
- package/src/psbt/psbtutils.ts +39 -40
- package/src/psbt/types.ts +331 -0
- package/src/psbt/utils.ts +188 -0
- package/src/psbt/validation.ts +192 -0
- package/src/psbt.ts +566 -809
- package/src/pubkey.ts +22 -23
- package/src/push_data.ts +18 -16
- package/src/script.ts +82 -64
- package/src/script_number.ts +6 -6
- package/src/script_signature.ts +33 -36
- package/src/transaction.ts +458 -238
- package/src/types.ts +231 -100
- package/src/workers/WorkerSigningPool.node.ts +887 -0
- package/src/workers/WorkerSigningPool.ts +670 -0
- package/src/workers/ecc-bundle.ts +26 -0
- package/src/workers/index.ts +165 -0
- package/src/workers/psbt-parallel.ts +332 -0
- package/src/workers/signing-worker.ts +353 -0
- package/src/workers/types.ts +413 -0
- package/test/address.spec.ts +9 -6
- package/test/bitcoin.core.spec.ts +16 -17
- package/test/block.spec.ts +8 -7
- package/test/bufferutils.spec.ts +228 -214
- package/test/crypto.spec.ts +19 -11
- package/test/fixtures/p2pk.json +0 -8
- package/test/fixtures/p2pkh.json +1 -1
- package/test/fixtures/p2sh.json +1 -1
- package/test/fixtures/script.json +1 -1
- package/test/fixtures/transaction.json +2 -2
- package/test/integration/_regtest.ts +25 -0
- package/test/integration/addresses.spec.ts +4 -3
- package/test/integration/bip32.spec.ts +2 -1
- package/test/integration/blocks.spec.ts +1 -1
- package/test/integration/cltv.spec.ts +18 -16
- package/test/integration/csv.spec.ts +37 -64
- package/test/integration/payments.spec.ts +5 -3
- package/test/integration/taproot.spec.ts +76 -83
- package/test/integration/transactions.spec.ts +38 -35
- package/test/payments.spec.ts +35 -13
- package/test/payments.utils.ts +17 -16
- package/test/psbt.spec.ts +111 -100
- package/test/script.spec.ts +11 -10
- package/test/script_signature.spec.ts +9 -11
- package/test/taproot-cache.spec.ts +694 -0
- package/test/transaction.spec.ts +32 -40
- package/test/types.spec.ts +74 -29
- package/test/workers-pool.spec.ts +963 -0
- package/test/workers-signing.spec.ts +635 -0
- package/test/workers.spec.ts +1390 -0
- package/tsconfig.base.json +34 -18
- package/tsconfig.browser.json +15 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +5 -14
- package/vite.config.browser.ts +3 -42
- package/vitest.config.integration.ts +2 -0
- package/browser/bufferutils.d.ts +0 -34
- package/browser/chunks/crypto-BhCpKpek.js +0 -2033
- package/browser/chunks/payments-B1wlSccx.js +0 -1089
- package/browser/chunks/psbt-BCNk7JUx.js +0 -4055
- package/browser/chunks/script-DyPItFEl.js +0 -318
- package/browser/chunks/transaction-C_UbhMGn.js +0 -432
- package/browser/chunks/utils-DNZi-T5W.js +0 -761
- package/browser/ecc_lib.d.ts +0 -3
- package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
- package/browser/hooks/HookedSigner.d.ts +0 -4
- package/browser/hooks/SignatureManager.d.ts +0 -13
- package/browser/payments/lazy.d.ts +0 -2
- package/browser/typeforce.d.ts +0 -38
- package/build/bufferutils.d.ts +0 -34
- package/build/bufferutils.js +0 -141
- package/build/ecc_lib.d.ts +0 -3
- package/build/ecc_lib.js +0 -61
- package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
- package/build/hooks/AdvancedSignatureManager.js +0 -52
- package/build/hooks/HookedSigner.d.ts +0 -4
- package/build/hooks/HookedSigner.js +0 -64
- package/build/hooks/SignatureManager.d.ts +0 -13
- package/build/hooks/SignatureManager.js +0 -45
- package/build/payments/lazy.d.ts +0 -2
- package/build/payments/lazy.js +0 -28
- package/build/tsconfig.tsbuildinfo +0 -1
- package/src/bufferutils.ts +0 -188
- package/src/ecc_lib.ts +0 -94
- package/src/hooks/AdvancedSignatureManager.ts +0 -104
- package/src/hooks/HookedSigner.ts +0 -108
- package/src/hooks/SignatureManager.ts +0 -84
- package/src/payments/lazy.ts +0 -28
- package/src/typeforce.d.ts +0 -38
- package/tsconfig.webpack.json +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2wsh.js","sourceRoot":"","sources":["../../src/payments/p2wsh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,93 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment types and interfaces
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
1
5
|
import type { Network } from '../networks.js';
|
|
2
|
-
import type { Taptree } from '../types.js';
|
|
3
|
-
export declare
|
|
4
|
-
P2PK
|
|
5
|
-
P2PKH
|
|
6
|
-
P2SH
|
|
7
|
-
P2MS
|
|
8
|
-
P2WPKH
|
|
9
|
-
P2WSH
|
|
10
|
-
P2TR
|
|
11
|
-
P2OP
|
|
12
|
-
Embed
|
|
13
|
-
ScriptRedeem
|
|
14
|
-
}
|
|
6
|
+
import type { Bytes20, Bytes32, PublicKey, Script, Signature, SchnorrSignature, Taptree, XOnlyPublicKey } from '../types.js';
|
|
7
|
+
export declare const PaymentType: {
|
|
8
|
+
readonly P2PK: "p2pk";
|
|
9
|
+
readonly P2PKH: "p2pkh";
|
|
10
|
+
readonly P2SH: "p2sh";
|
|
11
|
+
readonly P2MS: "p2ms";
|
|
12
|
+
readonly P2WPKH: "p2wpkh";
|
|
13
|
+
readonly P2WSH: "p2wsh";
|
|
14
|
+
readonly P2TR: "p2tr";
|
|
15
|
+
readonly P2OP: "p2op";
|
|
16
|
+
readonly Embed: "embed";
|
|
17
|
+
readonly ScriptRedeem: "scriptRedeem";
|
|
18
|
+
};
|
|
19
|
+
export type PaymentType = (typeof PaymentType)[keyof typeof PaymentType];
|
|
15
20
|
export interface BasePayment {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
/** Convenience label, also the discriminant for the union. Can be dynamic for nested types. */
|
|
22
|
+
readonly name?: string | undefined;
|
|
23
|
+
/** Network parameters (mainnet if omitted). */
|
|
24
|
+
readonly network?: Network | undefined;
|
|
25
|
+
/** Fully-assembled scriptPubKey (if already known). */
|
|
26
|
+
readonly output?: Script | undefined;
|
|
27
|
+
/** Raw scriptSig (legacy script types only). */
|
|
28
|
+
readonly input?: Script | undefined;
|
|
29
|
+
/** Human-readable address (if already known). */
|
|
30
|
+
readonly address?: string | undefined;
|
|
31
|
+
/** Segwit stack (empty for legacy). */
|
|
32
|
+
readonly witness?: Uint8Array[] | undefined;
|
|
33
|
+
/** Script template for P2SH, P2WSH, P2TR, etc. */
|
|
34
|
+
readonly redeem?: ScriptRedeem | undefined;
|
|
35
|
+
/** Non-standard options used by some wallets. */
|
|
36
|
+
readonly useHybrid?: boolean | undefined;
|
|
37
|
+
readonly useUncompressed?: boolean | undefined;
|
|
25
38
|
}
|
|
39
|
+
/** Helper used by redeeming script-template outputs (P2SH, P2WSH). */
|
|
26
40
|
export interface ScriptRedeem extends BasePayment {
|
|
27
|
-
output?:
|
|
28
|
-
redeemVersion?: number;
|
|
29
|
-
network?: Network;
|
|
41
|
+
readonly output?: Script | undefined;
|
|
42
|
+
readonly redeemVersion?: number | undefined;
|
|
43
|
+
readonly network?: Network | undefined;
|
|
30
44
|
}
|
|
31
45
|
export interface P2PKPayment extends BasePayment {
|
|
32
|
-
name: PaymentType.P2PK;
|
|
33
|
-
pubkey?:
|
|
34
|
-
|
|
46
|
+
readonly name: typeof PaymentType.P2PK;
|
|
47
|
+
readonly pubkey?: PublicKey | undefined;
|
|
48
|
+
/** DER-encoded sig – empty until signed. */
|
|
49
|
+
readonly signature?: Signature | undefined;
|
|
35
50
|
}
|
|
36
51
|
export interface P2PKHPayment extends BasePayment {
|
|
37
|
-
name: PaymentType.P2PKH;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
readonly name: typeof PaymentType.P2PKH;
|
|
53
|
+
/** RIPEMD-160(SHA-256(pubkey)) – 20 bytes. */
|
|
54
|
+
readonly hash?: Bytes20 | undefined;
|
|
55
|
+
readonly pubkey?: PublicKey | undefined;
|
|
56
|
+
readonly signature?: Signature | undefined;
|
|
41
57
|
}
|
|
42
58
|
export interface P2SHPayment extends BasePayment {
|
|
43
|
-
name
|
|
44
|
-
|
|
45
|
-
|
|
59
|
+
/** Dynamic name like 'p2sh' or 'p2sh-p2wpkh' for nested types */
|
|
60
|
+
readonly name: string;
|
|
61
|
+
/** Hash160 of a redeem script. */
|
|
62
|
+
readonly hash?: Bytes20 | undefined;
|
|
63
|
+
/** The entire signature stack when spending a P2SH (non-segwit). */
|
|
64
|
+
readonly signatures?: Uint8Array[] | undefined;
|
|
46
65
|
}
|
|
47
66
|
export interface P2MSPayment extends BasePayment {
|
|
48
|
-
name
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
/** Dynamic name like 'p2ms' or 'p2ms(2 of 3)' with M-of-N parameters */
|
|
68
|
+
readonly name: string;
|
|
69
|
+
/** M-of-N parameters. */
|
|
70
|
+
readonly m?: number | undefined;
|
|
71
|
+
readonly n?: number | undefined;
|
|
72
|
+
readonly pubkeys?: PublicKey[] | undefined;
|
|
73
|
+
readonly signatures?: Signature[] | undefined;
|
|
53
74
|
}
|
|
54
75
|
export interface P2WPKHPayment extends BasePayment {
|
|
55
|
-
name: PaymentType.P2WPKH;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
readonly name: typeof PaymentType.P2WPKH;
|
|
77
|
+
/** 20-byte witness program. */
|
|
78
|
+
readonly hash?: Bytes20 | undefined;
|
|
79
|
+
readonly pubkey?: PublicKey | undefined;
|
|
80
|
+
readonly signature?: Signature | undefined;
|
|
59
81
|
}
|
|
60
82
|
export interface P2WSHPayment extends BasePayment {
|
|
61
|
-
name
|
|
62
|
-
|
|
63
|
-
|
|
83
|
+
/** Dynamic name like 'p2wsh' or 'p2wsh-p2pk' for nested types */
|
|
84
|
+
readonly name: string;
|
|
85
|
+
/** 32-byte witness program. */
|
|
86
|
+
readonly hash?: Bytes32 | undefined;
|
|
87
|
+
readonly redeem?: ScriptRedeem | undefined;
|
|
64
88
|
}
|
|
65
89
|
export interface P2TRPayment extends BasePayment {
|
|
66
|
-
name: PaymentType.P2TR;
|
|
67
|
-
pubkey
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
90
|
+
readonly name: typeof PaymentType.P2TR;
|
|
91
|
+
/** x-only pubkey that commits to the tree. */
|
|
92
|
+
readonly pubkey?: XOnlyPublicKey | undefined;
|
|
93
|
+
/** Internal (untweaked) x-only pubkey. */
|
|
94
|
+
readonly internalPubkey?: XOnlyPublicKey | undefined;
|
|
95
|
+
/** Merkle-root tweak, present when a script path exists. */
|
|
96
|
+
readonly hash?: Bytes32 | undefined;
|
|
97
|
+
/** Full taptree description (optional, dev-side). */
|
|
98
|
+
readonly scriptTree?: Taptree | undefined;
|
|
99
|
+
/** Key-path sig or leading stack elem. */
|
|
100
|
+
readonly signature?: SchnorrSignature | undefined;
|
|
101
|
+
readonly redeemVersion?: number | undefined;
|
|
102
|
+
readonly redeem?: ScriptRedeem | undefined;
|
|
74
103
|
}
|
|
75
104
|
export interface P2OPPayment extends BasePayment {
|
|
76
|
-
name: PaymentType.P2OP;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
105
|
+
readonly name: typeof PaymentType.P2OP;
|
|
106
|
+
/** <deploymentVersion || HASH160(payload)> (2–40 bytes). */
|
|
107
|
+
readonly program?: Uint8Array | undefined;
|
|
108
|
+
readonly deploymentVersion?: number | undefined;
|
|
109
|
+
/** Convenience slice of `program` (20 bytes for current spec). */
|
|
110
|
+
readonly hash160?: Bytes20 | undefined;
|
|
80
111
|
}
|
|
81
112
|
export interface P2OPPaymentParams extends Omit<P2OPPayment, 'name' | 'deploymentVersion'> {
|
|
82
|
-
deploymentVersion?: number;
|
|
113
|
+
readonly deploymentVersion?: number | undefined;
|
|
83
114
|
}
|
|
115
|
+
/** OP_RETURN data-carrying output */
|
|
84
116
|
export interface EmbedPayment extends BasePayment {
|
|
85
|
-
name: PaymentType.Embed;
|
|
86
|
-
|
|
117
|
+
readonly name: typeof PaymentType.Embed;
|
|
118
|
+
/** Raw pushed chunks after OP_RETURN. */
|
|
119
|
+
readonly data: Uint8Array[];
|
|
87
120
|
}
|
|
88
121
|
export type Payment = P2PKPayment | P2PKHPayment | P2SHPayment | P2MSPayment | P2WPKHPayment | P2WSHPayment | P2TRPayment | P2OPPayment | EmbedPayment | ScriptRedeem;
|
|
89
122
|
export type PaymentCreator = <T extends BasePayment>(a: T, opts?: PaymentOpts) => T;
|
|
90
123
|
export interface PaymentOpts {
|
|
91
|
-
validate?: boolean;
|
|
92
|
-
allowIncomplete?: boolean;
|
|
124
|
+
readonly validate?: boolean;
|
|
125
|
+
readonly allowIncomplete?: boolean;
|
|
93
126
|
}
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"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"}
|
package/build/payments/types.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Payment types and interfaces
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export const PaymentType = {
|
|
6
|
+
P2PK: 'p2pk',
|
|
7
|
+
P2PKH: 'p2pkh',
|
|
8
|
+
P2SH: 'p2sh',
|
|
9
|
+
P2MS: 'p2ms',
|
|
10
|
+
P2WPKH: 'p2wpkh',
|
|
11
|
+
P2WSH: 'p2wsh',
|
|
12
|
+
P2TR: 'p2tr',
|
|
13
|
+
P2OP: 'p2op',
|
|
14
|
+
Embed: 'embed',
|
|
15
|
+
ScriptRedeem: 'scriptRedeem',
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;CACtB,CAAC"}
|
package/build/psbt/bip371.d.ts
CHANGED
|
@@ -1,19 +1,45 @@
|
|
|
1
|
-
import { PsbtInput, PsbtOutput, TapLeaf } from 'bip174
|
|
2
|
-
import { Taptree } from '../types.js';
|
|
1
|
+
import type { PsbtInput, PsbtOutput, TapLeaf } from 'bip174';
|
|
2
|
+
import type { Taptree } from '../types.js';
|
|
3
3
|
interface PsbtOutputWithScript extends PsbtOutput {
|
|
4
|
-
script?:
|
|
4
|
+
script?: Uint8Array;
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Default tapscript finalizer. It searches for the `tapLeafHashToFinalize` if provided.
|
|
8
|
+
* Otherwise it will search for the tapleaf that has at least one signature and has the shortest path.
|
|
9
|
+
* @param inputIndex the position of the PSBT input.
|
|
10
|
+
* @param input the PSBT input.
|
|
11
|
+
* @param tapLeafHashToFinalize optional, if provided the finalizer will search for a tapleaf that has this hash
|
|
12
|
+
* and will try to build the finalScriptWitness.
|
|
13
|
+
* @returns the finalScriptWitness or throws an exception if no tapleaf found.
|
|
14
|
+
*/
|
|
15
|
+
export declare function tapScriptFinalizer(inputIndex: number, input: PsbtInput, tapLeafHashToFinalize?: Uint8Array): {
|
|
16
|
+
finalScriptWitness: Uint8Array | undefined;
|
|
8
17
|
};
|
|
9
|
-
export declare function serializeTaprootSignature(sig:
|
|
18
|
+
export declare function serializeTaprootSignature(sig: Uint8Array, sighashType?: number): Uint8Array;
|
|
10
19
|
export declare function isTaprootInput(input: PsbtInput): boolean;
|
|
11
|
-
export declare function isTaprootOutput(output: PsbtOutput, script?:
|
|
20
|
+
export declare function isTaprootOutput(output: PsbtOutput, script?: Uint8Array): boolean;
|
|
12
21
|
export declare function checkTaprootInputFields(inputData: PsbtInput, newInputData: PsbtInput, action: string): void;
|
|
13
22
|
export declare function checkTaprootOutputFields(outputData: PsbtOutputWithScript, newOutputData: PsbtOutput, action: string): void;
|
|
14
|
-
export declare function tweakInternalPubKey(inputIndex: number, input: PsbtInput):
|
|
23
|
+
export declare function tweakInternalPubKey(inputIndex: number, input: PsbtInput): Uint8Array;
|
|
24
|
+
/**
|
|
25
|
+
* Convert a binary tree to a BIP371 type list. Each element of the list is (according to BIP371):
|
|
26
|
+
* One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
|
|
27
|
+
* allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
|
|
28
|
+
* the tree is correctly reconstructed.
|
|
29
|
+
* @param tree the binary tap tree
|
|
30
|
+
* @returns a list of BIP 371 tapleaves
|
|
31
|
+
*/
|
|
15
32
|
export declare function tapTreeToList(tree: Taptree): TapLeaf[];
|
|
33
|
+
/**
|
|
34
|
+
* Convert a BIP371 TapLeaf list to a TapTree (binary).
|
|
35
|
+
* @param leaves a list of tapleaves where each element of the list is (according to BIP371):
|
|
36
|
+
* One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
|
|
37
|
+
* allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
|
|
38
|
+
* the tree is correctly reconstructed.
|
|
39
|
+
* @returns the corresponding taptree, or throws an exception if the tree cannot be reconstructed
|
|
40
|
+
*/
|
|
16
41
|
export declare function tapTreeFromList(leaves?: TapLeaf[]): Taptree;
|
|
17
42
|
export declare function checkTaprootInputForSigs(input: PsbtInput, action: string): boolean;
|
|
18
|
-
export declare function getTapKeySigFromWitness(finalScriptWitness?:
|
|
43
|
+
export declare function getTapKeySigFromWitness(finalScriptWitness?: Uint8Array): Uint8Array | undefined;
|
|
19
44
|
export {};
|
|
45
|
+
//# sourceMappingURL=bip371.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bip371.d.ts","sourceRoot":"","sources":["../../src/psbt/bip371.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,UAAU,EAEV,OAAO,EAIV,MAAM,QAAQ,CAAC;AAWhB,OAAO,KAAK,EAAW,OAAO,EAA2B,MAAM,aAAa,CAAC;AAS7E,UAAU,oBAAqB,SAAQ,UAAU;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,EAChB,qBAAqB,CAAC,EAAE,UAAU,GACnC;IACC,kBAAkB,EAAE,UAAU,GAAG,SAAS,CAAC;CAC9C,CAYA;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAI3F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAWxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAUhF;AAED,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,GACf,IAAI,CAGN;AAED,wBAAgB,wBAAwB,CACpC,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,MAAM,GACf,IAAI,CAGN;AA6BD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,CAgBpF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CAItD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAQ/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlF;AA2BD,wBAAgB,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAM/F"}
|
package/build/psbt/bip371.js
CHANGED
|
@@ -2,12 +2,24 @@ import { LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHas
|
|
|
2
2
|
import { p2tr } from '../payments/p2tr.js';
|
|
3
3
|
import { Transaction } from '../transaction.js';
|
|
4
4
|
import { isTapleaf, isTaptree } from '../types.js';
|
|
5
|
+
import { concat, equals } from '../io/index.js';
|
|
5
6
|
import { isP2TR, pubkeyPositionInScript, signatureBlocksAction, witnessStackToScriptWitness, } from './psbtutils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Default tapscript finalizer. It searches for the `tapLeafHashToFinalize` if provided.
|
|
9
|
+
* Otherwise it will search for the tapleaf that has at least one signature and has the shortest path.
|
|
10
|
+
* @param inputIndex the position of the PSBT input.
|
|
11
|
+
* @param input the PSBT input.
|
|
12
|
+
* @param tapLeafHashToFinalize optional, if provided the finalizer will search for a tapleaf that has this hash
|
|
13
|
+
* and will try to build the finalScriptWitness.
|
|
14
|
+
* @returns the finalScriptWitness or throws an exception if no tapleaf found.
|
|
15
|
+
*/
|
|
6
16
|
export function tapScriptFinalizer(inputIndex, input, tapLeafHashToFinalize) {
|
|
7
17
|
const tapLeaf = findTapLeafToFinalize(input, inputIndex, tapLeafHashToFinalize);
|
|
8
18
|
try {
|
|
9
19
|
const sigs = sortSignatures(input, tapLeaf);
|
|
10
|
-
const witness = sigs
|
|
20
|
+
const witness = sigs
|
|
21
|
+
.concat(new Uint8Array(tapLeaf.script))
|
|
22
|
+
.concat(new Uint8Array(tapLeaf.controlBlock));
|
|
11
23
|
return { finalScriptWitness: witnessStackToScriptWitness(witness) };
|
|
12
24
|
}
|
|
13
25
|
catch (err) {
|
|
@@ -15,8 +27,8 @@ export function tapScriptFinalizer(inputIndex, input, tapLeafHashToFinalize) {
|
|
|
15
27
|
}
|
|
16
28
|
}
|
|
17
29
|
export function serializeTaprootSignature(sig, sighashType) {
|
|
18
|
-
const sighashTypeByte = sighashType ?
|
|
19
|
-
return
|
|
30
|
+
const sighashTypeByte = sighashType ? new Uint8Array([sighashType]) : new Uint8Array(0);
|
|
31
|
+
return concat([sig, sighashTypeByte]);
|
|
20
32
|
}
|
|
21
33
|
export function isTaprootInput(input) {
|
|
22
34
|
return (input &&
|
|
@@ -24,7 +36,7 @@ export function isTaprootInput(input) {
|
|
|
24
36
|
input.tapMerkleRoot ||
|
|
25
37
|
(input.tapLeafScript && input.tapLeafScript.length) ||
|
|
26
38
|
(input.tapBip32Derivation && input.tapBip32Derivation.length) ||
|
|
27
|
-
(input.witnessUtxo && isP2TR(input.witnessUtxo.script))));
|
|
39
|
+
(input.witnessUtxo && isP2TR(new Uint8Array(input.witnessUtxo.script)))));
|
|
28
40
|
}
|
|
29
41
|
export function isTaprootOutput(output, script) {
|
|
30
42
|
return (output &&
|
|
@@ -49,14 +61,14 @@ function checkTaprootScriptPubkey(outputData, newOutputData) {
|
|
|
49
61
|
if (tapInternalKey) {
|
|
50
62
|
const scriptPubkey = outputData.script;
|
|
51
63
|
const script = getTaprootScripPubkey(tapInternalKey, tapTree);
|
|
52
|
-
if (scriptPubkey && !
|
|
64
|
+
if (scriptPubkey && !equals(scriptPubkey, script))
|
|
53
65
|
throw new Error('Error adding output. Script or address missmatch.');
|
|
54
66
|
}
|
|
55
67
|
}
|
|
56
68
|
function getTaprootScripPubkey(tapInternalKey, tapTree) {
|
|
57
69
|
const scriptTree = tapTree && tapTreeFromList(tapTree.leaves);
|
|
58
70
|
const { output } = p2tr({
|
|
59
|
-
internalPubkey: tapInternalKey,
|
|
71
|
+
internalPubkey: new Uint8Array(tapInternalKey),
|
|
60
72
|
scriptTree,
|
|
61
73
|
});
|
|
62
74
|
if (!output)
|
|
@@ -65,20 +77,41 @@ function getTaprootScripPubkey(tapInternalKey, tapTree) {
|
|
|
65
77
|
}
|
|
66
78
|
export function tweakInternalPubKey(inputIndex, input) {
|
|
67
79
|
const tapInternalKey = input.tapInternalKey;
|
|
68
|
-
const
|
|
80
|
+
const tapInternalKeyBuf = tapInternalKey ? new Uint8Array(tapInternalKey) : undefined;
|
|
81
|
+
const tapMerkleRootBuf = input.tapMerkleRoot ? new Uint8Array(input.tapMerkleRoot) : undefined;
|
|
82
|
+
const outputKey = tapInternalKeyBuf && tweakKey(tapInternalKeyBuf, tapMerkleRootBuf);
|
|
69
83
|
if (!outputKey)
|
|
70
|
-
throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${
|
|
84
|
+
throw new Error(`Cannot tweak tap internal key for input #${inputIndex}. Public key: ${tapInternalKeyBuf &&
|
|
85
|
+
Array.from(tapInternalKeyBuf)
|
|
86
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
87
|
+
.join('')}`);
|
|
71
88
|
return outputKey.x;
|
|
72
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Convert a binary tree to a BIP371 type list. Each element of the list is (according to BIP371):
|
|
92
|
+
* One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
|
|
93
|
+
* allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
|
|
94
|
+
* the tree is correctly reconstructed.
|
|
95
|
+
* @param tree the binary tap tree
|
|
96
|
+
* @returns a list of BIP 371 tapleaves
|
|
97
|
+
*/
|
|
73
98
|
export function tapTreeToList(tree) {
|
|
74
99
|
if (!isTaptree(tree))
|
|
75
100
|
throw new Error('Cannot convert taptree to tapleaf list. Expecting a tapree structure.');
|
|
76
101
|
return _tapTreeToList(tree);
|
|
77
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Convert a BIP371 TapLeaf list to a TapTree (binary).
|
|
105
|
+
* @param leaves a list of tapleaves where each element of the list is (according to BIP371):
|
|
106
|
+
* One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree,
|
|
107
|
+
* allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that
|
|
108
|
+
* the tree is correctly reconstructed.
|
|
109
|
+
* @returns the corresponding taptree, or throws an exception if the tree cannot be reconstructed
|
|
110
|
+
*/
|
|
78
111
|
export function tapTreeFromList(leaves = []) {
|
|
79
112
|
if (leaves.length === 1 && leaves[0].depth === 0)
|
|
80
113
|
return {
|
|
81
|
-
output: leaves[0].script,
|
|
114
|
+
output: new Uint8Array(leaves[0].script),
|
|
82
115
|
version: leaves[0].leafVersion,
|
|
83
116
|
};
|
|
84
117
|
return insertLeavesInTree(leaves);
|
|
@@ -96,11 +129,11 @@ function decodeSchnorrSignature(signature) {
|
|
|
96
129
|
function extractTaprootSigs(input) {
|
|
97
130
|
const sigs = [];
|
|
98
131
|
if (input.tapKeySig)
|
|
99
|
-
sigs.push(input.tapKeySig);
|
|
132
|
+
sigs.push(new Uint8Array(input.tapKeySig));
|
|
100
133
|
if (input.tapScriptSig)
|
|
101
|
-
sigs.push(...input.tapScriptSig.map((s) => s.signature));
|
|
134
|
+
sigs.push(...input.tapScriptSig.map((s) => new Uint8Array(s.signature)));
|
|
102
135
|
if (!sigs.length) {
|
|
103
|
-
const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness);
|
|
136
|
+
const finalTapKeySig = getTapKeySigFromWitness(input.finalScriptWitness ? new Uint8Array(input.finalScriptWitness) : undefined);
|
|
104
137
|
if (finalTapKeySig)
|
|
105
138
|
sigs.push(finalTapKeySig);
|
|
106
139
|
}
|
|
@@ -110,8 +143,10 @@ export function getTapKeySigFromWitness(finalScriptWitness) {
|
|
|
110
143
|
if (!finalScriptWitness)
|
|
111
144
|
return;
|
|
112
145
|
const witness = finalScriptWitness.subarray(2);
|
|
146
|
+
// todo: add schnorr signature validation
|
|
113
147
|
if (witness.length === 64 || witness.length === 65)
|
|
114
148
|
return witness;
|
|
149
|
+
return undefined;
|
|
115
150
|
}
|
|
116
151
|
function _tapTreeToList(tree, leaves = [], depth = 0) {
|
|
117
152
|
if (depth > MAX_TAPTREE_DEPTH)
|
|
@@ -147,7 +182,7 @@ function insertLeafInTree(leaf, tree, depth = 0) {
|
|
|
147
182
|
if (leaf.depth === depth) {
|
|
148
183
|
if (!tree)
|
|
149
184
|
return {
|
|
150
|
-
output: leaf.script,
|
|
185
|
+
output: new Uint8Array(leaf.script),
|
|
151
186
|
version: leaf.leafVersion,
|
|
152
187
|
};
|
|
153
188
|
return;
|
|
@@ -160,13 +195,14 @@ function insertLeafInTree(leaf, tree, depth = 0) {
|
|
|
160
195
|
const rightSide = insertLeafInTree(leaf, tree && tree[1], depth + 1);
|
|
161
196
|
if (rightSide)
|
|
162
197
|
return [tree && tree[0], rightSide];
|
|
198
|
+
return undefined;
|
|
163
199
|
}
|
|
164
200
|
function checkMixedTaprootAndNonTaprootInputFields(inputData, newInputData, action) {
|
|
165
201
|
const isBadTaprootUpdate = isTaprootInput(inputData) && hasNonTaprootFields(newInputData);
|
|
166
202
|
const isBadNonTaprootUpdate = hasNonTaprootFields(inputData) && isTaprootInput(newInputData);
|
|
167
203
|
const hasMixedFields = inputData === newInputData &&
|
|
168
204
|
isTaprootInput(newInputData) &&
|
|
169
|
-
hasNonTaprootFields(newInputData);
|
|
205
|
+
hasNonTaprootFields(newInputData); // todo: bad? use !===
|
|
170
206
|
if (isBadTaprootUpdate || isBadNonTaprootUpdate || hasMixedFields)
|
|
171
207
|
throw new Error(`Invalid arguments for Psbt.${action}. ` +
|
|
172
208
|
`Cannot use both taproot and non-taproot fields.`);
|
|
@@ -181,45 +217,78 @@ function checkMixedTaprootAndNonTaprootOutputFields(inputData, newInputData, act
|
|
|
181
217
|
throw new Error(`Invalid arguments for Psbt.${action}. ` +
|
|
182
218
|
`Cannot use both taproot and non-taproot fields.`);
|
|
183
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Checks if the tap leaf is part of the tap tree for the given input data.
|
|
222
|
+
* Throws an error if the tap leaf is not part of the tap tree.
|
|
223
|
+
* @param inputData - The original PsbtInput data.
|
|
224
|
+
* @param newInputData - The new PsbtInput data.
|
|
225
|
+
* @param action - The action being performed.
|
|
226
|
+
* @throws {Error} - If the tap leaf is not part of the tap tree.
|
|
227
|
+
*/
|
|
184
228
|
function checkIfTapLeafInTree(inputData, newInputData, action) {
|
|
185
229
|
if (newInputData.tapMerkleRoot) {
|
|
186
|
-
const
|
|
187
|
-
const
|
|
230
|
+
const merkleRoot = new Uint8Array(newInputData.tapMerkleRoot);
|
|
231
|
+
const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
|
|
232
|
+
const oldLeafsInTree = (inputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
|
|
188
233
|
if (!newLeafsInTree || !oldLeafsInTree)
|
|
189
234
|
throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
|
|
190
235
|
}
|
|
191
236
|
else if (inputData.tapMerkleRoot) {
|
|
192
|
-
const
|
|
237
|
+
const merkleRoot = new Uint8Array(inputData.tapMerkleRoot);
|
|
238
|
+
const newLeafsInTree = (newInputData.tapLeafScript || []).every((l) => isTapLeafInTree(l, merkleRoot));
|
|
193
239
|
if (!newLeafsInTree)
|
|
194
240
|
throw new Error(`Invalid arguments for Psbt.${action}. Tapleaf not part of taptree.`);
|
|
195
241
|
}
|
|
196
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Checks if a TapLeafScript is present in a Merkle tree.
|
|
245
|
+
* @param tapLeaf The TapLeafScript to check.
|
|
246
|
+
* @param merkleRoot The Merkle root of the tree. If not provided, the function assumes the TapLeafScript is present.
|
|
247
|
+
* @returns A boolean indicating whether the TapLeafScript is present in the tree.
|
|
248
|
+
*/
|
|
197
249
|
function isTapLeafInTree(tapLeaf, merkleRoot) {
|
|
198
250
|
if (!merkleRoot)
|
|
199
251
|
return true;
|
|
200
252
|
const leafHash = tapleafHash({
|
|
201
|
-
output: tapLeaf.script,
|
|
253
|
+
output: new Uint8Array(tapLeaf.script),
|
|
202
254
|
version: tapLeaf.leafVersion,
|
|
203
255
|
});
|
|
204
|
-
const rootHash = rootHashFromPath(tapLeaf.controlBlock, leafHash);
|
|
205
|
-
return
|
|
256
|
+
const rootHash = rootHashFromPath(new Uint8Array(tapLeaf.controlBlock), leafHash);
|
|
257
|
+
return equals(rootHash, merkleRoot);
|
|
206
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Sorts the signatures in the input's tapScriptSig array based on their position in the tapLeaf script.
|
|
261
|
+
*
|
|
262
|
+
* @param input - The PsbtInput object.
|
|
263
|
+
* @param tapLeaf - The TapLeafScript object.
|
|
264
|
+
* @returns An array of sorted signatures as Uint8Arrays.
|
|
265
|
+
*/
|
|
207
266
|
function sortSignatures(input, tapLeaf) {
|
|
267
|
+
const tapLeafScript = new Uint8Array(tapLeaf.script);
|
|
208
268
|
const leafHash = tapleafHash({
|
|
209
|
-
output:
|
|
269
|
+
output: tapLeafScript,
|
|
210
270
|
version: tapLeaf.leafVersion,
|
|
211
271
|
});
|
|
212
272
|
return (input.tapScriptSig || [])
|
|
213
|
-
.filter((tss) => tss.leafHash
|
|
214
|
-
.map((tss) => addPubkeyPositionInScript(
|
|
273
|
+
.filter((tss) => equals(new Uint8Array(tss.leafHash), leafHash))
|
|
274
|
+
.map((tss) => addPubkeyPositionInScript(tapLeafScript, tss))
|
|
215
275
|
.sort((t1, t2) => t2.positionInScript - t1.positionInScript)
|
|
216
|
-
.map((t) => t.signature);
|
|
276
|
+
.map((t) => new Uint8Array(t.signature));
|
|
217
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Adds the position of a public key in a script to a TapScriptSig object.
|
|
280
|
+
* @param script The script in which to find the position of the public key.
|
|
281
|
+
* @param tss The TapScriptSig object to add the position to.
|
|
282
|
+
* @returns A TapScriptSigWitPosition object with the added position.
|
|
283
|
+
*/
|
|
218
284
|
function addPubkeyPositionInScript(script, tss) {
|
|
219
285
|
return Object.assign({
|
|
220
|
-
positionInScript: pubkeyPositionInScript(tss.pubkey, script),
|
|
286
|
+
positionInScript: pubkeyPositionInScript(new Uint8Array(tss.pubkey), script),
|
|
221
287
|
}, tss);
|
|
222
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Find tapleaf by hash, or get the signed tapleaf with the shortest path.
|
|
291
|
+
*/
|
|
223
292
|
function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
|
|
224
293
|
const { tapScriptSig } = input;
|
|
225
294
|
if (!tapScriptSig || !tapScriptSig.length)
|
|
@@ -231,15 +300,31 @@ function findTapLeafToFinalize(input, inputIndex, leafHashToFinalize) {
|
|
|
231
300
|
throw new Error(`Can not finalize taproot input #${inputIndex}. Signature for tapleaf script not found.`);
|
|
232
301
|
return tapLeaf;
|
|
233
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Determines whether a TapLeafScript can be finalized.
|
|
305
|
+
*
|
|
306
|
+
* @param leaf - The TapLeafScript to check.
|
|
307
|
+
* @param tapScriptSig - The array of TapScriptSig objects.
|
|
308
|
+
* @param hash - The optional hash to compare with the leaf hash.
|
|
309
|
+
* @returns A boolean indicating whether the TapLeafScript can be finalized.
|
|
310
|
+
*/
|
|
234
311
|
function canFinalizeLeaf(leaf, tapScriptSig, hash) {
|
|
235
312
|
const leafHash = tapleafHash({
|
|
236
|
-
output: leaf.script,
|
|
313
|
+
output: new Uint8Array(leaf.script),
|
|
237
314
|
version: leaf.leafVersion,
|
|
238
315
|
});
|
|
239
|
-
const whiteListedHash = !hash ||
|
|
240
|
-
return (whiteListedHash &&
|
|
316
|
+
const whiteListedHash = !hash || equals(hash, leafHash);
|
|
317
|
+
return (whiteListedHash &&
|
|
318
|
+
tapScriptSig.find((tss) => equals(new Uint8Array(tss.leafHash), leafHash)) !== undefined);
|
|
241
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* Checks if the given PsbtInput or PsbtOutput has non-taproot fields.
|
|
322
|
+
* Non-taproot fields include redeemScript, witnessScript, and bip32Derivation.
|
|
323
|
+
* @param io The PsbtInput or PsbtOutput to check.
|
|
324
|
+
* @returns A boolean indicating whether the given input or output has non-taproot fields.
|
|
325
|
+
*/
|
|
242
326
|
function hasNonTaprootFields(io) {
|
|
243
327
|
return (io &&
|
|
244
328
|
!!(io.redeemScript || io.witnessScript || (io.bip32Derivation && io.bip32Derivation.length)));
|
|
245
329
|
}
|
|
330
|
+
//# sourceMappingURL=bip371.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bip371.js","sourceRoot":"","sources":["../../src/psbt/bip371.ts"],"names":[],"mappings":"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"}
|