Skip to content

Commit 6cf9ffb

Browse files
feat: add support for taproot descriptors
Add test fixtures and validation for taproot descriptor support. Handle Tr type scriptpubkey length checks. Issue: BTC-1829
1 parent b86dd45 commit 6cf9ffb

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

packages/wasm-miniscript/test/descriptorFixtures.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,12 @@ export const fixtures = {
345345
script: "a914767e9119ff3b3ac0cb6dcfe21de1842ccf85f1c487",
346346
checksumRequired: false,
347347
},
348+
{
349+
descriptor:
350+
"tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,xpub661MyMwAqRbcFXS2qwsTkaFc7PEpwDXWgY1Hx2MS7XywhW24sTjQzxiUgnGNW5v6DsW9Z8JcAqf8a22v21jDSA3DwLbbpt2ra3WbP83QNvP/0/0,xpub661MyMwAqRbcGfiaWcoeKLerFu3qRfy6zSYAwnmxSKW8JSauRajFsAsRHs2pV4q5rxkb4ynx4Bm8t54McTCp8V27s7XsdpD8T4s56etpjro/0/0,xpub661MyMwAqRbcH4HzWiCwmYajy1SXZngxHvpYDNEX4xjrDAneAm6rnpPuPPXcBRsSgxupDBmH2tzPHkikNrnLbsvTHemPFHSFbZxonZcCwFi/0/0))#82q34xv2",
351+
script: "51207e8c409f0ab01197f9676efc3a9505f1f09ed0f21693e46a3aa3b6b54d437aa2",
352+
checksumRequired: true,
353+
},
348354
],
349355
invalid: [
350356
{

packages/wasm-miniscript/test/test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function getScriptPubKeyLength(descType: string): number {
2929
case "Pkh":
3030
return 25;
3131
case "Wsh":
32+
case "Tr":
3233
return 34;
3334
case "Bare":
3435
throw new Error("cannot determine scriptPubKey length for Bare descriptor");
@@ -50,6 +51,7 @@ function assertKnownDescriptorType(descriptor: Descriptor) {
5051
case "Wsh":
5152
case "Wpkh":
5253
case "ShWpkh":
54+
case "Tr":
5355
break;
5456
default:
5557
throw new Error("unexpected descriptor type " + descriptor.descType());
@@ -94,6 +96,7 @@ describe("Descriptor fixtures", function () {
9496
// FIXME(BTC-1337): xprvs with hardened derivations are not supported yet
9597
console.log("Skipping encoding test for fixture", fixture.descriptor, i);
9698
}
99+
97100
assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy()));
98101
assertKnownDescriptorType(descriptor);
99102
await assertEqualAst(__dirname + `/fixtures/${i}.json`, descriptor);

0 commit comments

Comments
 (0)