@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
package/build/payments/embed.js
CHANGED
|
@@ -1,44 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OP_RETURN Embed payment class.
|
|
3
|
+
*
|
|
4
|
+
* Embed payments use OP_RETURN to store arbitrary data in the blockchain.
|
|
5
|
+
* These outputs are provably unspendable.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
1
9
|
import { bitcoin as BITCOIN_NETWORK } from '../networks.js';
|
|
2
10
|
import * as bscript from '../script.js';
|
|
3
|
-
import { stacksEqual
|
|
11
|
+
import { stacksEqual } from '../types.js';
|
|
4
12
|
import { PaymentType } from './types.js';
|
|
5
|
-
import * as lazy from './lazy.js';
|
|
6
13
|
const OPS = bscript.opcodes;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
14
|
+
/**
|
|
15
|
+
* OP_RETURN Embed payment class.
|
|
16
|
+
*
|
|
17
|
+
* Creates outputs of the form: `OP_RETURN {data1} {data2} ...`
|
|
18
|
+
* These outputs are provably unspendable and used for data storage.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { Embed } from '@btc-vision/bitcoin';
|
|
23
|
+
*
|
|
24
|
+
* // Create from data
|
|
25
|
+
* const payment = Embed.fromData([Buffer.from('Hello, Bitcoin!')]);
|
|
26
|
+
* console.log(payment.output); // scriptPubKey with OP_RETURN
|
|
27
|
+
*
|
|
28
|
+
* // Decode an existing output
|
|
29
|
+
* const decoded = Embed.fromOutput(scriptPubKey);
|
|
30
|
+
* console.log(decoded.data); // array of data chunks
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class Embed {
|
|
34
|
+
// Static public fields
|
|
35
|
+
static NAME = PaymentType.Embed;
|
|
36
|
+
// Private instance fields
|
|
37
|
+
#network;
|
|
38
|
+
#opts;
|
|
39
|
+
// Input data (provided by user)
|
|
40
|
+
#inputData;
|
|
41
|
+
#inputOutput;
|
|
42
|
+
// Cached computed values
|
|
43
|
+
#data;
|
|
44
|
+
#output;
|
|
45
|
+
// Cache flags
|
|
46
|
+
#dataComputed = false;
|
|
47
|
+
#outputComputed = false;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new Embed payment instance.
|
|
50
|
+
*
|
|
51
|
+
* @param params - Payment parameters
|
|
52
|
+
* @param params.data - Array of data chunks to embed
|
|
53
|
+
* @param params.output - The scriptPubKey
|
|
54
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
55
|
+
* @param opts - Payment options
|
|
56
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
57
|
+
*
|
|
58
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
59
|
+
*/
|
|
60
|
+
constructor(params, opts) {
|
|
61
|
+
this.#network = params.network ?? BITCOIN_NETWORK;
|
|
62
|
+
this.#opts = {
|
|
63
|
+
validate: opts?.validate ?? true,
|
|
64
|
+
allowIncomplete: opts?.allowIncomplete ?? false,
|
|
65
|
+
};
|
|
66
|
+
// Store input data
|
|
67
|
+
this.#inputData = params.data;
|
|
68
|
+
this.#inputOutput = params.output;
|
|
69
|
+
// Validate if requested
|
|
70
|
+
if (this.#opts.validate) {
|
|
71
|
+
this.#validate();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Public getters
|
|
75
|
+
/**
|
|
76
|
+
* Payment type discriminant.
|
|
77
|
+
*/
|
|
78
|
+
get name() {
|
|
79
|
+
return PaymentType.Embed;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Network parameters.
|
|
83
|
+
*/
|
|
84
|
+
get network() {
|
|
85
|
+
return this.#network;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The embedded data chunks.
|
|
89
|
+
*/
|
|
90
|
+
get data() {
|
|
91
|
+
if (!this.#dataComputed) {
|
|
92
|
+
this.#data = this.#computeData();
|
|
93
|
+
this.#dataComputed = true;
|
|
94
|
+
}
|
|
95
|
+
return this.#data ?? [];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The scriptPubKey: `OP_RETURN {data...}`
|
|
99
|
+
*/
|
|
100
|
+
get output() {
|
|
101
|
+
if (!this.#outputComputed) {
|
|
102
|
+
this.#output = this.#computeOutput();
|
|
103
|
+
this.#outputComputed = true;
|
|
104
|
+
}
|
|
105
|
+
return this.#output;
|
|
106
|
+
}
|
|
107
|
+
// Static factory methods
|
|
108
|
+
/**
|
|
109
|
+
* Creates an Embed payment from data chunks.
|
|
110
|
+
*
|
|
111
|
+
* @param data - Array of data chunks to embed
|
|
112
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
113
|
+
* @returns A new Embed payment instance
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const payment = Embed.fromData([
|
|
118
|
+
* new TextEncoder().encode('Hello'),
|
|
119
|
+
* new TextEncoder().encode('Bitcoin')
|
|
120
|
+
* ]);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
static fromData(data, network) {
|
|
124
|
+
return new Embed({ data, network });
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Creates an Embed payment from a scriptPubKey.
|
|
128
|
+
*
|
|
129
|
+
* @param output - The scriptPubKey
|
|
130
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
131
|
+
* @returns A new Embed payment instance
|
|
132
|
+
*/
|
|
133
|
+
static fromOutput(output, network) {
|
|
134
|
+
return new Embed({ output, network });
|
|
135
|
+
}
|
|
136
|
+
// Private computation methods
|
|
137
|
+
#computeData() {
|
|
138
|
+
if (this.#inputData) {
|
|
139
|
+
return this.#inputData;
|
|
140
|
+
}
|
|
141
|
+
if (this.#inputOutput) {
|
|
142
|
+
const script = bscript.decompile(this.#inputOutput);
|
|
143
|
+
if (script === null || script === undefined) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
return script.slice(1);
|
|
147
|
+
}
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
#computeOutput() {
|
|
151
|
+
if (this.#inputOutput) {
|
|
152
|
+
return this.#inputOutput;
|
|
153
|
+
}
|
|
154
|
+
if (!this.#inputData) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
return bscript.compile([OPS.OP_RETURN].concat(this.#inputData));
|
|
158
|
+
}
|
|
159
|
+
// Validation
|
|
160
|
+
#validate() {
|
|
161
|
+
if (this.#inputOutput) {
|
|
162
|
+
const chunks = bscript.decompile(this.#inputOutput);
|
|
163
|
+
if (!chunks) {
|
|
36
164
|
throw new TypeError('Output is invalid');
|
|
37
|
-
|
|
165
|
+
}
|
|
166
|
+
if (chunks[0] !== OPS.OP_RETURN) {
|
|
38
167
|
throw new TypeError('Output is invalid');
|
|
39
|
-
|
|
168
|
+
}
|
|
169
|
+
if (!chunks.slice(1).every((c) => c instanceof Uint8Array)) {
|
|
170
|
+
throw new TypeError('Output is invalid');
|
|
171
|
+
}
|
|
172
|
+
if (this.#inputData && !stacksEqual(this.#inputData, this.data)) {
|
|
40
173
|
throw new TypeError('Data mismatch');
|
|
174
|
+
}
|
|
41
175
|
}
|
|
42
176
|
}
|
|
43
|
-
|
|
177
|
+
/**
|
|
178
|
+
* Converts to a plain EmbedPayment object for backwards compatibility.
|
|
179
|
+
*
|
|
180
|
+
* @returns An EmbedPayment object
|
|
181
|
+
*/
|
|
182
|
+
toPayment() {
|
|
183
|
+
return {
|
|
184
|
+
name: this.name,
|
|
185
|
+
network: this.network,
|
|
186
|
+
data: this.data,
|
|
187
|
+
output: this.output,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Creates an OP_RETURN Embed payment object.
|
|
193
|
+
*
|
|
194
|
+
* This is the legacy factory function for backwards compatibility.
|
|
195
|
+
* For new code, prefer using the Embed class directly.
|
|
196
|
+
*
|
|
197
|
+
* @param a - The payment object containing the necessary data
|
|
198
|
+
* @param opts - Optional payment options
|
|
199
|
+
* @returns The Embed payment object
|
|
200
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* import { p2data } from '@btc-vision/bitcoin';
|
|
205
|
+
*
|
|
206
|
+
* // Create from data
|
|
207
|
+
* const payment = p2data({ data: [Buffer.from('Hello')] });
|
|
208
|
+
*
|
|
209
|
+
* // Decode from output
|
|
210
|
+
* const decoded = p2data({ output: scriptPubKey });
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export function p2data(a, opts) {
|
|
214
|
+
if (!a.data && !a.output) {
|
|
215
|
+
throw new TypeError('Not enough data');
|
|
216
|
+
}
|
|
217
|
+
const instance = new Embed({
|
|
218
|
+
data: a.data,
|
|
219
|
+
output: a.output,
|
|
220
|
+
network: a.network,
|
|
221
|
+
}, opts);
|
|
222
|
+
// Return a merged object for backwards compatibility
|
|
223
|
+
return Object.assign(instance.toPayment(), a);
|
|
44
224
|
}
|
|
225
|
+
//# sourceMappingURL=embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/payments/embed.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/build/payments/index.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
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
|
+
*/
|
|
8
|
+
// Type exports
|
|
1
9
|
export { PaymentType, } from './types.js';
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export { p2op } from './p2op.js';
|
|
10
|
+
// Class exports (new pattern)
|
|
11
|
+
export { P2PK, p2pk } from './p2pk.js';
|
|
12
|
+
export { P2PKH, p2pkh } from './p2pkh.js';
|
|
13
|
+
export { P2WPKH, p2wpkh } from './p2wpkh.js';
|
|
14
|
+
export { Embed, p2data } from './embed.js';
|
|
15
|
+
export { P2MS, p2ms } from './p2ms.js';
|
|
16
|
+
export { P2SH, p2sh } from './p2sh.js';
|
|
17
|
+
export { P2WSH, p2wsh } from './p2wsh.js';
|
|
18
|
+
export { P2TR, p2tr } from './p2tr.js';
|
|
19
|
+
export { P2OP, p2op } from './p2op.js';
|
|
20
|
+
// BIP341 Taproot utilities
|
|
12
21
|
export { findScriptPath, LEAF_VERSION_TAPSCRIPT, MAX_TAPTREE_DEPTH, rootHashFromPath, tapleafHash, toHashTree, tweakKey, } from './bip341.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EACH,WAAW,GAgBd,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,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;AAEvC,2BAA2B;AAC3B,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,GAEX,MAAM,aAAa,CAAC"}
|
package/build/payments/p2ms.d.ts
CHANGED
|
@@ -1,2 +1,160 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Pay-to-Multisig (P2MS) payment class.
|
|
3
|
+
*
|
|
4
|
+
* P2MS is a bare multisig script where M-of-N signatures are required
|
|
5
|
+
* to spend the output. The public keys are embedded directly in the script.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { type Network } from '../networks.js';
|
|
10
|
+
import { type PublicKey, type Script, type Signature } from '../types.js';
|
|
11
|
+
import { type P2MSPayment, type PaymentOpts } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Pay-to-Multisig (P2MS) payment class.
|
|
14
|
+
*
|
|
15
|
+
* Creates locking scripts of the form:
|
|
16
|
+
* `m {pubKey1} {pubKey2} ... {pubKeyN} n OP_CHECKMULTISIG`
|
|
17
|
+
*
|
|
18
|
+
* Spending requires: `OP_0 {sig1} {sig2} ... {sigM}`
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { P2MS } from '@btc-vision/bitcoin';
|
|
23
|
+
*
|
|
24
|
+
* // Create a 2-of-3 multisig
|
|
25
|
+
* const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
|
|
26
|
+
* console.log(payment.output); // scriptPubKey
|
|
27
|
+
* console.log(payment.m); // 2
|
|
28
|
+
* console.log(payment.n); // 3
|
|
29
|
+
*
|
|
30
|
+
* // Decode an existing output
|
|
31
|
+
* const decoded = P2MS.fromOutput(scriptPubKey);
|
|
32
|
+
* console.log(decoded.pubkeys); // array of public keys
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class P2MS {
|
|
36
|
+
#private;
|
|
37
|
+
static readonly NAME: "p2ms";
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new P2MS payment instance.
|
|
40
|
+
*
|
|
41
|
+
* @param params - Payment parameters
|
|
42
|
+
* @param params.m - Required number of signatures
|
|
43
|
+
* @param params.n - Total number of public keys (optional, derived from pubkeys)
|
|
44
|
+
* @param params.pubkeys - Array of public keys
|
|
45
|
+
* @param params.signatures - Array of signatures
|
|
46
|
+
* @param params.output - The scriptPubKey
|
|
47
|
+
* @param params.input - The scriptSig
|
|
48
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
49
|
+
* @param opts - Payment options
|
|
50
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
51
|
+
* @param opts.allowIncomplete - Allow incomplete signatures (default: false)
|
|
52
|
+
*
|
|
53
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
54
|
+
*/
|
|
55
|
+
constructor(params: {
|
|
56
|
+
m?: number | undefined;
|
|
57
|
+
n?: number | undefined;
|
|
58
|
+
pubkeys?: Uint8Array[] | undefined;
|
|
59
|
+
signatures?: Uint8Array[] | undefined;
|
|
60
|
+
output?: Uint8Array | undefined;
|
|
61
|
+
input?: Uint8Array | undefined;
|
|
62
|
+
network?: Network | undefined;
|
|
63
|
+
}, opts?: PaymentOpts);
|
|
64
|
+
/**
|
|
65
|
+
* Payment type discriminant.
|
|
66
|
+
*/
|
|
67
|
+
get name(): string;
|
|
68
|
+
/**
|
|
69
|
+
* Network parameters.
|
|
70
|
+
*/
|
|
71
|
+
get network(): Network;
|
|
72
|
+
/**
|
|
73
|
+
* Required number of signatures (M in M-of-N).
|
|
74
|
+
*/
|
|
75
|
+
get m(): number | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Total number of public keys (N in M-of-N).
|
|
78
|
+
*/
|
|
79
|
+
get n(): number | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Array of public keys.
|
|
82
|
+
*/
|
|
83
|
+
get pubkeys(): PublicKey[] | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Array of signatures.
|
|
86
|
+
*/
|
|
87
|
+
get signatures(): Signature[] | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* The scriptPubKey: `m {pubkeys} n OP_CHECKMULTISIG`
|
|
90
|
+
*/
|
|
91
|
+
get output(): Script | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* The scriptSig: `OP_0 {signatures}`
|
|
94
|
+
*/
|
|
95
|
+
get input(): Script | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Witness stack (empty for P2MS as it's not a SegWit type).
|
|
98
|
+
*/
|
|
99
|
+
get witness(): Uint8Array[] | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Creates a P2MS payment from public keys.
|
|
102
|
+
*
|
|
103
|
+
* @param m - Required number of signatures
|
|
104
|
+
* @param pubkeys - Array of public keys
|
|
105
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
106
|
+
* @returns A new P2MS payment instance
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // Create a 2-of-3 multisig
|
|
111
|
+
* const payment = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
static fromPubkeys(m: number, pubkeys: PublicKey[], network?: Network): P2MS;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a P2MS payment from a scriptPubKey.
|
|
117
|
+
*
|
|
118
|
+
* @param output - The scriptPubKey
|
|
119
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
120
|
+
* @returns A new P2MS payment instance
|
|
121
|
+
*/
|
|
122
|
+
static fromOutput(output: Uint8Array, network?: Network): P2MS;
|
|
123
|
+
/**
|
|
124
|
+
* Creates a P2MS payment from signatures (for spending).
|
|
125
|
+
*
|
|
126
|
+
* @param signatures - Array of signatures
|
|
127
|
+
* @param m - Required number of signatures (optional)
|
|
128
|
+
* @param pubkeys - Array of public keys (optional, for validation)
|
|
129
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
130
|
+
* @returns A new P2MS payment instance
|
|
131
|
+
*/
|
|
132
|
+
static fromSignatures(signatures: Signature[], m?: number, pubkeys?: PublicKey[], network?: Network): P2MS;
|
|
133
|
+
/**
|
|
134
|
+
* Converts to a plain P2MSPayment object for backwards compatibility.
|
|
135
|
+
*
|
|
136
|
+
* @returns A P2MSPayment object
|
|
137
|
+
*/
|
|
138
|
+
toPayment(): P2MSPayment;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates a Pay-to-Multisig (P2MS) payment object.
|
|
142
|
+
*
|
|
143
|
+
* This is the legacy factory function for backwards compatibility.
|
|
144
|
+
* For new code, prefer using the P2MS class directly.
|
|
145
|
+
*
|
|
146
|
+
* @param a - The payment object containing the necessary data
|
|
147
|
+
* @param opts - Optional payment options
|
|
148
|
+
* @returns The P2MS payment object
|
|
149
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* import { p2ms } from '@btc-vision/bitcoin';
|
|
154
|
+
*
|
|
155
|
+
* // Create a 2-of-3 multisig
|
|
156
|
+
* const payment = p2ms({ m: 2, pubkeys: [pubkey1, pubkey2, pubkey3] });
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
2
159
|
export declare function p2ms(a: Omit<P2MSPayment, 'name'>, opts?: PaymentOpts): P2MSPayment;
|
|
160
|
+
//# 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"}
|