Repository navigation
Releases: threshold-network/tbtc-subgraph
Release list
v0.52.0
v0.52.0
This release adds the rebate-staking history needed by Explorer, records the treasury fee divisor in force at each deposit reveal, and retires legacy economic operator-staking fields. It also guards remaining mapping contract calls so reverted enrichment reads do not halt indexing.
Changes
- #22: guard mapping contract calls and enforce guarded access in CI; preserve DKG event counts when enrichment calls revert.
- #23: record nullable
Deposit.treasuryFeeDivisorAtRevealfrom ordered initialization/governance events. Zero is known disabled fees; null is unknown history. - #24: add
RebateStaker,RebateStakingEvent, andRebateStakingStats. T balances use 18 decimals, rebates use satoshis, and pending unstaking remains included until finalization. - #25: index registration independently of legacy token stake; expose application operator identities and reported authorization weights. Remove retired operator stake balances/roles and obsolete aggregate stake counters; retain wallet/group public keys, rewards, and raw fault telemetry.
- #26: refresh patched brace-expansion releases and enforce a reviewed braces depth-guard backport in the Node build/deploy toolchain. The version-only OSV exception applies to one locally patched advisory and expires 2026-11-04.
Compatibility and rollout
The operator schema changes are breaking. Consult docs/operator-staking-retirement.md for removed fields and replacements. Preserve the previous published deployment for historical stake queries and rollback. This version requires a full re-sync; no graft is configured.
Deploy and sync, publish, validate the deployment-pinned gateway, update and verify the production API proxy, and only then release Explorer PR tlabs-xyz/threshold-dapp#453. Explorer cleanup #454 removes an unused query and preserves the active wallet fallback. A frontend/subgraph rollback must preserve schema compatibility.
Validation
The combined mapping changes passed code generation, mainnet and Sepolia builds, 17 mapping tests, and 97 Node regression/toolchain tests before the dependency follow-up. The follow-up adds seven security checks, passed the same build/mapping gates, and passed the full configured OSV scan. The unfiltered audit still identifies the source-patched braces package by version.
Production evidence
- Annotated tag
v0.52.0points to4c0a3858513c6973f6ee3aa969eda0db2b83e56a. - Release checks and Studio deployment succeeded; production approval was granted by
piotr-roslaniec. - Studio deployment completed at 2026-10-05 07:09:46 UTC with deployment ID
QmQQQ5hHWPfFC77zzMgWJSq7MbW8ctumDxnChGoi1yAdr5. - Studio fully synced and prepublication validation passed on October 6: seven same-block staker balance/pending comparisons, five rebate receipt comparisons, six earliest/recent deposit fee-divisor comparisons, and preserved wallet keys. Independent indexed-history replay reconciled all 50 stakers and 583 events.
- Published on Arbitrum One on October 6. The deployment-pinned gateway passed the full smoke check before cutover.
- Production now serves v0.52.0 through
https://api.threshold.network/subgraph/mainnet, with cache namespacesubgraph-v0.52.0-20261006. The exact pre-cutover ordinary query returned the new deployment on both MISS and HIT. Full production smoke passed at Ethereum block 26,134,128 with no indexing errors, canonical-block checks, seven staker balance/pending comparisons, five rebate receipts, six deposit fee-divisor comparisons, operator schema, and preserved wallet keys. - Published v0.51.0, deployment
QmY5pJqTSL4iTJMHu7cU5AFzzY3kHyXbjcqEr9db6wXeE7, and its protected pinned gateway are retained for rollback. Any rollback must use a fresh cache namespace and account for frontend schema compatibility. - The dependent frontend PR tlabs-xyz/threshold-dapp#453 is merged and deployed in v1.10.16. Its preview passed staking totals/pagination, deposit fee/details, redemption records and wallet fallback checks; the canonical production site serves the tagged build and displays the new staking data.
The backend is live in production. Contract comparisons are representative samples; replay of all indexed staking history is a consistency check, not an exhaustive independent reconstruction of chain logs.
v0.49.0
What's new
Subgraph mainnet deploy at commit 40a158c. Adds cross-chain redemption tracking, the FROST/Schnorr event surface mirrored from the tBTC monorepo, routed-deposit support for all five L2 depositors, and a sweep-fee/deposit-key fix that was previously corrupting on-chain data.
Changes by PR
- #5
fix(swept): record real treasury fee and per-deposit minted amount— swept deposits now record the actual treasury fee charged (not zero) and the per-deposit minted amount on the redemption entity, so downstream queries can compute the realized fee correctly. - #3
feat: add cross-chain redemption tracking via Wormhole VAA parsing— indexesL1BTCRedeemerWormhole.RedemptionRequestedplus the matching call-handler, and tracksRedemption,WormholeSender, andCrossChainRedemptionTrackerentities from block 18500000 on mainnet. - #4
feat(subgraph): mirror FROST/Schnorr event surface from tBTC monorepo— adds the FROST-wallet registration and ECDSA/P2TR fraud-router event handlers, plus the lifecycle-router events. Mirrorstlabs-xyz/tbtc:feat/frost-schnorr-migrationat the frozenfrost-extraction-source-v1tag.- Companion:
scripts/verify-subgraph-abi-drift.mjsnow includes theanonymousflag in event normalization, so two ABIs with same signature but differentanonymousno longer hash identically.
- Companion:
- #7
feat: index routed-deposit destinationOwner on Deposit— addsRoutedDepositentity and indexesDepositInitialized/DepositFinalizedfromGaslessDepositor,ArbitrumDepositor,BaseDepositor,SuiDepositor, andStarkNetDepositor. Both legacy and current event formats handled.Bridge.deposits(depositKey)now resolves the routed-deposit destinationOwner when the matching routed event arrives first. - #8
fix: pass the correct deposit key to Bridge.deposits()— the prior code passed a corrupted key (lowercase a-f hex nibbles read as 0); now uses the samehexToBigintas everywhere else, which already handles lowercase hex correctly.
Networks
| Network | Studio subgraph | Source build |
|---|---|---|
| Mainnet | tbtc-mainnet |
this tag |
Sepolia is compile-checked only (no Studio subgraph exists; see docs/deployment.md).
Deployment notes
Cut from master @ 40a158c. Triggered by pushing the v0.49.0 tag; passed the checks build gate and the production environment approval gate before deploying.