@btc-vision/bitcoin 6.5.5 → 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/AUDIT/README.md +9 -0
- package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
- package/SECURITY.md +27 -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 +37 -13
- 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 +83 -25
- 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 +24 -25
- 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 +11 -0
- package/browser/bufferutils.d.ts +0 -34
- package/browser/chunks/crypto-BhCpKpek.js +0 -2033
- package/browser/chunks/payments-yjA0Evsv.js +0 -1089
- package/browser/chunks/psbt-URK2hBFc.js +0 -4039
- 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
|
@@ -1,23 +1,49 @@
|
|
|
1
|
-
import { Tapleaf, Taptree } from '../types.js';
|
|
1
|
+
import { Tapleaf, Taptree, Bytes32, XOnlyPublicKey } from '../types.js';
|
|
2
2
|
export declare const LEAF_VERSION_TAPSCRIPT = 192;
|
|
3
3
|
export declare const MAX_TAPTREE_DEPTH = 128;
|
|
4
4
|
interface HashLeaf {
|
|
5
|
-
hash:
|
|
5
|
+
hash: Bytes32;
|
|
6
6
|
}
|
|
7
7
|
interface HashBranch {
|
|
8
|
-
hash:
|
|
8
|
+
hash: Bytes32;
|
|
9
9
|
left: HashTree;
|
|
10
10
|
right: HashTree;
|
|
11
11
|
}
|
|
12
12
|
interface TweakedPublicKey {
|
|
13
13
|
parity: number;
|
|
14
|
-
x:
|
|
14
|
+
x: XOnlyPublicKey;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Binary tree representing leaf, branch, and root node hashes of a Taptree.
|
|
18
|
+
* Each node contains a hash, and potentially left and right branch hashes.
|
|
19
|
+
* This tree is used for 2 purposes: Providing the root hash for tweaking,
|
|
20
|
+
* and calculating merkle inclusion proofs when constructing a control block.
|
|
21
|
+
*/
|
|
16
22
|
export type HashTree = HashLeaf | HashBranch;
|
|
17
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Calculates the root hash from a given control block and leaf hash.
|
|
25
|
+
* @param controlBlock - The control block.
|
|
26
|
+
* @param leafHash - The leaf hash.
|
|
27
|
+
* @returns The root hash.
|
|
28
|
+
* @throws {TypeError} If the control block length is less than 33.
|
|
29
|
+
*/
|
|
30
|
+
export declare function rootHashFromPath(controlBlock: Uint8Array, leafHash: Uint8Array): Bytes32;
|
|
31
|
+
/**
|
|
32
|
+
* Build a hash tree of merkle nodes from the scripts binary tree.
|
|
33
|
+
* @param scriptTree - the tree of scripts to pairwise hash.
|
|
34
|
+
*/
|
|
18
35
|
export declare function toHashTree(scriptTree: Taptree): HashTree;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Given a HashTree, finds the path from a particular hash to the root.
|
|
38
|
+
* @param node - the root of the tree
|
|
39
|
+
* @param hash - the hash to search for
|
|
40
|
+
* @returns - array of sibling hashes, from leaf (inclusive) to root
|
|
41
|
+
* (exclusive) needed to prove inclusion of the specified hash. undefined if no
|
|
42
|
+
* path is found
|
|
43
|
+
*/
|
|
44
|
+
export declare function findScriptPath(node: HashTree, hash: Bytes32): Bytes32[] | undefined;
|
|
45
|
+
export declare function tapleafHash(leaf: Tapleaf): Bytes32;
|
|
46
|
+
export declare function tapTweakHash(pubKey: XOnlyPublicKey, h: Bytes32 | undefined): Bytes32;
|
|
47
|
+
export declare function tweakKey(pubKey: XOnlyPublicKey, h: Bytes32 | undefined): TweakedPublicKey | null;
|
|
23
48
|
export {};
|
|
49
|
+
//# sourceMappingURL=bip341.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bip341.d.ts","sourceRoot":"","sources":["../../src/payments/bip341.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAC3C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,UAAU,QAAQ;IACd,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,UAAU;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,cAAc,CAAC;CACrB;AAID;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAkBxF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAYxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,SAAS,CAYnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAMlD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAEpF;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAchG"}
|
|
@@ -1,2 +1,113 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { Script } from '../types.js';
|
|
3
|
+
import { PaymentType, EmbedPayment, PaymentOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* OP_RETURN Embed payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates outputs of the form: `OP_RETURN {data1} {data2} ...`
|
|
8
|
+
* These outputs are provably unspendable and used for data storage.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { Embed } from '@btc-vision/bitcoin';
|
|
13
|
+
*
|
|
14
|
+
* // Create from data
|
|
15
|
+
* const payment = Embed.fromData([Buffer.from('Hello, Bitcoin!')]);
|
|
16
|
+
* console.log(payment.output); // scriptPubKey with OP_RETURN
|
|
17
|
+
*
|
|
18
|
+
* // Decode an existing output
|
|
19
|
+
* const decoded = Embed.fromOutput(scriptPubKey);
|
|
20
|
+
* console.log(decoded.data); // array of data chunks
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class Embed {
|
|
24
|
+
#private;
|
|
25
|
+
static readonly NAME: "embed";
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new Embed payment instance.
|
|
28
|
+
*
|
|
29
|
+
* @param params - Payment parameters
|
|
30
|
+
* @param params.data - Array of data chunks to embed
|
|
31
|
+
* @param params.output - The scriptPubKey
|
|
32
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
33
|
+
* @param opts - Payment options
|
|
34
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
35
|
+
*
|
|
36
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
37
|
+
*/
|
|
38
|
+
constructor(params: {
|
|
39
|
+
data?: Uint8Array[] | undefined;
|
|
40
|
+
output?: Uint8Array | undefined;
|
|
41
|
+
network?: Network | undefined;
|
|
42
|
+
}, opts?: PaymentOpts);
|
|
43
|
+
/**
|
|
44
|
+
* Payment type discriminant.
|
|
45
|
+
*/
|
|
46
|
+
get name(): typeof PaymentType.Embed;
|
|
47
|
+
/**
|
|
48
|
+
* Network parameters.
|
|
49
|
+
*/
|
|
50
|
+
get network(): Network;
|
|
51
|
+
/**
|
|
52
|
+
* The embedded data chunks.
|
|
53
|
+
*/
|
|
54
|
+
get data(): Uint8Array[];
|
|
55
|
+
/**
|
|
56
|
+
* The scriptPubKey: `OP_RETURN {data...}`
|
|
57
|
+
*/
|
|
58
|
+
get output(): Script | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Creates an Embed payment from data chunks.
|
|
61
|
+
*
|
|
62
|
+
* @param data - Array of data chunks to embed
|
|
63
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
64
|
+
* @returns A new Embed payment instance
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const payment = Embed.fromData([
|
|
69
|
+
* new TextEncoder().encode('Hello'),
|
|
70
|
+
* new TextEncoder().encode('Bitcoin')
|
|
71
|
+
* ]);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
static fromData(data: Uint8Array[], network?: Network): Embed;
|
|
75
|
+
/**
|
|
76
|
+
* Creates an Embed payment from a scriptPubKey.
|
|
77
|
+
*
|
|
78
|
+
* @param output - The scriptPubKey
|
|
79
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
80
|
+
* @returns A new Embed payment instance
|
|
81
|
+
*/
|
|
82
|
+
static fromOutput(output: Uint8Array, network?: Network): Embed;
|
|
83
|
+
/**
|
|
84
|
+
* Converts to a plain EmbedPayment object for backwards compatibility.
|
|
85
|
+
*
|
|
86
|
+
* @returns An EmbedPayment object
|
|
87
|
+
*/
|
|
88
|
+
toPayment(): EmbedPayment;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates an OP_RETURN Embed payment object.
|
|
92
|
+
*
|
|
93
|
+
* This is the legacy factory function for backwards compatibility.
|
|
94
|
+
* For new code, prefer using the Embed class directly.
|
|
95
|
+
*
|
|
96
|
+
* @param a - The payment object containing the necessary data
|
|
97
|
+
* @param opts - Optional payment options
|
|
98
|
+
* @returns The Embed payment object
|
|
99
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* import { p2data } from '@btc-vision/bitcoin';
|
|
104
|
+
*
|
|
105
|
+
* // Create from data
|
|
106
|
+
* const payment = p2data({ data: [Buffer.from('Hello')] });
|
|
107
|
+
*
|
|
108
|
+
* // Decode from output
|
|
109
|
+
* const decoded = p2data({ output: scriptPubKey });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
2
112
|
export declare function p2data(a: Omit<EmbedPayment, 'name'>, opts?: PaymentOpts): EmbedPayment;
|
|
113
|
+
//# sourceMappingURL=embed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/payments/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,KAAK;;IAEd,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAqB;IAkBzC;;;;;;;;;;;OAWG;gBAEC,MAAM,EAAE;QACJ,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAChC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAoBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,KAAK,CAEnC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,EAAE,CAMvB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAID;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI7D;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAmD/D;;;;OAIG;IACH,SAAS,IAAI,YAAY;CAQ5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAgBtF"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a payment object, which is used to create a payment.
|
|
3
|
+
*
|
|
4
|
+
* Supports P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
1
8
|
export { PaymentType, type BasePayment, type ScriptRedeem, type P2PKPayment, type P2PKHPayment, type P2SHPayment, type P2MSPayment, type P2WPKHPayment, type P2WSHPayment, type P2TRPayment, type P2OPPayment, type P2OPPaymentParams, type EmbedPayment, type Payment, type PaymentCreator, type PaymentOpts, } from './types.js';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export { p2sh } from './p2sh.js';
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export { p2op } from './p2op.js';
|
|
9
|
+
export { P2PK, p2pk } from './p2pk.js';
|
|
10
|
+
export { P2PKH, p2pkh } from './p2pkh.js';
|
|
11
|
+
export { P2WPKH, p2wpkh } from './p2wpkh.js';
|
|
12
|
+
export { Embed, p2data } from './embed.js';
|
|
13
|
+
export { P2MS, p2ms } from './p2ms.js';
|
|
14
|
+
export { P2SH, p2sh } from './p2sh.js';
|
|
15
|
+
export { P2WSH, p2wsh } from './p2wsh.js';
|
|
16
|
+
export { P2TR, p2tr } from './p2tr.js';
|
|
17
|
+
export { P2OP, p2op } from './p2op.js';
|
|
12
18
|
export { findScriptPath, LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHash, toHashTree, tweakKey, type HashTree, } from './bip341.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACH,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,WAAW,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,QAAQ,GAChB,MAAM,aAAa,CAAC"}
|
|
@@ -1,2 +1,152 @@
|
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { PublicKey, Script, Signature } from '../types.js';
|
|
1
3
|
import { P2MSPayment, PaymentOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-Multisig (P2MS) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form:
|
|
8
|
+
* `m {pubKey1} {pubKey2} ... {pubKeyN} n OP_CHECKMULTISIG`
|
|
9
|
+
*
|
|
10
|
+
* Spending requires: `OP_0 {sig1} {sig2} ... {sigM}`
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { P2MS } from '@btc-vision/bitcoin';
|
|
15
|
+
*
|
|
16
|
+
* // Create a 2-of-3 multisig
|
|
17
|
+
* const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
|
|
18
|
+
* console.log(payment.output); // scriptPubKey
|
|
19
|
+
* console.log(payment.m); // 2
|
|
20
|
+
* console.log(payment.n); // 3
|
|
21
|
+
*
|
|
22
|
+
* // Decode an existing output
|
|
23
|
+
* const decoded = P2MS.fromOutput(scriptPubKey);
|
|
24
|
+
* console.log(decoded.pubkeys); // array of public keys
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare class P2MS {
|
|
28
|
+
#private;
|
|
29
|
+
static readonly NAME: "p2ms";
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new P2MS payment instance.
|
|
32
|
+
*
|
|
33
|
+
* @param params - Payment parameters
|
|
34
|
+
* @param params.m - Required number of signatures
|
|
35
|
+
* @param params.n - Total number of public keys (optional, derived from pubkeys)
|
|
36
|
+
* @param params.pubkeys - Array of public keys
|
|
37
|
+
* @param params.signatures - Array of signatures
|
|
38
|
+
* @param params.output - The scriptPubKey
|
|
39
|
+
* @param params.input - The scriptSig
|
|
40
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
41
|
+
* @param opts - Payment options
|
|
42
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
43
|
+
* @param opts.allowIncomplete - Allow incomplete signatures (default: false)
|
|
44
|
+
*
|
|
45
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
46
|
+
*/
|
|
47
|
+
constructor(params: {
|
|
48
|
+
m?: number | undefined;
|
|
49
|
+
n?: number | undefined;
|
|
50
|
+
pubkeys?: Uint8Array[] | undefined;
|
|
51
|
+
signatures?: Uint8Array[] | undefined;
|
|
52
|
+
output?: Uint8Array | undefined;
|
|
53
|
+
input?: Uint8Array | undefined;
|
|
54
|
+
network?: Network | undefined;
|
|
55
|
+
}, opts?: PaymentOpts);
|
|
56
|
+
/**
|
|
57
|
+
* Payment type discriminant.
|
|
58
|
+
*/
|
|
59
|
+
get name(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Network parameters.
|
|
62
|
+
*/
|
|
63
|
+
get network(): Network;
|
|
64
|
+
/**
|
|
65
|
+
* Required number of signatures (M in M-of-N).
|
|
66
|
+
*/
|
|
67
|
+
get m(): number | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Total number of public keys (N in M-of-N).
|
|
70
|
+
*/
|
|
71
|
+
get n(): number | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Array of public keys.
|
|
74
|
+
*/
|
|
75
|
+
get pubkeys(): PublicKey[] | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Array of signatures.
|
|
78
|
+
*/
|
|
79
|
+
get signatures(): Signature[] | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* The scriptPubKey: `m {pubkeys} n OP_CHECKMULTISIG`
|
|
82
|
+
*/
|
|
83
|
+
get output(): Script | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* The scriptSig: `OP_0 {signatures}`
|
|
86
|
+
*/
|
|
87
|
+
get input(): Script | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Witness stack (empty for P2MS as it's not a SegWit type).
|
|
90
|
+
*/
|
|
91
|
+
get witness(): Uint8Array[] | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Creates a P2MS payment from public keys.
|
|
94
|
+
*
|
|
95
|
+
* @param m - Required number of signatures
|
|
96
|
+
* @param pubkeys - Array of public keys
|
|
97
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
98
|
+
* @returns A new P2MS payment instance
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Create a 2-of-3 multisig
|
|
103
|
+
* const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
static fromPubkeys(m: number, pubkeys: PublicKey[], network?: Network): P2MS;
|
|
107
|
+
/**
|
|
108
|
+
* Creates a P2MS payment from a scriptPubKey.
|
|
109
|
+
*
|
|
110
|
+
* @param output - The scriptPubKey
|
|
111
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
112
|
+
* @returns A new P2MS payment instance
|
|
113
|
+
*/
|
|
114
|
+
static fromOutput(output: Uint8Array, network?: Network): P2MS;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a P2MS payment from signatures (for spending).
|
|
117
|
+
*
|
|
118
|
+
* @param signatures - Array of signatures
|
|
119
|
+
* @param m - Required number of signatures (optional)
|
|
120
|
+
* @param pubkeys - Array of public keys (optional, for validation)
|
|
121
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
122
|
+
* @returns A new P2MS payment instance
|
|
123
|
+
*/
|
|
124
|
+
static fromSignatures(signatures: Signature[], m?: number, pubkeys?: PublicKey[], network?: Network): P2MS;
|
|
125
|
+
/**
|
|
126
|
+
* Converts to a plain P2MSPayment object for backwards compatibility.
|
|
127
|
+
*
|
|
128
|
+
* @returns A P2MSPayment object
|
|
129
|
+
*/
|
|
130
|
+
toPayment(): P2MSPayment;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Creates a Pay-to-Multisig (P2MS) payment object.
|
|
134
|
+
*
|
|
135
|
+
* This is the legacy factory function for backwards compatibility.
|
|
136
|
+
* For new code, prefer using the P2MS class directly.
|
|
137
|
+
*
|
|
138
|
+
* @param a - The payment object containing the necessary data
|
|
139
|
+
* @param opts - Optional payment options
|
|
140
|
+
* @returns The P2MS payment object
|
|
141
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* import { p2ms } from '@btc-vision/bitcoin';
|
|
146
|
+
*
|
|
147
|
+
* // Create a 2-of-3 multisig
|
|
148
|
+
* const payment = p2ms({ m: 2, pubkeys: [pubkey1, pubkey2, pubkey3] });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
2
151
|
export declare function p2ms(a: Omit<P2MSPayment, 'name'>, opts?: PaymentOpts): P2MSPayment;
|
|
152
|
+
//# sourceMappingURL=p2ms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2ms.d.ts","sourceRoot":"","sources":["../../src/payments/p2ms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAc,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAK7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IAoCxC;;;;;;;;;;;;;;;;OAgBG;gBAEC,MAAM,EAAE;QACJ,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACnC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACtC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAwBtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAOjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,CAM1B;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,CAM1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,EAAE,GAAG,SAAS,CAMrC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,EAAE,GAAG,SAAS,CAMxC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CACjB,UAAU,EAAE,SAAS,EAAE,EACvB,CAAC,CAAC,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,SAAS,EAAE,EACrB,OAAO,CAAC,EAAE,OAAO,GAClB,IAAI;IAsMP;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAa3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAoBlF"}
|
|
@@ -1,25 +1,151 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { Bytes20 } from '../types.js';
|
|
3
|
+
import { PaymentType, P2OPPayment, PaymentOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-OPNet (P2OP) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form: `OP_16 {program}`
|
|
8
|
+
* where program = `{deploymentVersion:uint8}{hash160:20-bytes|...}`
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { P2OP } from '@btc-vision/bitcoin';
|
|
13
|
+
*
|
|
14
|
+
* // Create from program
|
|
15
|
+
* const payment = P2OP.fromProgram(program);
|
|
16
|
+
* console.log(payment.address); // opnet address
|
|
17
|
+
*
|
|
18
|
+
* // Create from deployment version and hash160
|
|
19
|
+
* const fromParts = P2OP.fromParts(deploymentVersion, hash160);
|
|
20
|
+
*
|
|
21
|
+
* // Decode an existing output
|
|
22
|
+
* const decoded = P2OP.fromOutput(scriptPubKey);
|
|
23
|
+
* console.log(decoded.program);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class P2OP {
|
|
27
|
+
#private;
|
|
28
|
+
static readonly NAME: "p2op";
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new P2OP payment instance.
|
|
31
|
+
*
|
|
32
|
+
* @param params - Payment parameters
|
|
33
|
+
* @param params.address - Bech32m encoded OPNet address
|
|
34
|
+
* @param params.program - Witness program (2-40 bytes)
|
|
35
|
+
* @param params.deploymentVersion - Deployment version (0-255)
|
|
36
|
+
* @param params.hash160 - 20-byte hash
|
|
37
|
+
* @param params.output - The scriptPubKey
|
|
38
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
39
|
+
* @param opts - Payment options
|
|
40
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
41
|
+
*
|
|
42
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
43
|
+
*/
|
|
44
|
+
constructor(params: {
|
|
45
|
+
address?: string | undefined;
|
|
46
|
+
program?: Uint8Array | undefined;
|
|
47
|
+
deploymentVersion?: number | undefined;
|
|
48
|
+
hash160?: Uint8Array | undefined;
|
|
49
|
+
output?: Uint8Array | undefined;
|
|
50
|
+
network?: Network | undefined;
|
|
51
|
+
}, opts?: PaymentOpts);
|
|
52
|
+
/**
|
|
53
|
+
* Payment type discriminant.
|
|
54
|
+
*/
|
|
55
|
+
get name(): typeof PaymentType.P2OP;
|
|
56
|
+
/**
|
|
57
|
+
* Network parameters.
|
|
58
|
+
*/
|
|
59
|
+
get network(): Network;
|
|
60
|
+
/**
|
|
61
|
+
* Bech32m encoded OPNet address.
|
|
62
|
+
*/
|
|
63
|
+
get address(): string | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Witness program (2-40 bytes).
|
|
66
|
+
* Format: `{deploymentVersion:uint8}{hash160:20-bytes|...}`
|
|
67
|
+
*/
|
|
68
|
+
get program(): Uint8Array | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Deployment version (first byte of program).
|
|
71
|
+
*/
|
|
72
|
+
get deploymentVersion(): number | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Hash160 (remaining bytes of program).
|
|
75
|
+
*/
|
|
76
|
+
get hash160(): Bytes20 | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* The scriptPubKey: `OP_16 {program}`
|
|
79
|
+
*/
|
|
80
|
+
get output(): Uint8Array | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Creates a P2OP payment from a witness program.
|
|
83
|
+
*
|
|
84
|
+
* @param program - Witness program (2-40 bytes)
|
|
85
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
86
|
+
* @returns A new P2OP payment instance
|
|
87
|
+
*/
|
|
88
|
+
static fromProgram(program: Uint8Array, network?: Network): P2OP;
|
|
89
|
+
/**
|
|
90
|
+
* Creates a P2OP payment from deployment version and hash160.
|
|
91
|
+
*
|
|
92
|
+
* @param deploymentVersion - Deployment version (0-255)
|
|
93
|
+
* @param hash160 - 20-byte hash
|
|
94
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
95
|
+
* @returns A new P2OP payment instance
|
|
96
|
+
*/
|
|
97
|
+
static fromParts(deploymentVersion: number, hash160: Uint8Array, network?: Network): P2OP;
|
|
98
|
+
/**
|
|
99
|
+
* Creates a P2OP payment from an OPNet address.
|
|
100
|
+
*
|
|
101
|
+
* @param address - Bech32m encoded OPNet address
|
|
102
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
103
|
+
* @returns A new P2OP payment instance
|
|
104
|
+
*/
|
|
105
|
+
static fromAddress(address: string, network?: Network): P2OP;
|
|
106
|
+
/**
|
|
107
|
+
* Creates a P2OP payment from a scriptPubKey.
|
|
108
|
+
*
|
|
109
|
+
* @param output - The scriptPubKey
|
|
110
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
111
|
+
* @returns A new P2OP payment instance
|
|
112
|
+
*/
|
|
113
|
+
static fromOutput(output: Uint8Array, network?: Network): P2OP;
|
|
114
|
+
/**
|
|
115
|
+
* Converts to a plain P2OPPayment object for backwards compatibility.
|
|
116
|
+
*
|
|
117
|
+
* @returns A P2OPPayment object
|
|
118
|
+
*/
|
|
119
|
+
toPayment(): P2OPPayment;
|
|
4
120
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Creates a Pay-to-OPNet (P2OP) payment object.
|
|
123
|
+
*
|
|
124
|
+
* This is the legacy factory function for backwards compatibility.
|
|
125
|
+
* For new code, prefer using the P2OP class directly.
|
|
126
|
+
*
|
|
127
|
+
* @param a - The payment object containing the necessary data
|
|
128
|
+
* @param opts - Optional payment options
|
|
129
|
+
* @returns The P2OP payment object
|
|
130
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* import { p2op } from '@btc-vision/bitcoin';
|
|
135
|
+
*
|
|
136
|
+
* // Create from program
|
|
137
|
+
* const payment = p2op({ program });
|
|
138
|
+
*
|
|
139
|
+
* // Create from parts
|
|
140
|
+
* const fromParts = p2op({ deploymentVersion: 0, hash160 });
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export declare function p2op(a: {
|
|
144
|
+
address?: string;
|
|
145
|
+
program?: Uint8Array;
|
|
146
|
+
deploymentVersion?: number;
|
|
147
|
+
hash160?: Uint8Array;
|
|
148
|
+
output?: Uint8Array;
|
|
149
|
+
network?: Network;
|
|
150
|
+
}, opts?: PaymentOpts): P2OPPayment;
|
|
151
|
+
//# sourceMappingURL=p2op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2op.d.ts","sourceRoot":"","sources":["../../src/payments/p2op.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAO7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA+BxC;;;;;;;;;;;;;;OAcG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACjC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IAuBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,IAAI,CAElC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAMpC;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAM1C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAMjC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,UAAU,GAAG,SAAS,CAMnC;IAID;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIhE;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIzF;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAsL9D;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAW3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAChB,CAAC,EAAE;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,IAAI,CAAC,EAAE,WAAW,GACnB,WAAW,CAwBb"}
|