@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
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory pool using SharedArrayBuffer for zero-allocation operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides thread-safe memory allocation using Atomics for concurrent access.
|
|
5
|
+
* Ideal for parsing operations where temporary buffers are needed.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Thread-safe memory pool using SharedArrayBuffer.
|
|
11
|
+
*
|
|
12
|
+
* Allocates memory from a pre-allocated SharedArrayBuffer pool,
|
|
13
|
+
* eliminating garbage collection pressure from repeated allocations.
|
|
14
|
+
*
|
|
15
|
+
* Uses Atomics for thread-safe allocation when used with Workers.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { MemoryPool } from '@btc-vision/bitcoin';
|
|
20
|
+
*
|
|
21
|
+
* // Create a 1MB pool
|
|
22
|
+
* const pool = new MemoryPool(1024 * 1024);
|
|
23
|
+
*
|
|
24
|
+
* // Allocate memory for transaction parsing
|
|
25
|
+
* const txBuffer = pool.alloc(500);
|
|
26
|
+
* // ... use txBuffer ...
|
|
27
|
+
*
|
|
28
|
+
* // Reset pool when done (all allocations become invalid)
|
|
29
|
+
* pool.reset();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class MemoryPool {
|
|
33
|
+
#private;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new MemoryPool.
|
|
36
|
+
*
|
|
37
|
+
* @param size - Size of the pool in bytes (default 4MB)
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* import { MemoryPool } from '@btc-vision/bitcoin';
|
|
42
|
+
*
|
|
43
|
+
* // 4MB pool (default)
|
|
44
|
+
* const pool = new MemoryPool();
|
|
45
|
+
*
|
|
46
|
+
* // 16MB pool
|
|
47
|
+
* const largePool = new MemoryPool(16 * 1024 * 1024);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
constructor(size?: number);
|
|
51
|
+
/**
|
|
52
|
+
* Creates a MemoryPool from an existing SharedArrayBuffer.
|
|
53
|
+
*
|
|
54
|
+
* Useful for sharing a pool between Workers.
|
|
55
|
+
*
|
|
56
|
+
* @param buffer - Existing SharedArrayBuffer
|
|
57
|
+
* @returns A new MemoryPool instance wrapping the buffer
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* // Main thread
|
|
62
|
+
* const pool = new MemoryPool(1024 * 1024);
|
|
63
|
+
* worker.postMessage({ buffer: pool.sharedBuffer });
|
|
64
|
+
*
|
|
65
|
+
* // Worker thread
|
|
66
|
+
* self.onmessage = (e) => {
|
|
67
|
+
* const pool = MemoryPool.fromSharedBuffer(e.data.buffer);
|
|
68
|
+
* const mem = pool.alloc(100);
|
|
69
|
+
* };
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
static fromSharedBuffer(buffer: SharedArrayBuffer): MemoryPool;
|
|
73
|
+
/**
|
|
74
|
+
* Total capacity of the pool in bytes.
|
|
75
|
+
*/
|
|
76
|
+
get capacity(): number;
|
|
77
|
+
/**
|
|
78
|
+
* Current allocation offset (bytes used).
|
|
79
|
+
*
|
|
80
|
+
* Uses Atomics for thread-safe reading.
|
|
81
|
+
*/
|
|
82
|
+
get used(): number;
|
|
83
|
+
/**
|
|
84
|
+
* Remaining available bytes.
|
|
85
|
+
*/
|
|
86
|
+
get available(): number;
|
|
87
|
+
/**
|
|
88
|
+
* The underlying SharedArrayBuffer.
|
|
89
|
+
*
|
|
90
|
+
* Can be transferred to Workers for shared memory access.
|
|
91
|
+
*/
|
|
92
|
+
get sharedBuffer(): SharedArrayBuffer;
|
|
93
|
+
/**
|
|
94
|
+
* Allocates memory from the pool.
|
|
95
|
+
*
|
|
96
|
+
* Thread-safe using Atomics.add for concurrent access.
|
|
97
|
+
*
|
|
98
|
+
* @param size - Number of bytes to allocate
|
|
99
|
+
* @returns Uint8Array view into the pool
|
|
100
|
+
* @throws RangeError if pool is exhausted
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const pool = new MemoryPool(1024);
|
|
105
|
+
* const buf1 = pool.alloc(100); // First 100 bytes
|
|
106
|
+
* const buf2 = pool.alloc(200); // Next 200 bytes
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
alloc(size: number): Uint8Array;
|
|
110
|
+
/**
|
|
111
|
+
* Allocates memory and fills it with zeros.
|
|
112
|
+
*
|
|
113
|
+
* @param size - Number of bytes to allocate
|
|
114
|
+
* @returns Uint8Array view into the pool, filled with zeros
|
|
115
|
+
* @throws RangeError if pool is exhausted
|
|
116
|
+
*/
|
|
117
|
+
allocZeroed(size: number): Uint8Array;
|
|
118
|
+
/**
|
|
119
|
+
* Allocates memory for a specific typed array.
|
|
120
|
+
*
|
|
121
|
+
* @param length - Number of elements
|
|
122
|
+
* @param bytesPerElement - Size of each element in bytes
|
|
123
|
+
* @returns Uint8Array view (use constructor of target type on underlying buffer)
|
|
124
|
+
* @throws RangeError if pool is exhausted
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const pool = new MemoryPool(1024);
|
|
129
|
+
* const bytes = pool.allocTyped(10, 4); // 40 bytes for 10 Uint32
|
|
130
|
+
* const u32View = new Uint32Array(bytes.buffer, bytes.byteOffset, 10);
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
allocTyped(length: number, bytesPerElement: number): Uint8Array;
|
|
134
|
+
/**
|
|
135
|
+
* Resets the pool, making all memory available again.
|
|
136
|
+
*
|
|
137
|
+
* WARNING: All previously allocated views become invalid.
|
|
138
|
+
* Only call when you're sure no references are held.
|
|
139
|
+
*
|
|
140
|
+
* Thread-safe using Atomics.store.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* const pool = new MemoryPool(1024);
|
|
145
|
+
* const buf = pool.alloc(100);
|
|
146
|
+
* // ... use buf ...
|
|
147
|
+
* pool.reset(); // buf is now invalid!
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
reset(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Checks if the pool can accommodate an allocation.
|
|
153
|
+
*
|
|
154
|
+
* @param size - Number of bytes needed
|
|
155
|
+
* @returns True if allocation would succeed
|
|
156
|
+
*/
|
|
157
|
+
canAlloc(size: number): boolean;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Non-shared memory pool using regular ArrayBuffer.
|
|
161
|
+
*
|
|
162
|
+
* Use when SharedArrayBuffer is not available (e.g., browsers without
|
|
163
|
+
* proper COOP/COEP headers) or when thread-safety is not needed.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* import { SimpleMemoryPool } from '@btc-vision/bitcoin';
|
|
168
|
+
*
|
|
169
|
+
* const pool = new SimpleMemoryPool(1024 * 1024);
|
|
170
|
+
* const buf = pool.alloc(100);
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
export declare class SimpleMemoryPool {
|
|
174
|
+
#private;
|
|
175
|
+
/**
|
|
176
|
+
* Creates a new SimpleMemoryPool.
|
|
177
|
+
*
|
|
178
|
+
* @param size - Size of the pool in bytes
|
|
179
|
+
*/
|
|
180
|
+
constructor(size: number);
|
|
181
|
+
/**
|
|
182
|
+
* Total capacity of the pool in bytes.
|
|
183
|
+
*/
|
|
184
|
+
get capacity(): number;
|
|
185
|
+
/**
|
|
186
|
+
* Current allocation offset (bytes used).
|
|
187
|
+
*/
|
|
188
|
+
get used(): number;
|
|
189
|
+
/**
|
|
190
|
+
* Remaining available bytes.
|
|
191
|
+
*/
|
|
192
|
+
get available(): number;
|
|
193
|
+
/**
|
|
194
|
+
* Allocates memory from the pool.
|
|
195
|
+
*
|
|
196
|
+
* @param size - Number of bytes to allocate
|
|
197
|
+
* @returns Uint8Array view into the pool
|
|
198
|
+
* @throws RangeError if pool is exhausted
|
|
199
|
+
*/
|
|
200
|
+
alloc(size: number): Uint8Array;
|
|
201
|
+
/**
|
|
202
|
+
* Allocates memory and fills it with zeros.
|
|
203
|
+
*
|
|
204
|
+
* @param size - Number of bytes to allocate
|
|
205
|
+
* @returns Uint8Array view into the pool, filled with zeros
|
|
206
|
+
*/
|
|
207
|
+
allocZeroed(size: number): Uint8Array;
|
|
208
|
+
/**
|
|
209
|
+
* Resets the pool, making all memory available again.
|
|
210
|
+
*/
|
|
211
|
+
reset(): void;
|
|
212
|
+
/**
|
|
213
|
+
* Checks if the pool can accommodate an allocation.
|
|
214
|
+
*
|
|
215
|
+
* @param size - Number of bytes needed
|
|
216
|
+
* @returns True if allocation would succeed
|
|
217
|
+
*/
|
|
218
|
+
canAlloc(size: number): boolean;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=MemoryPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryPool.d.ts","sourceRoot":"","sources":["../../src/io/MemoryPool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAU;;IAsBnB;;;;;;;;;;;;;;;OAeG;gBACgB,IAAI,GAAE,MAAwB;IASjD;;;;;;;;;;;;;;;;;;;;OAoBG;WACW,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU;IAarE;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;OAIG;IACH,IAAW,YAAY,IAAI,iBAAiB,CAE3C;IAED;;;;;;;;;;;;;;;OAeG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAmBtC;;;;;;OAMG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAM5C;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU;IAItE;;;;;;;;;;;;;;;OAeG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;;IAIzB;;;;OAIG;gBACgB,IAAI,EAAE,MAAM;IAI/B;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAgBtC;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAM5C;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base64 encoding and decoding utilities.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Decodes a base64 string to a Uint8Array.
|
|
8
|
+
*
|
|
9
|
+
* @param base64 - The base64-encoded string to decode
|
|
10
|
+
* @returns Uint8Array containing the decoded bytes
|
|
11
|
+
*/
|
|
12
|
+
export declare function fromBase64(base64: string): Uint8Array;
|
|
13
|
+
//# sourceMappingURL=base64.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/io/base64.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOrD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hex encoding and decoding utilities.
|
|
3
|
+
*
|
|
4
|
+
* Direct implementations with zero dependencies and no wrappers.
|
|
5
|
+
* Optimized for performance with lookup tables.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Converts a Uint8Array to a lowercase hex string.
|
|
11
|
+
*
|
|
12
|
+
* @param bytes - The byte array to convert
|
|
13
|
+
* @returns Lowercase hex string representation
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { toHex } from '@btc-vision/bitcoin';
|
|
18
|
+
*
|
|
19
|
+
* const bytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef]);
|
|
20
|
+
* const hex = toHex(bytes);
|
|
21
|
+
* console.log(hex); // 'deadbeef'
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function toHex(bytes: Uint8Array): string;
|
|
25
|
+
/**
|
|
26
|
+
* Converts a hex string to a Uint8Array.
|
|
27
|
+
*
|
|
28
|
+
* Accepts hex strings with or without '0x' prefix.
|
|
29
|
+
* Case-insensitive (accepts both 'DEADBEEF' and 'deadbeef').
|
|
30
|
+
*
|
|
31
|
+
* @param hex - The hex string to convert
|
|
32
|
+
* @returns Uint8Array containing the decoded bytes
|
|
33
|
+
* @throws TypeError if hex string has odd length
|
|
34
|
+
* @throws TypeError if hex string contains invalid characters
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { fromHex, toHex } from '@btc-vision/bitcoin';
|
|
39
|
+
*
|
|
40
|
+
* const bytes = fromHex('deadbeef');
|
|
41
|
+
* console.log(bytes); // Uint8Array [222, 173, 190, 239]
|
|
42
|
+
*
|
|
43
|
+
* // Also works with 0x prefix
|
|
44
|
+
* const bytes2 = fromHex('0xCAFEBABE');
|
|
45
|
+
* console.log(toHex(bytes2)); // 'cafebabe'
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function fromHex(hex: string): Uint8Array;
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a string is valid hexadecimal.
|
|
51
|
+
*
|
|
52
|
+
* @param value - The string to check
|
|
53
|
+
* @returns True if the string is valid hex (even length, valid chars)
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* import { isHex } from '@btc-vision/bitcoin';
|
|
58
|
+
*
|
|
59
|
+
* isHex('deadbeef'); // true
|
|
60
|
+
* isHex('0xdeadbeef'); // true
|
|
61
|
+
* isHex('DEADBEEF'); // true
|
|
62
|
+
* isHex('deadbee'); // false (odd length)
|
|
63
|
+
* isHex('deadbeeg'); // false (invalid char)
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function isHex(value: string): boolean;
|
|
67
|
+
//# sourceMappingURL=hex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/io/hex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0BH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAM/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAsC/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAkB5C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-performance binary I/O module.
|
|
3
|
+
*
|
|
4
|
+
* This module provides efficient binary reading and writing with
|
|
5
|
+
* zero-allocation operations through stateful DataView instances.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import * as varuint from 'varuint-bitcoin';
|
|
10
|
+
export { BinaryReader } from './BinaryReader.js';
|
|
11
|
+
export { BinaryWriter, GrowableBinaryWriter } from './BinaryWriter.js';
|
|
12
|
+
export { toHex, fromHex, isHex } from './hex.js';
|
|
13
|
+
export { fromBase64 } from './base64.js';
|
|
14
|
+
export { concat, equals, compare, isZero, clone, reverse, reverseCopy, alloc, xor, fromUtf8, toUtf8, } from './utils.js';
|
|
15
|
+
export { MemoryPool, SimpleMemoryPool } from './MemoryPool.js';
|
|
16
|
+
export { varuint };
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/io/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACH,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,WAAW,EACX,KAAK,EACL,GAAG,EACH,QAAQ,EACR,MAAM,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure utility functions for Uint8Array operations.
|
|
3
|
+
*
|
|
4
|
+
* No DataView allocations. No wrappers.
|
|
5
|
+
* Optimized for performance with minimal allocations.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Concatenates multiple Uint8Arrays into a single Uint8Array.
|
|
11
|
+
*
|
|
12
|
+
* Allocates exactly once for the result array.
|
|
13
|
+
*
|
|
14
|
+
* @param arrays - Arrays to concatenate
|
|
15
|
+
* @returns A new Uint8Array containing all input arrays
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { concat, fromHex } from '@btc-vision/bitcoin';
|
|
20
|
+
*
|
|
21
|
+
* const a = fromHex('deadbeef');
|
|
22
|
+
* const b = fromHex('cafebabe');
|
|
23
|
+
* const result = concat([a, b]);
|
|
24
|
+
* // result contains deadbeefcafebabe
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function concat(arrays: readonly Uint8Array[]): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* Checks if two Uint8Arrays have identical contents.
|
|
30
|
+
*
|
|
31
|
+
* @param a - First array
|
|
32
|
+
* @param b - Second array
|
|
33
|
+
* @returns True if arrays have the same length and contents
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { equals, fromHex } from '@btc-vision/bitcoin';
|
|
38
|
+
*
|
|
39
|
+
* const a = fromHex('deadbeef');
|
|
40
|
+
* const b = fromHex('deadbeef');
|
|
41
|
+
* const c = fromHex('cafebabe');
|
|
42
|
+
*
|
|
43
|
+
* equals(a, b); // true
|
|
44
|
+
* equals(a, c); // false
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function equals(a: Uint8Array, b: Uint8Array): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Compares two Uint8Arrays lexicographically.
|
|
50
|
+
*
|
|
51
|
+
* @param a - First array
|
|
52
|
+
* @param b - Second array
|
|
53
|
+
* @returns Negative if a < b, positive if a > b, 0 if equal
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* import { compare, fromHex } from '@btc-vision/bitcoin';
|
|
58
|
+
*
|
|
59
|
+
* const a = fromHex('0001');
|
|
60
|
+
* const b = fromHex('0002');
|
|
61
|
+
*
|
|
62
|
+
* compare(a, b); // -1 (a < b)
|
|
63
|
+
* compare(b, a); // 1 (b > a)
|
|
64
|
+
* compare(a, a); // 0 (equal)
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function compare(a: Uint8Array, b: Uint8Array): number;
|
|
68
|
+
/**
|
|
69
|
+
* Checks if a Uint8Array contains only zero bytes.
|
|
70
|
+
*
|
|
71
|
+
* @param bytes - Array to check
|
|
72
|
+
* @returns True if all bytes are zero
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* import { isZero } from '@btc-vision/bitcoin';
|
|
77
|
+
*
|
|
78
|
+
* isZero(new Uint8Array(32)); // true
|
|
79
|
+
* isZero(new Uint8Array([0, 0, 1])); // false
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function isZero(bytes: Uint8Array): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a copy of a Uint8Array.
|
|
85
|
+
*
|
|
86
|
+
* @param bytes - Array to clone
|
|
87
|
+
* @returns A new Uint8Array with the same contents
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* import { clone, fromHex } from '@btc-vision/bitcoin';
|
|
92
|
+
*
|
|
93
|
+
* const original = fromHex('deadbeef');
|
|
94
|
+
* const copy = clone(original);
|
|
95
|
+
* copy[0] = 0; // Modifying copy doesn't affect original
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function clone(bytes: Uint8Array): Uint8Array;
|
|
99
|
+
/**
|
|
100
|
+
* Reverses a Uint8Array in place.
|
|
101
|
+
*
|
|
102
|
+
* @param bytes - Array to reverse
|
|
103
|
+
* @returns The same array, reversed
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* import { reverse, fromHex, toHex } from '@btc-vision/bitcoin';
|
|
108
|
+
*
|
|
109
|
+
* const bytes = fromHex('01020304');
|
|
110
|
+
* reverse(bytes);
|
|
111
|
+
* toHex(bytes); // '04030201'
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare function reverse(bytes: Uint8Array): Uint8Array;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a reversed copy of a Uint8Array.
|
|
117
|
+
*
|
|
118
|
+
* @param bytes - Array to copy and reverse
|
|
119
|
+
* @returns A new reversed Uint8Array
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* import { reverseCopy, fromHex, toHex } from '@btc-vision/bitcoin';
|
|
124
|
+
*
|
|
125
|
+
* const bytes = fromHex('01020304');
|
|
126
|
+
* const reversed = reverseCopy(bytes);
|
|
127
|
+
* toHex(reversed); // '04030201'
|
|
128
|
+
* toHex(bytes); // '01020304' (original unchanged)
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function reverseCopy(bytes: Uint8Array): Uint8Array;
|
|
132
|
+
/**
|
|
133
|
+
* Allocates a new Uint8Array of the specified size.
|
|
134
|
+
*
|
|
135
|
+
* @param size - Number of bytes to allocate
|
|
136
|
+
* @param fill - Optional fill value (default 0)
|
|
137
|
+
* @returns A new Uint8Array filled with the specified value
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* import { alloc, toHex } from '@btc-vision/bitcoin';
|
|
142
|
+
*
|
|
143
|
+
* const zeros = alloc(4); // 4 zero bytes
|
|
144
|
+
* const ones = alloc(4, 0xff); // 4 bytes of 0xff
|
|
145
|
+
* toHex(ones); // 'ffffffff'
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare function alloc(size: number, fill?: number): Uint8Array;
|
|
149
|
+
/**
|
|
150
|
+
* XORs two Uint8Arrays together.
|
|
151
|
+
*
|
|
152
|
+
* @param a - First array
|
|
153
|
+
* @param b - Second array
|
|
154
|
+
* @returns A new Uint8Array with the XOR result
|
|
155
|
+
* @throws TypeError if arrays have different lengths
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* import { xor, fromHex, toHex } from '@btc-vision/bitcoin';
|
|
160
|
+
*
|
|
161
|
+
* const a = fromHex('ff00ff00');
|
|
162
|
+
* const b = fromHex('0f0f0f0f');
|
|
163
|
+
* const result = xor(a, b);
|
|
164
|
+
* toHex(result); // 'f00ff00f'
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export declare function xor(a: Uint8Array, b: Uint8Array): Uint8Array;
|
|
168
|
+
/**
|
|
169
|
+
* Creates a Uint8Array from a UTF-8 string.
|
|
170
|
+
*
|
|
171
|
+
* @param str - String to encode
|
|
172
|
+
* @returns Uint8Array containing UTF-8 encoded bytes
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* import { fromUtf8, toHex } from '@btc-vision/bitcoin';
|
|
177
|
+
*
|
|
178
|
+
* const bytes = fromUtf8('hello');
|
|
179
|
+
* toHex(bytes); // '68656c6c6f'
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export declare function fromUtf8(str: string): Uint8Array;
|
|
183
|
+
/**
|
|
184
|
+
* Decodes a Uint8Array to a UTF-8 string.
|
|
185
|
+
*
|
|
186
|
+
* @param bytes - Uint8Array to decode
|
|
187
|
+
* @returns Decoded string
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* import { toUtf8, fromHex } from '@btc-vision/bitcoin';
|
|
192
|
+
*
|
|
193
|
+
* const bytes = fromHex('68656c6c6f');
|
|
194
|
+
* const str = toUtf8(bytes);
|
|
195
|
+
* // str is 'hello'
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export declare function toUtf8(bytes: Uint8Array): string;
|
|
199
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/io/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAehE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAU5D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAS5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAOjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAKnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAGrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAMzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,UAAU,CAMhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAS5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEhD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhD"}
|
package/browser/merkle.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the Merkle root of an array of Uint8Arrays using a specified digest function.
|
|
3
|
+
*
|
|
4
|
+
* @param values - The array of Uint8Arrays.
|
|
5
|
+
* @param digestFn - The digest function used to calculate the hash of the concatenated arrays.
|
|
6
|
+
* @returns The Merkle root as a Uint8Array.
|
|
7
|
+
* @throws {TypeError} If the values parameter is not an array or the digestFn parameter is not a function.
|
|
8
|
+
*/
|
|
9
|
+
export declare function fastMerkleRoot(values: Uint8Array[], digestFn: (b: Uint8Array) => Uint8Array): Uint8Array;
|
|
10
|
+
//# sourceMappingURL=merkle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,UAAU,EAAE,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,GACxC,UAAU,CAwBZ"}
|
package/browser/networks.d.ts
CHANGED
|
@@ -1,24 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a Bitcoin network configuration,including messagePrefix, bech32, bip32, pubKeyHash, scriptHash, wif.
|
|
3
|
+
* Support bitcoin、bitcoin testnet and bitcoin regtest.
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
1
6
|
export interface Bip32 {
|
|
2
|
-
public: number;
|
|
3
|
-
private: number;
|
|
7
|
+
readonly public: number;
|
|
8
|
+
readonly private: number;
|
|
4
9
|
}
|
|
5
10
|
export interface Network {
|
|
6
|
-
wif: number;
|
|
7
|
-
bip32: Bip32;
|
|
8
|
-
messagePrefix: string;
|
|
9
|
-
bech32: string;
|
|
10
|
-
bech32Opnet?: string;
|
|
11
|
-
pubKeyHash: number;
|
|
12
|
-
scriptHash: number;
|
|
11
|
+
readonly wif: number;
|
|
12
|
+
readonly bip32: Bip32;
|
|
13
|
+
readonly messagePrefix: string;
|
|
14
|
+
readonly bech32: string;
|
|
15
|
+
readonly bech32Opnet?: string;
|
|
16
|
+
readonly pubKeyHash: number;
|
|
17
|
+
readonly scriptHash: number;
|
|
13
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Represents the Bitcoin network configuration.
|
|
21
|
+
*/
|
|
14
22
|
export declare const bitcoin: Network;
|
|
23
|
+
/**
|
|
24
|
+
* Represents the regtest network configuration.
|
|
25
|
+
*/
|
|
15
26
|
export declare const regtest: Network;
|
|
27
|
+
/**
|
|
28
|
+
* Represents the testnet network configuration.
|
|
29
|
+
*/
|
|
16
30
|
export declare const testnet: Network;
|
|
31
|
+
/**
|
|
32
|
+
* Represents the Dogecoin mainnet configuration.
|
|
33
|
+
*
|
|
34
|
+
* Prefixes from:
|
|
35
|
+
* - P2PKH: 0x1e (30 decimal) - addresses start with 'D'
|
|
36
|
+
* - P2SH: 0x16 (22 decimal) - addresses often start with '9' or 'A'
|
|
37
|
+
* - WIF: 0x9e (158 decimal)
|
|
38
|
+
* - BIP32:
|
|
39
|
+
* - public: 0x02facafd
|
|
40
|
+
* - private: 0x02fac398
|
|
41
|
+
* Message prefix:
|
|
42
|
+
* - Dogecoin uses "\x19Dogecoin Signed Message:\n"
|
|
43
|
+
*/
|
|
17
44
|
export declare const dogecoin: Network;
|
|
45
|
+
/**
|
|
46
|
+
* Represents the Dogecoin testnet configuration.
|
|
47
|
+
*
|
|
48
|
+
* Prefixes from Dogecoin testnet chainparams:
|
|
49
|
+
* - P2PKH: 0x71 (113 decimal)
|
|
50
|
+
* - P2SH: 0xc4 (196 decimal)
|
|
51
|
+
* - WIF: 0xf1 (241 decimal)
|
|
52
|
+
* - BIP32:
|
|
53
|
+
* - public: 0x0432a9a8
|
|
54
|
+
* - private: 0x0432a243
|
|
55
|
+
* Message prefix:
|
|
56
|
+
* - Same as mainnet: "\x19Dogecoin Signed Message:\n"
|
|
57
|
+
*/
|
|
18
58
|
export declare const dogecoinTestnet: Network;
|
|
59
|
+
/**
|
|
60
|
+
* Litecoin mainnet configuration.
|
|
61
|
+
*/
|
|
19
62
|
export declare const litecoin: Network;
|
|
63
|
+
/**
|
|
64
|
+
* Litecoin testnet configuration.
|
|
65
|
+
*/
|
|
20
66
|
export declare const litecoinTestnet: Network;
|
|
67
|
+
/**
|
|
68
|
+
* Bitcoin Cash mainnet configuration (legacy).
|
|
69
|
+
* Note: Bitcoin Cash uses Cashaddr starting with 'q' or 'p',
|
|
70
|
+
* but we retain the legacy prefixes for compatibility.
|
|
71
|
+
*/
|
|
21
72
|
export declare const bitcoinCash: Network;
|
|
73
|
+
/**
|
|
74
|
+
* Bitcoin Cash testnet configuration (legacy).
|
|
75
|
+
*/
|
|
22
76
|
export declare const bitcoinCashTestnet: Network;
|
|
77
|
+
/**
|
|
78
|
+
* Dash mainnet configuration.
|
|
79
|
+
*/
|
|
23
80
|
export declare const dash: Network;
|
|
81
|
+
/**
|
|
82
|
+
* Dash testnet configuration.
|
|
83
|
+
*/
|
|
24
84
|
export declare const dashTestnet: Network;
|
|
85
|
+
//# sourceMappingURL=networks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../src/networks.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,MAAM,WAAW,KAAK;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,OAmCrB,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,OAWrB,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,OAWrB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,EAAE,OAWtB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,OAW7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,OAWtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAW7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,OAazB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAWhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,OAalB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OAWzB,CAAC"}
|
package/browser/opcodes.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opcodes.d.ts","sourceRoot":"","sources":["../src/opcodes.ts"],"names":[],"mappings":"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"}
|