@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/test/fixtures/p2ms.json
CHANGED
|
@@ -1,434 +1,434 @@
|
|
|
1
|
-
{
|
|
2
|
-
"valid": [
|
|
3
|
-
{
|
|
4
|
-
"description": "output from output",
|
|
5
|
-
"arguments": {
|
|
6
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG"
|
|
7
|
-
},
|
|
8
|
-
"options": {},
|
|
9
|
-
"expected": {
|
|
10
|
-
"m": 2,
|
|
11
|
-
"n": 2,
|
|
12
|
-
"name": "p2ms(2 of 2)",
|
|
13
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
14
|
-
"pubkeys": [
|
|
15
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
16
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
17
|
-
],
|
|
18
|
-
"signatures": null,
|
|
19
|
-
"input": null,
|
|
20
|
-
"witness": null
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"description": "output from m/pubkeys",
|
|
25
|
-
"arguments": {
|
|
26
|
-
"m": 1,
|
|
27
|
-
"pubkeys": [
|
|
28
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
29
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"expected": {
|
|
33
|
-
"m": 1,
|
|
34
|
-
"n": 2,
|
|
35
|
-
"name": "p2ms(1 of 2)",
|
|
36
|
-
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
37
|
-
"pubkeys": [
|
|
38
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
39
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
40
|
-
],
|
|
41
|
-
"signatures": null,
|
|
42
|
-
"input": null,
|
|
43
|
-
"witness": null
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"description": "input/output from m/pubkeys/signatures",
|
|
48
|
-
"arguments": {
|
|
49
|
-
"m": 2,
|
|
50
|
-
"pubkeys": [
|
|
51
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
52
|
-
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
53
|
-
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
54
|
-
],
|
|
55
|
-
"signatures": [
|
|
56
|
-
"300602010002010001",
|
|
57
|
-
"300602010102010001"
|
|
58
|
-
]
|
|
59
|
-
},
|
|
60
|
-
"expected": {
|
|
61
|
-
"m": 2,
|
|
62
|
-
"n": 3,
|
|
63
|
-
"name": "p2ms(2 of 3)",
|
|
64
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
65
|
-
"pubkeys": [
|
|
66
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
67
|
-
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
68
|
-
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
69
|
-
],
|
|
70
|
-
"signatures": [
|
|
71
|
-
"300602010002010001",
|
|
72
|
-
"300602010102010001"
|
|
73
|
-
],
|
|
74
|
-
"input": "OP_0 300602010002010001 300602010102010001",
|
|
75
|
-
"witness": []
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"description": "input/output from output/signatures",
|
|
80
|
-
"arguments": {
|
|
81
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
82
|
-
"signatures": [
|
|
83
|
-
"300602010002010001",
|
|
84
|
-
"300602010102010001"
|
|
85
|
-
]
|
|
86
|
-
},
|
|
87
|
-
"expected": {
|
|
88
|
-
"m": 2,
|
|
89
|
-
"n": 3,
|
|
90
|
-
"name": "p2ms(2 of 3)",
|
|
91
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
92
|
-
"pubkeys": [
|
|
93
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
94
|
-
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
95
|
-
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
96
|
-
],
|
|
97
|
-
"signatures": [
|
|
98
|
-
"300602010002010001",
|
|
99
|
-
"300602010102010001"
|
|
100
|
-
],
|
|
101
|
-
"input": "OP_0 300602010002010001 300602010102010001",
|
|
102
|
-
"witness": []
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"description": "input/output from input/output",
|
|
107
|
-
"arguments": {
|
|
108
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
109
|
-
"input": "OP_0 300602010002010001 300602010102010001"
|
|
110
|
-
},
|
|
111
|
-
"expected": {
|
|
112
|
-
"m": 2,
|
|
113
|
-
"n": 3,
|
|
114
|
-
"name": "p2ms(2 of 3)",
|
|
115
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
116
|
-
"pubkeys": [
|
|
117
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
118
|
-
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
119
|
-
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
120
|
-
],
|
|
121
|
-
"signatures": [
|
|
122
|
-
"300602010002010001",
|
|
123
|
-
"300602010102010001"
|
|
124
|
-
],
|
|
125
|
-
"input": "OP_0 300602010002010001 300602010102010001",
|
|
126
|
-
"witness": []
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"description": "input/output from input/output, even if incomplete",
|
|
131
|
-
"arguments": {
|
|
132
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
133
|
-
"input": "OP_0 OP_0 300602010102010001"
|
|
134
|
-
},
|
|
135
|
-
"options": {
|
|
136
|
-
"allowIncomplete": true
|
|
137
|
-
},
|
|
138
|
-
"expected": {
|
|
139
|
-
"m": 2,
|
|
140
|
-
"n": 2,
|
|
141
|
-
"name": "p2ms(2 of 2)",
|
|
142
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
143
|
-
"pubkeys": [
|
|
144
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
145
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
146
|
-
],
|
|
147
|
-
"signatures": [
|
|
148
|
-
0,
|
|
149
|
-
"300602010102010001"
|
|
150
|
-
],
|
|
151
|
-
"input": "OP_0 OP_0 300602010102010001",
|
|
152
|
-
"witness": []
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"description": "input/output from output/signatures, even if incomplete",
|
|
157
|
-
"arguments": {
|
|
158
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
159
|
-
"signatures": [
|
|
160
|
-
0,
|
|
161
|
-
"300602010102010001"
|
|
162
|
-
]
|
|
163
|
-
},
|
|
164
|
-
"options": {
|
|
165
|
-
"allowIncomplete": true
|
|
166
|
-
},
|
|
167
|
-
"expected": {
|
|
168
|
-
"m": 2,
|
|
169
|
-
"n": 2,
|
|
170
|
-
"name": "p2ms(2 of 2)",
|
|
171
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
172
|
-
"pubkeys": [
|
|
173
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
174
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
175
|
-
],
|
|
176
|
-
"signatures": [
|
|
177
|
-
0,
|
|
178
|
-
"300602010102010001"
|
|
179
|
-
],
|
|
180
|
-
"input": "OP_0 OP_0 300602010102010001",
|
|
181
|
-
"witness": []
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
],
|
|
185
|
-
"invalid": [
|
|
186
|
-
{
|
|
187
|
-
"exception": "Not enough data",
|
|
188
|
-
"arguments": {}
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
"exception": "Not enough data",
|
|
192
|
-
"arguments": {
|
|
193
|
-
"m": 2
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"exception": "Not enough data",
|
|
198
|
-
"arguments": {
|
|
199
|
-
"pubkeys": [
|
|
200
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
201
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
202
|
-
]
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
"description": "Non OP_INT chunk (m)",
|
|
207
|
-
"exception": "Output is invalid",
|
|
208
|
-
"arguments": {
|
|
209
|
-
"output": "OP_RESERVED"
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
"description": "Non OP_INT chunk (n)",
|
|
214
|
-
"exception": "Output is invalid",
|
|
215
|
-
"arguments": {
|
|
216
|
-
"output": "OP_1 OP_RESERVED"
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"description": "Missing OP_CHECKMULTISIG",
|
|
221
|
-
"exception": "Output is invalid",
|
|
222
|
-
"arguments": {
|
|
223
|
-
"output": "OP_1 OP_2 OP_RESERVED"
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
"description": "m is 0",
|
|
228
|
-
"exception": "Output is invalid",
|
|
229
|
-
"arguments": {
|
|
230
|
-
"output": "OP_0 OP_2 OP_CHECKMULTISIG"
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
"description": "n is 0 (m > n)",
|
|
235
|
-
"exception": "Output is invalid",
|
|
236
|
-
"arguments": {
|
|
237
|
-
"output": "OP_2 OP_0 OP_CHECKMULTISIG"
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
"description": "m > n",
|
|
242
|
-
"exception": "Output is invalid",
|
|
243
|
-
"arguments": {
|
|
244
|
-
"output": "OP_3 OP_2 OP_CHECKMULTISIG"
|
|
245
|
-
}
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
"description": "n !== output pubkeys",
|
|
249
|
-
"exception": "Output is invalid",
|
|
250
|
-
"options": {},
|
|
251
|
-
"arguments": {
|
|
252
|
-
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_2 OP_CHECKMULTISIG"
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"description": "Non-canonical output public key",
|
|
257
|
-
"exception": "Output is invalid",
|
|
258
|
-
"arguments": {
|
|
259
|
-
"output": "OP_1 ffff OP_1 OP_CHECKMULTISIG"
|
|
260
|
-
}
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
"exception": "n mismatch",
|
|
264
|
-
"arguments": {
|
|
265
|
-
"n": 2,
|
|
266
|
-
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_1 OP_CHECKMULTISIG"
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
"exception": "m mismatch",
|
|
271
|
-
"arguments": {
|
|
272
|
-
"m": 2,
|
|
273
|
-
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_1 OP_CHECKMULTISIG"
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"exception": "Pubkeys mismatch",
|
|
278
|
-
"options": {},
|
|
279
|
-
"arguments": {
|
|
280
|
-
"pubkeys": [
|
|
281
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
282
|
-
],
|
|
283
|
-
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000002 OP_1 OP_CHECKMULTISIG"
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
"exception": "Pubkey count mismatch",
|
|
288
|
-
"arguments": {
|
|
289
|
-
"m": 2,
|
|
290
|
-
"n": 3,
|
|
291
|
-
"pubkeys": [
|
|
292
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
293
|
-
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
294
|
-
]
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
"exception": "Pubkey count cannot be less than m",
|
|
299
|
-
"arguments": {
|
|
300
|
-
"m": 4,
|
|
301
|
-
"pubkeys": [
|
|
302
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
303
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
304
|
-
]
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
"exception": "Not enough signatures provided",
|
|
309
|
-
"arguments": {
|
|
310
|
-
"m": 2,
|
|
311
|
-
"pubkeys": [
|
|
312
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
313
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
314
|
-
],
|
|
315
|
-
"signatures": [
|
|
316
|
-
"300602010002010001"
|
|
317
|
-
]
|
|
318
|
-
}
|
|
319
|
-
},
|
|
320
|
-
{
|
|
321
|
-
"exception": "Signature mismatch",
|
|
322
|
-
"arguments": {
|
|
323
|
-
"m": 1,
|
|
324
|
-
"pubkeys": [
|
|
325
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
326
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
327
|
-
],
|
|
328
|
-
"signatures": [
|
|
329
|
-
"300602010002010001"
|
|
330
|
-
],
|
|
331
|
-
"input": "OP_0 300602010002010101"
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
"exception": "Too many signatures provided",
|
|
336
|
-
"arguments": {
|
|
337
|
-
"m": 2,
|
|
338
|
-
"pubkeys": [
|
|
339
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
340
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
341
|
-
],
|
|
342
|
-
"signatures": [
|
|
343
|
-
"300602010002010001",
|
|
344
|
-
"300602010002010001",
|
|
345
|
-
"300602010002010001"
|
|
346
|
-
]
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"description": "Missing OP_0",
|
|
351
|
-
"exception": "Input is invalid",
|
|
352
|
-
"options": {},
|
|
353
|
-
"arguments": {
|
|
354
|
-
"m": 2,
|
|
355
|
-
"pubkeys": [
|
|
356
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
357
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
358
|
-
],
|
|
359
|
-
"input": "OP_RESERVED"
|
|
360
|
-
}
|
|
361
|
-
},
|
|
362
|
-
{
|
|
363
|
-
"exception": "Input has invalid signature\\(s\\)",
|
|
364
|
-
"arguments": {
|
|
365
|
-
"m": 1,
|
|
366
|
-
"pubkeys": [
|
|
367
|
-
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
368
|
-
],
|
|
369
|
-
"input": "OP_0 ffffffffffffffff"
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
],
|
|
373
|
-
"dynamic": {
|
|
374
|
-
"depends": {
|
|
375
|
-
"m": [
|
|
376
|
-
"output"
|
|
377
|
-
],
|
|
378
|
-
"n": [
|
|
379
|
-
"output",
|
|
380
|
-
[
|
|
381
|
-
"m",
|
|
382
|
-
"pubkeys"
|
|
383
|
-
]
|
|
384
|
-
],
|
|
385
|
-
"output": [
|
|
386
|
-
"output",
|
|
387
|
-
[
|
|
388
|
-
"m",
|
|
389
|
-
"pubkeys"
|
|
390
|
-
]
|
|
391
|
-
],
|
|
392
|
-
"pubkeys": [
|
|
393
|
-
"output"
|
|
394
|
-
],
|
|
395
|
-
"signatures": [
|
|
396
|
-
[
|
|
397
|
-
"input",
|
|
398
|
-
"output"
|
|
399
|
-
]
|
|
400
|
-
],
|
|
401
|
-
"input": [
|
|
402
|
-
[
|
|
403
|
-
"signatures",
|
|
404
|
-
"output"
|
|
405
|
-
]
|
|
406
|
-
],
|
|
407
|
-
"witness": [
|
|
408
|
-
[
|
|
409
|
-
"input",
|
|
410
|
-
"output"
|
|
411
|
-
]
|
|
412
|
-
]
|
|
413
|
-
},
|
|
414
|
-
"details": [
|
|
415
|
-
{
|
|
416
|
-
"description": "p2ms",
|
|
417
|
-
"m": 2,
|
|
418
|
-
"n": 3,
|
|
419
|
-
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
420
|
-
"pubkeys": [
|
|
421
|
-
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
422
|
-
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
423
|
-
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
424
|
-
],
|
|
425
|
-
"signatures": [
|
|
426
|
-
"300602010002010001",
|
|
427
|
-
"300602010102010001"
|
|
428
|
-
],
|
|
429
|
-
"input": "OP_0 300602010002010001 300602010102010001",
|
|
430
|
-
"witness": []
|
|
431
|
-
}
|
|
432
|
-
]
|
|
433
|
-
}
|
|
434
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"valid": [
|
|
3
|
+
{
|
|
4
|
+
"description": "output from output",
|
|
5
|
+
"arguments": {
|
|
6
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG"
|
|
7
|
+
},
|
|
8
|
+
"options": {},
|
|
9
|
+
"expected": {
|
|
10
|
+
"m": 2,
|
|
11
|
+
"n": 2,
|
|
12
|
+
"name": "p2ms(2 of 2)",
|
|
13
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
14
|
+
"pubkeys": [
|
|
15
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
16
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
17
|
+
],
|
|
18
|
+
"signatures": null,
|
|
19
|
+
"input": null,
|
|
20
|
+
"witness": null
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"description": "output from m/pubkeys",
|
|
25
|
+
"arguments": {
|
|
26
|
+
"m": 1,
|
|
27
|
+
"pubkeys": [
|
|
28
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
29
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"expected": {
|
|
33
|
+
"m": 1,
|
|
34
|
+
"n": 2,
|
|
35
|
+
"name": "p2ms(1 of 2)",
|
|
36
|
+
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
37
|
+
"pubkeys": [
|
|
38
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
39
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
40
|
+
],
|
|
41
|
+
"signatures": null,
|
|
42
|
+
"input": null,
|
|
43
|
+
"witness": null
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"description": "input/output from m/pubkeys/signatures",
|
|
48
|
+
"arguments": {
|
|
49
|
+
"m": 2,
|
|
50
|
+
"pubkeys": [
|
|
51
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
52
|
+
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
53
|
+
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
54
|
+
],
|
|
55
|
+
"signatures": [
|
|
56
|
+
"300602010002010001",
|
|
57
|
+
"300602010102010001"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"expected": {
|
|
61
|
+
"m": 2,
|
|
62
|
+
"n": 3,
|
|
63
|
+
"name": "p2ms(2 of 3)",
|
|
64
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
65
|
+
"pubkeys": [
|
|
66
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
67
|
+
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
68
|
+
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
69
|
+
],
|
|
70
|
+
"signatures": [
|
|
71
|
+
"300602010002010001",
|
|
72
|
+
"300602010102010001"
|
|
73
|
+
],
|
|
74
|
+
"input": "OP_0 300602010002010001 300602010102010001",
|
|
75
|
+
"witness": []
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"description": "input/output from output/signatures",
|
|
80
|
+
"arguments": {
|
|
81
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
82
|
+
"signatures": [
|
|
83
|
+
"300602010002010001",
|
|
84
|
+
"300602010102010001"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"expected": {
|
|
88
|
+
"m": 2,
|
|
89
|
+
"n": 3,
|
|
90
|
+
"name": "p2ms(2 of 3)",
|
|
91
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
92
|
+
"pubkeys": [
|
|
93
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
94
|
+
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
95
|
+
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
96
|
+
],
|
|
97
|
+
"signatures": [
|
|
98
|
+
"300602010002010001",
|
|
99
|
+
"300602010102010001"
|
|
100
|
+
],
|
|
101
|
+
"input": "OP_0 300602010002010001 300602010102010001",
|
|
102
|
+
"witness": []
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"description": "input/output from input/output",
|
|
107
|
+
"arguments": {
|
|
108
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
109
|
+
"input": "OP_0 300602010002010001 300602010102010001"
|
|
110
|
+
},
|
|
111
|
+
"expected": {
|
|
112
|
+
"m": 2,
|
|
113
|
+
"n": 3,
|
|
114
|
+
"name": "p2ms(2 of 3)",
|
|
115
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
116
|
+
"pubkeys": [
|
|
117
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
118
|
+
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
119
|
+
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
120
|
+
],
|
|
121
|
+
"signatures": [
|
|
122
|
+
"300602010002010001",
|
|
123
|
+
"300602010102010001"
|
|
124
|
+
],
|
|
125
|
+
"input": "OP_0 300602010002010001 300602010102010001",
|
|
126
|
+
"witness": []
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"description": "input/output from input/output, even if incomplete",
|
|
131
|
+
"arguments": {
|
|
132
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
133
|
+
"input": "OP_0 OP_0 300602010102010001"
|
|
134
|
+
},
|
|
135
|
+
"options": {
|
|
136
|
+
"allowIncomplete": true
|
|
137
|
+
},
|
|
138
|
+
"expected": {
|
|
139
|
+
"m": 2,
|
|
140
|
+
"n": 2,
|
|
141
|
+
"name": "p2ms(2 of 2)",
|
|
142
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
143
|
+
"pubkeys": [
|
|
144
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
145
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
146
|
+
],
|
|
147
|
+
"signatures": [
|
|
148
|
+
0,
|
|
149
|
+
"300602010102010001"
|
|
150
|
+
],
|
|
151
|
+
"input": "OP_0 OP_0 300602010102010001",
|
|
152
|
+
"witness": []
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"description": "input/output from output/signatures, even if incomplete",
|
|
157
|
+
"arguments": {
|
|
158
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
159
|
+
"signatures": [
|
|
160
|
+
0,
|
|
161
|
+
"300602010102010001"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
"options": {
|
|
165
|
+
"allowIncomplete": true
|
|
166
|
+
},
|
|
167
|
+
"expected": {
|
|
168
|
+
"m": 2,
|
|
169
|
+
"n": 2,
|
|
170
|
+
"name": "p2ms(2 of 2)",
|
|
171
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 OP_2 OP_CHECKMULTISIG",
|
|
172
|
+
"pubkeys": [
|
|
173
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
174
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
175
|
+
],
|
|
176
|
+
"signatures": [
|
|
177
|
+
0,
|
|
178
|
+
"300602010102010001"
|
|
179
|
+
],
|
|
180
|
+
"input": "OP_0 OP_0 300602010102010001",
|
|
181
|
+
"witness": []
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
"invalid": [
|
|
186
|
+
{
|
|
187
|
+
"exception": "Not enough data",
|
|
188
|
+
"arguments": {}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"exception": "Not enough data",
|
|
192
|
+
"arguments": {
|
|
193
|
+
"m": 2
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"exception": "Not enough data",
|
|
198
|
+
"arguments": {
|
|
199
|
+
"pubkeys": [
|
|
200
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
201
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"description": "Non OP_INT chunk (m)",
|
|
207
|
+
"exception": "Output is invalid",
|
|
208
|
+
"arguments": {
|
|
209
|
+
"output": "OP_RESERVED"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"description": "Non OP_INT chunk (n)",
|
|
214
|
+
"exception": "Output is invalid",
|
|
215
|
+
"arguments": {
|
|
216
|
+
"output": "OP_1 OP_RESERVED"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"description": "Missing OP_CHECKMULTISIG",
|
|
221
|
+
"exception": "Output is invalid",
|
|
222
|
+
"arguments": {
|
|
223
|
+
"output": "OP_1 OP_2 OP_RESERVED"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"description": "m is 0",
|
|
228
|
+
"exception": "Output is invalid",
|
|
229
|
+
"arguments": {
|
|
230
|
+
"output": "OP_0 OP_2 OP_CHECKMULTISIG"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"description": "n is 0 (m > n)",
|
|
235
|
+
"exception": "Output is invalid",
|
|
236
|
+
"arguments": {
|
|
237
|
+
"output": "OP_2 OP_0 OP_CHECKMULTISIG"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"description": "m > n",
|
|
242
|
+
"exception": "Output is invalid",
|
|
243
|
+
"arguments": {
|
|
244
|
+
"output": "OP_3 OP_2 OP_CHECKMULTISIG"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"description": "n !== output pubkeys",
|
|
249
|
+
"exception": "Output is invalid",
|
|
250
|
+
"options": {},
|
|
251
|
+
"arguments": {
|
|
252
|
+
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_2 OP_CHECKMULTISIG"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"description": "Non-canonical output public key",
|
|
257
|
+
"exception": "Output is invalid",
|
|
258
|
+
"arguments": {
|
|
259
|
+
"output": "OP_1 ffff OP_1 OP_CHECKMULTISIG"
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"exception": "n mismatch",
|
|
264
|
+
"arguments": {
|
|
265
|
+
"n": 2,
|
|
266
|
+
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_1 OP_CHECKMULTISIG"
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"exception": "m mismatch",
|
|
271
|
+
"arguments": {
|
|
272
|
+
"m": 2,
|
|
273
|
+
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000001 OP_1 OP_CHECKMULTISIG"
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"exception": "Pubkeys mismatch",
|
|
278
|
+
"options": {},
|
|
279
|
+
"arguments": {
|
|
280
|
+
"pubkeys": [
|
|
281
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
282
|
+
],
|
|
283
|
+
"output": "OP_1 030000000000000000000000000000000000000000000000000000000000000002 OP_1 OP_CHECKMULTISIG"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"exception": "Pubkey count mismatch",
|
|
288
|
+
"arguments": {
|
|
289
|
+
"m": 2,
|
|
290
|
+
"n": 3,
|
|
291
|
+
"pubkeys": [
|
|
292
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
293
|
+
"030000000000000000000000000000000000000000000000000000000000000002"
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"exception": "Pubkey count cannot be less than m",
|
|
299
|
+
"arguments": {
|
|
300
|
+
"m": 4,
|
|
301
|
+
"pubkeys": [
|
|
302
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
303
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"exception": "Not enough signatures provided",
|
|
309
|
+
"arguments": {
|
|
310
|
+
"m": 2,
|
|
311
|
+
"pubkeys": [
|
|
312
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
313
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
314
|
+
],
|
|
315
|
+
"signatures": [
|
|
316
|
+
"300602010002010001"
|
|
317
|
+
]
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"exception": "Signature mismatch",
|
|
322
|
+
"arguments": {
|
|
323
|
+
"m": 1,
|
|
324
|
+
"pubkeys": [
|
|
325
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
326
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
327
|
+
],
|
|
328
|
+
"signatures": [
|
|
329
|
+
"300602010002010001"
|
|
330
|
+
],
|
|
331
|
+
"input": "OP_0 300602010002010101"
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"exception": "Too many signatures provided",
|
|
336
|
+
"arguments": {
|
|
337
|
+
"m": 2,
|
|
338
|
+
"pubkeys": [
|
|
339
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
340
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
341
|
+
],
|
|
342
|
+
"signatures": [
|
|
343
|
+
"300602010002010001",
|
|
344
|
+
"300602010002010001",
|
|
345
|
+
"300602010002010001"
|
|
346
|
+
]
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"description": "Missing OP_0",
|
|
351
|
+
"exception": "Input is invalid",
|
|
352
|
+
"options": {},
|
|
353
|
+
"arguments": {
|
|
354
|
+
"m": 2,
|
|
355
|
+
"pubkeys": [
|
|
356
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
357
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
358
|
+
],
|
|
359
|
+
"input": "OP_RESERVED"
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"exception": "Input has invalid signature\\(s\\)",
|
|
364
|
+
"arguments": {
|
|
365
|
+
"m": 1,
|
|
366
|
+
"pubkeys": [
|
|
367
|
+
"030000000000000000000000000000000000000000000000000000000000000001"
|
|
368
|
+
],
|
|
369
|
+
"input": "OP_0 ffffffffffffffff"
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
],
|
|
373
|
+
"dynamic": {
|
|
374
|
+
"depends": {
|
|
375
|
+
"m": [
|
|
376
|
+
"output"
|
|
377
|
+
],
|
|
378
|
+
"n": [
|
|
379
|
+
"output",
|
|
380
|
+
[
|
|
381
|
+
"m",
|
|
382
|
+
"pubkeys"
|
|
383
|
+
]
|
|
384
|
+
],
|
|
385
|
+
"output": [
|
|
386
|
+
"output",
|
|
387
|
+
[
|
|
388
|
+
"m",
|
|
389
|
+
"pubkeys"
|
|
390
|
+
]
|
|
391
|
+
],
|
|
392
|
+
"pubkeys": [
|
|
393
|
+
"output"
|
|
394
|
+
],
|
|
395
|
+
"signatures": [
|
|
396
|
+
[
|
|
397
|
+
"input",
|
|
398
|
+
"output"
|
|
399
|
+
]
|
|
400
|
+
],
|
|
401
|
+
"input": [
|
|
402
|
+
[
|
|
403
|
+
"signatures",
|
|
404
|
+
"output"
|
|
405
|
+
]
|
|
406
|
+
],
|
|
407
|
+
"witness": [
|
|
408
|
+
[
|
|
409
|
+
"input",
|
|
410
|
+
"output"
|
|
411
|
+
]
|
|
412
|
+
]
|
|
413
|
+
},
|
|
414
|
+
"details": [
|
|
415
|
+
{
|
|
416
|
+
"description": "p2ms",
|
|
417
|
+
"m": 2,
|
|
418
|
+
"n": 3,
|
|
419
|
+
"output": "OP_2 030000000000000000000000000000000000000000000000000000000000000001 030000000000000000000000000000000000000000000000000000000000000002 030000000000000000000000000000000000000000000000000000000000000003 OP_3 OP_CHECKMULTISIG",
|
|
420
|
+
"pubkeys": [
|
|
421
|
+
"030000000000000000000000000000000000000000000000000000000000000001",
|
|
422
|
+
"030000000000000000000000000000000000000000000000000000000000000002",
|
|
423
|
+
"030000000000000000000000000000000000000000000000000000000000000003"
|
|
424
|
+
],
|
|
425
|
+
"signatures": [
|
|
426
|
+
"300602010002010001",
|
|
427
|
+
"300602010102010001"
|
|
428
|
+
],
|
|
429
|
+
"input": "OP_0 300602010002010001 300602010102010001",
|
|
430
|
+
"witness": []
|
|
431
|
+
}
|
|
432
|
+
]
|
|
433
|
+
}
|
|
434
|
+
}
|