diff --git a/packages/wasm-miniscript/js/ast/formatNode.ts b/packages/wasm-miniscript/js/ast/formatNode.ts new file mode 100644 index 0000000..3bc21b2 --- /dev/null +++ b/packages/wasm-miniscript/js/ast/formatNode.ts @@ -0,0 +1,94 @@ +/* + +This file contains type definitions for building an Abstract Syntax Tree for +Bitcoin Descriptors and Miniscript expressions. + +Currently, the types do not encode any validity or soundness checks, so it is +possible to construct invalid descriptors. + +*/ +type Key = string; + +// https://bitcoin.sipa.be/miniscript/ +// r is for custom bitgo extension OP_DROP +type Identities = "a" | "s" | "c" | "t" | "d" | "v" | "j" | "n" | "l" | "u" | "r"; + +// Union of all possible prefixes: { f: T } => { 'a:f': T } | { 's:f': T } | ... +type PrefixWith = { + [K in keyof T & string as `${P}:${K}`]: T[K]; +}; +type PrefixIdUnion = { [P in Identities]: PrefixWith }[Identities]; + +// Wrap a type with a union of all possible prefixes +type Wrap = T | PrefixIdUnion; + +type Miniscript = + | Wrap<{ pk: Key }> + | Wrap<{ pkh: Key }> + | Wrap<{ wpkh: Key }> + | Wrap<{ multi: [number, ...Key[]] }> + | Wrap<{ sortedmulti: [number, ...Key[]] }> + | Wrap<{ multi_a: [number, ...Key[]] }> + | Wrap<{ sortedmulti_a: [number, ...Key[]] }> + | Wrap<{ tr: Key | [Key, Miniscript] }> + | Wrap<{ sh: Miniscript }> + | Wrap<{ wsh: Miniscript }> + | Wrap<{ and_v: [Miniscript, Miniscript] }> + | Wrap<{ and_b: [Miniscript, Miniscript] }> + | Wrap<{ andor: [Miniscript, Miniscript, Miniscript] }> + | Wrap<{ or_b: [Miniscript, Miniscript] }> + | Wrap<{ or_c: [Miniscript, Miniscript] }> + | Wrap<{ or_d: [Miniscript, Miniscript] }> + | Wrap<{ or_i: [Miniscript, Miniscript] }> + | Wrap<{ thresh: [number, ...Miniscript[]] }> + | Wrap<{ sha256: string }> + | Wrap<{ ripemd160: string }> + | Wrap<{ hash256: string }> + | Wrap<{ hash160: string }> + | Wrap<{ older: number }> + | Wrap<{ after: number }>; + +// Top level descriptor expressions +// https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#reference +type Descriptor = + | { sh: Miniscript | { wsh: Miniscript } } + | { wsh: Miniscript } + | { pk: Key } + | { pkh: Key } + | { wpkh: Key } + | { combo: Key } + | { tr: [Key, Miniscript] } + | { addr: string } + | { raw: string } + | { rawtr: string }; + +type Node = Miniscript | Descriptor | number | string; + +function formatN(n: Node | Node[]): string { + if (typeof n === "string") { + return n; + } + if (typeof n === "number") { + return String(n); + } + if (Array.isArray(n)) { + return n.map(formatN).join(","); + } + if (n && typeof n === "object") { + const entries = Object.entries(n); + if (entries.length !== 1) { + throw new Error(`Invalid node: ${n}`); + } + const [name, value] = entries[0]; + return `${name}(${formatN(value)})`; + } + throw new Error(`Invalid node: ${n}`); +} + +export type MiniscriptNode = Miniscript; +export type DescriptorNode = Descriptor; + +/** Format a Miniscript or Descriptor node as a descriptor string (without checksum) */ +export function formatNode(n: MiniscriptNode | DescriptorNode): string { + return formatN(n); +} diff --git a/packages/wasm-miniscript/js/ast/fromWasmNode.ts b/packages/wasm-miniscript/js/ast/fromWasmNode.ts new file mode 100644 index 0000000..b9364b3 --- /dev/null +++ b/packages/wasm-miniscript/js/ast/fromWasmNode.ts @@ -0,0 +1,130 @@ +import { DescriptorNode, MiniscriptNode } from "./formatNode"; +import { Descriptor, Miniscript } from "../index"; + +function getSingleEntry(v: unknown): [string, unknown] { + if (typeof v === "object" && v) { + const entries = Object.entries(v); + if (entries.length === 1) { + return entries[0]; + } + } + + throw new Error("Expected single entry object"); +} + +function node(type: string, value: unknown): MiniscriptNode | DescriptorNode { + return { [type]: fromUnknown(value) } as MiniscriptNode | DescriptorNode; +} + +function wrap(type: string, value: unknown): MiniscriptNode { + const n = fromWasmNode(value); + const [name, inner] = getSingleEntry(n); + return { [`${type}:${name}`]: inner } as MiniscriptNode; +} + +type Node = DescriptorNode | MiniscriptNode | string | number; + +function fromUnknown(v: unknown): Node | Node[] { + if (typeof v === "number" || typeof v === "string") { + return v; + } + if (Array.isArray(v)) { + return v.map(fromUnknown) as Node[]; + } + if (typeof v === "object" && v) { + const [type, value] = getSingleEntry(v); + switch (type) { + case "Bare": + case "Single": + case "Ms": + case "XPub": + case "relLockTime": + case "absLockTime": + return fromUnknown(value); + case "Sh": + case "Wsh": + case "Tr": + case "Pk": + case "Pkh": + case "PkH": + case "Wpkh": + case "Combo": + case "SortedMulti": + case "Addr": + case "Raw": + case "RawTr": + case "After": + case "Older": + case "Sha256": + case "Hash256": + case "Ripemd160": + case "Hash160": + return node(type.toLocaleLowerCase(), value); + case "PkK": + return node("pk", value); + case "RawPkH": + return node("raw_pkh", value); + + // Wrappers + case "Alt": + return wrap("a", value); + case "Swap": + return wrap("s", value); + case "Check": + return fromUnknown(value); + case "DupIf": + return wrap("d", value); + case "Verify": + return wrap("v", value); + case "ZeroNotEqual": + return wrap("n", value); + + // Conjunctions + case "AndV": + return node("and_v", value); + case "AndB": + return node("and_b", value); + case "AndOr": + if (!Array.isArray(value)) { + throw new Error(`Invalid AndOr node: ${JSON.stringify(value)}`); + } + const [cond, success, failure] = value; + if (failure === false) { + return node("and_n", [cond, success]); + } + return node("andor", [cond, success, failure]); + + // Disjunctions + case "OrB": + return node("or_b", value); + case "OrD": + return node("or_d", value); + case "OrC": + return node("or_c", value); + case "OrI": + return node("or_i", value); + + // Thresholds + case "Thresh": + return node("thresh", value); + case "Multi": + return node("multi", value); + case "MultiA": + return node("multi_a", value); + } + } + + throw new Error(`Unknown node ${JSON.stringify(v)}`); +} + +function fromWasmNode(v: unknown): DescriptorNode | MiniscriptNode { + return fromUnknown(v) as DescriptorNode | MiniscriptNode; +} + +export function fromDescriptor(d: Descriptor): DescriptorNode { + return fromWasmNode(d.node()) as DescriptorNode; +} + +export function fromMiniscript(m: Miniscript): MiniscriptNode { + return fromWasmNode(m.node()) as MiniscriptNode; +} diff --git a/packages/wasm-miniscript/js/ast/index.ts b/packages/wasm-miniscript/js/ast/index.ts new file mode 100644 index 0000000..9c4803a --- /dev/null +++ b/packages/wasm-miniscript/js/ast/index.ts @@ -0,0 +1,2 @@ +export * from "./formatNode"; +export * from "./fromWasmNode"; diff --git a/packages/wasm-miniscript/js/index.ts b/packages/wasm-miniscript/js/index.ts index 0332672..9cdeec8 100644 --- a/packages/wasm-miniscript/js/index.ts +++ b/packages/wasm-miniscript/js/index.ts @@ -10,6 +10,7 @@ export type ScriptContext = "tap" | "segwitv0" | "legacy"; declare module "./wasm/wasm_miniscript" { interface WrapDescriptor { + /** These are not the same types of nodes as in the ast module */ node(): unknown; } @@ -18,6 +19,7 @@ declare module "./wasm/wasm_miniscript" { } interface WrapMiniscript { + /** These are not the same types of nodes as in the ast module */ node(): unknown; } @@ -30,3 +32,5 @@ declare module "./wasm/wasm_miniscript" { export { WrapDescriptor as Descriptor } from "./wasm/wasm_miniscript"; export { WrapMiniscript as Miniscript } from "./wasm/wasm_miniscript"; export { WrapPsbt as Psbt } from "./wasm/wasm_miniscript"; + +export * as ast from "./ast"; diff --git a/packages/wasm-miniscript/package.json b/packages/wasm-miniscript/package.json index a708a6c..ae8aef4 100644 --- a/packages/wasm-miniscript/package.json +++ b/packages/wasm-miniscript/package.json @@ -12,8 +12,8 @@ "dist/*/js/wasm/wasm_miniscript_bg.js", "dist/*/js/wasm/wasm_miniscript_bg.wasm", "dist/*/js/wasm/wasm_miniscript_bg.wasm.d.ts", - "dist/*/js/index.d.ts", - "dist/*/js/index.js" + "dist/*/js/ast/*", + "dist/*/js/index.*" ], "main": "dist/node/js/index.js", "types": "dist/node/js/index.d.ts", diff --git a/packages/wasm-miniscript/src/try_into_js_value.rs b/packages/wasm-miniscript/src/try_into_js_value.rs index ec6a9b6..345e454 100644 --- a/packages/wasm-miniscript/src/try_into_js_value.rs +++ b/packages/wasm-miniscript/src/try_into_js_value.rs @@ -92,7 +92,7 @@ impl TryIntoJsValue for AbsLockTime { impl TryIntoJsValue for RelLockTime { fn try_to_js_value(&self) -> Result { - Ok(JsValue::from_str(&self.to_string())) + Ok(JsValue::from_f64(self.to_consensus_u32() as f64)) } } diff --git a/packages/wasm-miniscript/test/ast/formatNode.ts b/packages/wasm-miniscript/test/ast/formatNode.ts new file mode 100644 index 0000000..19130b9 --- /dev/null +++ b/packages/wasm-miniscript/test/ast/formatNode.ts @@ -0,0 +1,14 @@ +import * as assert from "assert"; + +import { formatNode } from "../../js/ast"; + +describe("formatNode", function () { + it("formats simple nodes", function () { + assert.strictEqual(formatNode({ pk: "lol" }), "pk(lol)"); + assert.strictEqual(formatNode({ after: 1 }), "after(1)"); + assert.strictEqual( + formatNode({ and_v: [{ after: 1 }, { after: 1 }] }), + "and_v(after(1),after(1))", + ); + }); +}); diff --git a/packages/wasm-miniscript/test/descriptorUtil.ts b/packages/wasm-miniscript/test/descriptorUtil.ts index c4a0cb4..d1ac99b 100644 --- a/packages/wasm-miniscript/test/descriptorUtil.ts +++ b/packages/wasm-miniscript/test/descriptorUtil.ts @@ -2,6 +2,7 @@ import * as fs from "fs/promises"; import * as utxolib from "@bitgo/utxo-lib"; import { Descriptor } from "../js"; import * as assert from "node:assert"; +import { DescriptorNode, MiniscriptNode } from "../js/ast"; async function assertEqualJSON(path: string, value: unknown): Promise { try { @@ -16,8 +17,15 @@ async function assertEqualJSON(path: string, value: unknown): Promise { } } -export async function assertEqualAst(path: string, descriptor: Descriptor): Promise { - await assertEqualJSON(path, { descriptor: descriptor.toString(), ast: descriptor.node() }); +export async function assertEqualFixture( + path: string, + content: { + descriptor: string; + wasmNode: unknown; + ast: DescriptorNode | MiniscriptNode; + }, +): Promise { + await assertEqualJSON(path, content); } /** Expand a template with the given root wallet keys and chain code */ diff --git a/packages/wasm-miniscript/test/fixtures/0.json b/packages/wasm-miniscript/test/fixtures/0.json index da15104..e47970d 100644 --- a/packages/wasm-miniscript/test/fixtures/0.json +++ b/packages/wasm-miniscript/test/fixtures/0.json @@ -1,6 +1,6 @@ { "descriptor": "pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#9pcxlpvx", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "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 index da15104..e47970d 100644 --- a/packages/wasm-miniscript/test/fixtures/1.json +++ b/packages/wasm-miniscript/test/fixtures/1.json @@ -1,6 +1,6 @@ { "descriptor": "pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#9pcxlpvx", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "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 index b807ac0..445aa42 100644 --- a/packages/wasm-miniscript/test/fixtures/10.json +++ b/packages/wasm-miniscript/test/fixtures/10.json @@ -1,8 +1,11 @@ { "descriptor": "pkh(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#9907vvwz", - "ast": { + "wasmNode": { "Pkh": { "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" } + }, + "ast": { + "pkh": "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 index b807ac0..445aa42 100644 --- a/packages/wasm-miniscript/test/fixtures/11.json +++ b/packages/wasm-miniscript/test/fixtures/11.json @@ -1,8 +1,11 @@ { "descriptor": "pkh(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#9907vvwz", - "ast": { + "wasmNode": { "Pkh": { "Single": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" } + }, + "ast": { + "pkh": "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 index d936bb9..01c6717 100644 --- a/packages/wasm-miniscript/test/fixtures/12.json +++ b/packages/wasm-miniscript/test/fixtures/12.json @@ -1,6 +1,6 @@ { "descriptor": "sh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#s53ls94y", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "sh": { + "pk": "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 index d936bb9..01c6717 100644 --- a/packages/wasm-miniscript/test/fixtures/13.json +++ b/packages/wasm-miniscript/test/fixtures/13.json @@ -1,6 +1,6 @@ { "descriptor": "sh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#s53ls94y", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "sh": { + "pk": "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 index eeeb48c..3328880 100644 --- a/packages/wasm-miniscript/test/fixtures/14.json +++ b/packages/wasm-miniscript/test/fixtures/14.json @@ -1,6 +1,6 @@ { "descriptor": "sh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#dr3u9ynx", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "sh": { + "pkh": "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 index eeeb48c..3328880 100644 --- a/packages/wasm-miniscript/test/fixtures/15.json +++ b/packages/wasm-miniscript/test/fixtures/15.json @@ -1,6 +1,6 @@ { "descriptor": "sh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#dr3u9ynx", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "sh": { + "pkh": "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 index 45095bb..34e06a5 100644 --- a/packages/wasm-miniscript/test/fixtures/16.json +++ b/packages/wasm-miniscript/test/fixtures/16.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#35m26dd5", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "wsh": { + "pk": "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 index 45095bb..34e06a5 100644 --- a/packages/wasm-miniscript/test/fixtures/17.json +++ b/packages/wasm-miniscript/test/fixtures/17.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#35m26dd5", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "wsh": { + "pk": "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 index 0919cbd..d21e2cf 100644 --- a/packages/wasm-miniscript/test/fixtures/18.json +++ b/packages/wasm-miniscript/test/fixtures/18.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#c2m8h006", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "wsh": { + "pkh": "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 index 0919cbd..d21e2cf 100644 --- a/packages/wasm-miniscript/test/fixtures/19.json +++ b/packages/wasm-miniscript/test/fixtures/19.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#c2m8h006", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Check": { @@ -10,5 +10,10 @@ } } } + }, + "ast": { + "wsh": { + "pkh": "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 index 08f4def..94675eb 100644 --- a/packages/wasm-miniscript/test/fixtures/2.json +++ b/packages/wasm-miniscript/test/fixtures/2.json @@ -1,8 +1,11 @@ { "descriptor": "pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#wf36a0pg", - "ast": { + "wasmNode": { "Pkh": { "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } + }, + "ast": { + "pkh": "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 index 9c74574..c2ebde7 100644 --- a/packages/wasm-miniscript/test/fixtures/20.json +++ b/packages/wasm-miniscript/test/fixtures/20.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#3kkw724y", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -12,5 +12,12 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "pk": "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 index 9c74574..c2ebde7 100644 --- a/packages/wasm-miniscript/test/fixtures/21.json +++ b/packages/wasm-miniscript/test/fixtures/21.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#3kkw724y", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -12,5 +12,12 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "pk": "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 index ba47b9a..959b0c5 100644 --- a/packages/wasm-miniscript/test/fixtures/22.json +++ b/packages/wasm-miniscript/test/fixtures/22.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#8mnh2d6x", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -12,5 +12,12 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "pkh": "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 index ba47b9a..959b0c5 100644 --- a/packages/wasm-miniscript/test/fixtures/23.json +++ b/packages/wasm-miniscript/test/fixtures/23.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))#8mnh2d6x", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -12,5 +12,12 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "pkh": "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 index 9bef29d..fd004ba 100644 --- a/packages/wasm-miniscript/test/fixtures/24.json +++ b/packages/wasm-miniscript/test/fixtures/24.json @@ -1,6 +1,6 @@ { "descriptor": "pk(xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)#9rspda0y", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "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 index 9bef29d..fd004ba 100644 --- a/packages/wasm-miniscript/test/fixtures/25.json +++ b/packages/wasm-miniscript/test/fixtures/25.json @@ -1,6 +1,6 @@ { "descriptor": "pk(xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)#9rspda0y", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "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 index 6b89590..bf6b581 100644 --- a/packages/wasm-miniscript/test/fixtures/26.json +++ b/packages/wasm-miniscript/test/fixtures/26.json @@ -1,8 +1,11 @@ { "descriptor": "pkh([bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0)#j6nhxk2j", - "ast": { + "wasmNode": { "Pkh": { "XPub": "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" } + }, + "ast": { + "pkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/27.json +++ b/packages/wasm-miniscript/test/fixtures/27.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/28.json +++ b/packages/wasm-miniscript/test/fixtures/28.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/29.json +++ b/packages/wasm-miniscript/test/fixtures/29.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 641dee0..85dd48a 100644 --- a/packages/wasm-miniscript/test/fixtures/3.json +++ b/packages/wasm-miniscript/test/fixtures/3.json @@ -1,8 +1,11 @@ { "descriptor": "pkh([deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#v0p5w8jl", - "ast": { + "wasmNode": { "Pkh": { "Single": "[deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } + }, + "ast": { + "pkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/30.json +++ b/packages/wasm-miniscript/test/fixtures/30.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/31.json +++ b/packages/wasm-miniscript/test/fixtures/31.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 3105b60..f2ad4a3 100644 --- a/packages/wasm-miniscript/test/fixtures/32.json +++ b/packages/wasm-miniscript/test/fixtures/32.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)#66s997t5", - "ast": { + "wasmNode": { "Wpkh": { "XPub": "[ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*" } + }, + "ast": { + "wpkh": "[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 index 4cca1da..b0cf953 100644 --- a/packages/wasm-miniscript/test/fixtures/33.json +++ b/packages/wasm-miniscript/test/fixtures/33.json @@ -1,10 +1,15 @@ { "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", - "ast": { + "wasmNode": { "Sh": { "Wpkh": { "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" } } + }, + "ast": { + "sh": { + "wpkh": "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 index 4cca1da..b0cf953 100644 --- a/packages/wasm-miniscript/test/fixtures/34.json +++ b/packages/wasm-miniscript/test/fixtures/34.json @@ -1,10 +1,15 @@ { "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", - "ast": { + "wasmNode": { "Sh": { "Wpkh": { "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" } } + }, + "ast": { + "sh": { + "wpkh": "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 index 4cca1da..b0cf953 100644 --- a/packages/wasm-miniscript/test/fixtures/35.json +++ b/packages/wasm-miniscript/test/fixtures/35.json @@ -1,10 +1,15 @@ { "descriptor": "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#zqz3qes9", - "ast": { + "wasmNode": { "Sh": { "Wpkh": { "XPub": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h" } } + }, + "ast": { + "sh": { + "wpkh": "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 index f011d4a..aefa4a4 100644 --- a/packages/wasm-miniscript/test/fixtures/36.json +++ b/packages/wasm-miniscript/test/fixtures/36.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#gcn7zwma", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 1, + "xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0", + "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 index f011d4a..aefa4a4 100644 --- a/packages/wasm-miniscript/test/fixtures/37.json +++ b/packages/wasm-miniscript/test/fixtures/37.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#gcn7zwma", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 1, + "xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0", + "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 index e15979d..f07a76f 100644 --- a/packages/wasm-miniscript/test/fixtures/38.json +++ b/packages/wasm-miniscript/test/fixtures/38.json @@ -1,8 +1,11 @@ { "descriptor": "pkh([01234567/10/20/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0)#ndj6gqy2", - "ast": { + "wasmNode": { "Pkh": { "XPub": "[01234567/10/20/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0" } + }, + "ast": { + "pkh": "[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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/39.json +++ b/packages/wasm-miniscript/test/fixtures/39.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 11d423f..f249976 100644 --- a/packages/wasm-miniscript/test/fixtures/4.json +++ b/packages/wasm-miniscript/test/fixtures/4.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#ah7klf29", - "ast": { + "wasmNode": { "Wpkh": { "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } + }, + "ast": { + "wpkh": "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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/40.json +++ b/packages/wasm-miniscript/test/fixtures/40.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 859a7a0..5a29425 100644 --- a/packages/wasm-miniscript/test/fixtures/41.json +++ b/packages/wasm-miniscript/test/fixtures/41.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -17,5 +17,15 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 2, + "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0", + "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*", + "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 index 859a7a0..5a29425 100644 --- a/packages/wasm-miniscript/test/fixtures/42.json +++ b/packages/wasm-miniscript/test/fixtures/42.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -17,5 +17,15 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 2, + "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0", + "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*", + "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 index 859a7a0..5a29425 100644 --- a/packages/wasm-miniscript/test/fixtures/43.json +++ b/packages/wasm-miniscript/test/fixtures/43.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*h))#j24t3mne", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -17,5 +17,15 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 2, + "[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0", + "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*", + "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 index d670b59..ea1b0a2 100644 --- a/packages/wasm-miniscript/test/fixtures/44.json +++ b/packages/wasm-miniscript/test/fixtures/44.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))#nc9gqlkc", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -58,5 +58,30 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "multi": [ + 16, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "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 index d670b59..ea1b0a2 100644 --- a/packages/wasm-miniscript/test/fixtures/45.json +++ b/packages/wasm-miniscript/test/fixtures/45.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))#nc9gqlkc", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -58,5 +58,30 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "multi": [ + 16, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "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 index 65a9711..f9c2c50 100644 --- a/packages/wasm-miniscript/test/fixtures/46.json +++ b/packages/wasm-miniscript/test/fixtures/46.json @@ -1,6 +1,6 @@ { "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": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -68,5 +68,32 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 20, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232", + "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e", + "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca", + "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759", + "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 index 65a9711..f9c2c50 100644 --- a/packages/wasm-miniscript/test/fixtures/47.json +++ b/packages/wasm-miniscript/test/fixtures/47.json @@ -1,6 +1,6 @@ { "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": { + "wasmNode": { "Wsh": { "Ms": { "Multi": [ @@ -68,5 +68,32 @@ ] } } + }, + "ast": { + "wsh": { + "multi": [ + 20, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232", + "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e", + "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca", + "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759", + "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 index 04e28ca..53728c8 100644 --- a/packages/wasm-miniscript/test/fixtures/48.json +++ b/packages/wasm-miniscript/test/fixtures/48.json @@ -1,6 +1,6 @@ { "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": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -70,5 +70,34 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "multi": [ + 20, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232", + "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e", + "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca", + "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759", + "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 index 04e28ca..53728c8 100644 --- a/packages/wasm-miniscript/test/fixtures/49.json +++ b/packages/wasm-miniscript/test/fixtures/49.json @@ -1,6 +1,6 @@ { "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": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -70,5 +70,34 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "multi": [ + 20, + "03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0", + "0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600", + "0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8", + "0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8", + "02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8", + "0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286", + "0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009", + "02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d", + "03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9", + "02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af", + "02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd", + "036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24", + "02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc", + "02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3", + "02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06", + "0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232", + "02bc2feaa536991d269aae46abb8f3772a5b3ad592314945e51543e7da84c4af6e", + "0318bf32e5217c1eb771a6d5ce1cd39395dff7ff665704f175c9a5451d95a2f2ca", + "02c681a6243f16208c2004bb81f5a8a67edfdd3e3711534eadeec3dcf0b010c759", + "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 index 11d423f..f249976 100644 --- a/packages/wasm-miniscript/test/fixtures/5.json +++ b/packages/wasm-miniscript/test/fixtures/5.json @@ -1,8 +1,11 @@ { "descriptor": "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)#ah7klf29", - "ast": { + "wasmNode": { "Wpkh": { "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } + }, + "ast": { + "wpkh": "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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/50.json +++ b/packages/wasm-miniscript/test/fixtures/50.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/51.json +++ b/packages/wasm-miniscript/test/fixtures/51.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/52.json +++ b/packages/wasm-miniscript/test/fixtures/52.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 91e53b8..0238492 100644 --- a/packages/wasm-miniscript/test/fixtures/53.json +++ b/packages/wasm-miniscript/test/fixtures/53.json @@ -1,6 +1,6 @@ { "descriptor": "sh(multi(2,[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0))#tjg09x5t", - "ast": { + "wasmNode": { "Sh": { "Ms": { "Multi": [ @@ -14,5 +14,14 @@ ] } } + }, + "ast": { + "sh": { + "multi": [ + 2, + "[00000000/111'/222]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index f26aa74..b121ff2 100644 --- a/packages/wasm-miniscript/test/fixtures/54.json +++ b/packages/wasm-miniscript/test/fixtures/54.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(and_v(v:ripemd160(095ff41131e5946f3c85f79e44adbcf8e27e080e),multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)))#hv6qsxrp", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "AndV": [ @@ -23,5 +23,21 @@ ] } } + }, + "ast": { + "wsh": { + "and_v": [ + { + "v:ripemd160": "095ff41131e5946f3c85f79e44adbcf8e27e080e" + }, + { + "multi": [ + 1, + "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index f26aa74..b121ff2 100644 --- a/packages/wasm-miniscript/test/fixtures/55.json +++ b/packages/wasm-miniscript/test/fixtures/55.json @@ -1,6 +1,6 @@ { "descriptor": "wsh(and_v(v:ripemd160(095ff41131e5946f3c85f79e44adbcf8e27e080e),multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0)))#hv6qsxrp", - "ast": { + "wasmNode": { "Wsh": { "Ms": { "AndV": [ @@ -23,5 +23,21 @@ ] } } + }, + "ast": { + "wsh": { + "and_v": [ + { + "v:ripemd160": "095ff41131e5946f3c85f79e44adbcf8e27e080e" + }, + { + "multi": [ + 1, + "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "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 index 67ba853..e069b7d 100644 --- a/packages/wasm-miniscript/test/fixtures/56.json +++ b/packages/wasm-miniscript/test/fixtures/56.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(thresh(1,pkh(03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204),a:and_n(multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0),n:older(2)))))#m3v3lenu", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -30,7 +30,7 @@ { "ZeroNotEqual": { "Older": { - "relLockTime": "2" + "relLockTime": 2 } } }, @@ -42,5 +42,31 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "thresh": [ + 1, + { + "pkh": "03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204" + }, + { + "a:and_n": [ + { + "multi": [ + 1, + "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + ] + }, + { + "n:older": 2 + } + ] + } + ] + } + } } } \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/57.json b/packages/wasm-miniscript/test/fixtures/57.json index 67ba853..e069b7d 100644 --- a/packages/wasm-miniscript/test/fixtures/57.json +++ b/packages/wasm-miniscript/test/fixtures/57.json @@ -1,6 +1,6 @@ { "descriptor": "sh(wsh(thresh(1,pkh(03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204),a:and_n(multi(1,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0),n:older(2)))))#m3v3lenu", - "ast": { + "wasmNode": { "Sh": { "Wsh": { "Ms": { @@ -30,7 +30,7 @@ { "ZeroNotEqual": { "Older": { - "relLockTime": "2" + "relLockTime": 2 } } }, @@ -42,5 +42,31 @@ } } } + }, + "ast": { + "sh": { + "wsh": { + "thresh": [ + 1, + { + "pkh": "03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204" + }, + { + "a:and_n": [ + { + "multi": [ + 1, + "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL", + "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0" + ] + }, + { + "n:older": 2 + } + ] + } + ] + } + } } } \ No newline at end of file diff --git a/packages/wasm-miniscript/test/fixtures/58.json b/packages/wasm-miniscript/test/fixtures/58.json index c9368f9..040dd15 100644 --- a/packages/wasm-miniscript/test/fixtures/58.json +++ b/packages/wasm-miniscript/test/fixtures/58.json @@ -1,6 +1,6 @@ { "descriptor": "tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0,xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0,xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0))#82q34xv2", - "ast": { + "wasmNode": { "Tr": [ { "Single": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" @@ -20,5 +20,18 @@ ] } ] + }, + "ast": { + "tr": [ + "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0", + { + "multi_a": [ + 2, + "xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0", + "xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0", + "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 index 4887478..11ffb35 100644 --- a/packages/wasm-miniscript/test/fixtures/6.json +++ b/packages/wasm-miniscript/test/fixtures/6.json @@ -1,10 +1,15 @@ { "descriptor": "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#0aua3a8r", - "ast": { + "wasmNode": { "Sh": { "Wpkh": { "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } } + }, + "ast": { + "sh": { + "wpkh": "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 index 4887478..11ffb35 100644 --- a/packages/wasm-miniscript/test/fixtures/7.json +++ b/packages/wasm-miniscript/test/fixtures/7.json @@ -1,10 +1,15 @@ { "descriptor": "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))#0aua3a8r", - "ast": { + "wasmNode": { "Sh": { "Wpkh": { "Single": "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd" } } + }, + "ast": { + "sh": { + "wpkh": "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 index 700935c..56307a9 100644 --- a/packages/wasm-miniscript/test/fixtures/8.json +++ b/packages/wasm-miniscript/test/fixtures/8.json @@ -1,6 +1,6 @@ { "descriptor": "pk(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#fm6gcqk2", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "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 index 700935c..56307a9 100644 --- a/packages/wasm-miniscript/test/fixtures/9.json +++ b/packages/wasm-miniscript/test/fixtures/9.json @@ -1,6 +1,6 @@ { "descriptor": "pk(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)#fm6gcqk2", - "ast": { + "wasmNode": { "Bare": { "Check": { "PkK": { @@ -8,5 +8,8 @@ } } } + }, + "ast": { + "pk": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235" } } \ No newline at end of file diff --git a/packages/wasm-miniscript/test/test.ts b/packages/wasm-miniscript/test/test.ts index 77d5ec9..16f884f 100644 --- a/packages/wasm-miniscript/test/test.ts +++ b/packages/wasm-miniscript/test/test.ts @@ -1,17 +1,9 @@ import * as assert from "assert"; -import { Miniscript, Descriptor } from "../js"; +import { Descriptor } from "../js"; import { fixtures } from "./descriptorFixtures"; -import { assertEqualAst } from "./descriptorUtil"; - -describe("AST", function () { - it("should get ast", function () { - const pubkey = Buffer.alloc(32, 1).toString("hex"); - const result = Miniscript.fromString(`multi_a(1,${pubkey})`, "tap"); - console.dir(result.node(), { depth: null }); - console.dir(result.encode(), { depth: null }); - console.dir(Miniscript.fromBitcoinScript(result.encode(), "tap").toString()); - }); -}); +import { assertEqualFixture } from "./descriptorUtil"; +import { fromDescriptor } from "../js/ast"; +import { formatNode } from "../js/ast"; function removeChecksum(descriptor: string): string { const parts = descriptor.split("#"); @@ -61,6 +53,12 @@ function assertKnownDescriptorType(descriptor: Descriptor) { describe("Descriptor fixtures", function () { fixtures.valid.forEach((fixture, i) => { describe("fixture " + i, function () { + let descriptor: Descriptor; + + before("setup descriptor", function () { + descriptor = Descriptor.fromString(fixture.descriptor, "derivable"); + }); + it("should round-trip (pkType string)", function () { let descriptorString = Descriptor.fromString(fixture.descriptor, "string").toString(); if (fixture.checksumRequired === false) { @@ -99,7 +97,19 @@ describe("Descriptor fixtures", function () { assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy())); assertKnownDescriptorType(descriptor); - await assertEqualAst(__dirname + `/fixtures/${i}.json`, descriptor); + }); + + it("can round-trip with formatNode(toWasmNode(.))", async function () { + const ast = fromDescriptor(descriptor); + assert.strictEqual(formatNode(ast), removeChecksum(descriptor.toString())); + }); + + it("has expected fixture", async function () { + await assertEqualFixture(__dirname + `/fixtures/${i}.json`, { + descriptor: descriptor.toString(), + wasmNode: descriptor.node(), + ast: fromDescriptor(descriptor), + }); }); }); });