5afe6ec173
* adding mnz logo binary file * adding mnz icons json files for both testnet and mainnet * adding mnz chains json for both testnet and mainnet * fixed explorer URL * fixed the name MNZ to MainnetZ * fixed the name MNZ to MainnetZ * added Sardis bin logo * added sardis icons json files for both mainnet & testnet * added sardis chains json files for both mainnet & testnet * renamed symbol to NetZ * renamed symbol to NetZ * added soverun icon bin file * added soverun icons json for both Soverun mainnet & testnet * added Soverun chains json files for both Soverun mainnet & testnet * added STAND icon bin file * added STAND icons json files for both mainnet & testnet * added STAND chains json files for both mainnet & testnet * add dogs icon bin file * add dogs icon json files both for mainnet & testnet * add dogs chains json files for both testnet & mainnet * add bitindi icon binary file * add bitindi icon json files both for mainnet and testnet * add bitindi chain json files for both mainnet & testnet * fixed explorer link * Delete dogsTestnet duplicate of dogs.json file * update icon * update RPC URL set .me and remove .network * update RPC URL set .me and remove .network --------- Co-authored-by: ligi <ligi@ligi.de> |
||
---|---|---|
_data | ||
.ci | ||
.github | ||
gradle/wrapper | ||
httpsloader | ||
model | ||
processor | ||
tools | ||
website@e573725226 | ||
.gitignore | ||
.gitmodules | ||
.jitpack.yml | ||
.prettierignore | ||
.prettierrc.json | ||
build.gradle | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
maintainer_checklist.md | ||
README.md | ||
settings.gradle.kts |
EVM-based Chains
The source data is in _data/chains. Each chain has its own file with the filename being the CAIP-2 representation as name and .json
ans extension.
Example
{
"name": "Ethereum Mainnet",
"chain": "ETH",
"rpc": [
"https://mainnet.infura.io/v3/${INFURA_API_KEY}",
"https://api.mycryptoapi.com/eth"
],
"faucets": [],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"features": [{ "name": "EIP155" }, { "name": "EIP1559" }],
"infoURL": "https://ethereum.org",
"shortName": "eth",
"chainId": 1,
"networkId": 1,
"icon": "ethereum",
"explorers": [{
"name": "etherscan",
"url": "https://etherscan.io",
"icon": "etherscan",
"standard": "EIP3091"
}]
}
when an icon is used in either the network or a explorer there must be a json in _data/icons with the name used (e.g. in the above example there must be a ethereum.json
and a etherscan.json
in there) - the icon jsons look like this:
[
{
"url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
"width": 1000,
"height": 1628,
"format": "png"
}
]
where:
- the URL must be a IPFS url that is publicly resolveable
- width and height are positive integers
- format is either "png", "jpg" or "svg"
If the chain is an L2 or a shard of another chain you can link it to the parent chain like this:
{
...
"parent": {
"type" : "L2",
"chain": "eip155-1",
"bridges": [ {"url":"https://bridge.arbitrum.io"} ]
}
}
where you need to specify type 2 and the reference to an existing parent. The field about bridges is optional.
You can add a status
field e.g. to deprecate
a chain (a chain should never be deleted as this would open the door to replay attacks)
Other options for status
are active
(default) or incubating
Aggregation
There are also aggregated json files with all chains automatically assembled:
- https://chainid.network/chains.json
- https://chainid.network/chains_mini.json (miniaturized - fewer fields for smaller filesize)
Constraints
- the shortName and name MUST be unique - see e.g. EIP-3770 on why
- if referencing a parent chain - the chain MUST exist in the repo
- if using a IPFS CID for the icon - the CID MUST be retrievable via
ipfs get
- not only through some gateway (means please do not use pinata for now) - for more constraints you can look into the CI
Collision management
We cannot allow more than one chain with the same chainID - this would open the door to replay attacks. The first pull request gets the chainID assigned. When creating a chain we can expect that you read EIP155 which states this repo. All pull request trying to replace a chainID because they think their chain is better than the other will be closed. The only way to get a chain reassigned is when the old chain gets deprecated. This can e.g. be used for testnets that are short lived. But then you will get the redFlag "reusedChaiID" that should be displayed in clients to warn them about the dangers here.
PR verification
Before submitting a PR, please verify that checks pass with:
$ ./gradlew run
BUILD SUCCESSFUL in 7s
9 actionable tasks: 9 executed
Usages
Wallets
Explorers
EIPs
- EIP-155
- EIP-3014
- EIP-3770
- EIP-4527
Listing sites
- chainid.network / chainlist.wtf
- chainlist.org
- networks.vercel.app
- eth-chains
- EVM-BOX
- chaindirectory.xyz
- chain-list.org
- chainlist.network
- evmchainlist.org
- evmchainlist.com
- thechainlist.io
- chainlist.info
- chainmap.io
- chainlist.in
- chainz.me
- Chainlink docs
- Wagmi compatible chain configurations
Other
-
Your project - contact us to add it here!