Wormhole's Native Token Transfers (NTT) framework lets token issuers deploy their token natively on the XRPL EVM and other chains, with no wrapped assets involved. Your project keeps full ownership and upgrade authority of the token contracts on every chain, while NTT handles cross-chain movement of supply.
NTT is available on XRPL EVM Mainnet and Testnet.
- Burn-and-mint: Tokens are burned on the source chain and minted on the destination, distributing total supply across chains. Best for new tokens designed to be multichain-native.
- Hub-and-spoke: Tokens are locked on a central "hub" chain and minted as equivalents on "spoke" chains, keeping total supply on the hub. Best for existing tokens whose contracts cannot be modified.
- NttManager: The per-chain contract that manages transfers, rate limits, and access control.
- Transceivers: Pluggable message transport; the default transceiver routes through the Wormhole Core Contract.
- Rate limiting: Configurable per chain and per period, inbound and outbound.
- Global Accountant: Guardian-enforced invariant that tokens burned or transferred out never exceed tokens minted.
| NTT | WTT | |
|---|---|---|
| Asset model | Native token on every chain | Wrapped representation |
| Contract ownership | Your project | Wormhole contracts |
| Token requirements | mint/burn (burn-and-mint mode) | Any ERC-20 |
| Best for | Stablecoins, governance tokens, institutional assets, full-control projects | Consumer apps, games, fast managed bridging |
If you just need to move an existing ERC-20 across chains, use Wrapped Token Transfers. If you are launching a token that should be canonical on XRPL EVM and other chains, use NTT.
The NTT CLI drives the deployment. The XRPL EVM's chain name in Wormhole tooling is XRPLEVM.
curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash
ntt --versionntt new my-ntt-project
cd my-ntt-project
ntt init Mainnet # or: ntt init TestnetThis creates a deployment.json that tracks your NTT configuration across chains.
Export a funded private key, then add each chain. For burn-and-mint mode on XRPL EVM plus Ethereum:
export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY
ntt add-chain XRPLEVM --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS
ntt add-chain Ethereum --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESSFor hub-and-spoke, deploy the hub chain with --mode locking and the spokes with --mode burning.
On XRPL EVM the deployment simulation may fail with an OwnableUnauthorizedAccount trace and the CLI will warn that "the token contract is compiled against a different EVM version", asking whether to proceed without simulation. Answering yes completes the on-chain deployment successfully; the subsequent ntt status check confirms the configuration.
On burn-and-mint chains, your token must expose mint(address,uint256) and burn(uint256) (see the INttToken interface), and the NttManager needs minting rights:
cast send $TOKEN_ADDRESS "setMinter(address)" $NTT_MANAGER_ADDRESS \
--private-key $ETH_PRIVATE_KEY --rpc-url https://rpc.xrplevm.orgHub chains only need a standard ERC-20.
ntt status # checks deployment.json against on-chain state
ntt pull # syncs local config from on-chain state
ntt push # applies local config changes (e.g. rate limits) on-chain- NTT overview
- Deploy NTT to EVM chains
- Connect Widget: give users a UI for your NTT token.