Docs refresh + dedicated Wormhole section for EVM developers - #60
Docs refresh + dedicated Wormhole section for EVM developers#60vriveraPeersyst wants to merge 14 commits into
Conversation
… developers New Wormhole section (pages/bridge/wormhole/): - Overview: architecture (Guardians, VAAs, Executor), chain IDs (Wormhole 57), supported products matrix, XRPL (chain 66) status - Deployed contracts: Core, WTT, Executor, Guardian Governance addresses for mainnet/testnet, incl. testnet-only legacy Wormhole Relayer warning - Send cross-chain messages: Solidity publishMessage/parseAndVerifyVM guide with Executor-based delivery guidance for mainnet - Transfer tokens: WTT via TypeScript SDK (chain name XRPLEVM) + Portal Bridge - Native Token Transfers: modes, NTT vs WTT, CLI deployment flow - Connect widget: React integration configured for XRPL EVM mainnet Wormhole integration across existing sections: - Bridge index: Wormhole marked live with links to new section - Developers index + cross-chain introduction: Wormhole guides added - Users sidebar tools: Portal Bridge and WormholeScan links - what-is-the-xrplevm: Wormhole listed as live interoperability option Docs refresh: - EVM compatibility notice: Cosmos EVM migration shipped (Prague, solc 0.8.30) — verified on-chain via Pectra BLS precompiles on mainnet and testnet - Node versions v10.0.2/v10.0.1 -> v10.1.0 (live network version) - Fix Mainnet MetaMask tab showing testnet RPC URL in deploy guide - Replace dead cosmos.xrplevm.org:1317/26657 hosts with live cosmos-api/cosmos-rpc/cosmos-grpc endpoints; http -> https for testnet API - Remove dead bridge.xrplevm.org / bridge.devnet.xrplevm.org links from faucet - Deduplicate IBC channel tables into shared snippets - Add devnet-amplifier warnings to manual relay guides (mainnet chain names are xrpl / xrpl-evm) - Fix copy-pasted frontmatter blurbs; remove orphaned Axelar snippet Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tros - Remove every emoji across the docs; support tables now use Yes / No / In progress instead of check marks, CLI examples and UI references reworded where an emoji carried meaning - Rewrite all em/en dash punctuation as commas, colons, semicolons, periods, or parentheses; normalize unicode hyphens (U+2010/U+2011) inside compound words to ASCII; ranges now use "to" - Rewrite the opening lines of every users page (landing, getting started, wallets, bridge guides, IBC, faucet) with a cleaner hook - Remove leftover AI-generated sentence in setup-indexer.md - Fix trailing broken sentence in node CLI next-steps list Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Verified on XRPL EVM testnet by following each guide step by step:
deployed the messaging contracts, published a message, retrieved the
guardian-signed VAA from WormholeScan, verified it in the receiver
contract (replay protection included), ran the TS SDK token transfer
(approve + transfer + attestation), and deployed an NTT manager with
the NTT CLI. Read-only checks on mainnet confirmed all contract
addresses, chain ID 57, guardian sets, and the absence of the legacy
relayer.
Fixes from verification:
- send-messages: wormhole-solidity-sdk v1.0.0 exposes ICoreBridge
(interfaces/ICoreBridge.sol) with a file-level CoreBridgeVM struct;
IWormhole.sol does not exist in that release. Code samples updated
and a note added. Documented the exact signed-VAA API endpoint.
- transfer-tokens: WTT on XRPL EVM has no native-token wrapping
(WETH() is unset), so tokenId("XRPLEVM", "native") reverts; example
now uses an ERC20 address and a warning explains the limitation.
- native-token-transfers: documented the benign deploy-simulation
warning (OwnableUnauthorizedAccount / EVM version) seen on XRPL EVM.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Researched supported tokens across the Connect config, the Wormhole SDK, WormholeScan VAA history, and direct on-chain queries on both networks: - XRP bridges through WTT via its native ERC20 sentinel address (verified with a live testnet transfer + signed VAA); only the "native" token ID reverts. Guidance corrected accordingly. - RLUSD is live on Mainnet via NTT (burn and mint), mutually peered with the canonical RLUSD manager on Ethereum, Base, Optimism, and Unichain. - Wormhole-Bridged USDC (USDC.e) is live on Mainnet via NTT with an Ethereum hub locking canonical Circle USDC. - WETH (from Ethereum) is the only WTT wrapped asset on Mainnet; Testnet has WETH from Sepolia and Base Sepolia plus RLUSD test deployments. - Softened the legacy-relayer claim: an unofficial proxy exists on Mainnet but is absent from the SDK registry and unserviced. Added a Tokens Available on XRPL EVM section (Mainnet/Testnet tabs) to the transfer guide and linked it from the section index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A full review of the branch diff surfaced 24 findings, mostly collateral
damage from the automated emoji/dash/prettier sweeps. Fixes:
Rendering breakers:
- Markdoc {% /tab %}/{% /tabs %} tags swallowed into markdown tables in
block-explorers, snapshots, and sync-from-genesis (tabs never closed)
- connect-to-the-xrpl-evm: Testnet tab steps renumbered 6/7/8 and tags
indented into a list item; restored from main and reapplied the new
opening only
- sending-through-ibc: mixed indentation turned the Testnet channel
list into a code block; restored from main and reapplied intended
edits with clean spacing
- verify/interact smart-contract pages, upgrading-your-node,
maintaining-the-validator, monitoring-the-node: restored original
structure (tag indentation, nested bullets, TOML banner in a yaml
fence) and reapplied only the intended prose fixes
Content fixes:
- Wrong RPC host rpc.testnet.xrpl.org -> rpc.testnet.xrplevm.org in
using-xrp-as-wrapped-erc20
- WTT chain count qualified (30+ chains where WTT is deployed) to stop
contradicting the 40+ network total elsewhere
- WTT flow steps renamed (Token registration / Observe and sign) to
stop using "attest" for two different operations
- Sentinel-address usage-limit caveat cross-referenced in the Wormhole
transfer guide; burn-and-mint hyphenation unified
- html frontmatter slug collision fixed in transfer-iou-with-axelar
- Broken #adding-xrpl-evm-to-metamask anchors corrected
- WormholeScan testnet link added to users Tools sidebar
- gRPC endpoint rows unified as host:port (not https URLs)
- Restored compound-word hyphens lost to the dash sweep
(high-performance, Ethereum-compatible, Cosmos-native, human-readable,
fine-tuning), orphan spaces in link texts, faucet overpromise trimmed
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…pers) The bridge section now mirrors the Axelar layout: theory and reference live under Bridge, practical guides live under Developers. - Move send-messages, transfer-tokens, native-token-transfers, and connect-widget to developers/interacting-with-evm/advanced-guides/ cross-chain-transactions/wormhole/ (git mv, frontmatter dropped to match the developers-section convention) - Extract the token tables from the transfer guide into a new bridge/wormhole/supported-tokens.md reference page - Bridge Wormhole group now holds overview, deployed contracts, and supported tokens; the developers Cross-Chain Transactions group gains a Wormhole subgroup with the four guides - All cross-links rewired (bridge index, wormhole overview, developers index, cross-chain introduction, moved-guide internals) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rebuilt the upgrade tables in networks.md and sync-from-genesis.md from the public APIs (gov proposals for plan names/heights, block headers for dates, plan info for binary tags, Docker Hub for image digests): - Mainnet: add v10.1 upgrade (height 6856000, 2026-07-20, v10.1.0) - Testnet: add v10.1 upgrade (height 7725000, 2026-07-15, v10.1.0) - Devnet: add v10 (height 1198644, 2026-05-05, binary v10.0.3) and v11 (height 2089191, 2026-06-29, binary v11.0.0-rc.1); current version updated from v9.0.3 to v11.0.0-rc.1 (matches live node_info) Testnet's v11.1.0 proposal is still in voting and is intentionally not listed until it passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Name Axelar and Wormhole (with links) in the interoperability bullet of the What is the XRPL EVM Sidechain intro - Link the Bridge-section reference material (Wormhole overview, deployed contracts, supported tokens, and Axelar contracts) from the Cross-Chain Transactions block Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All five endpoints verified live before documenting: JSON-RPC answers eth_chainId (1449900), the WebSocket completes the upgrade handshake, Tendermint RPC reports xrplevm_1449900-1, the REST API serves node_info, and the gRPC host negotiates HTTP/2 over TLS on 443. gRPC rows unified as host:port in backticks across the three tabs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Added a Devnet tab after checking every provider: Peersyst's devnet S3 bucket still serves an October 2025 archive that predates the January 2026 devnet reset (incompatible), Polkachu and Cumulo have no devnet offering, and ITRocket's devnet page is a placeholder that actually points at testnet with a null snapshot. The tab states that no public devnet snapshots exist and routes operators to sync-from-genesis (with the devnet upgrade path) or state sync instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Verified the Axelar testnet constants with real bridge transactions in both directions: - XRPL -> XRPL EVM: Payment with the documented memo format to gateway rNrjh1KGZk2jBR3wPfAQnoidtFFYQKbQn2 delivered 5 XRP to the EVM side (tx 2A047D65...F749 on XRPL, ~1 min) - XRPL EVM -> XRPL: ITS interchainTransfer with the XRP token ID delivered 2 XRP back (tx 0x8d355598...d618) - All 7 EVM contract addresses match axelar-contract-deployments and cross-reference each other on-chain (ITS <-> Factory <-> Gateway); the XRP token ID resolves to the native XRP ERC20 sentinel The round trip exposed three bugs in the send-tokens guide, now fixed: - destinationAddress must be the ASCII bytes of the classic r-address; the guide's decoded 20-byte account ID fails at the Axelar hub with "invalid destination address" (reproduced on-chain, funds stranded) - The deployed ITS only exposes the six-argument interchainTransfer overload with an explicit gasValue; the guide's five-argument call reverts - The example r-address had an invalid checksum, and the ethers calls used v5 syntax (ethers.utils.parseEther) in a guide that targets v6 Also reframed the r-address/account-ID conversion appendix as background material (it is not used for ITS transfers) and dropped a line-anchored GitHub link. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
oeggert
left a comment
There was a problem hiding this comment.
Mostly looks good, but there are broken links to address, as well as some minor front matter issues.
| @@ -0,0 +1,56 @@ | |||
| --- | |||
| blurb: Wormhole contract addresses on the XRPL EVM Sidechain. | |||
There was a problem hiding this comment.
| blurb: Wormhole contract addresses on the XRPL EVM Sidechain. | |
| seo: | |
| description: Wormhole contract addresses on the XRPL EVM Sidechain. |
blurb isn't a valid frontmatter used by redocly.
There was a problem hiding this comment.
Good catch, and blurb turned out to be worse than invalid — it is inert. The live pages carry no <meta name="description"> at all and the blurb string appears nowhere in the rendered HTML; nothing in redocly.yaml, theme.ts or @theme reads it.
labels, html and status are dead in exactly the same way, so I removed all four across the 15 files that had them rather than leave the same dead keys in pages this review did not happen to open.
One deviation from your suggestion: I kept the field you asked for but not the text. Since these become real meta descriptions, I wrote each one against the page content instead of reusing the blurb — 141-151 chars, unique across the set. Here it is:
seo:
description: "Wormhole contract addresses on the XRPL EVM Sidechain: Core Contract, Wrapped Token Transfers, Executor and Guardian Governance, per network."Note the quotes. Six of the new descriptions contain a colon-space, which YAML parses as a nested mapping and which broke the frontmatter until quoted — probably worth keeping quoted as a convention for this field.
Fixed in 7829d03.
| @@ -0,0 +1,60 @@ | |||
| --- | |||
| blurb: Wormhole interoperability on the XRPL EVM Sidechain. | |||
There was a problem hiding this comment.
| blurb: Wormhole interoperability on the XRPL EVM Sidechain. | |
| seo: | |
| description: Wormhole interoperability on the XRPL EVM Sidechain. |
There was a problem hiding this comment.
Applied, with the same deviation as on deployed-contracts.md: correct field, rewritten text.
seo:
description: "Wormhole on the XRPL EVM Sidechain: how Guardians, VAAs and the Executor connect XRPL EVM to 40+ chains for cross-chain messaging and transfers."Fixed in 7829d03.
| @@ -0,0 +1,36 @@ | |||
| --- | |||
| blurb: Tokens supported by Wormhole on the XRPL EVM Sidechain. | |||
There was a problem hiding this comment.
| blurb: Tokens supported by Wormhole on the XRPL EVM Sidechain. | |
| seo: | |
| description: Tokens supported by Wormhole on the XRPL EVM Sidechain. |
There was a problem hiding this comment.
Applied, same as the other two.
seo:
description: "Tokens Wormhole supports on the XRPL EVM Sidechain, including XRP, RLUSD, USDC.e and WETH, with addresses, transfer mechanism and connected chains."Fixed in 7829d03.
There was a problem hiding this comment.
| {% partial file="/snippets/_ibc-channels-mainnet.md" /%} |
There was a problem hiding this comment.
Done, and I did the Testnet table below it too — both were inline copies of snippets this branch had already created.
One thing worth flagging for whoever touches this file next: I left the partial tags at the tab's 6-space indentation rather than moving them to column 0 like the other call sites. Realm dedents a tag body by its common indent, so a single line at column 0 would drop the common indent to zero and turn the rest of the tab into an indented code block.
Fixed in a2fe7c6.
There was a problem hiding this comment.
Confirmed 404. docs.cosmos.network moved its SDK docs under a /sdk/ prefix, so every /v0.50/... path on the old host is gone. Six links in this file were affected, not just this one.
All rewritten to /sdk/v0.50/learn/advanced/grpc_rest, and I checked that the #grpc-server, #rest-server and #cometbft-rpc anchors still exist in the new page rather than assuming they carried over.
The same move had broken two more links on the branch that were outside your review: the cosmovisor link in upgrading-your-node.md and two /v0.52/learn/intro/ links in interacting-with-cosmos/introduction.md. Fixed in the same commit.
Fixed in a2fe7c6.
| - **XRPL → EVM:** No signature required on XRPL side. | ||
| - **EVM → XRPL:** You’ll sign in MetaMask. | ||
| - Track status on the [Axelar Devnet Amplifier Explorer](https://devnet-amplifier.axelarscan.io/gmp/search). | ||
| - **[XRPL EVM Devnet Faucet @ Chains.tools](https://chains.tools/faucet/xrplevm)** |
There was a problem hiding this comment.
Worse than broken — chains.tools no longer resolves at all (NXDOMAIN), so there is no replacement URL to point at. I removed the entry rather than leave a dead faucet listed.
The Devnet tab still has the faucet.xrplevm.org entry above it, which covers Devnet via the network selector, so the tab is not left empty.
Fixed in a2fe7c6.
There was a problem hiding this comment.
Thanks for catching this — chasing the 404 turned up a bigger problem. The URL was not stale, the whole recipe was fictional: there is no SquidWidget.init() global and no script-tag distribution in any release of the widget. Anyone following this page would never have gotten it working.
Rewritten against the real integration: npm install @0xsquid/widget and the <SquidWidget config={...} /> React component, with the Integrator ID prerequisite called out (Squid issues it per project and it gates which chains you can route), a note on the native-token sentinel address, and pointers to the Next.js/Vite setup guides.
Also added a no-code section linking the hosted bridge with XRPL EVM preselected, for readers who do not need it embedded.
Fixed in a2fe7c6.
|
|
||
| | Provider | URL | | ||
| | ------------ | ---------------------------------------------------------------------------------------------------- | | ||
| | **Peersyst** | [Download Testnet](https://evm-sidechain-snapshots-testnet.s3.us-east-1.amazonaws.com/exrpd.tar.lz4) | |
There was a problem hiding this comment.
Getting a specified key doesn't exist error
There was a problem hiding this comment.
Same fix as the Mainnet row — exrpd_latest.tar.lz4. This one is a real 9.9 GB archive, though it was last regenerated on 2026-05-06, so it is about three months stale. Same conversation with the bucket owners as in the thread above.
Fixed in a2fe7c6.
There was a problem hiding this comment.
Correction to my earlier comment, and an update.
The bucket moved: the archives are now published at xrpl-evm-snapshots.s3.us-east-1.amazonaws.com/{mainnet,testnet,devnet}.tar.lz4, all three live and current. Both files are updated, and Devnet now has a real snapshot row instead of the "none available" note.
I also need to walk back what I said about the old Mainnet archive. I claimed 79 MB could not be a usable snapshot for a chain at that height. That was an inference from file size and it was wrong — I downloaded the current one and inspected it: 170 MB uncompressed, of which 168.6 MB is application.db and 0.3 MB is blockstore.db, with a .state_sync_done marker. It is generated from a state-synced node, so it carries full state and no block history, which is exactly why it is small. The old archive was almost certainly the same thing.
What was actually wrong stands: the documented URL 404'd and the file was four months stale. Sorry for the noise on the diagnosis.
Updated in 0a18d23.
|
|
||
| | Provider | URL | | ||
| | ------------ | ---------------------------------------------------------------------------------------------------- | | ||
| | **Peersyst** | [Download Mainnet](https://evm-sidechain-snapshots-mainnet.s3.us-east-1.amazonaws.com/exrpd.tar.lz4) | |
There was a problem hiding this comment.
Getting a specified key doesn't exist error
There was a problem hiding this comment.
Confirmed — the archives are published as exrpd_latest.tar.lz4; the exrpd.tar.lz4 key you hit returns NoSuchKey. Both rows updated, and installing-the-node.md carried the same dead URL inside its wget commands, so that is fixed in the same commit.
Flagging one thing this does not fix, so the green link does not read as all-clear: the Mainnet bucket holds a single object, 79 MB, last modified 2026-04-22. For a chain around block 7.37M that cannot be a usable snapshot — Testnet's equivalent is 9.9 GB. So the 404 is gone but an operator following this row would still fail, just later and less obviously.
I have raised it with the team that owns the bucket. If the generation job is dead and not coming back, the honest fix is to drop the Peersyst row and leave Polkachu/Cumulo/ITRocket. Happy to do that in this PR if you would rather not merge a row that is broken in substance.
Fixed in a2fe7c6.
There was a problem hiding this comment.
Correction to my earlier comment, and an update.
The bucket moved: the archives are now published at xrpl-evm-snapshots.s3.us-east-1.amazonaws.com/{mainnet,testnet,devnet}.tar.lz4, all three live and current. Both files are updated, and Devnet now has a real snapshot row instead of the "none available" note.
I also need to walk back what I said about the old Mainnet archive. I claimed 79 MB could not be a usable snapshot for a chain at that height. That was an inference from file size and it was wrong — I downloaded the current one and inspected it: 170 MB uncompressed, of which 168.6 MB is application.db and 0.3 MB is blockstore.db, with a .state_sync_done marker. It is generated from a state-synced node, so it carries full state and no block history, which is exactly why it is small. The old archive was almost certainly the same thing.
What was actually wrong stands: the documented URL 404'd and the file was four months stale. Sorry for the noise on the diagnosis.
Updated in 0a18d23.
Addresses the link findings from review, plus three more dead links found while sweeping every external URL on the branch (283 checked). Reported in review: - using-the-api.md: docs.cosmos.network moved its SDK docs under /sdk/, so the six v0.50 grpc_rest links 404'd. Anchors re-verified on the new page. - faucet.md: chains.tools no longer resolves (NXDOMAIN). Entry removed; there is no replacement host. - swap-with-squid-widget.md: the guide documented a script tag plus a SquidWidget.init() global that does not exist in any widget release. Rewritten against the real @0xsquid/widget React component, with the Integrator ID prerequisite and a no-code link to the hosted XRPL bridge. - snapshots.md: the Peersyst archives are published as exrpd_latest.tar.lz4; the old exrpd.tar.lz4 key returns NoSuchKey. installing-the-node.md carried the same dead URL in its wget commands. Also found on the branch: - upgrading-your-node.md: cosmovisor link moved under /sdk/v0.50/. - interacting-with-cosmos/introduction.md: two v0.52 links moved likewise. - join-the-proof-of-authority.md: the governance explorer serves proposals at /proposals, not /xrp/proposals. sending-through-ibc.md kept inline copies of the IBC channel tables that the branch had already extracted into snippets. Both now use the partials. The partial tags stay at the tab's indentation on purpose: Realm dedents a tag body by its common indent, so moving one line to column 0 would turn the rest of the tab into an indented code block. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Review flagged that `blurb` is not valid Redocly frontmatter. It is worse than invalid: it is inert. The rendered pages carry no <meta name= "description"> at all and the blurb string appears nowhere in the HTML, and nothing in redocly.yaml, theme.ts or @theme reads the field. `labels`, `html` and `status` are inert in exactly the same way, so all four are removed together rather than leaving the same class of dead key behind in the files the review did not happen to open. Realm's supported frontmatter is seo/slug/sidebar/template/navigation and the config overrides; none of the four appear in it. Each page now carries a single seo.description written against its own content rather than the blurb it replaces, 141-151 characters, unique across the set. This gives the portal meta descriptions it never had. The two manual-relay guides in particular were near-indistinguishable before and now name their direction and their actual steps. transfer-iou-with-axelar.md had inherited its blurb verbatim from interchain-evm-sidechain-xrpl.md ("Axelar interchain transfer to XRPL"), which is not what the page documents. Rewritten for IOUs. Descriptions are quoted: six of them contain a colon-space, which YAML parses as a nested mapping and which broke the frontmatter until quoted. Worth keeping as a convention for this field. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@oeggert all nine threads are addressed — replies inline on each. Two commits, and since the diff grew past what you reviewed, here is the scope: a2fe7c6 — links and the IBC partials Your four link findings, plus three more of the same kind found by checking every external URL on the branch (283 of them):
The remaining sweep hits are false positives I deliberately left alone: 405 on JSON-RPC endpoints (POST only), 400 on WebSocket endpoints, 403 anti-bot from Medium/npm/Grafana, and placeholder URLs inside code snippets. The Squid one was not a stale URL. The page documented a Also folded in the IBC table dedupe you asked for, on both the Mainnet and Testnet tabs. 7829d03 — frontmatter
Each page now has a One thing not fixed, flagged so it does not slip through The Mainnet snapshot link no longer 404s, but the bucket holds a single 79 MB object last modified 2026-04-22. For a chain around block 7.37M that is not a usable snapshot — Testnet's is 9.9 GB. The row will look fine to a link checker and still fail an operator. Raised with the team that owns the bucket; if the job is not coming back I would rather drop the Peersyst row than ship it. Your call whether that belongs in this PR. Left all nine threads open for you to resolve. |
The archives moved to xrpl-evm-snapshots.s3.us-east-1.amazonaws.com, keyed by network name rather than exrpd_latest.tar.lz4. All three verified live. Devnet now has a published snapshot, so the "no public Devnet snapshots are currently available" note is replaced with a real provider row, and the Devnet tab in installing-the-node.md gets its own restore commands instead of redirecting to state sync. Note on sizes for whoever checks these next: the Mainnet and Devnet archives are small (170 MB and 12 MB uncompressed) because they are generated from state-synced nodes — full application.db, ~0 blockstore.db, with a .state_sync_done marker. That is a pruned snapshot, not a broken one. Testnet is ~10 GB because it retains block history. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
This PR refreshes stale content across the portal, adds a dedicated Wormhole section, and applies a sitewide style cleanup. Every Wormhole guide was verified end-to-end on-chain before documenting it.
New Wormhole section
Reference (Bridge section, mirroring the Axelar layout):
pages/bridge/wormhole/): architecture (Guardians, VAAs, Executor), Wormhole chain ID57vs EVM chain IDs, supported products matrix, XRPL (chain66) statusHands-on guides (Developers > Advanced Guides > Cross-Chain Transactions > Wormhole):
On-chain verification behind the guides
tokenId("XRPLEVM", "native")reverts (WTTWETH()unset) and that XRP bridges through its sentinel ERC20 insteadXRPLEVM)ICoreBridge(noIWormhole.sol), and that RLUSD/USDC.e NTT managers are mutually peered with their canonical Ethereum counterpartsDocs refresh
cosmos.xrplevm.org:1317/26657,bridge*.xrplevm.org) with live endpointsStyle cleanup
🤖 Generated with Claude Code