diff --git a/packages/wasm-miniscript/.prettierignore b/packages/wasm-miniscript/.prettierignore index a5c10b4..961782e 100644 --- a/packages/wasm-miniscript/.prettierignore +++ b/packages/wasm-miniscript/.prettierignore @@ -1,2 +1,3 @@ js/wasm -target/ \ No newline at end of file +test/fixtures/ +target/ diff --git a/packages/wasm-miniscript/src/try_into_js_value.rs b/packages/wasm-miniscript/src/try_into_js_value.rs index 28bca7b..ec6a9b6 100644 --- a/packages/wasm-miniscript/src/try_into_js_value.rs +++ b/packages/wasm-miniscript/src/try_into_js_value.rs @@ -208,10 +208,7 @@ impl TryIntoJsValue for WshInner { impl TryIntoJsValue for Tr { fn try_to_js_value(&self) -> Result { - js_obj!( - "internalKey" => self.internal_key(), - "tree" => self.tap_tree() - ) + Ok(js_arr!(self.internal_key(), self.tap_tree())) } } diff --git a/packages/wasm-miniscript/test/descriptorFixtures.ts b/packages/wasm-miniscript/test/descriptorFixtures.ts index 679946b..05c1336 100644 --- a/packages/wasm-miniscript/test/descriptorFixtures.ts +++ b/packages/wasm-miniscript/test/descriptorFixtures.ts @@ -345,6 +345,12 @@ export const fixtures = { script: "a914767e9119ff3b3ac0cb6dcfe21de1842ccf85f1c487", checksumRequired: false, }, + { + descriptor: + "tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0,xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0,xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0))#82q34xv2", + script: "51207e8c409f0ab01197f9676efc3a9505f1f09ed0f21693e46a3aa3b6b54d437aa2", + checksumRequired: true, + }, ], invalid: [ { diff --git a/packages/wasm-miniscript/test/descriptorUtil.ts b/packages/wasm-miniscript/test/descriptorUtil.ts index 4cdcd41..c4a0cb4 100644 --- a/packages/wasm-miniscript/test/descriptorUtil.ts +++ b/packages/wasm-miniscript/test/descriptorUtil.ts @@ -1,4 +1,24 @@ +import * as fs from "fs/promises"; import * as utxolib from "@bitgo/utxo-lib"; +import { Descriptor } from "../js"; +import * as assert from "node:assert"; + +async function assertEqualJSON(path: string, value: unknown): Promise { + try { + const data = JSON.parse(await fs.readFile(path, "utf8")); + assert.deepStrictEqual(data, value); + } catch (e: any) { + if (e.code === "ENOENT") { + await fs.writeFile(path, JSON.stringify(value, null, 2)); + throw new Error("Expected file not found, wrote it instead"); + } + throw e; + } +} + +export async function assertEqualAst(path: string, descriptor: Descriptor): Promise { + await assertEqualJSON(path, { descriptor: descriptor.toString(), ast: descriptor.node() }); +} /** Expand a template with the given root wallet keys and chain code */ function expand(template: string, rootWalletKeys: utxolib.bitgo.RootWalletKeys, chainCode: number) { diff --git a/packages/wasm-miniscript/test/fixtures/0.json b/packages/wasm-miniscript/test/fixtures/0.json new file mode 100644 index 0000000..da15104 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/0.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#9pcxlpvx", + "ast": { + "Bare": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/1.json b/packages/wasm-miniscript/test/fixtures/1.json new file mode 100644 index 0000000..da15104 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/1.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#9pcxlpvx", + "ast": { + "Bare": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/10.json b/packages/wasm-miniscript/test/fixtures/10.json new file mode 100644 index 0000000..b807ac0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/10.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#9907vvwz", + "ast": { + "Pkh": { + "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/11.json b/packages/wasm-miniscript/test/fixtures/11.json new file mode 100644 index 0000000..b807ac0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/11.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#9907vvwz", + "ast": { + "Pkh": { + "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/12.json b/packages/wasm-miniscript/test/fixtures/12.json new file mode 100644 index 0000000..d936bb9 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/12.json @@ -0,0 +1,14 @@ +{ + "descriptor": "sh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#s53ls94y", + "ast": { + "Sh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/13.json b/packages/wasm-miniscript/test/fixtures/13.json new file mode 100644 index 0000000..d936bb9 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/13.json @@ -0,0 +1,14 @@ +{ + "descriptor": "sh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#s53ls94y", + "ast": { + "Sh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/14.json b/packages/wasm-miniscript/test/fixtures/14.json new file mode 100644 index 0000000..eeeb48c --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/14.json @@ -0,0 +1,14 @@ +{ + "descriptor": "sh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#dr3u9ynx", + "ast": { + "Sh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/15.json b/packages/wasm-miniscript/test/fixtures/15.json new file mode 100644 index 0000000..eeeb48c --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/15.json @@ -0,0 +1,14 @@ +{ + "descriptor": "sh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#dr3u9ynx", + "ast": { + "Sh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/16.json b/packages/wasm-miniscript/test/fixtures/16.json new file mode 100644 index 0000000..45095bb --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/16.json @@ -0,0 +1,14 @@ +{ + "descriptor": "wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#35m26dd5", + "ast": { + "Wsh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/17.json b/packages/wasm-miniscript/test/fixtures/17.json new file mode 100644 index 0000000..45095bb --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/17.json @@ -0,0 +1,14 @@ +{ + "descriptor": "wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#35m26dd5", + "ast": { + "Wsh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/18.json b/packages/wasm-miniscript/test/fixtures/18.json new file mode 100644 index 0000000..0919cbd --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/18.json @@ -0,0 +1,14 @@ +{ + "descriptor": "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#c2m8h006", + "ast": { + "Wsh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/19.json b/packages/wasm-miniscript/test/fixtures/19.json new file mode 100644 index 0000000..0919cbd --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/19.json @@ -0,0 +1,14 @@ +{ + "descriptor": "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#c2m8h006", + "ast": { + "Wsh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/2.json b/packages/wasm-miniscript/test/fixtures/2.json new file mode 100644 index 0000000..08f4def --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/2.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#wf36a0pg", + "ast": { + "Pkh": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/20.json b/packages/wasm-miniscript/test/fixtures/20.json new file mode 100644 index 0000000..9c74574 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/20.json @@ -0,0 +1,16 @@ +{ + "descriptor": "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#3kkw724y", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/21.json b/packages/wasm-miniscript/test/fixtures/21.json new file mode 100644 index 0000000..9c74574 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/21.json @@ -0,0 +1,16 @@ +{ + "descriptor": "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#3kkw724y", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Check": { + "PkK": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/22.json b/packages/wasm-miniscript/test/fixtures/22.json new file mode 100644 index 0000000..ba47b9a --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/22.json @@ -0,0 +1,16 @@ +{ + "descriptor": "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#8mnh2d6x", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/23.json b/packages/wasm-miniscript/test/fixtures/23.json new file mode 100644 index 0000000..ba47b9a --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/23.json @@ -0,0 +1,16 @@ +{ + "descriptor": "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#8mnh2d6x", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Check": { + "PkH": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/24.json b/packages/wasm-miniscript/test/fixtures/24.json new file mode 100644 index 0000000..9bef29d --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/24.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)#9rspda0y", + "ast": { + "Bare": { + "Check": { + "PkK": { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/25.json b/packages/wasm-miniscript/test/fixtures/25.json new file mode 100644 index 0000000..9bef29d --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/25.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)#9rspda0y", + "ast": { + "Bare": { + "Check": { + "PkK": { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/26.json b/packages/wasm-miniscript/test/fixtures/26.json new file mode 100644 index 0000000..6b89590 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/26.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh([bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0)#j6nhxk2j", + "ast": { + "Pkh": { + "XPub": "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/27.json b/packages/wasm-miniscript/test/fixtures/27.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/27.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/28.json b/packages/wasm-miniscript/test/fixtures/28.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/28.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/29.json b/packages/wasm-miniscript/test/fixtures/29.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/29.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/3.json b/packages/wasm-miniscript/test/fixtures/3.json new file mode 100644 index 0000000..641dee0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/3.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh([deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#v0p5w8jl", + "ast": { + "Pkh": { + "Single": "[deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/30.json b/packages/wasm-miniscript/test/fixtures/30.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/30.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/31.json b/packages/wasm-miniscript/test/fixtures/31.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/31.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/32.json b/packages/wasm-miniscript/test/fixtures/32.json new file mode 100644 index 0000000..3105b60 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/32.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", + "ast": { + "Wpkh": { + "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/33.json b/packages/wasm-miniscript/test/fixtures/33.json new file mode 100644 index 0000000..4cca1da --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/33.json @@ -0,0 +1,10 @@ +{ + "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", + "ast": { + "Sh": { + "Wpkh": { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/34.json b/packages/wasm-miniscript/test/fixtures/34.json new file mode 100644 index 0000000..4cca1da --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/34.json @@ -0,0 +1,10 @@ +{ + "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", + "ast": { + "Sh": { + "Wpkh": { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/35.json b/packages/wasm-miniscript/test/fixtures/35.json new file mode 100644 index 0000000..4cca1da --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/35.json @@ -0,0 +1,10 @@ +{ + "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", + "ast": { + "Sh": { + "Wpkh": { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/36.json b/packages/wasm-miniscript/test/fixtures/36.json new file mode 100644 index 0000000..f011d4a --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/36.json @@ -0,0 +1,18 @@ +{ + "descriptor": "wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#gcn7zwma", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 1, + { + "XPub": "xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0" + }, + { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/37.json b/packages/wasm-miniscript/test/fixtures/37.json new file mode 100644 index 0000000..f011d4a --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/37.json @@ -0,0 +1,18 @@ +{ + "descriptor": "wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#gcn7zwma", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 1, + { + "XPub": "xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0" + }, + { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/38.json b/packages/wasm-miniscript/test/fixtures/38.json new file mode 100644 index 0000000..e15979d --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/38.json @@ -0,0 +1,8 @@ +{ + "descriptor": "pkh([01234567/10/20/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0)#ndj6gqy2", + "ast": { + "Pkh": { + "XPub": "[01234567/10/20/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/39.json b/packages/wasm-miniscript/test/fixtures/39.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/39.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/4.json b/packages/wasm-miniscript/test/fixtures/4.json new file mode 100644 index 0000000..11d423f --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/4.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#ah7klf29", + "ast": { + "Wpkh": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/40.json b/packages/wasm-miniscript/test/fixtures/40.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/40.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/41.json b/packages/wasm-miniscript/test/fixtures/41.json new file mode 100644 index 0000000..859a7a0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/41.json @@ -0,0 +1,21 @@ +{ + "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" + }, + { + "XPub": "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + }, + { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/42.json b/packages/wasm-miniscript/test/fixtures/42.json new file mode 100644 index 0000000..859a7a0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/42.json @@ -0,0 +1,21 @@ +{ + "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" + }, + { + "XPub": "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + }, + { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/43.json b/packages/wasm-miniscript/test/fixtures/43.json new file mode 100644 index 0000000..859a7a0 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/43.json @@ -0,0 +1,21 @@ +{ + "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" + }, + { + "XPub": "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" + }, + { + "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/44.json b/packages/wasm-miniscript/test/fixtures/44.json new file mode 100644 index 0000000..d670b59 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/44.json @@ -0,0 +1,62 @@ +{ + "descriptor": "sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))#nc9gqlkc", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Multi": [ + 16, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/45.json b/packages/wasm-miniscript/test/fixtures/45.json new file mode 100644 index 0000000..d670b59 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/45.json @@ -0,0 +1,62 @@ +{ + "descriptor": "sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))#nc9gqlkc", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Multi": [ + 16, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/46.json b/packages/wasm-miniscript/test/fixtures/46.json new file mode 100644 index 0000000..65a9711 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/46.json @@ -0,0 +1,72 @@ +{ + "descriptor": "wsh(multi(20,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232,02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e,0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca,02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759,0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd))#rhdgzqk4", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 20, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + }, + { + "Single": "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e" + }, + { + "Single": "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca" + }, + { + "Single": "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759" + }, + { + "Single": "0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/47.json b/packages/wasm-miniscript/test/fixtures/47.json new file mode 100644 index 0000000..65a9711 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/47.json @@ -0,0 +1,72 @@ +{ + "descriptor": "wsh(multi(20,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232,02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e,0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca,02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759,0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd))#rhdgzqk4", + "ast": { + "Wsh": { + "Ms": { + "Multi": [ + 20, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + }, + { + "Single": "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e" + }, + { + "Single": "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca" + }, + { + "Single": "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759" + }, + { + "Single": "0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/48.json b/packages/wasm-miniscript/test/fixtures/48.json new file mode 100644 index 0000000..04e28ca --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/48.json @@ -0,0 +1,74 @@ +{ + "descriptor": "sh(wsh(multi(20,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232,02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e,0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca,02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759,0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd)))#6lwvnz5j", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Multi": [ + 20, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + }, + { + "Single": "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e" + }, + { + "Single": "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca" + }, + { + "Single": "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759" + }, + { + "Single": "0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/49.json b/packages/wasm-miniscript/test/fixtures/49.json new file mode 100644 index 0000000..04e28ca --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/49.json @@ -0,0 +1,74 @@ +{ + "descriptor": "sh(wsh(multi(20,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232,02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e,0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca,02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759,0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd)))#6lwvnz5j", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Multi": [ + 20, + { + "Single": "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0" + }, + { + "Single": "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600" + }, + { + "Single": "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8" + }, + { + "Single": "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8" + }, + { + "Single": "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8" + }, + { + "Single": "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286" + }, + { + "Single": "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009" + }, + { + "Single": "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d" + }, + { + "Single": "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9" + }, + { + "Single": "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af" + }, + { + "Single": "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd" + }, + { + "Single": "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24" + }, + { + "Single": "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc" + }, + { + "Single": "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3" + }, + { + "Single": "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06" + }, + { + "Single": "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232" + }, + { + "Single": "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e" + }, + { + "Single": "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca" + }, + { + "Single": "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759" + }, + { + "Single": "0249fdd6b69768b8d84b4893f8ff84b36835c50183de20fcae8f366a45290d01fd" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/5.json b/packages/wasm-miniscript/test/fixtures/5.json new file mode 100644 index 0000000..11d423f --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/5.json @@ -0,0 +1,8 @@ +{ + "descriptor": "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#ah7klf29", + "ast": { + "Wpkh": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/50.json b/packages/wasm-miniscript/test/fixtures/50.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/50.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/51.json b/packages/wasm-miniscript/test/fixtures/51.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/51.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/52.json b/packages/wasm-miniscript/test/fixtures/52.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/52.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/53.json b/packages/wasm-miniscript/test/fixtures/53.json new file mode 100644 index 0000000..91e53b8 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/53.json @@ -0,0 +1,18 @@ +{ + "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", + "ast": { + "Sh": { + "Ms": { + "Multi": [ + 2, + { + "XPub": "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/54.json b/packages/wasm-miniscript/test/fixtures/54.json new file mode 100644 index 0000000..f26aa74 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/54.json @@ -0,0 +1,27 @@ +{ + "descriptor": "wsh(and_v(v:ripemd160(095ff41131e5946f3c85f79e44adbcf8e27e080e),multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)))#hv6qsxrp", + "ast": { + "Wsh": { + "Ms": { + "AndV": [ + { + "Verify": { + "Ripemd160": "095ff41131e5946f3c85f79e44adbcf8e27e080e" + } + }, + { + "Multi": [ + 1, + { + "XPub": "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/55.json b/packages/wasm-miniscript/test/fixtures/55.json new file mode 100644 index 0000000..f26aa74 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/55.json @@ -0,0 +1,27 @@ +{ + "descriptor": "wsh(and_v(v:ripemd160(095ff41131e5946f3c85f79e44adbcf8e27e080e),multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)))#hv6qsxrp", + "ast": { + "Wsh": { + "Ms": { + "AndV": [ + { + "Verify": { + "Ripemd160": "095ff41131e5946f3c85f79e44adbcf8e27e080e" + } + }, + { + "Multi": [ + 1, + { + "XPub": "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/56.json b/packages/wasm-miniscript/test/fixtures/56.json new file mode 100644 index 0000000..67ba853 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/56.json @@ -0,0 +1,46 @@ +{ + "descriptor": "sh(wsh(thresh(1,pkh(03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204),a:and_n(multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0),n:older(2)))))#m3v3lenu", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Thresh": [ + 1, + { + "Check": { + "PkH": { + "Single": "03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204" + } + } + }, + { + "Alt": { + "AndOr": [ + { + "Multi": [ + 1, + { + "XPub": "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + }, + { + "ZeroNotEqual": { + "Older": { + "relLockTime": "2" + } + } + }, + false + ] + } + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/57.json b/packages/wasm-miniscript/test/fixtures/57.json new file mode 100644 index 0000000..67ba853 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/57.json @@ -0,0 +1,46 @@ +{ + "descriptor": "sh(wsh(thresh(1,pkh(03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204),a:and_n(multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0),n:older(2)))))#m3v3lenu", + "ast": { + "Sh": { + "Wsh": { + "Ms": { + "Thresh": [ + 1, + { + "Check": { + "PkH": { + "Single": "03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204" + } + } + }, + { + "Alt": { + "AndOr": [ + { + "Multi": [ + 1, + { + "XPub": "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" + }, + { + "XPub": "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + } + ] + }, + { + "ZeroNotEqual": { + "Older": { + "relLockTime": "2" + } + } + }, + false + ] + } + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/58.json b/packages/wasm-miniscript/test/fixtures/58.json new file mode 100644 index 0000000..c9368f9 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/58.json @@ -0,0 +1,24 @@ +{ + "descriptor": "tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0,xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0,xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0))#82q34xv2", + "ast": { + "Tr": [ + { + "Single": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" + }, + { + "MultiA": [ + 2, + { + "XPub": "xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0" + }, + { + "XPub": "xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0" + }, + { + "XPub": "xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/6.json b/packages/wasm-miniscript/test/fixtures/6.json new file mode 100644 index 0000000..4887478 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/6.json @@ -0,0 +1,10 @@ +{ + "descriptor": "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#0aua3a8r", + "ast": { + "Sh": { + "Wpkh": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/7.json b/packages/wasm-miniscript/test/fixtures/7.json new file mode 100644 index 0000000..4887478 --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/7.json @@ -0,0 +1,10 @@ +{ + "descriptor": "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#0aua3a8r", + "ast": { + "Sh": { + "Wpkh": { + "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/8.json b/packages/wasm-miniscript/test/fixtures/8.json new file mode 100644 index 0000000..700935c --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/8.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#fm6gcqk2", + "ast": { + "Bare": { + "Check": { + "PkK": { + "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/9.json b/packages/wasm-miniscript/test/fixtures/9.json new file mode 100644 index 0000000..700935c --- /dev/null +++ b/packages/wasm-miniscript/test/fixtures/9.json @@ -0,0 +1,12 @@ +{ + "descriptor": "pk(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#fm6gcqk2", + "ast": { + "Bare": { + "Check": { + "PkK": { + "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" + } + } + } + } +} \ No newline at end of file diff --git a/packages/wasm-miniscript/test/test.ts b/packages/wasm-miniscript/test/test.ts index e1c655d..77d5ec9 100644 --- a/packages/wasm-miniscript/test/test.ts +++ b/packages/wasm-miniscript/test/test.ts @@ -1,6 +1,7 @@ import * as assert from "assert"; import { Miniscript, Descriptor } from "../js"; import { fixtures } from "./descriptorFixtures"; +import { assertEqualAst } from "./descriptorUtil"; describe("AST", function () { it("should get ast", function () { @@ -28,6 +29,7 @@ function getScriptPubKeyLength(descType: string): number { case "Pkh": return 25; case "Wsh": + case "Tr": return 34; case "Bare": throw new Error("cannot determine scriptPubKey length for Bare descriptor"); @@ -36,63 +38,69 @@ function getScriptPubKeyLength(descType: string): number { } } +function isDerivable(i: number): boolean { + return ![33, 34, 35, 41, 42, 43].includes(i); +} + +function assertKnownDescriptorType(descriptor: Descriptor) { + switch (descriptor.descType()) { + case "Bare": + case "Pkh": + case "Sh": + case "ShWsh": + case "Wsh": + case "Wpkh": + case "ShWpkh": + case "Tr": + break; + default: + throw new Error("unexpected descriptor type " + descriptor.descType()); + } +} + describe("Descriptor fixtures", function () { fixtures.valid.forEach((fixture, i) => { - it("should parse fixture " + i, function () { - const descriptor = Descriptor.fromString(fixture.descriptor, "string"); - assert.doesNotThrow(() => descriptor.node()); - let descriptorString = descriptor.toString(); - if (fixture.checksumRequired === false) { - descriptorString = removeChecksum(descriptorString); - } - const expected = fixture.descriptor; - assert.strictEqual(descriptorString, expected); + describe("fixture " + i, function () { + it("should round-trip (pkType string)", function () { + let descriptorString = Descriptor.fromString(fixture.descriptor, "string").toString(); + if (fixture.checksumRequired === false) { + descriptorString = removeChecksum(descriptorString); + } + assert.strictEqual(descriptorString, fixture.descriptor); + }); - assert.doesNotThrow(() => - Descriptor.fromString(fixture.descriptor, "derivable").atDerivationIndex(0), - ); + it("should parse (pkType derivable)", async function () { + const descriptor = Descriptor.fromString(fixture.descriptor, "derivable"); - const nonDerivable = [33, 34, 35, 41, 42, 43]; - if (nonDerivable.includes(i)) { - // FIXME(BTC-1337): xprvs with hardened derivations are not supported yet - console.log("Skipping encoding test for fixture", fixture.descriptor, i); - } else { assert.doesNotThrow(() => - Descriptor.fromString(fixture.descriptor, "derivable").atDerivationIndex(0).encode(), + Descriptor.fromString(fixture.descriptor, "derivable").atDerivationIndex(0), ); - let descriptorString = fixture.descriptor; - if (fixture.checksumRequired === false) { - descriptorString = removeChecksum(descriptorString); - } - const descriptor = Descriptor.fromString(descriptorString, "derivable"); - const scriptPubKey = Buffer.from( - descriptor.atDerivationIndex(fixture.index ?? 0).scriptPubkey(), - ); - assert.strictEqual(scriptPubKey.toString("hex"), fixture.script); - if (descriptor.descType() !== "Bare") { - assert.strictEqual( - scriptPubKey.length, - getScriptPubKeyLength(descriptor.descType()), - `Unexpected scriptPubKey length for descriptor ${descriptor.descType()}: ${scriptPubKey.length}`, + if (isDerivable(i)) { + if (descriptor.descType() !== "Tr") { + assert.doesNotThrow(() => descriptor.atDerivationIndex(0).encode()); + } + + const scriptPubKey = Buffer.from( + descriptor.atDerivationIndex(fixture.index ?? 0).scriptPubkey(), ); + assert.strictEqual(scriptPubKey.toString("hex"), fixture.script); + if (descriptor.descType() !== "Bare") { + assert.strictEqual( + scriptPubKey.length, + getScriptPubKeyLength(descriptor.descType()), + `Unexpected scriptPubKey length for descriptor ${descriptor.descType()}: ${scriptPubKey.length}`, + ); + } + } else { + // FIXME(BTC-1337): xprvs with hardened derivations are not supported yet + console.log("Skipping encoding test for fixture", fixture.descriptor, i); } - } - - assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy())); - switch (descriptor.descType()) { - case "Bare": - case "Pkh": - case "Sh": - case "ShWsh": - case "Wsh": - case "Wpkh": - case "ShWpkh": - break; - default: - throw new Error("unexpected descriptor type " + descriptor.descType()); - } + assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy())); + assertKnownDescriptorType(descriptor); + await assertEqualAst(__dirname + `/fixtures/${i}.json`, descriptor); + }); }); }); });