From 40613a8a73625fe3d91aef856aaa09d5c1976b24 Mon Sep 17 00:00:00 2001 From: Flotapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Tue, 27 Oct 2026 16:16:59 +0100 Subject: [PATCH] bench 306 promised Dash in a title the board never shows All three providers on privacy-round-trip query asset="ZEC.ZEC", so the seo_title "Zcash and Dash in and out" named an asset the table does not carry. The harness does measure Dash, but only on Maya: THORChain and NEAR Intents do not quote it, and this board's rows are rails, so a Dash row would be one rail wide. The title now says what the board shows and a methodology bullet says why it is one asset wide, pointing at the exit cost board for the asset comparison. 307's title was correct but read as arbitrary: nothing on the page said why Zcash. It is the only asset measured that HAS a shielded address format, Monero being private by default and Dash offering optional mixing over ordinary addresses. Added as a bullet. THORChain shipped without a mark and rendered as a letter tile. The logo is the 180x180 icon thorchain.org declares in its own head, shape checked before it was kept. Co-Authored-By: Claude Opus 5 (1M context) --- benchmarks/privacy-round-trip.yml | 3 ++- benchmarks/shielded-payout-coverage.yml | 1 + public/logos/thorchain.png | Bin 0 -> 35433 bytes src/data/provider-registry.ts | 6 ++++++ src/lib/logo-manifest.ts | 1 + src/lib/providers.ts | 4 +++- src/lib/spec-provider-set.test.ts | 2 +- 7 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 public/logos/thorchain.png diff --git a/benchmarks/privacy-round-trip.yml b/benchmarks/privacy-round-trip.yml index 85944b1eb..88e12cb9f 100644 --- a/benchmarks/privacy-round-trip.yml +++ b/benchmarks/privacy-round-trip.yml @@ -1,7 +1,7 @@ slug: privacy-round-trip number: "306" title: Privacy round trip cost, what going into Zcash and back loses -seo_title: "Privacy round trip cost: Zcash and Dash in and out" +seo_title: "Privacy round trip cost: what Zcash in and out loses" seo_description: "{{best_name}} loses the least on a round trip into a privacy asset and back, {{best_p50}} at the measured size. {{declared_count}} rails compared." subtitle: "Basis points and minutes lost converting a liquid asset into a privacy asset and back out, on non-custodial rails, at three sizes." category: Bridges @@ -48,6 +48,7 @@ abstract: | methodology: - "The two rails do not start from the same asset, because forcing one on both would mean quoting a pair one of them serves badly. The size tier is the shared axis and each rail sends its own: Maya sends 0.001, 0.01 and 0.1 BTC, NEAR Intents sends 100, 1,000 and 10,000 USDC on Base. The published figure is basis points of round-trip loss, which is unit-free and therefore comparable across both." + - "Rows are rails and the asset is Zcash, because it is the only privacy asset all three rails carry. Maya also quotes Dash and is measured on it, but a Dash row here would be one rail wide and would compare a venue against nothing. The asset comparison lives on the exit cost board." - "The All sizes tab is the median of the tiers measured on the same tick, not a fourth size and not an average: it is the one summary that does not privilege a trade size. Nothing is pooled from fewer than two tiers." - "A tier label is an approximation. The BTC amounts are fixed in BTC rather than re-derived from a price each tick, so the dollar value of Maya's rungs drifts with the BTC price while the tier name does not. The exact amounts are above and in the harness." - "Time is the sum of the two legs' own quoted durations, which is what each rail says the swap will take, not a measured settlement." diff --git a/benchmarks/shielded-payout-coverage.yml b/benchmarks/shielded-payout-coverage.yml index 62a42084e..914acba07 100644 --- a/benchmarks/shielded-payout-coverage.yml +++ b/benchmarks/shielded-payout-coverage.yml @@ -49,6 +49,7 @@ abstract: | to probe more widely. methodology: + - "Zcash is the asset here because it is the only one measured that HAS a shielded address format. Monero is private by default, with no transparent variant to choose between, and Dash offers optional mixing over ordinary addresses rather than a second address type. The question this board asks only exists for Zcash." - "Two dry quotes per rail per source chain per tick, one to a transparent t-address and one to a shielded unified address. Nothing is ever signed or sent; the harness holds no key and no wallet." - "The transparent quote is the control and runs first. A shielded refusal is recorded only when the control was accepted on the same source chain, so a rail that is down or out of liquidity never reads as refusing privacy." - "The shielded address is a mainnet unified address from Zcash's own published test vectors, bech32m verified at startup, and the transparent one is an address the rail itself handed over. Shielded addresses never appear on chain by design, so a published test vector is the only sound source for one." diff --git a/public/logos/thorchain.png b/public/logos/thorchain.png new file mode 100644 index 0000000000000000000000000000000000000000..7d177ca08cb3cad2bb258c90ce5e85b487cc4e7f GIT binary patch literal 35433 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 = { + thorchain: { + url: "https://thorchain.org", + description: + "Cross-chain liquidity protocol settling native swaps between Bitcoin, Ethereum, Zcash and others without wrapped assets. Streams large swaps into hundreds of sub-swaps to cut slippage, trading time for price.", + }, + xmr: { url: "https://www.getmonero.org", description: diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts index 6622ac592..f87202aa5 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -548,6 +548,7 @@ const RAW: Record = { // shares the mark. A separate logo would invent a project that does not // exist; the row name carries the distinction the board compares. "part-blind": "/logos/part.png", + thorchain: "/logos/thorchain.png", maya: "/logos/maya.png", zec: "/logos/zcash.svg", dash: "/logos/dash.png", diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 43e590e9c..c0438f7ac 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -893,7 +893,9 @@ const buildProvidersCached = unstable_cache( // sat in until #3273. // v23: six coin marks and six registry entries for bench 308, whose rows // were all rendering as initials. - ["providers-v23"], + // v24: thorchain gains a mark and a registry entry; it was the last row on + // the privacy boards still rendering as initials. + ["providers-v24"], // 900 s: the provider index feeds products / compare / answers, whose // numbers move slowly, and this revalidate is also the effective ISR // period of those ~500 pages (Next takes the min across a route's caches). diff --git a/src/lib/spec-provider-set.test.ts b/src/lib/spec-provider-set.test.ts index fadf35570..c0fb0f75d 100644 --- a/src/lib/spec-provider-set.test.ts +++ b/src/lib/spec-provider-set.test.ts @@ -80,6 +80,6 @@ describe("the provider set behind the cache keys", () => { "Then set EXPECTED to the hash in this failure, and add the provider", `to PRODUCT_NAMES if it needs a display name. Providers now: ${count}.`, ].join("\n"), - ).toBe("ac884c87096fd8d6"); + ).toBe("e1f812a907d115f2"); }); });