From dc34f617788cc40a0538532a2ef5c67e43c718df Mon Sep 17 00:00:00 2001 From: natsoni Date: Thu, 11 Jun 2026 12:19:12 +0200 Subject: [PATCH 1/2] Add detailed data formats and verification process to Taptree doc --- .../app/docs/api-docs/api-docs.component.html | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/docs/api-docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html index d22322fa24..c0b2bc38b9 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.html +++ b/frontend/src/app/docs/api-docs/api-docs.component.html @@ -478,16 +478,31 @@

A third party may need to verify unpublished script paths for a Taproot address. One option is to reveal each script by spending coins through every path on-chain, but this hurts privacy and may not be possible if a script is timelocked, for example.

-

A more private option is to share the Taproot data directly with the third party using the Taproot Tree widget. On the address page, use the icon to open a form where Taproot data can be entered. The same data can also be shared directly in the URL fragment:

+

Alternatively, you can share the Taproot data privately with the third party, using the Taproot Tree widget to fill in scripts that are not already known from on-chain spends. On the address page, use the icon to open a form where unpublished Taproot leaves can be passed.

+

The following formats are supported:

+ +

You can also embed the data directly in the URL fragment. Click the links below for examples:

-

Cryptographic checks on the provided data are done in the browser so the verifier can independently confirm that the provided scripts commit to the Taproot output key for the address.

+

The provided tapleaves are cryptographically verified against the address before being added to the Taproot Tree widget. Verification happens entirely in the browser, using the following process for each leaf derived from passed data:

+ From d048fd88d9c9c61a88564211b8505f7ef5db31b2 Mon Sep 17 00:00:00 2001 From: natsoni Date: Fri, 12 Jun 2026 16:08:07 +0200 Subject: [PATCH 2/2] Fix liquid unblinding from fragment --- .../src/app/components/transaction/transaction.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts index 459914f91d..b08b9729b3 100644 --- a/frontend/src/app/components/transaction/transaction.component.ts +++ b/frontend/src/app/components/transaction/transaction.component.ts @@ -1136,7 +1136,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy { } private formatFragment(fragmentParams: URLSearchParams, anchor: string | null = null): string | null { - const params = new URLSearchParams(fragmentParams.toString()); + const params = new URLSearchParams(fragmentParams); for (const [key, value] of Array.from(params.entries())) { if (value === '') { params.delete(key); @@ -1145,7 +1145,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy { if (anchor) { params.set(anchor, ''); } - return params.toString() || null; + return Array.from(params.entries()).map(([key, value]) => `${key}=${value}`).join('&') || null; } toggleGraph() {