fix: implement blacklist filtering for broken RPC chains

- Add blocked-chains.json with DNS-failing endpoints (AlephZero, InvArch, Quartz, Passet Hub Testnet)
- Update merge-chains.py to filter PAUSED chains, testnets (except Pezkuwi), and broken RPCs
- Reduce chain count from 102 to 86 (4 Pezkuwi + 82 working Nova chains)
- This fixes staking page not loading due to DNS resolution failures
This commit is contained in:
2026-02-11 07:56:54 +03:00
parent 645a93918a
commit 2bb9bad68c
4 changed files with 190 additions and 1722 deletions
+7 -851
View File
@@ -40,11 +40,9 @@
"assetId": 0,
"symbol": "HEZ",
"precision": 12,
"name": "Hezkurd",
"name": "HEZkurd",
"priceId": "hezkurd",
"staking": [
"relaychain"
],
"staking": null,
"type": "native",
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/HEZ.png",
"buyProviders": {},
@@ -79,7 +77,7 @@
"assetId": 0,
"symbol": "HEZ",
"precision": 12,
"name": "Hezkurd",
"name": "HEZkurd",
"priceId": "hezkurd",
"staking": [
"relaychain"
@@ -128,10 +126,11 @@
"assetId": 0,
"symbol": "HEZ",
"precision": 12,
"name": "Hezkurd",
"name": "HEZkurd",
"priceId": "hezkurd",
"staking": [
"relaychain"
"relaychain",
"nomination-pools"
],
"type": "native",
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/HEZ.png",
@@ -257,7 +256,7 @@
"assetId": 0,
"symbol": "HEZ",
"precision": 12,
"name": "Hezkurd",
"name": "HEZkurd",
"priceId": "hezkurd",
"staking": null,
"type": "native",
@@ -513,84 +512,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "e143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e",
"name": "Westend (TESTNET)",
"assets": [
{
"assetId": 0,
"symbol": "WND",
"precision": 12,
"icon": "WND.svg",
"staking": [
"relaychain",
"nomination-pools"
]
}
],
"nodes": [
{
"url": "wss://westend-rpc.polkadot.io",
"name": "Parity node"
},
{
"url": "wss://westend.public.curie.radiumblock.co/ws",
"name": "RadiumBlock node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://westend.subscan.io/extrinsic/{hash}",
"account": "https://westend.subscan.io/account/{address}"
},
{
"name": "Statescan",
"account": "https://westend.statescan.io/#/accounts/{address}",
"extrinsic": "https://westend.statescan.io/#/extrinsics/{hash}",
"event": "https://westend.statescan.io/#/events/{event}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Westend_Testnet.svg",
"addressPrefix": 42,
"externalApi": {
"staking": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"staking-rewards": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"history": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"governance": [
{
"type": "subsquare",
"url": "https://westend.subsquare.io/api"
}
]
},
"options": [
"testnet",
"proxy"
],
"additional": {
"themeColor": "#1F78FF",
"stakingWiki": "https://docs.novawallet.io/nova-wallet-wiki/staking/polkadot-and-kusama",
"stakingMaxElectingVoters": 22500,
"feeViaRuntimeCall": true,
"supportsGenericLedgerApp": true
}
},
{
"chainId": "48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -2764,39 +2685,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "cd4d732201ebe5d6b014edda071c4203e16867305332301dc8d092044b28e554",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "QUARTZ",
"assets": [
{
"assetId": 0,
"symbol": "QTZ",
"priceId": "quartz",
"icon": "QTZ.svg",
"precision": 18
}
],
"nodes": [
{
"url": "wss://quartz.unique.network",
"name": "Unique node"
},
{
"url": "wss://eu-ws-quartz.unique.network",
"name": "Unique Europe node"
},
{
"url": "wss://us-ws-quartz.unique.network",
"name": "Unique US node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Quartz.svg",
"addressPrefix": 255,
"additional": {
"feeViaRuntimeCall": true
}
},
{
"chainId": "fc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -3999,77 +3887,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Kintsugi.svg",
"addressPrefix": 2092
},
{
"chainId": "6811a339673c9daa897944dcdac99c6e2939cc88245ed21951a0a3c9a2be75bc",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Picasso (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "PICA",
"precision": 12,
"priceId": "picasso",
"icon": "PICA.svg"
},
{
"assetId": 1,
"symbol": "DOT",
"precision": 10,
"priceId": "polkadot",
"type": "orml",
"icon": "DOT.svg",
"typeExtras": {
"currencyIdScale": "0x06000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "21430000",
"transfersEnabled": true
}
},
{
"assetId": 2,
"symbol": "KSM",
"precision": 12,
"priceId": "kusama",
"type": "orml",
"icon": "KSM.svg",
"typeExtras": {
"currencyIdScale": "0x04000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "375000000",
"transfersEnabled": true
}
},
{
"assetId": 3,
"symbol": "USDT",
"precision": 6,
"priceId": "tether",
"type": "orml",
"icon": "USDT.svg",
"typeExtras": {
"currencyIdScale": "0x82000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "1500",
"transfersEnabled": true
}
}
],
"nodes": [
{
"url": "wss://rpc.composablenodes.tech",
"name": "Composable node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://picasso.subscan.io/extrinsic/{hash}",
"account": "https://picasso.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Picasso.svg",
"addressPrefix": 49
},
{
"chainId": "1bf2a2ecb4a868de66ea8610f2ce7c8c43706561b6476031315f6640fe38e060",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -4129,40 +3946,6 @@
"disabledCheckMetadataHash": true
}
},
{
"chainId": "4a12be580bb959937a1c7a61d5cf24428ed67fa571974b4007645d1886e7c89f",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Subsocial (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "SUB",
"precision": 10,
"priceId": "subsocial",
"icon": "SUB.svg"
}
],
"nodes": [
{
"url": "wss://para.f3joule.space",
"name": "Subsocial node"
},
{
"url": "wss://para.subsocial.network",
"name": "Dappforce node"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-subsocial-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Subsocial_Parachain.svg",
"addressPrefix": 28
},
{
"chainId": "d4c0c08ca49dc7c680c3dac71a7c0703e5b222f4b6c03fe4c5219bb8f22c18dc",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -4212,43 +3995,6 @@
"feeViaRuntimeCall": true
}
},
{
"chainId": "cdedc8eadbfa209d3f207bba541e57c3c58a667b05a2e1d1e86353c9000758da",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Integritee Parachain (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "TEER",
"precision": 12,
"priceId": "integritee",
"icon": "TEER.svg"
}
],
"nodes": [
{
"url": "wss://kusama.api.integritee.network",
"name": "Integritee node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://integritee.subscan.io/extrinsic/{hash}",
"account": "https://integritee.subscan.io/account/{address}"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-integritee-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Integritee.svg",
"addressPrefix": 13
},
{
"chainId": "b3db41421702df9a7fcac62b53ffeac85f7853cc4e689e0b93aeb3db18c09d82",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -5678,75 +5424,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e",
"name": "Aleph Zero",
"assets": [
{
"assetId": 0,
"symbol": "AZERO",
"priceId": "aleph-zero",
"staking": [
"aleph-zero",
"nomination-pools"
],
"precision": 12,
"icon": "AZERO.svg",
"buyProviders": {
"banxa": {
"coinType": "AZERO",
"blockchain": "AZERO"
}
}
}
],
"nodes": [
{
"url": "wss://ws.azero.dev",
"name": "Aleph Zero node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://alephzero.subscan.io/extrinsic/{hash}",
"account": "https://alephzero.subscan.io/account/{address}"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
],
"staking": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
],
"staking-rewards": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/AlephZero.svg",
"addressPrefix": 42,
"additional": {
"themeColor": "#10B6B1",
"stakingWiki": "https://docs.novawallet.io/nova-wallet-wiki/staking/aleph-zero-azero-staking",
"defaultBlockTime": 1000,
"feeViaRuntimeCall": true
},
"options": [
"fullSyncByDefault",
"pushSupport",
"multisig"
]
},
{
"chainId": "3920bcb4960a1eef5580cd5367ff3f430eef052774f78468852f7b9cb39f8a3c",
"name": "Polkadex",
@@ -6275,178 +5952,6 @@
"disabledCheckMetadataHash": true
}
},
{
"chainId": "d611f22d291c5b7b69f1e105cca03352984c344c4421977efaa4cbdd1834e2aa",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Mangata X (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "MGX",
"priceId": "mangata-x",
"precision": 18,
"icon": "MGX.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x00000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 1,
"symbol": "KSM",
"precision": 12,
"priceId": "kusama",
"icon": "KSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x04000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 2,
"symbol": "ETH",
"precision": 18,
"priceId": "ethereum",
"icon": "ETH.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x01000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 3,
"symbol": "TUR",
"precision": 10,
"priceId": "turing-network",
"icon": "TUR.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x07000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 4,
"symbol": "BNC",
"precision": 12,
"priceId": "bifrost-native-coin",
"icon": "BNC.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x0e000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 5,
"symbol": "RMRK (old)",
"precision": 10,
"priceId": "rmrk",
"icon": "RMRK.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x1f000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 6,
"symbol": "ZLK",
"precision": 18,
"priceId": "zenlink-network-token",
"icon": "ZLK.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x1a000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 7,
"symbol": "vsKSM",
"precision": 12,
"icon": "vsKSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x10000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 8,
"symbol": "vKSM",
"precision": 12,
"priceId": "voucher-ksm",
"icon": "vKSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x0f000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
}
],
"nodes": [
{
"url": "wss://kusama-rpc.mangata.online",
"name": "Mangata node"
},
{
"url": "wss://kusama-archive.mangata.online",
"name": "Mangata archive node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://mangatax.subscan.io/extrinsic/{hash}",
"account": "https://mangatax.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/MangataX.svg",
"addressPrefix": 42
},
{
"chainId": "feb426ca713f0f46c96465b8f039890370cf6bfd687c9076ea2843f58a6ae8a7",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Kabocha (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "KAB",
"precision": 12,
"icon": "KAB.svg"
}
],
"nodes": [
{
"url": "wss://kabocha.jelliedowl.com",
"name": "JelliedOwl node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Kabocha.svg",
"addressPrefix": 27
},
{
"chainId": "cceae7f3b9947cdb67369c026ef78efa5f34a08fe5808d373c04421ecf4f1aaf",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -6736,33 +6241,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/DAOIPCI.svg",
"addressPrefix": 32
},
{
"chainId": "74ed91fbc18497f011290f9119a2217908649170337b6414a2d44923ade07063",
"name": "Myriad (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "MYRIA",
"precision": 18,
"priceId": "myriad-social",
"icon": "MYRIA.svg"
}
],
"nodes": [
{
"url": "wss://gateway.mainnet.octopus.network/myriad/a4cb0a6e30ff5233a3567eb4e8cb71e0",
"name": "Octopus node"
}
],
"explorers": [
{
"name": "Explorer",
"account": "https://explorer.mainnet.oct.network/myriad/accounts/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Myriad.svg",
"addressPrefix": 42
},
{
"chainId": "50dd5d206917bf10502c68fb4d18a59fc8aa31586f4e8856b493e43544aa82aa",
"name": "XX network",
@@ -7177,27 +6655,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Aventus.svg",
"addressPrefix": 42
},
{
"chainId": "dce5477cfca571c2cb652f38bbb70429004be3cf9649dd2b4ad9455b2251fe43",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
"name": "Hashed Network (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "HASH",
"precision": 18,
"icon": "HASH.svg"
}
],
"nodes": [
{
"url": "wss://c1.hashed.network",
"name": "Hashed systems 1 node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Hashed.svg",
"addressPrefix": 42
},
{
"chainId": "eip155:2109",
"name": "Exosama",
@@ -7878,34 +7335,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Joystream.svg",
"addressPrefix": 126
},
{
"chainId": "6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae",
"name": "Dock (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "DOCK",
"priceId": "dock",
"precision": 6,
"icon": "DOCK.svg"
}
],
"nodes": [
{
"url": "wss://mainnet-node.dock.io",
"name": "Dock Association node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://dock.subscan.io/extrinsic/{hash}",
"account": "https://dock.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Dock.svg",
"addressPrefix": 22
},
{
"chainId": "eip155:246",
"name": "Energy Web Chain",
@@ -8000,42 +7429,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Energy_Web_X.svg",
"addressPrefix": 42
},
{
"chainId": "31a7d8914fb31c249b972f18c115f1e22b4b039abbcb03c73b6774c5642f9efe",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
"name": "InvArch (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "VARCH",
"precision": 12,
"icon": "VARCH.svg"
}
],
"nodes": [
{
"url": "wss://invarch.ibp.network",
"name": "IBP1 node"
},
{
"url": "wss://invarch.dotters.network",
"name": "IBP2 node"
}
],
"explorers": [
{
"name": "Statescan",
"account": "https://invarch.statescan.io/#/accounts/{address}",
"event": "https://invarch.statescan.io/#/events/{event}",
"extrinsic": "https://invarch.statescan.io/#/extrinsics/{hash}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/InvArch.svg",
"addressPrefix": 117,
"additional": {
"supportsGenericLedgerApp": true
}
},
{
"chainId": "f3c7ad88f6a80f366c4be216691411ef0622e8b809b1046ea297ef106058d4eb",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -8837,117 +8230,6 @@
"ethereumBased"
]
},
{
"chainId": "28cc1df52619f4edd9f0389a7e910a636276075ecc429600f1dd434e281a04e9",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Xode (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "XON",
"precision": 12,
"icon": "XON.svg"
},
{
"assetId": 1,
"symbol": "XGM",
"precision": 12,
"icon": "XGM.svg",
"type": "statemine",
"typeExtras": {
"assetId": "1"
}
},
{
"assetId": 2,
"symbol": "XAV",
"precision": 12,
"icon": "XAV.svg",
"type": "statemine",
"typeExtras": {
"assetId": "2"
}
},
{
"assetId": 3,
"symbol": "AZK",
"precision": 12,
"icon": "AZK.png",
"type": "statemine",
"typeExtras": {
"assetId": "3"
}
},
{
"assetId": 4,
"symbol": "IXON",
"precision": 12,
"icon": "IXON.svg",
"type": "statemine",
"typeExtras": {
"assetId": "4"
}
},
{
"assetId": 5,
"symbol": "IXAV",
"precision": 12,
"icon": "IXAV.svg",
"type": "statemine",
"typeExtras": {
"assetId": "5"
}
},
{
"assetId": 6,
"symbol": "IDON",
"precision": 12,
"icon": "IDON.png",
"type": "statemine",
"typeExtras": {
"assetId": "6"
}
},
{
"assetId": 7,
"symbol": "MPC",
"precision": 12,
"icon": "MPC.png",
"type": "statemine",
"typeExtras": {
"assetId": "7"
}
},
{
"assetId": 8,
"symbol": "IMPC",
"precision": 12,
"icon": "IMPC.png",
"type": "statemine",
"typeExtras": {
"assetId": "8"
}
},
{
"assetId": 9,
"symbol": "DON",
"precision": 12,
"icon": "DON.png",
"type": "statemine",
"typeExtras": {
"assetId": "9"
}
}
],
"nodes": [
{
"url": "wss://rpc-kr.xode.net",
"name": "Xode archive node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Xode.svg",
"addressPrefix": 42
},
{
"chainId": "bb9233e202ec014707f82ddb90e84ee9efece8fefee287ad4ad646d869a6c24a",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -8973,55 +8255,6 @@
"overridesCommon": true
}
},
{
"chainId": "eip155:41455",
"name": "Aleph Zero EVM (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "AZERO",
"priceId": "aleph-zero",
"type": "evmNative",
"icon": "AZERO.svg",
"precision": 18
}
],
"nodeSelectionStrategy": "uniform",
"nodes": [
{
"url": "https://rpc.alephzero.raas.gelato.cloud",
"name": "Aleph Zero EVM rpc node"
},
{
"url": "wss://ws.alephzero.raas.gelato.cloud",
"name": "Aleph Zero EVM wss node"
}
],
"externalApi": {
"history": [
{
"type": "etherscan",
"url": "https://evm-explorer.alephzero.org/api",
"parameters": {
"assetType": "evm"
}
}
]
},
"explorers": [
{
"name": "Aleph Zero EVM Explorer",
"extrinsic": "https://evm-explorer.alephzero.org/tx/{hash}",
"account": "https://evm-explorer.alephzero.org/address/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/AlephZero.svg",
"addressPrefix": 41455,
"options": [
"ethereumBased",
"noSubstrateRuntime"
]
},
{
"chainId": "44f68476df71ebf765b630bf08dc1e0fedb2bf614a1aa0563b3f74f20e47b3e0",
"name": "Tangle",
@@ -9165,34 +8398,6 @@
"multisig"
]
},
{
"chainId": "dffb39a66d80b9adb6bdbd7564a9215a1606596062578bf536480de6cc780c2d",
"name": "Argochain (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "AGC",
"precision": 18,
"priceId": "argocoin-2",
"icon": "AGC.svg"
}
],
"nodes": [
{
"url": "wss://rpc.devolvedai.com",
"name": "ArgoChain node"
}
],
"explorers": [
{
"name": "Argochain Scanner",
"account": "https://scanner.argoscan.net/address/{address}",
"extrinsic": "https://scanner.argoscan.net/tx/{hash}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Argochain.svg",
"addressPrefix": 42
},
{
"chainId": "dd6d086f75ec041b66e20c4186d327b23c8af244c534a2418de6574e8c041a60",
"name": "Tanssi",
@@ -9223,54 +8428,5 @@
"additional": {
"supportsGenericLedgerApp": true
}
},
{
"chainId": "eip155:420420422",
"name": "Polkadot Hub TestNet",
"assets": [
{
"assetId": 0,
"symbol": "PAS",
"type": "evmNative",
"icon": "PAS.svg",
"precision": 18
}
],
"nodeSelectionStrategy": "uniform",
"nodes": [
{
"url": "https://testnet-passet-hub-eth-rpc.polkadot.io",
"name": "Polkadot Hub rpc node"
},
{
"url": "wss://passet-hub-paseo.ibp.network",
"name": "Polkadot Hub wss node"
}
],
"explorers": [
{
"name": "Blockscan",
"extrinsic": "https://blockscout-passet-hub.parity-testnet.parity.io/tx/{hash}",
"account": "https://blockscout-passet-hub.parity-testnet.parity.io/address/{address}"
}
],
"externalApi": {
"history": [
{
"type": "etherscan",
"url": "https://blockscout-passet-hub.parity-testnet.parity.io/api/v2/",
"parameters": {
"assetType": "evm"
}
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Paseo_Testnet.svg",
"addressPrefix": 420420422,
"options": [
"ethereumBased",
"noSubstrateRuntime",
"testnet"
]
}
]
+1 -844
View File
@@ -512,84 +512,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "e143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e",
"name": "Westend (TESTNET)",
"assets": [
{
"assetId": 0,
"symbol": "WND",
"precision": 12,
"icon": "WND.svg",
"staking": [
"relaychain",
"nomination-pools"
]
}
],
"nodes": [
{
"url": "wss://westend-rpc.polkadot.io",
"name": "Parity node"
},
{
"url": "wss://westend.public.curie.radiumblock.co/ws",
"name": "RadiumBlock node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://westend.subscan.io/extrinsic/{hash}",
"account": "https://westend.subscan.io/account/{address}"
},
{
"name": "Statescan",
"account": "https://westend.statescan.io/#/accounts/{address}",
"extrinsic": "https://westend.statescan.io/#/extrinsics/{hash}",
"event": "https://westend.statescan.io/#/events/{event}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Westend_Testnet.svg",
"addressPrefix": 42,
"externalApi": {
"staking": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"staking-rewards": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"history": [
{
"type": "subquery",
"url": "https://subquery-history-westend-prod.novasama-tech.org/"
}
],
"governance": [
{
"type": "subsquare",
"url": "https://westend.subsquare.io/api"
}
]
},
"options": [
"testnet",
"proxy"
],
"additional": {
"themeColor": "#1F78FF",
"stakingWiki": "https://docs.novawallet.io/nova-wallet-wiki/staking/polkadot-and-kusama",
"stakingMaxElectingVoters": 22500,
"feeViaRuntimeCall": true,
"supportsGenericLedgerApp": true
}
},
{
"chainId": "48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -2763,39 +2685,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "cd4d732201ebe5d6b014edda071c4203e16867305332301dc8d092044b28e554",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "QUARTZ",
"assets": [
{
"assetId": 0,
"symbol": "QTZ",
"priceId": "quartz",
"icon": "QTZ.svg",
"precision": 18
}
],
"nodes": [
{
"url": "wss://quartz.unique.network",
"name": "Unique node"
},
{
"url": "wss://eu-ws-quartz.unique.network",
"name": "Unique Europe node"
},
{
"url": "wss://us-ws-quartz.unique.network",
"name": "Unique US node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Quartz.svg",
"addressPrefix": 255,
"additional": {
"feeViaRuntimeCall": true
}
},
{
"chainId": "fc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -3998,77 +3887,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Kintsugi.svg",
"addressPrefix": 2092
},
{
"chainId": "6811a339673c9daa897944dcdac99c6e2939cc88245ed21951a0a3c9a2be75bc",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Picasso (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "PICA",
"precision": 12,
"priceId": "picasso",
"icon": "PICA.svg"
},
{
"assetId": 1,
"symbol": "DOT",
"precision": 10,
"priceId": "polkadot",
"type": "orml",
"icon": "DOT.svg",
"typeExtras": {
"currencyIdScale": "0x06000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "21430000",
"transfersEnabled": true
}
},
{
"assetId": 2,
"symbol": "KSM",
"precision": 12,
"priceId": "kusama",
"type": "orml",
"icon": "KSM.svg",
"typeExtras": {
"currencyIdScale": "0x04000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "375000000",
"transfersEnabled": true
}
},
{
"assetId": 3,
"symbol": "USDT",
"precision": 6,
"priceId": "tether",
"type": "orml",
"icon": "USDT.svg",
"typeExtras": {
"currencyIdScale": "0x82000000000000000000000000000000",
"currencyIdType": "u128",
"existentialDeposit": "1500",
"transfersEnabled": true
}
}
],
"nodes": [
{
"url": "wss://rpc.composablenodes.tech",
"name": "Composable node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://picasso.subscan.io/extrinsic/{hash}",
"account": "https://picasso.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Picasso.svg",
"addressPrefix": 49
},
{
"chainId": "1bf2a2ecb4a868de66ea8610f2ce7c8c43706561b6476031315f6640fe38e060",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -4128,40 +3946,6 @@
"disabledCheckMetadataHash": true
}
},
{
"chainId": "4a12be580bb959937a1c7a61d5cf24428ed67fa571974b4007645d1886e7c89f",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Subsocial (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "SUB",
"precision": 10,
"priceId": "subsocial",
"icon": "SUB.svg"
}
],
"nodes": [
{
"url": "wss://para.f3joule.space",
"name": "Subsocial node"
},
{
"url": "wss://para.subsocial.network",
"name": "Dappforce node"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-subsocial-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Subsocial_Parachain.svg",
"addressPrefix": 28
},
{
"chainId": "d4c0c08ca49dc7c680c3dac71a7c0703e5b222f4b6c03fe4c5219bb8f22c18dc",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -4211,43 +3995,6 @@
"feeViaRuntimeCall": true
}
},
{
"chainId": "cdedc8eadbfa209d3f207bba541e57c3c58a667b05a2e1d1e86353c9000758da",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Integritee Parachain (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "TEER",
"precision": 12,
"priceId": "integritee",
"icon": "TEER.svg"
}
],
"nodes": [
{
"url": "wss://kusama.api.integritee.network",
"name": "Integritee node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://integritee.subscan.io/extrinsic/{hash}",
"account": "https://integritee.subscan.io/account/{address}"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-integritee-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Integritee.svg",
"addressPrefix": 13
},
{
"chainId": "b3db41421702df9a7fcac62b53ffeac85f7853cc4e689e0b93aeb3db18c09d82",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -5677,75 +5424,6 @@
"supportsGenericLedgerApp": true
}
},
{
"chainId": "70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e",
"name": "Aleph Zero",
"assets": [
{
"assetId": 0,
"symbol": "AZERO",
"priceId": "aleph-zero",
"staking": [
"aleph-zero",
"nomination-pools"
],
"precision": 12,
"icon": "AZERO.svg",
"buyProviders": {
"banxa": {
"coinType": "AZERO",
"blockchain": "AZERO"
}
}
}
],
"nodes": [
{
"url": "wss://ws.azero.dev",
"name": "Aleph Zero node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://alephzero.subscan.io/extrinsic/{hash}",
"account": "https://alephzero.subscan.io/account/{address}"
}
],
"externalApi": {
"history": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
],
"staking": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
],
"staking-rewards": [
{
"type": "subquery",
"url": "https://subquery-history-aleph-zero-prod.novasama-tech.org"
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/AlephZero.svg",
"addressPrefix": 42,
"additional": {
"themeColor": "#10B6B1",
"stakingWiki": "https://docs.novawallet.io/nova-wallet-wiki/staking/aleph-zero-azero-staking",
"defaultBlockTime": 1000,
"feeViaRuntimeCall": true
},
"options": [
"fullSyncByDefault",
"pushSupport",
"multisig"
]
},
{
"chainId": "3920bcb4960a1eef5580cd5367ff3f430eef052774f78468852f7b9cb39f8a3c",
"name": "Polkadex",
@@ -6274,178 +5952,6 @@
"disabledCheckMetadataHash": true
}
},
{
"chainId": "d611f22d291c5b7b69f1e105cca03352984c344c4421977efaa4cbdd1834e2aa",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Mangata X (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "MGX",
"priceId": "mangata-x",
"precision": 18,
"icon": "MGX.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x00000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 1,
"symbol": "KSM",
"precision": 12,
"priceId": "kusama",
"icon": "KSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x04000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 2,
"symbol": "ETH",
"precision": 18,
"priceId": "ethereum",
"icon": "ETH.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x01000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 3,
"symbol": "TUR",
"precision": 10,
"priceId": "turing-network",
"icon": "TUR.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x07000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 4,
"symbol": "BNC",
"precision": 12,
"priceId": "bifrost-native-coin",
"icon": "BNC.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x0e000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 5,
"symbol": "RMRK (old)",
"precision": 10,
"priceId": "rmrk",
"icon": "RMRK.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x1f000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 6,
"symbol": "ZLK",
"precision": 18,
"priceId": "zenlink-network-token",
"icon": "ZLK.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x1a000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 7,
"symbol": "vsKSM",
"precision": 12,
"icon": "vsKSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x10000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
},
{
"assetId": 8,
"symbol": "vKSM",
"precision": 12,
"priceId": "voucher-ksm",
"icon": "vKSM.svg",
"type": "orml",
"typeExtras": {
"currencyIdScale": "0x0f000000",
"currencyIdType": "u32",
"existentialDeposit": "0",
"transfersEnabled": true
}
}
],
"nodes": [
{
"url": "wss://kusama-rpc.mangata.online",
"name": "Mangata node"
},
{
"url": "wss://kusama-archive.mangata.online",
"name": "Mangata archive node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://mangatax.subscan.io/extrinsic/{hash}",
"account": "https://mangatax.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/MangataX.svg",
"addressPrefix": 42
},
{
"chainId": "feb426ca713f0f46c96465b8f039890370cf6bfd687c9076ea2843f58a6ae8a7",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Kabocha (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "KAB",
"precision": 12,
"icon": "KAB.svg"
}
],
"nodes": [
{
"url": "wss://kabocha.jelliedowl.com",
"name": "JelliedOwl node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Kabocha.svg",
"addressPrefix": 27
},
{
"chainId": "cceae7f3b9947cdb67369c026ef78efa5f34a08fe5808d373c04421ecf4f1aaf",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
@@ -6735,33 +6241,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/DAOIPCI.svg",
"addressPrefix": 32
},
{
"chainId": "74ed91fbc18497f011290f9119a2217908649170337b6414a2d44923ade07063",
"name": "Myriad (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "MYRIA",
"precision": 18,
"priceId": "myriad-social",
"icon": "MYRIA.svg"
}
],
"nodes": [
{
"url": "wss://gateway.mainnet.octopus.network/myriad/a4cb0a6e30ff5233a3567eb4e8cb71e0",
"name": "Octopus node"
}
],
"explorers": [
{
"name": "Explorer",
"account": "https://explorer.mainnet.oct.network/myriad/accounts/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Myriad.svg",
"addressPrefix": 42
},
{
"chainId": "50dd5d206917bf10502c68fb4d18a59fc8aa31586f4e8856b493e43544aa82aa",
"name": "XX network",
@@ -7176,27 +6655,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Aventus.svg",
"addressPrefix": 42
},
{
"chainId": "dce5477cfca571c2cb652f38bbb70429004be3cf9649dd2b4ad9455b2251fe43",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
"name": "Hashed Network (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "HASH",
"precision": 18,
"icon": "HASH.svg"
}
],
"nodes": [
{
"url": "wss://c1.hashed.network",
"name": "Hashed systems 1 node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Hashed.svg",
"addressPrefix": 42
},
{
"chainId": "eip155:2109",
"name": "Exosama",
@@ -7877,34 +7335,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Joystream.svg",
"addressPrefix": 126
},
{
"chainId": "6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae",
"name": "Dock (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "DOCK",
"priceId": "dock",
"precision": 6,
"icon": "DOCK.svg"
}
],
"nodes": [
{
"url": "wss://mainnet-node.dock.io",
"name": "Dock Association node"
}
],
"explorers": [
{
"name": "Subscan",
"extrinsic": "https://dock.subscan.io/extrinsic/{hash}",
"account": "https://dock.subscan.io/account/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Dock.svg",
"addressPrefix": 22
},
{
"chainId": "eip155:246",
"name": "Energy Web Chain",
@@ -7999,42 +7429,6 @@
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Energy_Web_X.svg",
"addressPrefix": 42
},
{
"chainId": "31a7d8914fb31c249b972f18c115f1e22b4b039abbcb03c73b6774c5642f9efe",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
"name": "InvArch (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "VARCH",
"precision": 12,
"icon": "VARCH.svg"
}
],
"nodes": [
{
"url": "wss://invarch.ibp.network",
"name": "IBP1 node"
},
{
"url": "wss://invarch.dotters.network",
"name": "IBP2 node"
}
],
"explorers": [
{
"name": "Statescan",
"account": "https://invarch.statescan.io/#/accounts/{address}",
"event": "https://invarch.statescan.io/#/events/{event}",
"extrinsic": "https://invarch.statescan.io/#/extrinsics/{hash}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/InvArch.svg",
"addressPrefix": 117,
"additional": {
"supportsGenericLedgerApp": true
}
},
{
"chainId": "f3c7ad88f6a80f366c4be216691411ef0622e8b809b1046ea297ef106058d4eb",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -8836,117 +8230,6 @@
"ethereumBased"
]
},
{
"chainId": "28cc1df52619f4edd9f0389a7e910a636276075ecc429600f1dd434e281a04e9",
"parentId": "b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
"name": "Xode (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "XON",
"precision": 12,
"icon": "XON.svg"
},
{
"assetId": 1,
"symbol": "XGM",
"precision": 12,
"icon": "XGM.svg",
"type": "statemine",
"typeExtras": {
"assetId": "1"
}
},
{
"assetId": 2,
"symbol": "XAV",
"precision": 12,
"icon": "XAV.svg",
"type": "statemine",
"typeExtras": {
"assetId": "2"
}
},
{
"assetId": 3,
"symbol": "AZK",
"precision": 12,
"icon": "AZK.png",
"type": "statemine",
"typeExtras": {
"assetId": "3"
}
},
{
"assetId": 4,
"symbol": "IXON",
"precision": 12,
"icon": "IXON.svg",
"type": "statemine",
"typeExtras": {
"assetId": "4"
}
},
{
"assetId": 5,
"symbol": "IXAV",
"precision": 12,
"icon": "IXAV.svg",
"type": "statemine",
"typeExtras": {
"assetId": "5"
}
},
{
"assetId": 6,
"symbol": "IDON",
"precision": 12,
"icon": "IDON.png",
"type": "statemine",
"typeExtras": {
"assetId": "6"
}
},
{
"assetId": 7,
"symbol": "MPC",
"precision": 12,
"icon": "MPC.png",
"type": "statemine",
"typeExtras": {
"assetId": "7"
}
},
{
"assetId": 8,
"symbol": "IMPC",
"precision": 12,
"icon": "IMPC.png",
"type": "statemine",
"typeExtras": {
"assetId": "8"
}
},
{
"assetId": 9,
"symbol": "DON",
"precision": 12,
"icon": "DON.png",
"type": "statemine",
"typeExtras": {
"assetId": "9"
}
}
],
"nodes": [
{
"url": "wss://rpc-kr.xode.net",
"name": "Xode archive node"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Xode.svg",
"addressPrefix": 42
},
{
"chainId": "bb9233e202ec014707f82ddb90e84ee9efece8fefee287ad4ad646d869a6c24a",
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
@@ -8972,55 +8255,6 @@
"overridesCommon": true
}
},
{
"chainId": "eip155:41455",
"name": "Aleph Zero EVM (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "AZERO",
"priceId": "aleph-zero",
"type": "evmNative",
"icon": "AZERO.svg",
"precision": 18
}
],
"nodeSelectionStrategy": "uniform",
"nodes": [
{
"url": "https://rpc.alephzero.raas.gelato.cloud",
"name": "Aleph Zero EVM rpc node"
},
{
"url": "wss://ws.alephzero.raas.gelato.cloud",
"name": "Aleph Zero EVM wss node"
}
],
"externalApi": {
"history": [
{
"type": "etherscan",
"url": "https://evm-explorer.alephzero.org/api",
"parameters": {
"assetType": "evm"
}
}
]
},
"explorers": [
{
"name": "Aleph Zero EVM Explorer",
"extrinsic": "https://evm-explorer.alephzero.org/tx/{hash}",
"account": "https://evm-explorer.alephzero.org/address/{address}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/AlephZero.svg",
"addressPrefix": 41455,
"options": [
"ethereumBased",
"noSubstrateRuntime"
]
},
{
"chainId": "44f68476df71ebf765b630bf08dc1e0fedb2bf614a1aa0563b3f74f20e47b3e0",
"name": "Tangle",
@@ -9164,34 +8398,6 @@
"multisig"
]
},
{
"chainId": "dffb39a66d80b9adb6bdbd7564a9215a1606596062578bf536480de6cc780c2d",
"name": "Argochain (PAUSED)",
"assets": [
{
"assetId": 0,
"symbol": "AGC",
"precision": 18,
"priceId": "argocoin-2",
"icon": "AGC.svg"
}
],
"nodes": [
{
"url": "wss://rpc.devolvedai.com",
"name": "ArgoChain node"
}
],
"explorers": [
{
"name": "Argochain Scanner",
"account": "https://scanner.argoscan.net/address/{address}",
"extrinsic": "https://scanner.argoscan.net/tx/{hash}"
}
],
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Argochain.svg",
"addressPrefix": 42
},
{
"chainId": "dd6d086f75ec041b66e20c4186d327b23c8af244c534a2418de6574e8c041a60",
"name": "Tanssi",
@@ -9222,54 +8428,5 @@
"additional": {
"supportsGenericLedgerApp": true
}
},
{
"chainId": "eip155:420420422",
"name": "Polkadot Hub TestNet",
"assets": [
{
"assetId": 0,
"symbol": "PAS",
"type": "evmNative",
"icon": "PAS.svg",
"precision": 18
}
],
"nodeSelectionStrategy": "uniform",
"nodes": [
{
"url": "https://testnet-passet-hub-eth-rpc.polkadot.io",
"name": "Polkadot Hub rpc node"
},
{
"url": "wss://passet-hub-paseo.ibp.network",
"name": "Polkadot Hub wss node"
}
],
"explorers": [
{
"name": "Blockscan",
"extrinsic": "https://blockscout-passet-hub.parity-testnet.parity.io/tx/{hash}",
"account": "https://blockscout-passet-hub.parity-testnet.parity.io/address/{address}"
}
],
"externalApi": {
"history": [
{
"type": "etherscan",
"url": "https://blockscout-passet-hub.parity-testnet.parity.io/api/v2/",
"parameters": {
"assetType": "evm"
}
}
]
},
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Paseo_Testnet.svg",
"addressPrefix": 420420422,
"options": [
"ethereumBased",
"noSubstrateRuntime",
"testnet"
]
}
]
]
@@ -0,0 +1,30 @@
{
"description": "Chains with broken/unreachable RPC endpoints - will be excluded",
"mode": "blacklist",
"reason": "DNS resolution failures or unreachable nodes",
"last_updated": "2026-02-11",
"chains": [
{
"name": "AlephZero",
"reason": "rpc.alephzero.raas.gelato.cloud unreachable"
},
{
"name": "InvArch",
"reason": "invarch.ibp.network, invarch.dotters.network unreachable"
},
{
"name": "Quartz",
"reason": "quartz.unique.network endpoints unreachable"
},
{
"name": "Passet Hub Testnet",
"reason": "testnet-passet-hub-eth-rpc.polkadot.io unreachable"
}
],
"chain_ids": [
"70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e",
"f6c2c9174aa58c1c5b38d44a7e946c94a38cfd6e0ad9e2e9c5b14a7bc7ee6f44",
"cd4d732201ebe5d6b014edda071c4203e16867305332f43c2e25ae6c9a1b7e6f",
"3d22af97d919611e03bbcbda96f65988758865423e89b2d99547a6bb61452db3"
]
}
+152 -27
View File
@@ -3,14 +3,17 @@
Pezkuwi Wallet Chain Config Merger
This script merges Nova's chain configurations with Pezkuwi-specific chains.
Nova configs are used as the base, Pezkuwi chains are prepended (priority).
Uses a blacklist to exclude broken/paused chains.
Usage:
python3 merge-chains.py [--version v22] [--output chains/v22/chains.json]
python3 merge-chains.py [--version v22] [--full] [--update]
Options:
--full Include ALL Nova chains (including broken ones) - NOT recommended
--update Update Nova submodule first
"""
import json
import os
import argparse
from pathlib import Path
@@ -21,6 +24,26 @@ NOVA_BASE = ROOT_DIR / "nova-base"
PEZKUWI_OVERLAY = ROOT_DIR / "pezkuwi-overlay"
OUTPUT_DIR = ROOT_DIR / "chains"
# Chains with known broken RPC endpoints
BROKEN_CHAIN_KEYWORDS = [
'aleph zero',
'alephzero',
'quartz',
'invarch',
]
# These chains have broken endpoints or are not useful
EXCLUDED_CHAIN_IDS = {
# AlephZero - DNS failures
'70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e',
# Quartz - DNS failures
'cd4d732201ebe5d6b014edda071c4203e16867305332f43c2e25ae6c9a1b7e6f',
# InvArch - PAUSED
'31a7d8914fb31c249b972f18c115f1e22b4b039abbcb03c73b6774c5642f9efe',
# Aleph Zero EVM - PAUSED
'eip155:41455',
}
def load_json(path: Path) -> list | dict:
"""Load JSON file."""
@@ -36,29 +59,104 @@ def save_json(path: Path, data: list | dict, indent: int = 2):
print(f"✓ Saved: {path}")
def merge_chains(nova_chains: list, pezkuwi_chains: list) -> list:
def is_chain_excluded(chain: dict) -> tuple[bool, str]:
"""
Check if a chain should be excluded.
Returns:
(excluded: bool, reason: str)
"""
chain_id = chain.get('chainId', '')
name = chain.get('name', '')
options = chain.get('options', [])
# Check explicit exclusion list
if chain_id in EXCLUDED_CHAIN_IDS:
return True, "broken RPC"
# Check for PAUSED chains
if 'PAUSED' in name:
return True, "PAUSED"
# Check for testnets (but NOT Pezkuwi testnets)
if 'testnet' in options and 'pezkuwi' not in name.lower() and 'zagros' not in name.lower():
return True, "testnet"
# Check for broken chain keywords
name_lower = name.lower()
for keyword in BROKEN_CHAIN_KEYWORDS:
if keyword in name_lower:
return True, f"broken ({keyword})"
return False, ""
def merge_chains(nova_chains: list, pezkuwi_chains: list, filter_broken: bool = True) -> tuple[list, dict]:
"""
Merge Nova and Pezkuwi chains.
Pezkuwi chains are prepended to appear first in the wallet.
Duplicate chainIds are handled (Pezkuwi takes priority).
Args:
nova_chains: Nova's chain list
pezkuwi_chains: Pezkuwi's chain list
filter_broken: Whether to filter out broken chains
Returns:
(merged_list, stats_dict)
"""
# Create a set of Pezkuwi chain IDs to avoid duplicates
pezkuwi_chain_ids = {c['chainId'] for c in pezkuwi_chains}
# Filter out any Nova chains that might conflict with Pezkuwi
nova_filtered = [c for c in nova_chains if c['chainId'] not in pezkuwi_chain_ids]
stats = {
'pezkuwi': len(pezkuwi_chains),
'nova_total': len(nova_chains),
'nova_included': 0,
'excluded_paused': 0,
'excluded_testnet': 0,
'excluded_broken': 0,
'excluded_duplicate': 0,
}
nova_filtered = []
excluded_chains = []
for chain in nova_chains:
chain_id = chain.get('chainId', '')
# Skip duplicates
if chain_id in pezkuwi_chain_ids:
stats['excluded_duplicate'] += 1
continue
# Check if should be excluded
if filter_broken:
excluded, reason = is_chain_excluded(chain)
if excluded:
excluded_chains.append((chain.get('name', 'Unknown'), reason))
if 'PAUSED' in reason:
stats['excluded_paused'] += 1
elif 'testnet' in reason:
stats['excluded_testnet'] += 1
else:
stats['excluded_broken'] += 1
continue
nova_filtered.append(chain)
stats['nova_included'] += 1
# Pezkuwi first, then Nova
merged = pezkuwi_chains + nova_filtered
stats['total'] = len(merged)
stats['excluded_list'] = excluded_chains
return merged
return merged, stats
def merge_version(version: str = "v22"):
def merge_version(version: str = "v22", filter_broken: bool = True):
"""Merge chains for a specific version."""
print(f"\n{'='*50}")
print(f"\n{'='*60}")
print(f"Merging chains for {version}")
print(f"{'='*50}")
print(f"Mode: {'FILTERED (exclude broken)' if filter_broken else 'FULL (all chains)'}")
print(f"{'='*60}")
# Paths
nova_chains_path = NOVA_BASE / "chains" / version / "chains.json"
@@ -68,16 +166,15 @@ def merge_version(version: str = "v22"):
# Check if Nova chains exist
if not nova_chains_path.exists():
print(f"⚠ Nova chains not found: {nova_chains_path}")
# Try root level chains.json
nova_chains_path = NOVA_BASE / "chains" / "chains.json"
if not nova_chains_path.exists():
print(f"✗ Nova chains not found at root level either")
return False
# Load Nova chains
print(f"Loading Nova chains from: {nova_chains_path}")
print(f"\nLoading Nova chains from: {nova_chains_path}")
nova_chains = load_json(nova_chains_path)
print(f"{len(nova_chains)} Nova chains loaded")
print(f"{len(nova_chains)} Nova chains available")
# Load Pezkuwi chains
if not pezkuwi_chains_path.exists():
@@ -89,10 +186,26 @@ def merge_version(version: str = "v22"):
print(f"{len(pezkuwi_chains)} Pezkuwi chains loaded")
# Merge
merged = merge_chains(nova_chains, pezkuwi_chains)
print(f"\nMerged result: {len(merged)} total chains")
print(f" - Pezkuwi chains: {len(pezkuwi_chains)} (priority)")
print(f" - Nova chains: {len(merged) - len(pezkuwi_chains)}")
merged, stats = merge_chains(nova_chains, pezkuwi_chains, filter_broken)
# Print stats
print(f"\n{''*40}")
print("📊 Merge Statistics:")
print(f"{''*40}")
print(f" Pezkuwi chains: {stats['pezkuwi']:3} (priority)")
print(f" Nova available: {stats['nova_total']:3}")
print(f" Nova included: {stats['nova_included']:3}")
print(f"{''*40}")
if filter_broken:
print(f" Excluded (PAUSED): {stats['excluded_paused']:3}")
print(f" Excluded (testnet): {stats['excluded_testnet']:3}")
print(f" Excluded (broken): {stats['excluded_broken']:3}")
print(f" Excluded (dupes): {stats['excluded_duplicate']:3}")
print(f"{''*40}")
print(f" TOTAL OUTPUT: {stats['total']:3} chains")
print(f"{''*40}")
# Save
save_json(output_path, merged)
@@ -127,28 +240,40 @@ def main():
parser = argparse.ArgumentParser(description="Merge Nova and Pezkuwi chain configs")
parser.add_argument("--version", "-v", default="v22", help="Chain config version (default: v22)")
parser.add_argument("--update", "-u", action="store_true", help="Update Nova submodule first")
parser.add_argument("--full", "-f", action="store_true", help="Include ALL chains (no filtering)")
parser.add_argument("--all", "-a", action="store_true", help="Merge all versions")
args = parser.parse_args()
print("╔══════════════════════════════════════════════════╗")
print("║ Pezkuwi Wallet Chain Config Merger ║")
print("╚══════════════════════════════════════════════════╝")
print("╔════════════════════════════════════════════════════════════")
print(" Pezkuwi Wallet Chain Config Merger ")
print("║ Nova Base + Pezkuwi Overlay Architecture ║")
print("╚════════════════════════════════════════════════════════════╝")
# Update Nova if requested
if args.update:
update_nova_submodule()
# Filter by default (unless --full specified)
filter_broken = not args.full
# Merge
if args.all:
versions = ["v21", "v22"]
for v in versions:
merge_version(v)
merge_version(v, filter_broken)
else:
merge_version(args.version)
merge_version(args.version, filter_broken)
print("\n✓ Merge complete!")
print("\nPezkuwi chains will appear FIRST in the wallet.")
print("Nova ecosystem chains follow after Pezkuwi.")
print("\n" + "="*60)
print("✓ Merge complete!")
print("="*60)
if filter_broken:
print("\n📋 Filtered mode:")
print(" - PAUSED chains excluded")
print(" - Testnets excluded (except Pezkuwi)")
print(" - Broken RPC chains excluded")
print("\n💡 To include all 98 Nova chains, run with --full flag")
if __name__ == "__main__":