Os dados de origem estão em _data/chains. Cada cadeia tem seu próprio arquivo com o nome do arquivo sendo o CAIP-2 representação como nome e .json
como extensão.
{
"name": "CryptoREAL Mainnet",
"chain": "Br",
"rpc": [
"https://mainnet.infura.io/v3/020dd61697b247e2b4645a08ddfbf032",
"https://api.bit-moeda.com"
],
"faucets": [],
"nativeCurrency": {
"name": "CryptoREAL",
"symbol": "Br$",
"decimals": 9
},
"features": [{ "name": "EIP155" }, { "name": "EIP1559" }],
"infoURL": "https://bit-moeda.readthedocs.io/pt/latest/",
"shortName": "Br",
"chainId": 7777777,
"networkId": 7777777,
"icon": "cryptoreal",
"explorers": [{
"name": "brscan",
"url": "https://bloco.bit-moeda.com",
"icon": "cryptoreal",
"standard": "EIP3091"
}]
}
quando um ícone é usado na rede ou em um explorador, deve haver um json em _data/icons com o nome usado (por exemplo, no exemplo acima, deve haver um cryptoreal.json
and a brscan.json
lá o ícone jsons se parece com isso:
[
{
"url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
"width": 1000,
"height": 1628,
"format": "png"
}
]
onde:
- o URL deve ser uma url IPFS que seja publicamente resolvível
- largura e altura são inteiros positivos
- o formato é "png", "jpg" ou "svg"
Se a cadeia é um L2 ou um fragmento de outra cadeia, você pode vinculá-la à cadeia pai assim:
{
...
"parent": {
"type" : "L2",
"chain": "eip155-1",
"bridges": [ {"url":"https://ponte.bit-moeda.com"} ]
}
}
onde você precisa especificar o tipo 2 e a referência a um pai existente. O campo sobre pontes é opcional.
Você pode adicionar um status
campo, por exemplo, para depreciar (via status deprecated
) uma cadeia (uma cadeia nunca deve ser excluída, pois isso abriria a porta para ataques de repetição) Outras opções para status
são active
(padrão) ou incubating
Há também arquivos json agregados com todas as cadeias montadas automaticamente:
- https://chainid.network/chains.json
- https://chainid.network/chains_mini.json (miniaturizado - menos campos para um tamanho de arquivo menor)
- o shortName e o nome DEVEM ser únicos - veja por exemplo. EIP-3770 sobre o porquê
- se referenciar uma cadeia pai - a cadeia DEVE existir no repositório
- se estiver usando um CID IPFS para o ícone - o CID DEVE ser recuperável via ipfs get - não só através de algum gateway (significa, por favor, não use pinata por enquanto)
- para mais restrições, você pode olhar para o CI
Não podemos permitir mais de uma cadeia com o mesmo chainID - isso abriria a porta para repetir ataques. A primeira solicitação de extração recebe o chainID atribuído. Ao criar uma cadeia, podemos esperar que você leia EIP155, que afirma este repo. Todas as solicitações pull tentando substituir um chainID porque acham que sua cadeia é melhor do que a outra será fechada. A única maneira de obter uma cadeia reatribuída é quando a cadeia antiga fica obsoleta. Isso pode, por exemplo, ser usado para redes de teste de curta duração. Mas então você receberá o "reusedChaiID" redFlag que deve ser exibido nos clientes para avisá-los sobre os perigos aqui.
Antes de enviar um PR, verifique se as verificações passam com:
$ ./gradlew run
BUILD SUCCESSFUL in 7s
9 actionable tasks: 9 executed
Também por favor, execute o mais bonito para formatar o seu json de acordo com o estilo defina aqui e.g. run
npx prettier --write _data/*/*.json
- Certifique-se de que o CI esteja verde. Provavelmente não haverá revisão quando o IC estiver vermelho.
- Ao fazer alterações que corrijam os problemas de IC - solicite novamente uma revisão - caso contrário, é muito trabalho rastrear essas alterações com tantos PRs diariamente
- EIP-155
- EIP-3014
- EIP-3770
- EIP-4527
- chainid.network / chainlist.wtf
- chainlist.org
- Chainlink docs
- dRPC Chainlist - Load-balanced public nodes
- eth-chains
- EVM-BOX
- evmchain.info
- evmchainlist.org
- networks.vercel.app
- Wagmi compatible chain configurations
-
O seu projeto - contacte-nos para o adicionar aqui!