QA: MegaETH transfers vs all peers for token A/B/C (bidirectional) #123
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#123
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?
Summary
MegaETH mainnet bridge deployment (parity replay, ChainRegistry peers, TokenRegistry + Terra + Solana token mappings) is in place. This issue tracks manual QA: execute real transfers to and from MegaETH on every connected peer chain using all three registered test tokens (EVM token A / token B / token C where token C matches
tdecroutes on other chains).Assignee: please confirm each checkbox after verifying deposit landed, matching canonical hash / nonce where visible, and correct mint/unlock on destination.
Reference configuration
43260x000010e6(433230 decimal)https://mainnet.megaeth.com/rpc0xb2A22c74dA8E3642e0EffC107d3Ac362ce8853690x3d8820EC93748fd4df8eee6B763834a23938B2070x7deF34032CC5D06bA84A8889bdCA7ee153127B230xE19442D99Aa2209b08d69c518444C4C1DAfeEDb1tdeccounterpart)0x840b1515f586c2ea31d55C91B355AFf36eA7af54Peer chains expected registered from MegaETH: BSC (
evm_56), opBNB (evm_204), Terra Classic, Solana. Confirm Terra bridge registration identifierevm_4326and Solana peerevm_4326match deployments.Prerequisites before testing
EVM_CHAIN_*/ equivalent slot — do not duplicate primary chain watcher).Token parity reminder
On non-MegaETH chains use existing counterparts:
6XjWBbRJW5uhd8csCiDivXGPF42yYoyDARtxEtX3oP7EEvAWhkKQzX8om5VDWjg8oEvCw9jhGGKsn3rdrNXmQScX765GMcrKxfevfBhnJmZDhdyHDon2nTwGemcgqJApNBRUse smallest sane amounts; respect decimal differences (opBNB tdec 12, Terra tdec 6, Solana SPL decimals).
Verification checklist — outbound from MegaETH
For each destination peer (BSC, opBNB, Terra, Solana) and each MegaETH token (A, B, C):
Record per row: source tx hash / explorer link, destination receipt / mint hash, amount matched after decimals.
Verification checklist — inbound to MegaETH
For each source peer and each counterpart token routed to MegaETH A / B / C:
Cross-cutting checks
Failure reporting
If any route fails, attach: chain pair, direction, token, exact error or revert reason, tx hashes, and whether TokenRegistry / Terra / Solana mapping queries show expected
dest_token/ incoming mapping for0x000010e6.Related docs / scripts
docs/deployment-megaeth.mdscripts/megaeth/register-megaeth-token-mappings.shpackages/contracts-evm/README.md(MegaETH address tables)assigned to @Brouie
Pre-test deployment-side sanity (read-only RPC, no transfers yet).
MegaETH side
0xb2A22c74dA8E3642e0EffC107d3Ac362ce885369is EIP-1967 -> impl0x102a87e067aa4c6cc20d06207fb64e4a1a6cdbe60x3d8820EC93748fd4df8eee6B763834a23938B207is EIP-1967 -> impl0x734d6d554a3f7762d0dbc5538cba8ae9e01338f7Bridge.chainRegistry()->0x2e5D36C46680A38e7Ae156fc9d109084C58c688e(same address as BSC/opBNB, parity replay)Bridge.tokenRegistry()-> matches the registry proxy above (self-consistent)tokena-cb/tokenb-cb/tokenc-cbChainRegistry symmetry
getRegisteredChains()-> 5:[0x000010e6 self, 0x00000038 BSC, 0x000000cc opBNB, 0x00000001 Terra, 0x00000005 Solana]isChainRegistered(0x000010e6) = trueisChainRegistered(0x000010e6) = trueTokenRegistry — Token A destinations
0x3557bfd147b35c2647eafc05c8be757ce84d5b1c0xf073d5685594f465a66ea54516f0d2f76b6cc6f30xd76fb2de745e7a45abb089ea24c79c6a00cdedddb81377b0b98dbb0fdf917fce0x5229ead89ed62241eecb9d876fcc2b5c613e8fe1a7f42ca282c9e7c8acd16cd1-> base586XjWBbRJW5uhd8csCiDivXGPF42yYoyDARtxEtX3oP7E— exact match to issue specDecimals matrix (from
scripts/megaeth/register-megaeth-token-mappings.sh)Open prerequisites before I can run transfers
Will continue with Token B/C destination spot-checks next while waiting on the wallet/operator items.
Token B + C destinations + full inbound mapping all populated (read-only RPC, no transfers).
Token B destinations (Solana base58 verified):
0x39c4a8d50cdd20131ec91b3accc6352123f68b520xe1eaac9be88d5fb89c944b46bdc48fad2d47185e0x60139576d9aabcdc87179adcefe9ac225060f2806fc024cb829998ed0402ebeeEvAWhkKQzX8om5VDWjg8oEvCw9jhGGKsn3rdrNXmQScX— exact match to issue specToken C destinations (Solana base58 verified):
0xe159c7a58d694fafba82221905d5a49e7f3143300x6d66d16e6cb29351aee1960ba1c395c0fb1392dd0x0f7d232e58e471fdb1ec3cd4b48d7f4e433c918709bbe16ee2a3ed23f27c63c4765GMcrKxfevfBhnJmZDhdyHDon2nTwGemcgqJApNBR— exact match to issue specInbound matrix (
getAllIncomingMappings(bytes4)) — all 4 source chains return the same[A, B, C]local tokens in order, source decimals as below:12 outbound + 12 inbound = 24 directional mappings populated, no zero entries, full bidirectional symmetry on the MegaETH side.
One question for @PlasticDigits: issue's reference table tags BSC token C as
tdec, but the inbound source decimals for BSC token C come back as 18 (not 6 or 12). Is the BSC counterpart for token C truly 18-decimal native, or istdeconly the role label and the on-chain token still happens to be 18 on BSC? Want to make sure decimal scaling forBSC -> MegaETH CandMegaETH C -> BSCrows is what you expect before I run those transfers.Read-only sanity on the MegaETH side is complete. Still pending: wallet/funding (items 1-4 above), operator/canceler/indexer MegaETH watcher status (item 5), and the QA path I should use (frontend vs CLI, item 6).
Two retractions on my notes above:
The "Open prerequisites" list in the first note overstated what I need from dev. Per @PlasticDigits TG: tokens are non-economic and faucet-claimable (in-app at /settings -> Faucet). Wallet/funding side is on me. Disregard items 1-4 of that list.
The BSC token C decimals question in the second note is not a real question.
getAllIncomingMappings(BSC)returningsrcDecimals=18for token C is correct by design —tdecmeans decimals vary per chain (BSC 18, opBNB 12, Terra 6, Solana 6). The 18 reflects what the BSC counterpart token actually is, stored per source chain so the bridge scales correctly. Misread on my end.Read-only sanity facts (5 chains registered both ways, 24/24 token mappings populated, Solana SPL mints byte-for-byte match issue spec) all stand.
Now executing the actual checklist via bridge.cl8y.com. Wallet
0xc46b15f4B56489a16F561c22D5F0BA8bdCa80650. Will record source tx + destination receipt + amount-after-decimals per row.Two narrow questions before I can complete all 24 rows:
a. MegaETH native ETH — wallet has 0 native, in-app faucet contract requires gas to call. Where's the canonical native ETH faucet for MegaETH mainnet, or can you spot 0.005 ETH to the wallet above? Without this, the 6 outbound rows from MegaETH (and gas for any inbound→MegaETH withdraw legs that require self-execution) are blocked.
b. Solana SPL faucet — bridge.cl8y.com/settings shows "Not deployed" for all 3 SPL token rows. Is the Solana SPL faucet not yet deployed, or is
VITE_SOLANA_FAUCET_ADDRESSjust unset on the prod build? Without this, the 6 Solana rows are blocked.Other 12 rows (BSC ↔ MegaETH 6 rows, opBNB ↔ MegaETH 6 rows, Terra ↔ MegaETH 6 rows) can proceed once I claim faucet on each chain. Will start there.
(a) Check dm
(b) Correct Solana does not have deployed faucet as it costs hundreds USD
Matrix progress: 19/24 rows PASS, 4 blocked on filed issues, 3 cross-cutting checks pending
Inbound to MegaETH — 9/12 PASS
Outbound from MegaETH — 10/12 PASS
Note: MegaETH → Solana shows a 5-step stepper instead of 4 (extra EXECUTE ON SOLANA step) — clean DONE on all five for the 3 rows.
Blocked rows
Cross-cutting checks — pending
Related issues filed during walkthrough
cc @PlasticDigits
mentioned in issue #127
mentioned in issue #128
mentioned in issue #130
mentioned in issue #131
Mid-matrix update: cross-cutting checks (2 of 3 PASS, deploy-gated remainder)
Continuing from the 5/01 mid-matrix note (3306364472). Picking up the cross-cutting checks today while waiting for the prod deploy of
95f8fd5(see deploy-gap notes posted on #127/#128/#130/#131).Check 2: Canceler false-positives — PASS
Verified on Friday's completed BSC → MegaETH testa row (
/transfer/0x7e4317bac1b3f6e7a1a579bbff63f0961afb10b22a72c9d9ecc90807edb6df38).Transfer Status page on a COMPLETE / Executed transfer shows action buttons:
BACK TO BRIDGE,VIEW HISTORY,VERIFY HASH. No Cancel affordance present. UI correctly hides cancel post-execution; no double-spend path exposed at the UI layer.Check 3: V2 hash consistency — PASS
Verified on the same BSC → MegaETH testa row via the bridge's own
/verifypage.xchain hash
0x7e4317bac1b3f6e7a1a579bbff63f0961afb10b22a72c9d9ecc90807edb6df38:Field-by-field parity (all checked ✓):
0x...0038...=0x...0038...0x...10e6...=0x...10e6...0x...dca80650=0x...dca806500x...dca80650=0x...dca806500x...127b23=0x...127b23995000000000000000=99500000000000000054=54Hash monitor: 0 fraudulent / 0 cancelled / 0 not-found across all 5 registered chains.
Check 1: Operator path full coverage — PARTIAL PASS
Friday's matrix produced 9 successful inbound rows across BSC/opBNB/Terra source chains landing on MegaETH dest = MegaETH operator watcher confirmed running for those 3 source paths. Solana source watcher remains unverified because Solana → MegaETH × 3 is blocked by #128. Will close out this check as full PASS when #128 fix deploys and the 3 Solana → MegaETH rows complete.
Updated #123 status
Matrix: 19 / 24 rows PASS (unchanged from 5/01), 4 blocked on #128, 1 blocked on #130.
Cross-cutting: 2 of 3 PASS, 1 partial pending Solana → MegaETH retest.
Final consolidated #123 close note will post when:
95f8fd5(or release commit containing #127/#128/#130/#131 fixes)cc @PlasticDigits
@Brouie bridge.cl8y.com frontend is now deployed at latest commit.