@btc-vision/bitcoin 6.4.10 → 6.4.11
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/.babelrc +4 -4
- package/.mocharc.json +13 -13
- package/.prettierrc.json +12 -12
- package/CHANGELOG.md +403 -403
- package/CONTRIBUTING.md +83 -83
- package/LICENSE +21 -21
- package/README.md +201 -201
- package/cjs/package.json +3 -3
- package/gulpfile.js +42 -42
- package/package.json +150 -150
- package/src/bip66.ts +107 -107
- package/src/block.ts +233 -233
- package/src/bufferutils.ts +188 -188
- package/src/crypto.ts +108 -108
- package/src/ecc_lib.ts +94 -94
- package/src/hooks/AdvancedSignatureManager.ts +104 -104
- package/src/hooks/SignatureManager.ts +84 -84
- package/src/index.ts +105 -105
- package/src/merkle.ts +31 -31
- package/src/opcodes.ts +280 -280
- package/src/payments/bip341.ts +140 -140
- package/src/payments/embed.ts +61 -61
- package/src/payments/index.ts +172 -172
- package/src/payments/lazy.ts +28 -28
- package/src/payments/p2ms.ts +156 -156
- package/src/payments/p2op.ts +195 -195
- package/src/payments/p2pk.ts +93 -93
- package/src/payments/p2pkh.ts +214 -214
- package/src/payments/p2tr.ts +309 -309
- package/src/psbt/bip371.ts +441 -441
- package/src/push_data.ts +97 -97
- package/src/script.ts +247 -247
- package/src/script_number.ts +72 -72
- package/src/script_signature.ts +91 -91
- package/src/transaction.ts +656 -656
- package/test/address.spec.ts +155 -155
- package/test/bitcoin.core.spec.ts +212 -212
- package/test/block.spec.ts +171 -171
- package/test/bufferutils.spec.ts +450 -450
- package/test/crypto.spec.ts +49 -49
- package/test/fixtures/address.json +329 -329
- package/test/fixtures/block.json +148 -148
- package/test/fixtures/bufferutils.json +102 -102
- package/test/fixtures/core/README.md +26 -26
- package/test/fixtures/core/base58_encode_decode.json +50 -50
- package/test/fixtures/core/base58_keys_invalid.json +152 -152
- package/test/fixtures/core/base58_keys_valid.json +452 -452
- package/test/fixtures/core/blocks.json +27 -27
- package/test/fixtures/core/sig_canonical.json +7 -7
- package/test/fixtures/core/sig_noncanonical.json +33 -33
- package/test/fixtures/core/sighash.json +3505 -3505
- package/test/fixtures/core/tx_valid.json +2023 -2023
- package/test/fixtures/crypto.json +43 -43
- package/test/fixtures/ecdsa.json +217 -217
- package/test/fixtures/ecpair.json +141 -141
- package/test/fixtures/embed.json +108 -108
- package/test/fixtures/p2ms.json +434 -434
- package/test/fixtures/p2pk.json +179 -179
- package/test/fixtures/p2pkh.json +276 -276
- package/test/fixtures/p2sh.json +508 -508
- package/test/fixtures/p2tr.json +1198 -1198
- package/test/fixtures/p2wpkh.json +290 -290
- package/test/fixtures/p2wsh.json +489 -489
- package/test/fixtures/psbt.json +924 -924
- package/test/fixtures/script.json +465 -465
- package/test/fixtures/script_number.json +225 -225
- package/test/fixtures/signature.json +140 -140
- package/test/fixtures/transaction.json +916 -916
- package/test/integration/_regtest.ts +6 -6
- package/test/integration/addresses.spec.ts +142 -142
- package/test/integration/bip32.spec.ts +130 -130
- package/test/integration/blocks.spec.ts +28 -28
- package/test/integration/cltv.spec.ts +241 -241
- package/test/integration/csv.spec.ts +452 -452
- package/test/integration/payments.spec.ts +110 -110
- package/test/integration/taproot.spec.ts +663 -663
- package/test/integration/transactions.spec.ts +668 -668
- package/test/payments.spec.ts +114 -114
- package/test/payments.utils.ts +165 -165
- package/test/psbt.spec.ts +1285 -1285
- package/test/script.spec.ts +186 -186
- package/test/script_number.spec.ts +26 -26
- package/test/script_signature.spec.ts +66 -66
- package/test/transaction.spec.ts +337 -337
- package/test/ts-node-register.js +7 -7
- package/test/tsconfig.json +48 -48
- package/test/types.spec.ts +53 -53
- package/tsconfig.base.json +27 -27
- package/tsconfig.json +19 -19
- package/tsconfig.webpack.json +18 -18
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +0 -3
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +0 -962
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +0 -34
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +0 -24
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +0 -273
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +0 -2
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +0 -204
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +0 -138
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +0 -3
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +0 -28
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +0 -4
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +0 -12
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +0 -116
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +0 -46
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +0 -1080
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +0 -430
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +0 -27
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +0 -450
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +0 -965
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +0 -8
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +0 -5
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +0 -45
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1272
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -153
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -271
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -692
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -711
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -171
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -169
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -804
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1173
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1318
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -127
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -103
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -461
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -57
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2745
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3976
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2964
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -67
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1391
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -25
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3115
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -98
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -771
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1260
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -373
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1938
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -53
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -302
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3198
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +0 -3
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +0 -177
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +0 -23
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -108
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -252
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -825
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -553
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +0 -120
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +0 -11
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +0 -261
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +0 -250
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +0 -227
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +0 -15
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +0 -328
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +0 -150
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +0 -39
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +0 -63
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +0 -310
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +0 -590
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +0 -415
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +0 -26
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +0 -168
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +0 -188
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +0 -146
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +0 -12
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +0 -43
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +0 -81
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +0 -21
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +0 -51
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +0 -40
- package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +0 -39
- package/browser/ops.d.ts +0 -126
- package/build/ops.d.ts +0 -126
- package/build/ops.js +0 -127
- package/coverage/tmp/coverage-31752-1735543485354-0.json +0 -1
- package/coverage/tmp/coverage-59920-1735543484555-0.json +0 -1
- package/coverage/tmp/coverage-66252-1735543483919-0.json +0 -1
- package/coverage/tmp/coverage-68440-1735543485236-0.json +0 -1
- package/coverage/tmp/coverage-70588-1735543484426-0.json +0 -1
- package/coverage/tmp/coverage-79292-1735543485296-0.json +0 -1
- package/coverage/tmp/coverage-80212-1735543483980-0.json +0 -1
package/src/payments/index.ts
CHANGED
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represents a payment object, which is used to create a payment.
|
|
3
|
-
*
|
|
4
|
-
* Supports P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
|
|
5
|
-
*
|
|
6
|
-
* @packageDocumentation
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { Network } from '../networks';
|
|
10
|
-
import { Taptree } from '../types';
|
|
11
|
-
|
|
12
|
-
export * from './bip341.js';
|
|
13
|
-
export * from './embed.js';
|
|
14
|
-
export * from './lazy.js';
|
|
15
|
-
export * from './p2ms.js';
|
|
16
|
-
export * from './p2pk.js';
|
|
17
|
-
export * from './p2pkh.js';
|
|
18
|
-
export * from './p2sh.js';
|
|
19
|
-
export * from './p2tr.js';
|
|
20
|
-
export * from './p2wpkh.js';
|
|
21
|
-
export * from './p2wsh.js';
|
|
22
|
-
export * from './p2op.js';
|
|
23
|
-
|
|
24
|
-
export enum PaymentType {
|
|
25
|
-
P2PK = 'p2pk',
|
|
26
|
-
P2PKH = 'p2pkh',
|
|
27
|
-
P2SH = 'p2sh',
|
|
28
|
-
P2MS = 'p2ms',
|
|
29
|
-
P2WPKH = 'p2wpkh',
|
|
30
|
-
P2WSH = 'p2wsh',
|
|
31
|
-
P2TR = 'p2tr',
|
|
32
|
-
P2OP = 'p2op',
|
|
33
|
-
Embed = 'embed',
|
|
34
|
-
ScriptRedeem = 'scriptRedeem',
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface BasePayment {
|
|
38
|
-
/** Convenience label, also the discriminant for the union. */
|
|
39
|
-
name?: PaymentType;
|
|
40
|
-
/** Network parameters (mainnet if omitted). */
|
|
41
|
-
network?: Network;
|
|
42
|
-
/** Fully-assembled scriptPubKey (if already known). */
|
|
43
|
-
output?: Buffer;
|
|
44
|
-
/** Raw scriptSig (legacy script types only). */
|
|
45
|
-
input?: Buffer;
|
|
46
|
-
/** Human-readable address (if already known). */
|
|
47
|
-
address?: string;
|
|
48
|
-
/** Segwit stack (empty for legacy). */
|
|
49
|
-
witness?: Buffer[];
|
|
50
|
-
|
|
51
|
-
/** Script template for P2SH, P2WSH, P2TR, etc. */
|
|
52
|
-
redeem?: ScriptRedeem;
|
|
53
|
-
|
|
54
|
-
/** Non-standard options used by some wallets. */
|
|
55
|
-
useHybrid?: boolean;
|
|
56
|
-
useUncompressed?: boolean;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** Helper used by redeeming script-template outputs (P2SH, P2WSH). */
|
|
60
|
-
export interface ScriptRedeem extends BasePayment {
|
|
61
|
-
output?: Buffer; // script template
|
|
62
|
-
redeemVersion?: number; // tapscript leaves etc.
|
|
63
|
-
network?: Network; // network parameters (mainnet if omitted)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export interface P2PKPayment extends BasePayment {
|
|
67
|
-
name: PaymentType.P2PK;
|
|
68
|
-
pubkey?: Buffer;
|
|
69
|
-
/** DER-encoded sig – empty until signed. */
|
|
70
|
-
signature?: Buffer;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export interface P2PKHPayment extends BasePayment {
|
|
74
|
-
name: PaymentType.P2PKH;
|
|
75
|
-
/** RIPEMD-160(SHA-256(pubkey)) – 20 bytes. */
|
|
76
|
-
hash?: Buffer;
|
|
77
|
-
pubkey?: Buffer;
|
|
78
|
-
signature?: Buffer;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export interface P2SHPayment extends BasePayment {
|
|
82
|
-
name: PaymentType.P2SH;
|
|
83
|
-
/** Hash160 of a redeem script. */
|
|
84
|
-
hash?: Buffer;
|
|
85
|
-
|
|
86
|
-
/** The entire signature stack when spending a P2SH (non-segwit). */
|
|
87
|
-
signatures?: Buffer[];
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface P2MSPayment extends BasePayment {
|
|
91
|
-
name: PaymentType.P2MS;
|
|
92
|
-
/** M-of-N parameters. */
|
|
93
|
-
m?: number;
|
|
94
|
-
n?: number;
|
|
95
|
-
pubkeys?: Buffer[];
|
|
96
|
-
signatures?: Buffer[];
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export interface P2WPKHPayment extends BasePayment {
|
|
100
|
-
name: PaymentType.P2WPKH;
|
|
101
|
-
/** 20-byte witness program. */
|
|
102
|
-
hash?: Buffer;
|
|
103
|
-
pubkey?: Buffer;
|
|
104
|
-
signature?: Buffer;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export interface P2WSHPayment extends BasePayment {
|
|
108
|
-
name: PaymentType.P2WSH;
|
|
109
|
-
/** 32-byte witness program. */
|
|
110
|
-
hash?: Buffer;
|
|
111
|
-
redeem?: ScriptRedeem;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export interface P2TRPayment extends BasePayment {
|
|
115
|
-
name: PaymentType.P2TR;
|
|
116
|
-
/** x-only pubkey that commits to the tree. */
|
|
117
|
-
pubkey?: Buffer;
|
|
118
|
-
/** Internal (untweaked) x-only pubkey. */
|
|
119
|
-
internalPubkey?: Buffer;
|
|
120
|
-
/** Merkle-root tweak, present when a script path exists. */
|
|
121
|
-
hash?: Buffer;
|
|
122
|
-
/** Full taptree description (optional, dev-side). */
|
|
123
|
-
scriptTree?: Taptree;
|
|
124
|
-
/** Key-path sig or leading stack elem. */
|
|
125
|
-
signature?: Buffer;
|
|
126
|
-
|
|
127
|
-
redeemVersion?: number; // tapscript leaves etc.
|
|
128
|
-
redeem?: ScriptRedeem;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export interface P2OPPayment extends BasePayment {
|
|
132
|
-
name: PaymentType.P2OP;
|
|
133
|
-
/** <deploymentVersion || HASH160(payload)> (2–40 bytes). */
|
|
134
|
-
program?: Buffer;
|
|
135
|
-
deploymentVersion: number | undefined;
|
|
136
|
-
/** Convenience slice of `program` (20 bytes for current spec). */
|
|
137
|
-
hash160?: Buffer;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/** OP_RETURN data-carrying output */
|
|
141
|
-
export interface EmbedPayment extends BasePayment {
|
|
142
|
-
name: PaymentType.Embed;
|
|
143
|
-
/** Raw pushed chunks after OP_RETURN. */
|
|
144
|
-
data: Buffer[];
|
|
145
|
-
// `output` is automatically derived from `data` (or vice-versa)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export type Payment =
|
|
149
|
-
| P2PKPayment
|
|
150
|
-
| P2PKHPayment
|
|
151
|
-
| P2SHPayment
|
|
152
|
-
| P2MSPayment
|
|
153
|
-
| P2WPKHPayment
|
|
154
|
-
| P2WSHPayment
|
|
155
|
-
| P2TRPayment
|
|
156
|
-
| P2OPPayment
|
|
157
|
-
| EmbedPayment
|
|
158
|
-
| ScriptRedeem;
|
|
159
|
-
|
|
160
|
-
export type PaymentCreator = <T extends BasePayment>(a: T, opts?: PaymentOpts) => T;
|
|
161
|
-
|
|
162
|
-
export interface PaymentOpts {
|
|
163
|
-
validate?: boolean;
|
|
164
|
-
allowIncomplete?: boolean;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export type StackElement = Buffer | number;
|
|
168
|
-
export type Stack = StackElement[];
|
|
169
|
-
export type StackFunction = () => Stack;
|
|
170
|
-
|
|
171
|
-
// TODO
|
|
172
|
-
// witness commitment
|
|
1
|
+
/**
|
|
2
|
+
* Represents a payment object, which is used to create a payment.
|
|
3
|
+
*
|
|
4
|
+
* Supports P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Network } from '../networks';
|
|
10
|
+
import { Taptree } from '../types';
|
|
11
|
+
|
|
12
|
+
export * from './bip341.js';
|
|
13
|
+
export * from './embed.js';
|
|
14
|
+
export * from './lazy.js';
|
|
15
|
+
export * from './p2ms.js';
|
|
16
|
+
export * from './p2pk.js';
|
|
17
|
+
export * from './p2pkh.js';
|
|
18
|
+
export * from './p2sh.js';
|
|
19
|
+
export * from './p2tr.js';
|
|
20
|
+
export * from './p2wpkh.js';
|
|
21
|
+
export * from './p2wsh.js';
|
|
22
|
+
export * from './p2op.js';
|
|
23
|
+
|
|
24
|
+
export enum PaymentType {
|
|
25
|
+
P2PK = 'p2pk',
|
|
26
|
+
P2PKH = 'p2pkh',
|
|
27
|
+
P2SH = 'p2sh',
|
|
28
|
+
P2MS = 'p2ms',
|
|
29
|
+
P2WPKH = 'p2wpkh',
|
|
30
|
+
P2WSH = 'p2wsh',
|
|
31
|
+
P2TR = 'p2tr',
|
|
32
|
+
P2OP = 'p2op',
|
|
33
|
+
Embed = 'embed',
|
|
34
|
+
ScriptRedeem = 'scriptRedeem',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface BasePayment {
|
|
38
|
+
/** Convenience label, also the discriminant for the union. */
|
|
39
|
+
name?: PaymentType;
|
|
40
|
+
/** Network parameters (mainnet if omitted). */
|
|
41
|
+
network?: Network;
|
|
42
|
+
/** Fully-assembled scriptPubKey (if already known). */
|
|
43
|
+
output?: Buffer;
|
|
44
|
+
/** Raw scriptSig (legacy script types only). */
|
|
45
|
+
input?: Buffer;
|
|
46
|
+
/** Human-readable address (if already known). */
|
|
47
|
+
address?: string;
|
|
48
|
+
/** Segwit stack (empty for legacy). */
|
|
49
|
+
witness?: Buffer[];
|
|
50
|
+
|
|
51
|
+
/** Script template for P2SH, P2WSH, P2TR, etc. */
|
|
52
|
+
redeem?: ScriptRedeem;
|
|
53
|
+
|
|
54
|
+
/** Non-standard options used by some wallets. */
|
|
55
|
+
useHybrid?: boolean;
|
|
56
|
+
useUncompressed?: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Helper used by redeeming script-template outputs (P2SH, P2WSH). */
|
|
60
|
+
export interface ScriptRedeem extends BasePayment {
|
|
61
|
+
output?: Buffer; // script template
|
|
62
|
+
redeemVersion?: number; // tapscript leaves etc.
|
|
63
|
+
network?: Network; // network parameters (mainnet if omitted)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface P2PKPayment extends BasePayment {
|
|
67
|
+
name: PaymentType.P2PK;
|
|
68
|
+
pubkey?: Buffer;
|
|
69
|
+
/** DER-encoded sig – empty until signed. */
|
|
70
|
+
signature?: Buffer;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface P2PKHPayment extends BasePayment {
|
|
74
|
+
name: PaymentType.P2PKH;
|
|
75
|
+
/** RIPEMD-160(SHA-256(pubkey)) – 20 bytes. */
|
|
76
|
+
hash?: Buffer;
|
|
77
|
+
pubkey?: Buffer;
|
|
78
|
+
signature?: Buffer;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface P2SHPayment extends BasePayment {
|
|
82
|
+
name: PaymentType.P2SH;
|
|
83
|
+
/** Hash160 of a redeem script. */
|
|
84
|
+
hash?: Buffer;
|
|
85
|
+
|
|
86
|
+
/** The entire signature stack when spending a P2SH (non-segwit). */
|
|
87
|
+
signatures?: Buffer[];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface P2MSPayment extends BasePayment {
|
|
91
|
+
name: PaymentType.P2MS;
|
|
92
|
+
/** M-of-N parameters. */
|
|
93
|
+
m?: number;
|
|
94
|
+
n?: number;
|
|
95
|
+
pubkeys?: Buffer[];
|
|
96
|
+
signatures?: Buffer[];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface P2WPKHPayment extends BasePayment {
|
|
100
|
+
name: PaymentType.P2WPKH;
|
|
101
|
+
/** 20-byte witness program. */
|
|
102
|
+
hash?: Buffer;
|
|
103
|
+
pubkey?: Buffer;
|
|
104
|
+
signature?: Buffer;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface P2WSHPayment extends BasePayment {
|
|
108
|
+
name: PaymentType.P2WSH;
|
|
109
|
+
/** 32-byte witness program. */
|
|
110
|
+
hash?: Buffer;
|
|
111
|
+
redeem?: ScriptRedeem;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface P2TRPayment extends BasePayment {
|
|
115
|
+
name: PaymentType.P2TR;
|
|
116
|
+
/** x-only pubkey that commits to the tree. */
|
|
117
|
+
pubkey?: Buffer;
|
|
118
|
+
/** Internal (untweaked) x-only pubkey. */
|
|
119
|
+
internalPubkey?: Buffer;
|
|
120
|
+
/** Merkle-root tweak, present when a script path exists. */
|
|
121
|
+
hash?: Buffer;
|
|
122
|
+
/** Full taptree description (optional, dev-side). */
|
|
123
|
+
scriptTree?: Taptree;
|
|
124
|
+
/** Key-path sig or leading stack elem. */
|
|
125
|
+
signature?: Buffer;
|
|
126
|
+
|
|
127
|
+
redeemVersion?: number; // tapscript leaves etc.
|
|
128
|
+
redeem?: ScriptRedeem;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface P2OPPayment extends BasePayment {
|
|
132
|
+
name: PaymentType.P2OP;
|
|
133
|
+
/** <deploymentVersion || HASH160(payload)> (2–40 bytes). */
|
|
134
|
+
program?: Buffer;
|
|
135
|
+
deploymentVersion: number | undefined;
|
|
136
|
+
/** Convenience slice of `program` (20 bytes for current spec). */
|
|
137
|
+
hash160?: Buffer;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** OP_RETURN data-carrying output */
|
|
141
|
+
export interface EmbedPayment extends BasePayment {
|
|
142
|
+
name: PaymentType.Embed;
|
|
143
|
+
/** Raw pushed chunks after OP_RETURN. */
|
|
144
|
+
data: Buffer[];
|
|
145
|
+
// `output` is automatically derived from `data` (or vice-versa)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export type Payment =
|
|
149
|
+
| P2PKPayment
|
|
150
|
+
| P2PKHPayment
|
|
151
|
+
| P2SHPayment
|
|
152
|
+
| P2MSPayment
|
|
153
|
+
| P2WPKHPayment
|
|
154
|
+
| P2WSHPayment
|
|
155
|
+
| P2TRPayment
|
|
156
|
+
| P2OPPayment
|
|
157
|
+
| EmbedPayment
|
|
158
|
+
| ScriptRedeem;
|
|
159
|
+
|
|
160
|
+
export type PaymentCreator = <T extends BasePayment>(a: T, opts?: PaymentOpts) => T;
|
|
161
|
+
|
|
162
|
+
export interface PaymentOpts {
|
|
163
|
+
validate?: boolean;
|
|
164
|
+
allowIncomplete?: boolean;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export type StackElement = Buffer | number;
|
|
168
|
+
export type Stack = StackElement[];
|
|
169
|
+
export type StackFunction = () => Stack;
|
|
170
|
+
|
|
171
|
+
// TODO
|
|
172
|
+
// witness commitment
|
package/src/payments/lazy.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
export function prop<T extends {}>(object: T, name: string, f: () => T[keyof T]): void {
|
|
2
|
-
Object.defineProperty(object, name, {
|
|
3
|
-
configurable: true,
|
|
4
|
-
enumerable: true,
|
|
5
|
-
get(): unknown {
|
|
6
|
-
const _value = f.call(this);
|
|
7
|
-
this[name] = _value;
|
|
8
|
-
return _value;
|
|
9
|
-
},
|
|
10
|
-
set(_value: unknown): void {
|
|
11
|
-
Object.defineProperty(this, name, {
|
|
12
|
-
configurable: true,
|
|
13
|
-
enumerable: true,
|
|
14
|
-
value: _value,
|
|
15
|
-
writable: true,
|
|
16
|
-
});
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function value<T>(f: () => T): () => T {
|
|
22
|
-
let _value: T;
|
|
23
|
-
return (): T => {
|
|
24
|
-
if (_value !== undefined) return _value;
|
|
25
|
-
_value = f();
|
|
26
|
-
return _value;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
1
|
+
export function prop<T extends {}>(object: T, name: string, f: () => T[keyof T]): void {
|
|
2
|
+
Object.defineProperty(object, name, {
|
|
3
|
+
configurable: true,
|
|
4
|
+
enumerable: true,
|
|
5
|
+
get(): unknown {
|
|
6
|
+
const _value = f.call(this);
|
|
7
|
+
this[name] = _value;
|
|
8
|
+
return _value;
|
|
9
|
+
},
|
|
10
|
+
set(_value: unknown): void {
|
|
11
|
+
Object.defineProperty(this, name, {
|
|
12
|
+
configurable: true,
|
|
13
|
+
enumerable: true,
|
|
14
|
+
value: _value,
|
|
15
|
+
writable: true,
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function value<T>(f: () => T): () => T {
|
|
22
|
+
let _value: T;
|
|
23
|
+
return (): T => {
|
|
24
|
+
if (_value !== undefined) return _value;
|
|
25
|
+
_value = f();
|
|
26
|
+
return _value;
|
|
27
|
+
};
|
|
28
|
+
}
|