QA: Verify Token-2022 (T2022) on Anvil ↔ Solana ↔ Terra Classic #97
Labels
No labels
agent:implement
agent:ready
backend
bug
cannot-reproduce
confirmed
desktop
docs
documentation
duplicate
enhancement
feature
frontend
good first issue
help wanted
high-risk
in-review
invalid
mobile
needs-triage
P0-critical
P1-high
P2-medium
P3-low
qa
QA
question
ready
report
responsive
security
security-escalate
smart-contract
solana
tablet
test-pass
ux
wallet-issue
wallet:keplr
wallet:metamask
wallet:station
wallet:walletconnect
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-bridge-monorepo#97
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scope
Verify the Token-2022 (T2022) QA token path after a full
make start-qabring-up (branchfeat/solana-integration).Background
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb) alongside wSOL.npm run qa:full-token-setupdeploys T2022 on Anvil + Anvil1 (ERC20), Terra (CW20), and Solana (SPL Token-2022 mint), registers bridge mappings, and mergesANVIL_*_T2022,TERRA_T2022,SOLANA_T2022into.deploy/local.envplusVITE_*_T2022via the QA write scripts.Checklist
feat/solana-integrationand runmake start-qaon the QA host (or confirm a recent successful run)..deploy/local.envsourced, run./scripts/qa/verify-qa-onchain.shand confirm ANVIL_T2022, ANVIL1_T2022, TERRA_T2022, and SOLANA_T2022 checks pass.cl8y_faucetregisters classic SPL mints only). Fund Token-2022 ATAs manually or via script if Solana-side balance is needed.Docs
scripts/qa/README.md— Token-2022 / T2022 section and faucet note.assigned to @Brouie
T2022 (TTWT) onchain verification on
84c8df3:verify-qa-onchain.sh: all T2022 checks pass (ANVIL_T2022, ANVIL1_T2022, TERRA_T2022, SOLANA_T2022).
frontend Verify page: 24/24 pass across all 4 chains:
faucet correctly does NOT list TTWT (by design -- cl8y_faucet registers classic SPL only). confirmed.
smoke transfer not done yet -- need to fund TTWT manually on Solana (spl-token mint requires keypair inside container). can test EVM->Solana TTWT if Anvil faucet claim works.
@PlasticDigits Tried to run make start-qa today to complete the T2022 smoke transfer (only outstanding item from 4/4 verification).
Stack failed during Solana deploy with DeclaredProgramIdMismatch (Anchor Error 4100):
Likely stale keypair or build artifact after the server reboot. Can you take a look or give me steps to reset the Solana localnet state? T2022 smoke blocked until start-qa completes.
mentioned in issue #96
Investigation:
DeclaredProgramIdMismatch(Anchor 4100) vs T2022 smokeThe Solana deploy failure is not explained by “reset localnet only.” The built bridge binary embeds
declare_id!("4XX8ndYXupw4Sb4SsRgAPTmBJJjfZbg8rWjj87iKEhVt")inprograms/cl8y-bridge, butanchor deploysigns with whatever keypairscripts/solana/anchor-deploy-localnet.shresolves (CL8Y_BRIDGE_PROGRAM_KEYPAIR_PATH→keys/private/cl8y_bridge-keypair.json→keys/localnet/cl8y_bridge-keypair.json).The program id in the error log (
74o1KKwuUvtrf6ozbjmVrARnoHpQ4WjsQ647TCTKe1mW) matches the pubkey of the committed fallbackkeys/localnet/cl8y_bridge-keypair.json, which does not matchdeclare_id!/Anchor.toml. Ifkeys/private/cl8y_bridge-keypair.jsonis missing on the QA host (fresh clone, wiped volume, never copied), deploy falls through to that fallback and Anchor correctly raises DeclaredProgramIdMismatch.Unblock: restore or point
CL8Y_BRIDGE_PROGRAM_KEYPAIR_PATHat the bridge keypair whose pubkey is4XX8ndYXupw4Sb4SsRgAPTmBJJjfZbg8rWjj87iKEhVt, then rerunmake start-qa. Resetting Docker/Solana ledger may still help for a clean validator, but it does not fix the ID mismatch without the correct keypair.T2022 smoke remains the last checklist item once
start-qacompletes; Solana TTWT funding is still manual (faucet excludes T2022 by design).Repo follow-up (optional): align or document the
keys/localnetbridge fallback so it cannot diverge fromdeclare_id!, or requirekeys/privateexplicitly—otherwise clones without the private keypair hit the same 4100.Leaving this issue open until the manual T2022 transfer smoke is done.
We will need a new test flow for t2022 transfers. Token 2022 are less popular but do need to be verified, so this can wait.
Thanks for the investigation. Confirms what I saw -- declare_id! 4XX8ndYXupw4Sb4SsRgAPTmBJJjfZbg8rWjj87iKEhVt didn't match the fallback keypair's pubkey (74o1KKwuUvtrf6ozbjmVrARnoHpQ4WjsQ647TCTKe1mW) that Anchor tried to deploy with.
To unblock on QA server: I'll need keys/private/cl8y_bridge-keypair.json copied over (current keys/private/ is empty after the server provision). Can you share that via secure channel when convenient, or set CL8Y_BRIDGE_PROGRAM_KEYPAIR_PATH to point at an existing path that has the correct keypair?
Agreed on the repo follow-up suggestion -- either align keys/localnet fallback with declare_id! or require keys/private explicitly with a clear error. Worth filing as its own issue.
Will tackle T2022 smoke once start-qa completes with the correct keypair. Issue stays open.
mentioned in issue #111