From b86dd45befc4c23c843f7a934ce14fc8d7d2d19e Mon Sep 17 00:00:00 2001 From: Otto Allmendinger Date: Tue, 11 Feb 2025 13:53:24 +0100 Subject: [PATCH 1/3] feat: add AST dump utility for descriptor tests Add helper to write descriptor AST to JSON files for test fixtures. Issue: BTC-1829 --- packages/wasm-miniscript/.prettierignore | 3 +- .../wasm-miniscript/test/descriptorUtil.ts | 20 ++++ packages/wasm-miniscript/test/fixtures/0.json | 12 +++ packages/wasm-miniscript/test/fixtures/1.json | 12 +++ .../wasm-miniscript/test/fixtures/10.json | 8 ++ .../wasm-miniscript/test/fixtures/11.json | 8 ++ .../wasm-miniscript/test/fixtures/12.json | 14 +++ .../wasm-miniscript/test/fixtures/13.json | 14 +++ .../wasm-miniscript/test/fixtures/14.json | 14 +++ .../wasm-miniscript/test/fixtures/15.json | 14 +++ .../wasm-miniscript/test/fixtures/16.json | 14 +++ .../wasm-miniscript/test/fixtures/17.json | 14 +++ .../wasm-miniscript/test/fixtures/18.json | 14 +++ .../wasm-miniscript/test/fixtures/19.json | 14 +++ packages/wasm-miniscript/test/fixtures/2.json | 8 ++ .../wasm-miniscript/test/fixtures/20.json | 16 +++ .../wasm-miniscript/test/fixtures/21.json | 16 +++ .../wasm-miniscript/test/fixtures/22.json | 16 +++ .../wasm-miniscript/test/fixtures/23.json | 16 +++ .../wasm-miniscript/test/fixtures/24.json | 12 +++ .../wasm-miniscript/test/fixtures/25.json | 12 +++ .../wasm-miniscript/test/fixtures/26.json | 8 ++ .../wasm-miniscript/test/fixtures/27.json | 8 ++ .../wasm-miniscript/test/fixtures/28.json | 8 ++ .../wasm-miniscript/test/fixtures/29.json | 8 ++ packages/wasm-miniscript/test/fixtures/3.json | 8 ++ .../wasm-miniscript/test/fixtures/30.json | 8 ++ .../wasm-miniscript/test/fixtures/31.json | 8 ++ .../wasm-miniscript/test/fixtures/32.json | 8 ++ .../wasm-miniscript/test/fixtures/33.json | 10 ++ .../wasm-miniscript/test/fixtures/34.json | 10 ++ .../wasm-miniscript/test/fixtures/35.json | 10 ++ .../wasm-miniscript/test/fixtures/36.json | 18 ++++ .../wasm-miniscript/test/fixtures/37.json | 18 ++++ .../wasm-miniscript/test/fixtures/38.json | 8 ++ .../wasm-miniscript/test/fixtures/39.json | 18 ++++ packages/wasm-miniscript/test/fixtures/4.json | 8 ++ .../wasm-miniscript/test/fixtures/40.json | 18 ++++ .../wasm-miniscript/test/fixtures/41.json | 21 ++++ .../wasm-miniscript/test/fixtures/42.json | 21 ++++ .../wasm-miniscript/test/fixtures/43.json | 21 ++++ .../wasm-miniscript/test/fixtures/44.json | 62 +++++++++++ .../wasm-miniscript/test/fixtures/45.json | 62 +++++++++++ .../wasm-miniscript/test/fixtures/46.json | 72 +++++++++++++ .../wasm-miniscript/test/fixtures/47.json | 72 +++++++++++++ .../wasm-miniscript/test/fixtures/48.json | 74 +++++++++++++ .../wasm-miniscript/test/fixtures/49.json | 74 +++++++++++++ packages/wasm-miniscript/test/fixtures/5.json | 8 ++ .../wasm-miniscript/test/fixtures/50.json | 18 ++++ .../wasm-miniscript/test/fixtures/51.json | 18 ++++ .../wasm-miniscript/test/fixtures/52.json | 18 ++++ .../wasm-miniscript/test/fixtures/53.json | 18 ++++ .../wasm-miniscript/test/fixtures/54.json | 27 +++++ .../wasm-miniscript/test/fixtures/55.json | 27 +++++ .../wasm-miniscript/test/fixtures/56.json | 46 ++++++++ .../wasm-miniscript/test/fixtures/57.json | 46 ++++++++ .../wasm-miniscript/test/fixtures/58.json | 24 +++++ packages/wasm-miniscript/test/fixtures/6.json | 10 ++ packages/wasm-miniscript/test/fixtures/7.json | 10 ++ packages/wasm-miniscript/test/fixtures/8.json | 12 +++ packages/wasm-miniscript/test/fixtures/9.json | 12 +++ packages/wasm-miniscript/test/test.ts | 101 +++++++++--------- 62 files changed, 1278 insertions(+), 49 deletions(-) create mode 100644 packages/wasm-miniscript/test/fixtures/0.json create mode 100644 packages/wasm-miniscript/test/fixtures/1.json create mode 100644 packages/wasm-miniscript/test/fixtures/10.json create mode 100644 packages/wasm-miniscript/test/fixtures/11.json create mode 100644 packages/wasm-miniscript/test/fixtures/12.json create mode 100644 packages/wasm-miniscript/test/fixtures/13.json create mode 100644 packages/wasm-miniscript/test/fixtures/14.json create mode 100644 packages/wasm-miniscript/test/fixtures/15.json create mode 100644 packages/wasm-miniscript/test/fixtures/16.json create mode 100644 packages/wasm-miniscript/test/fixtures/17.json create mode 100644 packages/wasm-miniscript/test/fixtures/18.json create mode 100644 packages/wasm-miniscript/test/fixtures/19.json create mode 100644 packages/wasm-miniscript/test/fixtures/2.json create mode 100644 packages/wasm-miniscript/test/fixtures/20.json create mode 100644 packages/wasm-miniscript/test/fixtures/21.json create mode 100644 packages/wasm-miniscript/test/fixtures/22.json create mode 100644 packages/wasm-miniscript/test/fixtures/23.json create mode 100644 packages/wasm-miniscript/test/fixtures/24.json create mode 100644 packages/wasm-miniscript/test/fixtures/25.json create mode 100644 packages/wasm-miniscript/test/fixtures/26.json create mode 100644 packages/wasm-miniscript/test/fixtures/27.json create mode 100644 packages/wasm-miniscript/test/fixtures/28.json create mode 100644 packages/wasm-miniscript/test/fixtures/29.json create mode 100644 packages/wasm-miniscript/test/fixtures/3.json create mode 100644 packages/wasm-miniscript/test/fixtures/30.json create mode 100644 packages/wasm-miniscript/test/fixtures/31.json create mode 100644 packages/wasm-miniscript/test/fixtures/32.json create mode 100644 packages/wasm-miniscript/test/fixtures/33.json create mode 100644 packages/wasm-miniscript/test/fixtures/34.json create mode 100644 packages/wasm-miniscript/test/fixtures/35.json create mode 100644 packages/wasm-miniscript/test/fixtures/36.json create mode 100644 packages/wasm-miniscript/test/fixtures/37.json create mode 100644 packages/wasm-miniscript/test/fixtures/38.json create mode 100644 packages/wasm-miniscript/test/fixtures/39.json create mode 100644 packages/wasm-miniscript/test/fixtures/4.json create mode 100644 packages/wasm-miniscript/test/fixtures/40.json create mode 100644 packages/wasm-miniscript/test/fixtures/41.json create mode 100644 packages/wasm-miniscript/test/fixtures/42.json create mode 100644 packages/wasm-miniscript/test/fixtures/43.json create mode 100644 packages/wasm-miniscript/test/fixtures/44.json create mode 100644 packages/wasm-miniscript/test/fixtures/45.json create mode 100644 packages/wasm-miniscript/test/fixtures/46.json create mode 100644 packages/wasm-miniscript/test/fixtures/47.json create mode 100644 packages/wasm-miniscript/test/fixtures/48.json create mode 100644 packages/wasm-miniscript/test/fixtures/49.json create mode 100644 packages/wasm-miniscript/test/fixtures/5.json create mode 100644 packages/wasm-miniscript/test/fixtures/50.json create mode 100644 packages/wasm-miniscript/test/fixtures/51.json create mode 100644 packages/wasm-miniscript/test/fixtures/52.json create mode 100644 packages/wasm-miniscript/test/fixtures/53.json create mode 100644 packages/wasm-miniscript/test/fixtures/54.json create mode 100644 packages/wasm-miniscript/test/fixtures/55.json create mode 100644 packages/wasm-miniscript/test/fixtures/56.json create mode 100644 packages/wasm-miniscript/test/fixtures/57.json create mode 100644 packages/wasm-miniscript/test/fixtures/58.json create mode 100644 packages/wasm-miniscript/test/fixtures/6.json create mode 100644 packages/wasm-miniscript/test/fixtures/7.json create mode 100644 packages/wasm-miniscript/test/fixtures/8.json create mode 100644 packages/wasm-miniscript/test/fixtures/9.json 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/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..cebc6d5 --- /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": { + "internalKey": { + "Single": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" + }, + "tree": { + "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..17bb7e1 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 () { @@ -36,63 +37,67 @@ 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": + 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); + }); }); }); }); From 6cf9ffba8943c0e39e324a0229dbf4f08ec0ce28 Mon Sep 17 00:00:00 2001 From: Otto Allmendinger Date: Tue, 11 Feb 2025 14:02:36 +0100 Subject: [PATCH 2/3] feat: add support for taproot descriptors Add test fixtures and validation for taproot descriptor support. Handle Tr type scriptpubkey length checks. Issue: BTC-1829 --- packages/wasm-miniscript/test/descriptorFixtures.ts | 6 ++++++ packages/wasm-miniscript/test/test.ts | 3 +++ 2 files changed, 9 insertions(+) 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/test.ts b/packages/wasm-miniscript/test/test.ts index 17bb7e1..77d5ec9 100644 --- a/packages/wasm-miniscript/test/test.ts +++ b/packages/wasm-miniscript/test/test.ts @@ -29,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"); @@ -50,6 +51,7 @@ function assertKnownDescriptorType(descriptor: Descriptor) { case "Wsh": case "Wpkh": case "ShWpkh": + case "Tr": break; default: throw new Error("unexpected descriptor type " + descriptor.descType()); @@ -94,6 +96,7 @@ describe("Descriptor fixtures", function () { // 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())); assertKnownDescriptorType(descriptor); await assertEqualAst(__dirname + `/fixtures/${i}.json`, descriptor); From ca1c430cea1aa5168878640c64aa7ca5d1fd06f9 Mon Sep 17 00:00:00 2001 From: Otto Allmendinger Date: Tue, 11 Feb 2025 14:04:51 +0100 Subject: [PATCH 3/3] fix: change taproot descriptor output format to array Change Tr descriptor output from object to array format to match test fixtures. Internal key and tap tree are now returned as array elements. Issue: BTC-1829 --- packages/wasm-miniscript/src/try_into_js_value.rs | 5 +---- packages/wasm-miniscript/test/fixtures/58.json | 8 ++++---- 2 files changed, 5 insertions(+), 8 deletions(-) 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/fixtures/58.json b/packages/wasm-miniscript/test/fixtures/58.json index cebc6d5..c9368f9 100644 --- a/packages/wasm-miniscript/test/fixtures/58.json +++ b/packages/wasm-miniscript/test/fixtures/58.json @@ -1,11 +1,11 @@ { "descriptor": "tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0,xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0,xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0))#82q34xv2", "ast": { - "Tr": { - "internalKey": { + "Tr": [ + { "Single": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" }, - "tree": { + { "MultiA": [ 2, { @@ -19,6 +19,6 @@ } ] } - } + ] } } \ No newline at end of file