Chains

provides metadata for chains
Alternatives To Chains
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Go Ethereum42,5244311,92017 hours ago655September 15, 2022313lgpl-3.0Go
Official Go implementation of the Ethereum protocol
Openzeppelin Contracts22,417511,03313 hours ago63September 07, 2022213mitJavaScript
OpenZeppelin Contracts is a library for secure smart contract development.
Foundry6,067
15 hours ago731apache-2.0Rust
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Chains5,883
17 hours ago65mitKotlin
provides metadata for chains
Vyper4,53717112 days ago42April 22, 2022318otherPython
Pythonic Smart Contract Language for the EVM
Aleth3,950
2 years ago340gpl-3.0C++
Aleth – Ethereum C++ client, tools and libraries
Manticore3,465113 days ago723July 07, 2022264agpl-3.0Python
Symbolic execution tool
Mythril3,362833 days ago292June 20, 202295mitPython
Security analysis tool for EVM bytecode. Supports smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains.
Ethereumjs Monorepo2,2715,3332,24814 hours ago85June 03, 2022132TypeScript
Monorepo for the Ethereum VM TypeScript Implementation
Echidna2,158
2 days ago127agpl-3.0Solidity
Ethereum smart contract fuzzer
Alternatives To Chains
Select To Compare


Alternative Project Comparisons
Readme

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 as 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 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:


[
    {
      "url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
      "width": 1000,
      "height": 1628,
      "format": "png"
    }
]

where:

  • the URL must be an IPFS url that is publicly resolvable
  • 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 (via status deprecated) 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:

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 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.

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

Other

Popular Ethereum Projects
Popular Evm Projects
Popular Blockchain Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Kotlin
Ethereum
Evm