The official token registry for the MegaETH ecosystem. This repository maintains curated token lists for MegaETH and their corresponding addresses on other chains for bridging and cross-chain tracking.
The generated tokenlists follow the Uniswap Token List standard with MegaETH-specific extensions for tracking bridge mechanics and token origins.
| Chain | Chain ID | Type | Description |
|---|---|---|---|
| Ethereum | 1 | L1 | Ethereum mainnet |
| MegaETH | 4326 | L2 | MegaETH mainnet |
| MegaETH Testnet | 6343 | L2 | MegaETH testnet |
| Solana | - | Source | Non-EVM source chain for bridged assets |
Note: This repo produces separate outputs for mainnet and testnet. The mainnet tokenlist includes only Ethereum + MegaETH mainnet entries. Testnet tokens are emitted only in the separate testnet list to avoid contaminating production consumers.
- Create a folder:
data/YOUR_TOKEN/ - Add
data.jsonwith token info - Add
logo.svgorlogo.png(256×256 recommended) - Submit a PR
megaeth.tokenlist.json— mainnet list (Ethereum + MegaETH mainnet)megaeth.testnet.tokenlist.json— testnet list (MegaETH testnet only)
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ | Full token name |
symbol |
string | ✓ | Token ticker symbol |
decimals |
number | ✓ | Token decimal places |
verification |
object | ✓ | Registry-approved trust level |
description |
string | Token description (max 1000 chars) | |
website |
string | Project website URL |
Each chain entry in tokens supports.
Supported keys today:
ethereummegaethmegaeth_testnetsolana(source tracking only, not emitted directly into tokenlists)
Each chain entry in tokens supports:
| Field | Type | Description |
|---|---|---|
address |
string | Token contract address (required) |
isOrigin |
boolean | true if token was originally created on this chain |
mechanism |
string | How tokens move: "native" "lock" "mint" "burn" |
bridge |
string | Bridge contract address (lockbox if lock, endpoint if mint/burn) |
isOFT |
boolean | true if token is a LayerZero OFT |
Every merged token declares the trust level approved by a registry maintainer:
| Status | Meaning | Method |
|---|---|---|
issuer |
The token issuer or its official organization supplied the relationship | source-submission |
community |
A community asset was reviewed and accepted by registry maintainers | maintainer-review |
infrastructure |
The relationship is part of official MegaETH protocol infrastructure | official-infrastructure |
The submitter proposes this value. Merging the pull request is the maintainer's attestation that the selected level satisfies registry policy. Consumers should use the generated extensions.sourceChain and extensions.sourceAddress fields for exact relationship matching rather than inferring a relationship from token metadata.
| Mechanism | Description | bridge field contains |
|---|---|---|
native |
Token originated here, no bridge involved | (not needed) |
lock |
Tokens are locked here when bridging out | Lockbox contract address |
mint |
Tokens are minted here from another chain | Mint/bridge endpoint |
burn |
Tokens are burned here when bridging out | Burn/bridge endpoint |
A token that only exists on MegaETH:
{
"name": "MEGA Token",
"symbol": "MEGA",
"decimals": 18,
"tokens": {
"megaeth": {
"address": "0x28B7E77f82B25B95953825F1E3eA0E36c1c29861",
"isOrigin": true,
"mechanism": "native"
}
}
}Output:
{
"chainId": 4326,
"symbol": "MEGA",
"extensions": {
"isOrigin": true,
"mechanism": "native",
"isOFT": "unknown"
}
}Native ETH bridged via the official MegaETH bridge:
{
"name": "Ether",
"symbol": "ETH",
"decimals": 18,
"tokens": {
"ethereum": {
"address": "0x0000000000000000000000000000000000000000",
"isOrigin": true,
"mechanism": "lock",
"bridge": "0x0CA3A2FBC3D770b578223FBB6b062fa875a2eE75"
},
"megaeth": {
"address": "0x0000000000000000000000000000000000000000",
"isOrigin": false,
"mechanism": "mint",
"bridge": "0x4200000000000000000000000000000000000010"
}
}
}Output (MegaETH):
{
"chainId": 4326,
"symbol": "ETH",
"extensions": {
"isOrigin": false,
"mechanism": "mint",
"isOFT": "unknown",
"originChain": "ethereum",
"originBridgeAddress": "0x0CA3A2FBC3D770b578223FBB6b062fa875a2eE75",
"originMechanism": "lock",
"bridgeAddress": "0x4200000000000000000000000000000000000010",
"bridgeType": "canonical"
}
}CUSD is an OFT that uses a lockbox on Ethereum. Tokens are locked on Ethereum, minted on MegaETH:
{
"name": "Cap USD",
"symbol": "CUSD",
"decimals": 18,
"tokens": {
"ethereum": {
"address": "0xcCcc62962d17b8914c62D74FfB843d73B2a3cccC",
"isOrigin": true,
"mechanism": "lock",
"bridge": "0xA62571EbdFfAbC3051a2e5B9e1f57b23D830c8Fd",
"isOFT": true
},
"megaeth": {
"address": "0xcCcc62962d17b8914c62D74FfB843d73B2a3cccC",
"isOrigin": false,
"mechanism": "mint",
"bridge": "0xOFTEndpoint...",
"isOFT": true
}
}
}Output (Ethereum - Origin):
{
"chainId": 1,
"symbol": "CUSD",
"extensions": {
"isOrigin": true,
"mechanism": "lock",
"isOFT": true,
"bridgeAddress": "0xA62571EbdFfAbC3051a2e5B9e1f57b23D830c8Fd",
"bridgeType": "others"
}
}Output (MegaETH - Minted):
{
"chainId": 4326,
"symbol": "CUSD",
"extensions": {
"isOrigin": false,
"mechanism": "mint",
"isOFT": true,
"originChain": "ethereum",
"originBridgeAddress": "0xA62571EbdFfAbC3051a2e5B9e1f57b23D830c8Fd",
"originMechanism": "lock",
"bridgeAddress": "0xOFTEndpoint...",
"bridgeType": "others"
}
}For data trackers:
originBridgeAddress+originMechanism: "lock"tells you where backing tokens are locked. Don't double-count — tokens in the lockbox back the minted supply.
An OFT that burns on source and mints on destination (no lockbox):
{
"name": "USDe",
"symbol": "USDe",
"decimals": 18,
"tokens": {
"ethereum": {
"address": "0x4c9edd5852cd905f086c759e8383e09bff1e68b3",
"isOrigin": true,
"mechanism": "burn",
"bridge": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
"isOFT": true
},
"megaeth": {
"address": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
"isOrigin": false,
"mechanism": "mint",
"bridge": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
"isOFT": true
}
}
}Output (Ethereum):
{
"chainId": 1,
"symbol": "USDe",
"extensions": {
"isOrigin": true,
"mechanism": "burn",
"isOFT": true,
"bridgeAddress": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
"bridgeType": "others"
}
}For data trackers:
mechanism: "burn"means total supply is conserved across chains. When tokens burn on Ethereum, they mint on MegaETH.
A token bridged from Solana via Wormhole:
{
"name": "Wrapped SOL",
"symbol": "WSOL",
"decimals": 9,
"tokens": {
"solana": {
"address": "So11111111111111111111111111111111111111112"
},
"megaeth": {
"address": "0x9a96E366F6b2ED5850A38B58D355a80aFD998411",
"isOrigin": false,
"mechanism": "mint",
"bridge": "0xWormholeBridge..."
}
}
}Output:
{
"chainId": 4326,
"symbol": "WSOL",
"extensions": {
"isOrigin": false,
"mechanism": "mint",
"isOFT": "unknown",
"originChain": "solana",
"bridgeAddress": "0xWormholeBridge...",
"bridgeType": "others",
"sourceChain": "solana",
"sourceAddress": "So11111111111111111111111111111111111111112"
}
}The extensions object in the generated tokenlist:
| Field | Type | Description |
|---|---|---|
isOrigin |
boolean | "unknown" |
Is this the canonical origin chain? |
originChain |
string |
Which chain has the origin supply |
mechanism |
string | "unknown" |
"native" "lock" "mint" "burn" |
originMechanism |
string |
Mechanism on origin chain |
| Field | Type | Description |
|---|---|---|
bridgeAddress |
string |
Bridge contract on this chain |
bridgeType |
string |
"canonical" (official) or "others" |
originBridgeAddress |
string |
Bridge contract on origin chain (lockbox if lock) |
| Field | Type | Description |
|---|---|---|
isOFT |
boolean | "unknown" |
LayerZero Omnichain Fungible Token |
| Field | Type | Description |
|---|---|---|
sourceChain |
string |
Source chain name (e.g., "solana") |
sourceAddress |
string |
Token address on source chain |
This tokenlist helps track token movement across chains without double-counting:
| Check | What it tells you |
|---|---|
isOrigin: true |
This chain holds the canonical supply |
mechanism: "lock" |
Tokens here are locked, backing supply elsewhere |
mechanism: "mint" |
Tokens here are minted, backed by locked/burned tokens elsewhere |
mechanism: "burn" |
Tokens burned here are minted elsewhere (supply conserved) |
originBridgeAddress |
Where to watch for locked/backing tokens |
Ethereum (isOrigin: true, mechanism: lock)
├── Circulating: tokens held by users
└── Locked: tokens in bridgeAddress (backs MegaETH supply)
MegaETH (isOrigin: false, mechanism: mint)
└── Minted: backed 1:1 by Ethereum locked tokens
Total Supply = Ethereum Circulating + Ethereum Locked
= Ethereum Circulating + MegaETH Minted
- Node.js >= 20
- pnpm
pnpm installpnpm generatepnpm test- Token must be deployed on at least one supported chain
- Logo must be SVG or PNG, minimum 200×200px
- EVM addresses must be checksummed (EIP-55)
MIT