2018-12-20 17:57:42 +00:00
# EVM-based Chains
2023-04-05 10:33:54 +00:00
The source data is in _data/chains. Each chain has its own file with the filename being the [CAIP-2 ](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md ) representation as name and `.json` as extension.
2018-12-20 20:43:59 +00:00
2019-04-02 13:00:00 +00:00
## Example
2019-02-08 23:20:14 +00:00
```json
2018-12-20 20:43:59 +00:00
{
"name": "Ethereum Mainnet",
"chain": "ETH",
2019-04-02 13:00:00 +00:00
"rpc": [
"https://mainnet.infura.io/v3/${INFURA_API_KEY}",
"https://api.mycryptoapi.com/eth"
],
"faucets": [],
2019-07-02 10:02:07 +00:00
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
2022-11-27 01:52:31 +00:00
"features": [{ "name": "EIP155" }, { "name": "EIP1559" }],
2019-05-22 20:47:45 +00:00
"infoURL": "https://ethereum.org",
2019-07-02 10:02:07 +00:00
"shortName": "eth",
"chainId": 1,
2021-04-13 07:50:30 +00:00
"networkId": 1,
"icon": "ethereum",
"explorers": [{
"name": "etherscan",
"url": "https://etherscan.io",
"icon": "etherscan",
"standard": "EIP3091"
}]
2018-12-20 20:43:59 +00:00
}
```
2021-03-14 15:24:22 +00:00
2023-04-05 10:33:54 +00:00
when an icon is used in either the network or an 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:
2021-04-13 07:50:30 +00:00
```json
[
{
2022-03-07 06:07:25 +00:00
"url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
2021-04-13 07:50:30 +00:00
"width": 1000,
"height": 1628,
"format": "png"
}
]
```
where:
2023-04-05 10:33:54 +00:00
* the URL must be an IPFS url that is publicly resolvable
2022-08-28 18:29:09 +00:00
* width and height are positive integers
2021-04-13 07:50:30 +00:00
* format is either "png", "jpg" or "svg"
2021-09-15 00:13:49 +00:00
If the chain is an L2 or a shard of another chain you can link it to the parent chain like this:
2021-09-15 00:07:03 +00:00
```json
{
...
"parent": {
"type" : "L2",
2021-09-15 00:13:49 +00:00
"chain": "eip155-1",
2021-09-15 00:07:03 +00:00
"bridges": [ {"url":"https://bridge.arbitrum.io"} ]
}
2023-04-05 10:33:54 +00:00
}n
2021-09-15 00:07:03 +00:00
```
where you need to specify type 2 and the reference to an existing parent. The field about bridges is optional.
2022-05-19 16:16:23 +00:00
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`
2022-03-07 06:07:25 +00:00
## Aggregation
2021-04-13 07:50:30 +00:00
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)
2022-11-05 16:26:00 +00:00
## 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
2021-07-25 05:33:45 +00:00
## Collision management
2023-01-25 16:00:47 +00:00
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.
2023-04-05 10:33:54 +00:00
All pull requests 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.
2023-02-16 19:48:31 +00:00
## PR verification
Before submitting a PR, please verify that checks pass with:
```bash
$ ./gradlew run
BUILD SUCCESSFUL in 7s
9 actionable tasks: 9 executed
```
2021-03-14 15:24:22 +00:00
## Usages
2022-06-13 01:17:21 +00:00
### Wallets
* [WallETH ](https://walleth.org )
* [TREZOR ](https://trezor.io )
2022-11-16 23:07:28 +00:00
* [Minerva Wallet ](https://minerva.digital )
2022-06-13 01:17:21 +00:00
### Explorers
* [Otterscan ](https://otterscan.io )
2021-03-14 15:24:22 +00:00
2022-06-13 01:17:21 +00:00
### EIPs
* EIP-155
* EIP-3014
* EIP-3770
* EIP-4527
2022-11-27 16:55:41 +00:00
### Listing sites
2023-01-23 07:16:29 +00:00
* [chainid.network ](https://chainid.network ) / [chainlist.wtf ](https://chainlist.wtf )
* [chainlist.org ](https://chainlist.org )
2021-04-15 06:24:15 +00:00
* [networks.vercel.app ](https://networks.vercel.app )
2021-06-05 16:37:06 +00:00
* [eth-chains ](https://github.com/taylorjdawson/eth-chains )
2022-01-04 10:52:15 +00:00
* [EVM-BOX ](https://github.com/izayl/evm-box )
2022-03-05 06:05:34 +00:00
* [chaindirectory.xyz ](https://www.chaindirectory.xyz )
2022-03-06 14:34:24 +00:00
* [chain-list.org ](https://chain-list.org )
2022-03-07 06:07:25 +00:00
* [chainlist.network ](https://chainlist.network/ )
2022-03-07 17:20:22 +00:00
* [evmchainlist.org ](https://evmchainlist.org )
* [evmchainlist.com ](https://evmchainlist.com )
2022-03-09 07:12:44 +00:00
* [thechainlist.io ](https://thechainlist.io )
2022-03-10 16:40:48 +00:00
* [chainlist.info ](https://chainlist.info )
2022-03-11 10:05:45 +00:00
* [chainmap.io ](https://chainmap.io )
2022-03-12 08:02:32 +00:00
* [chainlist.in ](https://www.chainlist.in )
2022-03-22 13:56:11 +00:00
* [chainz.me ](https://chainz.me )
2022-07-15 10:00:16 +00:00
* [Chainlink docs ](https://docs.chain.link/ )
2022-10-08 14:56:32 +00:00
* [Wagmi compatible chain configurations ](https://spenhouet.com/chains )
2023-03-06 06:29:17 +00:00
* [evmchain.info ](https://evmchain.info )
2022-06-13 01:17:21 +00:00
### Other
* [FaucETH ](https://github.com/komputing/FaucETH )
* [Sourcify playground ](https://playground.sourcify.dev )
2021-03-14 15:24:22 +00:00
* Your project - contact us to add it here!