Skip to content

feat(statics): add tsol:cttest devnet CT test mint (CHALO-2025) - #10115

Merged
bhavidhingra merged 1 commit into
masterfrom
bhavi/chalo-2025-tsol-ct-test-mint
Nov 3, 2026
Merged

bhavidhingra merged 1 commit into
masterfrom
bhavi/chalo-2025-tsol-ct-test-mint

Conversation

@bhavidhingra

Copy link
Copy Markdown
Contributor

Description

Adds one test-only Solana Token-2022 token to statics: tsol:cttest, mint
Ai1kEjbXhD31NxkYfjCpDgfHNVSYqkQcfYSGAwXidoxU on devnet.

Why a new token instead of one of the six existing CT-capable tsol mints
(tsol:gousd, tsol:stggousd, tsol:sofid, tsol:stgsofid, tsol:gospcx,
tsol:stggospcx): every one of those has ConfidentialTransferMint.autoApproveNewAccounts = false, and the approving key is the mint's confidential-transfer authority — a
different key from the mint authority, held by the token issuer (G2jNxv4v… for gousd,
Bcwcm84C… for stggousd/sofid/stgsofid, AvN5ZboK… for gospcx/stggospcx). With that
setting a freshly configured confidential account cannot receive anything until the issuer
approves it, which blocks the Solana CT indexer end-to-end proof (deposit → KMS decrypt →
transfer document → ATA reconcile) on a dependency BitGo cannot satisfy.

The new mint was created from the sandbox with autoApproveNewAccounts = true and nothing
else attached:

property value
program Token-2022
decimals 6
extensions ConfidentialTransferMint only (authority = sandbox-held key, no auditor)
freeze authority none
transfer fee none
transfer hook none

With no fee and no hook, an incoming confidential transfer takes the plain
ConfidentialTransfer path, and there is no freeze gate, so the proof exercises only the
BitGo CT pipeline rather than issuer policy.

No existing token, address or mapping is modified — the diff is one UnderlyingAsset member
and one tsolToken(...) entry.

Dependency for the consumer

Wallet-platform must pin a @bitgo/statics (or @bitgo-beta/statics) release that contains
this entry before the CT deposit proof can route enableToken for it; the CT enablement
lane resolves the token through statics before probing the mint on-chain.

Follow-up

Delete this entry once CT test mints exist as a first-class environment asset (alongside the
tsol:* CT mints the issuers provision). Tracked on CHALO-2025.

Issue Number

CHALO-2025

Type of change

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

  • modules/statics unit suite: 41,262 passing (test/unit/coins.ts, base.ts,
    tokenNamingConvention.ts and the rest of test/unit/**), including the UUID/name
    uniqueness and testnet-t-prefix convention checks.
  • prettier --check clean on both touched files.
  • Loaded the coin map directly: coins.get('tsol:cttest') → { fullName: 'Test Confidential Token', decimals: 6, tokenAddress: 'Ai1kEjbXhD31NxkYfjCpDgfHNVSYqkQcfYSGAwXidoxU', network: 'testnet' }, with tsol:gousd, tsol:stggospcx, tsol:t22mint unaffected.
  • Mint verified on devnet via jsonParsed: Token-2022, decimals 6, no freeze authority,
    confidentialTransferMint { autoApproveNewAccounts: true, auditor: null }.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation (n/a — statics entry is self-describing)

@bhavidhingra
bhavidhingra requested a review from a team as a code owner November 2, 2026 15:29

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@linear-code

linear-code Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

CHALO-2025

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Compatibility checks are failing on Node.js 27-nightly (experimental, non-blocking). This does not block merge, but it signals an incompatibility to fix before this release becomes supported.

View run

Adds a test-only Solana Token-2022 token whose devnet mint
(Ai1kEjbXhD31NxkYfjCpDgfHNVSYqkQcfYSGAwXidoxU) carries the
ConfidentialTransferMint extension with autoApproveNewAccounts = true.

Every other CT-capable tsol mint registered here (tsol:gousd, tsol:stggousd,
tsol:sofid, tsol:stgsofid, tsol:gospcx, tsol:stggospcx) has that flag off and a
confidential-transfer authority held by the token issuer, so a newly configured
confidential account cannot receive anything until the issuer approves it. That
blocks the Solana CT indexer end-to-end proof (deposit -> KMS decrypt -> transfer
document -> ATA reconcile), because the approval cannot be obtained from BitGo
side.

This mint was created from the sandbox (sol/confidentialTransfers/extA_createMint
.mjs) with a sandbox-held mint authority and no other extensions: decimals 6,
no freeze authority, no transfer fee, no transfer hook. That makes an incoming
transfer take the plain ConfidentialTransfer path and removes every issuer gate,
so the proof exercises only the BitGo CT pipeline.

Testnet only. Follow-up: delete this entry once the CT test mints exist in a
proper environment.

Refs: CHALO-2025
@bhavidhingra
bhavidhingra force-pushed the bhavi/chalo-2025-tsol-ct-test-mint branch from 85f8b15 to 0c69ff1 Compare November 2, 2026 16:21
@bhavidhingra
bhavidhingra merged commit 3dc7052 into master Nov 3, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants