@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/transaction.d.ts
CHANGED
|
@@ -1,15 +1,45 @@
|
|
|
1
|
+
import type { Bytes32, Satoshi, Script } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Cache for Taproot sighash intermediate values.
|
|
4
|
+
* These are identical for all inputs with SIGHASH_ALL, so compute once and reuse.
|
|
5
|
+
*/
|
|
6
|
+
export interface TaprootHashCache {
|
|
7
|
+
readonly hashPrevouts: Bytes32;
|
|
8
|
+
readonly hashAmounts: Bytes32;
|
|
9
|
+
readonly hashScriptPubKeys: Bytes32;
|
|
10
|
+
readonly hashSequences: Bytes32;
|
|
11
|
+
readonly hashOutputs: Bytes32;
|
|
12
|
+
}
|
|
1
13
|
export interface Output {
|
|
2
|
-
script:
|
|
3
|
-
value:
|
|
14
|
+
readonly script: Script;
|
|
15
|
+
readonly value: Satoshi;
|
|
4
16
|
}
|
|
5
17
|
export interface Input {
|
|
6
|
-
hash:
|
|
7
|
-
index: number;
|
|
8
|
-
script:
|
|
18
|
+
readonly hash: Bytes32;
|
|
19
|
+
readonly index: number;
|
|
20
|
+
script: Script;
|
|
9
21
|
sequence: number;
|
|
10
|
-
witness:
|
|
22
|
+
witness: Uint8Array[];
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Represents a Bitcoin transaction.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { Transaction, fromHex } from '@btc-vision/bitcoin';
|
|
30
|
+
*
|
|
31
|
+
* // Parse a transaction from hex
|
|
32
|
+
* const tx = Transaction.fromHex('0100000001...');
|
|
33
|
+
*
|
|
34
|
+
* // Create a new transaction
|
|
35
|
+
* const newTx = new Transaction();
|
|
36
|
+
* newTx.version = 2;
|
|
37
|
+
* newTx.addInput(prevTxHash, 0);
|
|
38
|
+
* newTx.addOutput(scriptPubKey, 50000n);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
12
41
|
export declare class Transaction {
|
|
42
|
+
#private;
|
|
13
43
|
static readonly DEFAULT_SEQUENCE = 4294967295;
|
|
14
44
|
static readonly SIGHASH_DEFAULT = 0;
|
|
15
45
|
static readonly SIGHASH_ALL = 1;
|
|
@@ -27,25 +57,137 @@ export declare class Transaction {
|
|
|
27
57
|
locktime: number;
|
|
28
58
|
ins: Input[];
|
|
29
59
|
outs: Output[];
|
|
30
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Parse a transaction from a Uint8Array buffer.
|
|
62
|
+
*
|
|
63
|
+
* @param buffer - The raw transaction bytes
|
|
64
|
+
* @param _NO_STRICT - If true, allow extra data after transaction
|
|
65
|
+
* @returns Parsed Transaction instance
|
|
66
|
+
*/
|
|
67
|
+
static fromBuffer(buffer: Uint8Array, _NO_STRICT?: boolean): Transaction;
|
|
68
|
+
/**
|
|
69
|
+
* Parse a transaction from a hex string.
|
|
70
|
+
*
|
|
71
|
+
* @param hex - The transaction as a hex string
|
|
72
|
+
* @returns Parsed Transaction instance
|
|
73
|
+
*/
|
|
31
74
|
static fromHex(hex: string): Transaction;
|
|
32
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Check if a hash is a coinbase hash (all zeros).
|
|
77
|
+
*
|
|
78
|
+
* @param hash - 32-byte hash to check
|
|
79
|
+
* @returns true if hash is all zeros (coinbase)
|
|
80
|
+
*/
|
|
81
|
+
static isCoinbaseHash(hash: Bytes32): boolean;
|
|
33
82
|
isCoinbase(): boolean;
|
|
34
|
-
|
|
35
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Add an input to this transaction.
|
|
85
|
+
*
|
|
86
|
+
* @param hash - 32-byte hash of the previous transaction
|
|
87
|
+
* @param index - Output index in the previous transaction
|
|
88
|
+
* @param sequence - Sequence number (defaults to 0xffffffff)
|
|
89
|
+
* @param scriptSig - Input script (defaults to empty)
|
|
90
|
+
* @returns The index of the newly added input
|
|
91
|
+
*/
|
|
92
|
+
addInput(hash: Bytes32, index: number, sequence?: number, scriptSig?: Script): number;
|
|
93
|
+
/**
|
|
94
|
+
* Add an output to this transaction.
|
|
95
|
+
*
|
|
96
|
+
* @param scriptPubKey - Output script (locking script)
|
|
97
|
+
* @param value - Output value in satoshis (bigint)
|
|
98
|
+
* @returns The index of the newly added output
|
|
99
|
+
*/
|
|
100
|
+
addOutput(scriptPubKey: Script, value: Satoshi): number;
|
|
36
101
|
hasWitnesses(): boolean;
|
|
37
102
|
weight(): number;
|
|
38
103
|
virtualSize(): number;
|
|
39
104
|
byteLength(_ALLOW_WITNESS?: boolean): number;
|
|
40
105
|
clone(): Transaction;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Hash transaction for signing a specific input.
|
|
108
|
+
*
|
|
109
|
+
* Bitcoin uses a different hash for each signed transaction input.
|
|
110
|
+
* This method copies the transaction, makes the necessary changes based on the
|
|
111
|
+
* hashType, and then hashes the result.
|
|
112
|
+
* This hash can then be used to sign the provided transaction input.
|
|
113
|
+
*
|
|
114
|
+
* @param inIndex - Index of the input being signed
|
|
115
|
+
* @param prevOutScript - The script of the output being spent
|
|
116
|
+
* @param hashType - Signature hash type
|
|
117
|
+
* @returns 32-byte hash for signing
|
|
118
|
+
*/
|
|
119
|
+
hashForSignature(inIndex: number, prevOutScript: Script, hashType: number): Bytes32;
|
|
120
|
+
/**
|
|
121
|
+
* Hash transaction for signing a Taproot (witness v1) input.
|
|
122
|
+
*
|
|
123
|
+
* @param inIndex - Index of the input being signed
|
|
124
|
+
* @param prevOutScripts - Scripts of all inputs being spent
|
|
125
|
+
* @param values - Values of all inputs being spent (bigint satoshis)
|
|
126
|
+
* @param hashType - Signature hash type
|
|
127
|
+
* @param leafHash - Optional leaf hash for script path spending
|
|
128
|
+
* @param annex - Optional annex data
|
|
129
|
+
* @returns 32-byte hash for signing
|
|
130
|
+
*/
|
|
131
|
+
hashForWitnessV1(inIndex: number, prevOutScripts: readonly Script[], values: readonly Satoshi[], hashType: number, leafHash?: Bytes32, annex?: Uint8Array, taprootCache?: TaprootHashCache): Bytes32;
|
|
132
|
+
/**
|
|
133
|
+
* Pre-compute intermediate hashes for Taproot signing.
|
|
134
|
+
* Call this once before signing multiple inputs to avoid O(n^2) performance.
|
|
135
|
+
*
|
|
136
|
+
* @param prevOutScripts - Array of previous output scripts for all inputs
|
|
137
|
+
* @param values - Array of previous output values for all inputs
|
|
138
|
+
* @returns Cache object to pass to hashForWitnessV1
|
|
139
|
+
*/
|
|
140
|
+
getTaprootHashCache(prevOutScripts: readonly Script[], values: readonly Satoshi[]): TaprootHashCache;
|
|
141
|
+
/**
|
|
142
|
+
* Hash transaction for signing a SegWit v0 (P2WPKH/P2WSH) input.
|
|
143
|
+
*
|
|
144
|
+
* @param inIndex - Index of the input being signed
|
|
145
|
+
* @param prevOutScript - The script of the output being spent
|
|
146
|
+
* @param value - Value of the output being spent (bigint satoshis)
|
|
147
|
+
* @param hashType - Signature hash type
|
|
148
|
+
* @returns 32-byte hash for signing
|
|
149
|
+
*/
|
|
150
|
+
hashForWitnessV0(inIndex: number, prevOutScript: Script, value: Satoshi, hashType: number): Bytes32;
|
|
151
|
+
/**
|
|
152
|
+
* Get the transaction hash.
|
|
153
|
+
*
|
|
154
|
+
* @param forWitness - If true, include witness data (wtxid)
|
|
155
|
+
* @returns 32-byte transaction hash
|
|
156
|
+
*/
|
|
157
|
+
getHash(forWitness?: boolean): Bytes32;
|
|
158
|
+
/**
|
|
159
|
+
* Get the transaction ID (txid) as a hex string.
|
|
160
|
+
*
|
|
161
|
+
* @returns Transaction ID in reversed hex format
|
|
162
|
+
*/
|
|
45
163
|
getId(): string;
|
|
46
|
-
|
|
164
|
+
/**
|
|
165
|
+
* Serialize the transaction to a Uint8Array buffer.
|
|
166
|
+
*
|
|
167
|
+
* @param buffer - Optional pre-allocated buffer
|
|
168
|
+
* @param initialOffset - Optional starting offset in buffer
|
|
169
|
+
* @returns Serialized transaction bytes
|
|
170
|
+
*/
|
|
171
|
+
toBuffer(buffer?: Uint8Array, initialOffset?: number): Uint8Array;
|
|
172
|
+
/**
|
|
173
|
+
* Serialize the transaction to a hex string.
|
|
174
|
+
*
|
|
175
|
+
* @returns Transaction as hex string
|
|
176
|
+
*/
|
|
47
177
|
toHex(): string;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Set the input script for a specific input.
|
|
180
|
+
*
|
|
181
|
+
* @param index - Input index
|
|
182
|
+
* @param scriptSig - The script to set
|
|
183
|
+
*/
|
|
184
|
+
setInputScript(index: number, scriptSig: Script): void;
|
|
185
|
+
/**
|
|
186
|
+
* Set the witness data for a specific input.
|
|
187
|
+
*
|
|
188
|
+
* @param index - Input index
|
|
189
|
+
* @param witness - Array of witness elements
|
|
190
|
+
*/
|
|
191
|
+
setWitness(index: number, witness: Uint8Array[]): void;
|
|
51
192
|
}
|
|
193
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
|