@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,2 +1,155 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { PublicKey, Script, Signature } from '../types.js';
|
|
3
|
+
import { PaymentType, P2PKPayment, PaymentOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-Public-Key (P2PK) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form: `{pubKey} OP_CHECKSIG`
|
|
8
|
+
* Spending requires providing: `{signature}`
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { P2PK } from '@btc-vision/bitcoin';
|
|
13
|
+
*
|
|
14
|
+
* // Create from public key
|
|
15
|
+
* const payment = P2PK.fromPubkey(pubkey);
|
|
16
|
+
* console.log(payment.output); // scriptPubKey
|
|
17
|
+
*
|
|
18
|
+
* // Create from output script
|
|
19
|
+
* const decoded = P2PK.fromOutput(scriptPubKey);
|
|
20
|
+
* console.log(decoded.pubkey); // extracted public key
|
|
21
|
+
*
|
|
22
|
+
* // Legacy factory function still works
|
|
23
|
+
* const legacy = p2pk({ pubkey });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class P2PK {
|
|
27
|
+
#private;
|
|
28
|
+
static readonly NAME: "p2pk";
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new P2PK payment instance.
|
|
31
|
+
*
|
|
32
|
+
* @param params - Payment parameters
|
|
33
|
+
* @param params.pubkey - The public key (33 or 65 bytes)
|
|
34
|
+
* @param params.signature - DER-encoded signature
|
|
35
|
+
* @param params.output - The scriptPubKey
|
|
36
|
+
* @param params.input - The scriptSig
|
|
37
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
38
|
+
* @param opts - Payment options
|
|
39
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
40
|
+
*
|
|
41
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
42
|
+
*/
|
|
43
|
+
constructor(params: {
|
|
44
|
+
pubkey?: Uint8Array | undefined;
|
|
45
|
+
signature?: Uint8Array | undefined;
|
|
46
|
+
output?: Uint8Array | undefined;
|
|
47
|
+
input?: Uint8Array | undefined;
|
|
48
|
+
network?: Network | undefined;
|
|
49
|
+
}, opts?: PaymentOpts);
|
|
50
|
+
/**
|
|
51
|
+
* Payment type discriminant.
|
|
52
|
+
*/
|
|
53
|
+
get name(): typeof PaymentType.P2PK;
|
|
54
|
+
/**
|
|
55
|
+
* Network parameters.
|
|
56
|
+
*/
|
|
57
|
+
get network(): Network;
|
|
58
|
+
/**
|
|
59
|
+
* The public key (33 or 65 bytes).
|
|
60
|
+
* Computed lazily from output if not provided directly.
|
|
61
|
+
*/
|
|
62
|
+
get pubkey(): PublicKey | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* The DER-encoded signature.
|
|
65
|
+
* Computed lazily from input if not provided directly.
|
|
66
|
+
*/
|
|
67
|
+
get signature(): Signature | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* The scriptPubKey: `{pubKey} OP_CHECKSIG`
|
|
70
|
+
* Computed lazily from pubkey if not provided directly.
|
|
71
|
+
*/
|
|
72
|
+
get output(): Script | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* The scriptSig: `{signature}`
|
|
75
|
+
* Computed lazily from signature if not provided directly.
|
|
76
|
+
*/
|
|
77
|
+
get input(): Script | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Witness stack (empty for P2PK as it's not a SegWit type).
|
|
80
|
+
*/
|
|
81
|
+
get witness(): Uint8Array[] | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Creates a P2PK payment from a public key.
|
|
84
|
+
*
|
|
85
|
+
* @param pubkey - The public key (33 or 65 bytes)
|
|
86
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
87
|
+
* @returns A new P2PK payment instance
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const payment = P2PK.fromPubkey(pubkey);
|
|
92
|
+
* const scriptPubKey = payment.output;
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
static fromPubkey(pubkey: PublicKey, network?: Network): P2PK;
|
|
96
|
+
/**
|
|
97
|
+
* Creates a P2PK payment from a scriptPubKey.
|
|
98
|
+
*
|
|
99
|
+
* @param output - The scriptPubKey
|
|
100
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
101
|
+
* @returns A new P2PK payment instance
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const payment = P2PK.fromOutput(scriptPubKey);
|
|
106
|
+
* const pubkey = payment.pubkey;
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
static fromOutput(output: Uint8Array, network?: Network): P2PK;
|
|
110
|
+
/**
|
|
111
|
+
* Creates a P2PK payment from a signature (for spending).
|
|
112
|
+
*
|
|
113
|
+
* @param signature - The DER-encoded signature
|
|
114
|
+
* @param pubkey - The public key (optional, for validation)
|
|
115
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
116
|
+
* @returns A new P2PK payment instance
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const payment = P2PK.fromSignature(signature, pubkey);
|
|
121
|
+
* const scriptSig = payment.input;
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
static fromSignature(signature: Signature, pubkey?: PublicKey, network?: Network): P2PK;
|
|
125
|
+
/**
|
|
126
|
+
* Converts to a plain P2PKPayment object for backwards compatibility.
|
|
127
|
+
*
|
|
128
|
+
* @returns A P2PKPayment object
|
|
129
|
+
*/
|
|
130
|
+
toPayment(): P2PKPayment;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Creates a Pay-to-Public-Key (P2PK) payment object.
|
|
134
|
+
*
|
|
135
|
+
* This is the legacy factory function for backwards compatibility.
|
|
136
|
+
* For new code, prefer using the P2PK class directly.
|
|
137
|
+
*
|
|
138
|
+
* @param a - The payment object containing the necessary data
|
|
139
|
+
* @param opts - Optional payment options
|
|
140
|
+
* @returns The P2PK 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 { p2pk } from '@btc-vision/bitcoin';
|
|
146
|
+
*
|
|
147
|
+
* // Create from public key
|
|
148
|
+
* const payment = p2pk({ pubkey });
|
|
149
|
+
*
|
|
150
|
+
* // Create from output
|
|
151
|
+
* const decoded = p2pk({ output: scriptPubKey });
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
2
154
|
export declare function p2pk(a: Omit<P2PKPayment, 'name'>, opts?: PaymentOpts): P2PKPayment;
|
|
155
|
+
//# sourceMappingURL=p2pk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2pk.d.ts","sourceRoot":"","sources":["../../src/payments/p2pk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA0BxC;;;;;;;;;;;;;OAaG;gBAEC,MAAM,EAAE;QACJ,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACnC,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;IAsBtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,IAAI,CAElC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAMlC;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAMrC;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAM/B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI7D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAkGvF;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAW3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAkBlF"}
|
|
@@ -1,2 +1,177 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { Bytes20, PublicKey, Script, Signature } from '../types.js';
|
|
3
|
+
import { PaymentType, P2PKHPayment, PaymentOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-Public-Key-Hash (P2PKH) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form:
|
|
8
|
+
* `OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG`
|
|
9
|
+
*
|
|
10
|
+
* Spending requires providing: `{signature} {pubkey}`
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { P2PKH } from '@btc-vision/bitcoin';
|
|
15
|
+
*
|
|
16
|
+
* // Create from public key
|
|
17
|
+
* const payment = P2PKH.fromPubkey(pubkey);
|
|
18
|
+
* console.log(payment.address); // Bitcoin address
|
|
19
|
+
* console.log(payment.output); // scriptPubKey
|
|
20
|
+
*
|
|
21
|
+
* // Create from address
|
|
22
|
+
* const fromAddr = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
|
|
23
|
+
* console.log(fromAddr.hash); // 20-byte pubkey hash
|
|
24
|
+
*
|
|
25
|
+
* // Create from hash
|
|
26
|
+
* const fromHash = P2PKH.fromHash(hash160);
|
|
27
|
+
* console.log(fromHash.address);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class P2PKH {
|
|
31
|
+
#private;
|
|
32
|
+
static readonly NAME: "p2pkh";
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new P2PKH payment instance.
|
|
35
|
+
*
|
|
36
|
+
* @param params - Payment parameters
|
|
37
|
+
* @param params.address - Base58Check encoded address
|
|
38
|
+
* @param params.hash - 20-byte pubkey hash (RIPEMD160(SHA256(pubkey)))
|
|
39
|
+
* @param params.pubkey - The public key (33 or 65 bytes)
|
|
40
|
+
* @param params.signature - DER-encoded signature
|
|
41
|
+
* @param params.output - The scriptPubKey
|
|
42
|
+
* @param params.input - The scriptSig
|
|
43
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
44
|
+
* @param opts - Payment options
|
|
45
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
46
|
+
*
|
|
47
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
48
|
+
*/
|
|
49
|
+
constructor(params: {
|
|
50
|
+
address?: string | undefined;
|
|
51
|
+
hash?: Uint8Array | undefined;
|
|
52
|
+
pubkey?: Uint8Array | undefined;
|
|
53
|
+
signature?: Uint8Array | undefined;
|
|
54
|
+
output?: Uint8Array | undefined;
|
|
55
|
+
input?: Uint8Array | undefined;
|
|
56
|
+
network?: Network | undefined;
|
|
57
|
+
useHybrid?: boolean | undefined;
|
|
58
|
+
useUncompressed?: boolean | undefined;
|
|
59
|
+
}, opts?: PaymentOpts);
|
|
60
|
+
/**
|
|
61
|
+
* Payment type discriminant.
|
|
62
|
+
*/
|
|
63
|
+
get name(): typeof PaymentType.P2PKH;
|
|
64
|
+
/**
|
|
65
|
+
* Network parameters.
|
|
66
|
+
*/
|
|
67
|
+
get network(): Network;
|
|
68
|
+
/**
|
|
69
|
+
* Base58Check encoded Bitcoin address.
|
|
70
|
+
*/
|
|
71
|
+
get address(): string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* 20-byte pubkey hash (RIPEMD160(SHA256(pubkey))).
|
|
74
|
+
*/
|
|
75
|
+
get hash(): Bytes20 | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* The public key (33 or 65 bytes).
|
|
78
|
+
*/
|
|
79
|
+
get pubkey(): PublicKey | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* The DER-encoded signature.
|
|
82
|
+
*/
|
|
83
|
+
get signature(): Signature | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* The scriptPubKey:
|
|
86
|
+
* `OP_DUP OP_HASH160 {hash} OP_EQUALVERIFY OP_CHECKSIG`
|
|
87
|
+
*/
|
|
88
|
+
get output(): Script | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* The scriptSig: `{signature} {pubkey}`
|
|
91
|
+
*/
|
|
92
|
+
get input(): Script | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Witness stack (empty for P2PKH as it's not a SegWit type).
|
|
95
|
+
*/
|
|
96
|
+
get witness(): Uint8Array[] | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a P2PKH payment from a public key.
|
|
99
|
+
*
|
|
100
|
+
* @param pubkey - The public key (33 or 65 bytes)
|
|
101
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
102
|
+
* @returns A new P2PKH payment instance
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const payment = P2PKH.fromPubkey(pubkey);
|
|
107
|
+
* const address = payment.address;
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
static fromPubkey(pubkey: PublicKey, network?: Network): P2PKH;
|
|
111
|
+
/**
|
|
112
|
+
* Creates a P2PKH payment from a Base58Check address.
|
|
113
|
+
*
|
|
114
|
+
* @param address - Base58Check encoded address
|
|
115
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
116
|
+
* @returns A new P2PKH payment instance
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const payment = P2PKH.fromAddress('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2');
|
|
121
|
+
* const hash = payment.hash;
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
static fromAddress(address: string, network?: Network): P2PKH;
|
|
125
|
+
/**
|
|
126
|
+
* Creates a P2PKH payment from a 20-byte pubkey hash.
|
|
127
|
+
*
|
|
128
|
+
* @param hash - 20-byte pubkey hash
|
|
129
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
130
|
+
* @returns A new P2PKH payment instance
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const payment = P2PKH.fromHash(hash160);
|
|
135
|
+
* const address = payment.address;
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
static fromHash(hash: Bytes20, network?: Network): P2PKH;
|
|
139
|
+
/**
|
|
140
|
+
* Creates a P2PKH payment from a scriptPubKey.
|
|
141
|
+
*
|
|
142
|
+
* @param output - The scriptPubKey
|
|
143
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
144
|
+
* @returns A new P2PKH payment instance
|
|
145
|
+
*/
|
|
146
|
+
static fromOutput(output: Uint8Array, network?: Network): P2PKH;
|
|
147
|
+
/**
|
|
148
|
+
* Converts to a plain P2PKHPayment object for backwards compatibility.
|
|
149
|
+
*
|
|
150
|
+
* @returns A P2PKHPayment object
|
|
151
|
+
*/
|
|
152
|
+
toPayment(): P2PKHPayment;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Creates a Pay-to-Public-Key-Hash (P2PKH) payment object.
|
|
156
|
+
*
|
|
157
|
+
* This is the legacy factory function for backwards compatibility.
|
|
158
|
+
* For new code, prefer using the P2PKH class directly.
|
|
159
|
+
*
|
|
160
|
+
* @param a - The payment object containing the necessary data
|
|
161
|
+
* @param opts - Optional payment options
|
|
162
|
+
* @returns The P2PKH payment object
|
|
163
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* import { p2pkh } from '@btc-vision/bitcoin';
|
|
168
|
+
*
|
|
169
|
+
* // Create from public key
|
|
170
|
+
* const payment = p2pkh({ pubkey });
|
|
171
|
+
*
|
|
172
|
+
* // Create from address
|
|
173
|
+
* const fromAddr = p2pkh({ address: '1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2' });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
2
176
|
export declare function p2pkh(a: Omit<P2PKHPayment, 'name'>, opts?: PaymentOpts): P2PKHPayment;
|
|
177
|
+
//# sourceMappingURL=p2pkh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2pkh.d.ts","sourceRoot":"","sources":["../../src/payments/p2pkh.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAW,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,KAAK;;IAEd,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAqB;IA4CzC;;;;;;;;;;;;;;;OAeG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACnC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACzC,EACD,IAAI,CAAC,EAAE,WAAW;IA0BtB;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,WAAW,CAAC,KAAK,CAEnC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,GAAG,SAAS,CAM9B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAMlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAMrC;IAED;;;OAGG;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;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI9D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAI7D;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAIxD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAoP/D;;;;OAIG;IACH,SAAS,IAAI,YAAY;CAa5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAsBrF"}
|
|
@@ -1,2 +1,151 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { Bytes20, Script } from '../types.js';
|
|
3
|
+
import { P2SHPayment, PaymentOpts, ScriptRedeem } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-Script-Hash (P2SH) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form:
|
|
8
|
+
* `OP_HASH160 {hash160(redeemScript)} OP_EQUAL`
|
|
9
|
+
*
|
|
10
|
+
* Spending requires: `{redeemScriptSig...} {redeemScript}`
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { P2SH, P2MS } from '@btc-vision/bitcoin';
|
|
15
|
+
*
|
|
16
|
+
* // Wrap a multisig in P2SH
|
|
17
|
+
* const multisig = P2MS.fromPubkeys(2, [pubkey1, pubkey2, pubkey3]);
|
|
18
|
+
* const p2sh = P2SH.fromRedeem({ output: multisig.output });
|
|
19
|
+
* console.log(p2sh.address); // 3... address
|
|
20
|
+
*
|
|
21
|
+
* // Decode an existing output
|
|
22
|
+
* const decoded = P2SH.fromOutput(scriptPubKey);
|
|
23
|
+
* console.log(decoded.hash); // 20-byte script hash
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class P2SH {
|
|
27
|
+
#private;
|
|
28
|
+
static readonly NAME: "p2sh";
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new P2SH payment instance.
|
|
31
|
+
*
|
|
32
|
+
* @param params - Payment parameters
|
|
33
|
+
* @param params.address - Base58Check encoded address (3...)
|
|
34
|
+
* @param params.hash - 20-byte script hash
|
|
35
|
+
* @param params.output - The scriptPubKey
|
|
36
|
+
* @param params.input - The scriptSig
|
|
37
|
+
* @param params.redeem - The redeem script information
|
|
38
|
+
* @param params.witness - The witness stack (for wrapped SegWit)
|
|
39
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
40
|
+
* @param opts - Payment options
|
|
41
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
42
|
+
*
|
|
43
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
44
|
+
*/
|
|
45
|
+
constructor(params: {
|
|
46
|
+
address?: string | undefined;
|
|
47
|
+
hash?: Uint8Array | undefined;
|
|
48
|
+
output?: Uint8Array | undefined;
|
|
49
|
+
input?: Uint8Array | undefined;
|
|
50
|
+
redeem?: ScriptRedeem | undefined;
|
|
51
|
+
witness?: Uint8Array[] | undefined;
|
|
52
|
+
network?: Network | undefined;
|
|
53
|
+
}, opts?: PaymentOpts);
|
|
54
|
+
/**
|
|
55
|
+
* Payment type discriminant.
|
|
56
|
+
*/
|
|
57
|
+
get name(): string;
|
|
58
|
+
/**
|
|
59
|
+
* Network parameters.
|
|
60
|
+
*/
|
|
61
|
+
get network(): Network;
|
|
62
|
+
/**
|
|
63
|
+
* Base58Check encoded address (3... for mainnet).
|
|
64
|
+
*/
|
|
65
|
+
get address(): string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* 20-byte script hash (HASH160 of redeem script).
|
|
68
|
+
*/
|
|
69
|
+
get hash(): Bytes20 | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* The scriptPubKey: `OP_HASH160 {hash} OP_EQUAL`
|
|
72
|
+
*/
|
|
73
|
+
get output(): Script | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* The scriptSig: `{redeemScriptSig...} {redeemScript}`
|
|
76
|
+
*/
|
|
77
|
+
get input(): Script | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* The redeem script information.
|
|
80
|
+
*/
|
|
81
|
+
get redeem(): ScriptRedeem | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* The witness stack (for wrapped SegWit).
|
|
84
|
+
*/
|
|
85
|
+
get witness(): Uint8Array[] | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a P2SH payment from a redeem script.
|
|
88
|
+
*
|
|
89
|
+
* @param redeem - The redeem script information
|
|
90
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
91
|
+
* @returns A new P2SH payment instance
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const p2sh = P2SH.fromRedeem({ output: redeemScript });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
static fromRedeem(redeem: ScriptRedeem, network?: Network): P2SH;
|
|
99
|
+
/**
|
|
100
|
+
* Creates a P2SH payment from a Base58Check address.
|
|
101
|
+
*
|
|
102
|
+
* @param address - Base58Check encoded address
|
|
103
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
104
|
+
* @returns A new P2SH payment instance
|
|
105
|
+
*/
|
|
106
|
+
static fromAddress(address: string, network?: Network): P2SH;
|
|
107
|
+
/**
|
|
108
|
+
* Creates a P2SH payment from a 20-byte script hash.
|
|
109
|
+
*
|
|
110
|
+
* @param hash - 20-byte script hash
|
|
111
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
112
|
+
* @returns A new P2SH payment instance
|
|
113
|
+
*/
|
|
114
|
+
static fromHash(hash: Bytes20, network?: Network): P2SH;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a P2SH payment from a scriptPubKey.
|
|
117
|
+
*
|
|
118
|
+
* @param output - The scriptPubKey
|
|
119
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
120
|
+
* @returns A new P2SH payment instance
|
|
121
|
+
*/
|
|
122
|
+
static fromOutput(output: Uint8Array, network?: Network): P2SH;
|
|
123
|
+
/**
|
|
124
|
+
* Converts to a plain P2SHPayment object for backwards compatibility.
|
|
125
|
+
*
|
|
126
|
+
* @returns A P2SHPayment object
|
|
127
|
+
*/
|
|
128
|
+
toPayment(): P2SHPayment;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Creates a Pay-to-Script-Hash (P2SH) payment object.
|
|
132
|
+
*
|
|
133
|
+
* This is the legacy factory function for backwards compatibility.
|
|
134
|
+
* For new code, prefer using the P2SH class directly.
|
|
135
|
+
*
|
|
136
|
+
* @param a - The payment object containing the necessary data
|
|
137
|
+
* @param opts - Optional payment options
|
|
138
|
+
* @returns The P2SH payment object
|
|
139
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* import { p2sh, p2ms } from '@btc-vision/bitcoin';
|
|
144
|
+
*
|
|
145
|
+
* // Wrap a multisig in P2SH
|
|
146
|
+
* const multisig = p2ms({ m: 2, pubkeys: [pk1, pk2, pk3] });
|
|
147
|
+
* const payment = p2sh({ redeem: multisig });
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
2
150
|
export declare function p2sh(a: Omit<P2SHPayment, 'name'>, opts?: PaymentOpts): P2SHPayment;
|
|
151
|
+
//# sourceMappingURL=p2sh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2sh.d.ts","sourceRoot":"","sources":["../../src/payments/p2sh.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,aAAa,CAAC;AAEjF,OAAO,EAEH,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,YAAY,EACpB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,IAAI;;IAEb,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAoB;IA0CxC;;;;;;;;;;;;;;;OAeG;gBAEC,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,EACD,IAAI,CAAC,EAAE,WAAW;IA6BtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAMhC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,GAAG,SAAS,CAM9B;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,MAAM,IAAI,YAAY,GAAG,SAAS,CAMrC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,CAMtC;IAID;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIhE;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIvD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAgR9D;;;;OAIG;IACH,SAAS,IAAI,WAAW;CAY3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAoBlF"}
|
|
@@ -1,2 +1,186 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network } from '../networks.js';
|
|
2
|
+
import { Bytes32, Script, SchnorrSignature, Taptree, XOnlyPublicKey } from '../types.js';
|
|
3
|
+
import { PaymentType, P2TRPayment, PaymentOpts, ScriptRedeem } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pay-to-Taproot (P2TR) payment class.
|
|
6
|
+
*
|
|
7
|
+
* Creates locking scripts of the form: `OP_1 {x-only pubkey}`
|
|
8
|
+
*
|
|
9
|
+
* Key-path spending witness: `[signature]`
|
|
10
|
+
* Script-path spending witness: `[script inputs..., script, control block]`
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { P2TR } from '@btc-vision/bitcoin';
|
|
15
|
+
*
|
|
16
|
+
* // Key-path only (no scripts)
|
|
17
|
+
* const keyOnly = P2TR.fromInternalPubkey(internalPubkey);
|
|
18
|
+
* console.log(keyOnly.address); // bc1p... address
|
|
19
|
+
*
|
|
20
|
+
* // With script tree
|
|
21
|
+
* const withScripts = P2TR.fromInternalPubkey(internalPubkey, scriptTree);
|
|
22
|
+
*
|
|
23
|
+
* // Decode an existing output
|
|
24
|
+
* const decoded = P2TR.fromOutput(scriptPubKey);
|
|
25
|
+
* console.log(decoded.pubkey); // 32-byte x-only pubkey
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class P2TR {
|
|
29
|
+
#private;
|
|
30
|
+
static readonly NAME: "p2tr";
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new P2TR payment instance.
|
|
33
|
+
*
|
|
34
|
+
* @param params - Payment parameters
|
|
35
|
+
* @param params.address - Bech32m encoded address (bc1p...)
|
|
36
|
+
* @param params.pubkey - x-only output pubkey (32 bytes)
|
|
37
|
+
* @param params.internalPubkey - x-only internal pubkey (32 bytes)
|
|
38
|
+
* @param params.hash - Merkle root (32 bytes, or empty for key-path only)
|
|
39
|
+
* @param params.scriptTree - Full script tree definition
|
|
40
|
+
* @param params.signature - Schnorr signature (for key-path spending)
|
|
41
|
+
* @param params.output - The scriptPubKey
|
|
42
|
+
* @param params.witness - The witness stack
|
|
43
|
+
* @param params.redeem - Redeem script for script-path spending
|
|
44
|
+
* @param params.redeemVersion - Leaf version (defaults to LEAF_VERSION_TAPSCRIPT)
|
|
45
|
+
* @param params.network - Network parameters (defaults to mainnet)
|
|
46
|
+
* @param opts - Payment options
|
|
47
|
+
* @param opts.validate - Whether to validate inputs (default: true)
|
|
48
|
+
*
|
|
49
|
+
* @throws {TypeError} If validation is enabled and data is invalid
|
|
50
|
+
*/
|
|
51
|
+
constructor(params: {
|
|
52
|
+
address?: string | undefined;
|
|
53
|
+
pubkey?: Uint8Array | undefined;
|
|
54
|
+
internalPubkey?: Uint8Array | undefined;
|
|
55
|
+
hash?: Uint8Array | undefined;
|
|
56
|
+
scriptTree?: Taptree | undefined;
|
|
57
|
+
signature?: Uint8Array | undefined;
|
|
58
|
+
output?: Uint8Array | undefined;
|
|
59
|
+
witness?: Uint8Array[] | undefined;
|
|
60
|
+
redeem?: ScriptRedeem | undefined;
|
|
61
|
+
redeemVersion?: number | undefined;
|
|
62
|
+
network?: Network | undefined;
|
|
63
|
+
}, opts?: PaymentOpts);
|
|
64
|
+
/**
|
|
65
|
+
* Payment type discriminant.
|
|
66
|
+
*/
|
|
67
|
+
get name(): typeof PaymentType.P2TR;
|
|
68
|
+
/**
|
|
69
|
+
* Network parameters.
|
|
70
|
+
*/
|
|
71
|
+
get network(): Network;
|
|
72
|
+
/**
|
|
73
|
+
* Bech32m encoded address (bc1p... for mainnet).
|
|
74
|
+
*/
|
|
75
|
+
get address(): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* x-only output pubkey (32 bytes).
|
|
78
|
+
* This is the tweaked pubkey that appears in the output.
|
|
79
|
+
*/
|
|
80
|
+
get pubkey(): XOnlyPublicKey | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* x-only internal pubkey (32 bytes).
|
|
83
|
+
* This is the untweaked pubkey before adding the merkle root tweak.
|
|
84
|
+
*/
|
|
85
|
+
get internalPubkey(): XOnlyPublicKey | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Merkle root hash (32 bytes).
|
|
88
|
+
* Present when a script tree is defined.
|
|
89
|
+
*/
|
|
90
|
+
get hash(): Bytes32 | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Schnorr signature (for key-path spending).
|
|
93
|
+
*/
|
|
94
|
+
get signature(): SchnorrSignature | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* The scriptPubKey: `OP_1 {32-byte x-only pubkey}`
|
|
97
|
+
*/
|
|
98
|
+
get output(): Script | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Redeem script information (for script-path spending).
|
|
101
|
+
*/
|
|
102
|
+
get redeem(): ScriptRedeem | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Leaf version (defaults to LEAF_VERSION_TAPSCRIPT = 0xc0).
|
|
105
|
+
*/
|
|
106
|
+
get redeemVersion(): number;
|
|
107
|
+
/**
|
|
108
|
+
* Witness stack.
|
|
109
|
+
* Key-path: `[signature]`
|
|
110
|
+
* Script-path: `[script inputs..., script, control block]`
|
|
111
|
+
*/
|
|
112
|
+
get witness(): Uint8Array[] | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a P2TR payment from an internal pubkey (key-path only).
|
|
115
|
+
*
|
|
116
|
+
* @param internalPubkey - x-only internal pubkey (32 bytes)
|
|
117
|
+
* @param scriptTree - Optional script tree
|
|
118
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
119
|
+
* @returns A new P2TR payment instance
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* // Key-path only
|
|
124
|
+
* const p2tr = P2TR.fromInternalPubkey(internalPubkey);
|
|
125
|
+
*
|
|
126
|
+
* // With script tree
|
|
127
|
+
* const withScripts = P2TR.fromInternalPubkey(internalPubkey, scriptTree);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
static fromInternalPubkey(internalPubkey: XOnlyPublicKey, scriptTree?: Taptree, network?: Network): P2TR;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a P2TR payment from a bech32m address.
|
|
133
|
+
*
|
|
134
|
+
* @param address - Bech32m encoded address (bc1p...)
|
|
135
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
136
|
+
* @returns A new P2TR payment instance
|
|
137
|
+
*/
|
|
138
|
+
static fromAddress(address: string, network?: Network): P2TR;
|
|
139
|
+
/**
|
|
140
|
+
* Creates a P2TR payment from a scriptPubKey.
|
|
141
|
+
*
|
|
142
|
+
* @param output - The scriptPubKey
|
|
143
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
144
|
+
* @returns A new P2TR payment instance
|
|
145
|
+
*/
|
|
146
|
+
static fromOutput(output: Uint8Array, network?: Network): P2TR;
|
|
147
|
+
/**
|
|
148
|
+
* Creates a P2TR payment from a signature (for key-path spending).
|
|
149
|
+
*
|
|
150
|
+
* @param signature - Schnorr signature
|
|
151
|
+
* @param internalPubkey - x-only internal pubkey
|
|
152
|
+
* @param network - Network parameters (defaults to mainnet)
|
|
153
|
+
* @returns A new P2TR payment instance
|
|
154
|
+
*/
|
|
155
|
+
static fromSignature(signature: SchnorrSignature, internalPubkey?: XOnlyPublicKey, network?: Network): P2TR;
|
|
156
|
+
/**
|
|
157
|
+
* Converts to a plain P2TRPayment object for backwards compatibility.
|
|
158
|
+
*
|
|
159
|
+
* @returns A P2TRPayment object
|
|
160
|
+
*/
|
|
161
|
+
toPayment(): P2TRPayment;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Creates a Pay-to-Taproot (P2TR) payment object.
|
|
165
|
+
*
|
|
166
|
+
* This is the legacy factory function for backwards compatibility.
|
|
167
|
+
* For new code, prefer using the P2TR class directly.
|
|
168
|
+
*
|
|
169
|
+
* @param a - The payment object containing the necessary data
|
|
170
|
+
* @param opts - Optional payment options
|
|
171
|
+
* @returns The P2TR payment object
|
|
172
|
+
* @throws {TypeError} If the required data is not provided or if the data is invalid
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* import { p2tr } from '@btc-vision/bitcoin';
|
|
177
|
+
*
|
|
178
|
+
* // Key-path only
|
|
179
|
+
* const payment = p2tr({ internalPubkey });
|
|
180
|
+
*
|
|
181
|
+
* // With script tree
|
|
182
|
+
* const withScripts = p2tr({ internalPubkey, scriptTree });
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
2
185
|
export declare function p2tr(a: Omit<P2TRPayment, 'name'>, opts?: PaymentOpts): P2TRPayment;
|
|
186
|
+
//# sourceMappingURL=p2tr.d.ts.map
|