├── .github └── workflows │ ├── builder.yml │ └── checker.yml ├── .gitignore ├── Chains ├── arbitrum-one.json ├── avalanche.json ├── base.json ├── beacon-chain.json ├── bitcoin-cash.json ├── bitcoin.json ├── bnb.json ├── cardano.json ├── dash.json ├── digibyte.json ├── dogecoin.json ├── ecash.json ├── ethereum-classic.json ├── ethereum.json ├── fantom.json ├── gnosis-chain.json ├── groestlcoin.json ├── handshake.json ├── kusama.json ├── litecoin.json ├── monero.json ├── moonbeam.json ├── opbnb.json ├── optimism.json ├── peercoin.json ├── polkadot.json ├── polygon-zkevm.json ├── polygon.json ├── ripple.json ├── solana.json ├── ton.json ├── tron.json ├── xrp-ledger.json └── zcash.json ├── Explorers ├── 3xpl.json ├── adastat.json ├── beaconcha.in.json ├── binplorer.json ├── bitcoinunlimited.json ├── bithomp.json ├── blockchair.json ├── blockcypher.json ├── blockscout.json ├── bscscan.json ├── cardanoscan.json ├── chain.json ├── dogechain.json ├── etherscan.json ├── ethplorer.json ├── subscan.json ├── tronscan.json ├── viabtc.json └── xrpscan.json ├── LICENSE.md ├── README.md └── Utils ├── Builder.php └── Checker.php /.github/workflows/builder.yml: -------------------------------------------------------------------------------- 1 | name: builder 2 | run-name: Build project 3 | on: 4 | workflow_dispatch: 5 | pull_request_target: 6 | types: 7 | - closed 8 | branches: 9 | - master 10 | permissions: 11 | contents: write 12 | jobs: 13 | check: 14 | if: github.event_name == 'workflow_dispatch' || (github.event.pull_request && github.event.pull_request.merged == true) 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v3 19 | 20 | - name: Setup PHP 21 | uses: shivammathur/setup-php@v2 22 | with: 23 | php-version: '8.2' 24 | env: 25 | runner: self-hosted 26 | 27 | - name: Run Checker 28 | run: cd Utils && php Checker.php 29 | 30 | build: 31 | if: github.event_name == 'workflow_dispatch' || (github.event.pull_request && github.event.pull_request.merged == true) 32 | runs-on: ubuntu-latest 33 | needs: check 34 | steps: 35 | - name: git checkout 36 | uses: actions/checkout@v3 37 | 38 | - name: setup php 39 | uses: shivammathur/setup-php@v2 40 | with: 41 | php-version: '8.2' 42 | extensions: yaml 43 | env: 44 | runner: ubuntu-latest 45 | 46 | - name: run builder 47 | run: | 48 | php Utils/Builder.php 49 | 50 | - name: push built files to `dist` branch 51 | run: | 52 | cd build 53 | git config --global user.name 'blade-runner' 54 | git config --global user.email 'runner@3xpl.com' 55 | git config --global init.defaultBranch 'master' 56 | git init 57 | git checkout -B master 58 | git add -A 59 | git commit -m "build" 60 | git push -f https://x-access-token:${{ github.token }}@github.com/${{ github.repository }} master:dist 61 | -------------------------------------------------------------------------------- /.github/workflows/checker.yml: -------------------------------------------------------------------------------- 1 | name: checker 2 | run-name: ${{ github.actor }} made a pull request 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | branches: 7 | - master 8 | jobs: 9 | just-checker: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v3 14 | with: 15 | fetch-depth: 2 16 | 17 | - name: Setup PHP 18 | uses: shivammathur/setup-php@v2 19 | with: 20 | php-version: '8.2' 21 | env: 22 | runner: ubuntu-latest 23 | 24 | - name: Get diffs 25 | id: diffs 26 | if: github.event.pull_request 27 | run: | 28 | diff_explorers=$(git diff --name-only --diff-filter=ACMRT origin/master... | grep "Explorers/" | sed "s/Explorers\///" | tr "\n" ",") 29 | echo "files=$diff_explorers" >> $GITHUB_OUTPUT 30 | 31 | - name: Run Checker 32 | run: php Utils/Checker.php --explorers=${{ steps.diffs.outputs.files || '' }} 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | .idea 3 | .DS_Store 4 | build/ 5 | -------------------------------------------------------------------------------- /Chains/arbitrum-one.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "arbitrum-one", 3 | "name": "Arbitrum One", 4 | "foreign_ids": { 5 | "coingecko": "arbitrum", 6 | "coinmarketcap": "arbitrum", 7 | "binance": "arbitrum" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0x310f2679942aa0a64d05e9f936c01cb9e3713212ef28b81dd3398285cbc0ec61", 12 | "address": "0x449d9bab5855d53864969defeeaf0148f7c104f2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/avalanche.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "avalanche", 3 | "name": "Avalanche", 4 | "foreign_ids": { 5 | "coingecko": "avalanche", 6 | "coinmarketcap": "avalanche", 7 | "binance": "avalanche" 8 | }, 9 | "examples": { 10 | "block": "100", 11 | "transaction": "0x25550c5feac1c8a1c0ba5b6230627007fcac5969d3bb355483ca2aaf49796bf8", 12 | "address": "0x27f6119df51a638be7b2b54811b80dd5b4caee9b" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "base", 3 | "name": "Base", 4 | "foreign_ids": { 5 | "coingecko": null, 6 | "coinmarketcap": null, 7 | "binance": null 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0xc43b26117cdba66750690a9252fae114de3b23989874c9502a6e5084564a2f4d", 12 | "address": "0x689f6b97cc8f9668af82d8c208afa67bc78e1c9a" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/beacon-chain.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "beacon-chain", 3 | "name": "Beacon Chain", 4 | "foreign_ids": { 5 | "coingecko": null, 6 | "coinmarketcap": null, 7 | "binance": null 8 | }, 9 | "examples": { 10 | "block": "100000", 11 | "transaction": "3200027", 12 | "address": "296190" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/bitcoin-cash.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bitcoin-cash", 3 | "name": "Bitcoin Cash", 4 | "foreign_ids": { 5 | "coingecko": "bitcoin-cash", 6 | "coinmarketcap": "bitcoin-cash", 7 | "binance": "bitcoin-cash" 8 | }, 9 | "examples": { 10 | "block": "477120", 11 | "transaction": "4b777745084ef83da587c7278db17f7a33ad5b831b5ee47b18c1c11c6165047c", 12 | "address": "qquqx53l8ndg53hvgect6nl56zwmm37ghcu0yakvkp" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/bitcoin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bitcoin", 3 | "name": "Bitcoin", 4 | "foreign_ids": { 5 | "coingecko": "bitcoin", 6 | "coinmarketcap": "bitcoin", 7 | "binance": "bitcoin" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", 12 | "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" 13 | } 14 | } -------------------------------------------------------------------------------- /Chains/bnb.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bnb", 3 | "name": "BNB", 4 | "foreign_ids": { 5 | "coingecko": "bnb", 6 | "coinmarketcap": "bnb", 7 | "binance": "bnb" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0x283261ec450ece5e7c70c4afe39cd00860087824e4bb1d160bc55033bb2d0a67", 12 | "address": "0xe2fc31f816a9b94326492132018c3aecc4a93ae1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/cardano.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cardano", 3 | "name": "Cardano", 4 | "foreign_ids": { 5 | "coingecko": "cardano", 6 | "coinmarketcap": "cardano", 7 | "binance": "cardano" 8 | }, 9 | "examples": { 10 | "block": "9313781", 11 | "transaction": "7468c2dd40fdb2c08e2be5ad7be76600f8d83e0f80d9626fe9ba83a96119dd5f", 12 | "address": "addr1vykhj0et562lk094flx8ppdrjq7dmqffkxv99l3wyjm5c3gf2hlpm" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/dash.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dash", 3 | "name": "Dash", 4 | "foreign_ids": { 5 | "coingecko": "dash", 6 | "coinmarketcap": "dash", 7 | "binance": "dash" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "e0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7", 12 | "address": "XvJwrQWJYzXE5uAxHzhwyJdQSYgeg5MvGn" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/digibyte.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "digibyte", 3 | "name": "Digibyte", 4 | "foreign_ids": { 5 | "coingecko": "digibyte", 6 | "coinmarketcap": "digibyte", 7 | "binance": "digibyte" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "04955b63cae6a782aa43eedd4307f1145409a2771a2eed007300c48e472ac481", 12 | "address": "DGbZULUsSiPitaZFN4ewsNwQEdnQ98jbCH" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/dogecoin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dogecoin", 3 | "name": "Dogecoin", 4 | "foreign_ids": { 5 | "coingecko": "dogecoin", 6 | "coinmarketcap": "dogecoin", 7 | "binance": "dogecoin" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "5b2a3f53f605d62c53e62932dac6925e3d74afa5a4b459745c36d42d0ed26a69", 12 | "address": "DQmCZQo3thCvTxkyAhPHfY7DVLqFtJ2ji6" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/ecash.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ecash", 3 | "name": "eCash", 4 | "foreign_ids": { 5 | "coingecko": "zcash", 6 | "coinmarketcap": "zcash", 7 | "binance": "zcash" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "c4eaa58879081de3c24a7b117ed2b28300e7ec4c4c1dff1d3f1268b7857a4ddb", 12 | "address": "t1StbPM4X3j4FGM57HpGnb9BMbS7C1nFW1r" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/ethereum-classic.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ethereum-classic", 3 | "name": "Ethereum Classic", 4 | "foreign_ids": { 5 | "coingecko": "ethereum-classic", 6 | "coinmarketcap": "ethereum-classic", 7 | "binance": "ethereum-classic" 8 | }, 9 | "examples": { 10 | "block": "1189232", 11 | "transaction": "0x9bf03714b6f16406f69732cb366a26cf21e9d524027a5640b8682e1872412522", 12 | "address": "0x1a6e4028b1410942d851795cfe96ab586038d27d" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/ethereum.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ethereum", 3 | "name": "Ethereum", 4 | "foreign_ids": { 5 | "coingecko": "ethereum", 6 | "coinmarketcap": "ethereum", 7 | "binance": "ethereum" 8 | }, 9 | "examples": { 10 | "block": "1", 11 | "transaction": "0xea1093d492a1dcb1bef708f771a99a96ff05dcab81ca76c31940300177fcf49f", 12 | "address": "0x2a65aca4d5fc5b5c859090a6c34d164135398226" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/fantom.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "fantom", 3 | "name": "Fantom", 4 | "foreign_ids": { 5 | "coingecko": "fantom", 6 | "coinmarketcap": "fantom", 7 | "binance": "fantom" 8 | }, 9 | "examples": { 10 | "block": "68000000", 11 | "transaction": "0x1d7ac1eb1e42cecc4ecd7586b5ce7caef7f010b8ceaaa2d2e431edb7e33f548a", 12 | "address": "0x6daf1f6ee738117882b02cbd7be4041d2db54125" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/gnosis-chain.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "gnosis-chain", 3 | "name": "Gnosis Chain", 4 | "foreign_ids": { 5 | "coingecko": "xdai-ecosystem", 6 | "coinmarketcap": null, 7 | "binance": null 8 | }, 9 | "examples": { 10 | "block": "1", 11 | "transaction": "0xd2c06cec1be379be60ee59d56e93111819e226bca920009c47ee56a1c23ddd99", 12 | "address": "0xa3f08080ab9ea12fc3de1fce5c9caeff63657005" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/groestlcoin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "groestlcoin", 3 | "name": "Groestlcoin", 4 | "foreign_ids": { 5 | "coingecko": "groestlcoin", 6 | "coinmarketcap": "groestlcoin", 7 | "binance": "groestlcoin" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "3ce968df58f9c8a752306c4b7264afab93149dbc578bd08a42c446caaa6628bb", 12 | "address": "FeBhpvNkdtxC7K3LEVT8uqskzwC4mFYrhR" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/handshake.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "handshake", 3 | "name": "Handshake", 4 | "foreign_ids": { 5 | "coingecko": "handshake", 6 | "coinmarketcap": "handshake", 7 | "binance": "handshake" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "9553240e6f711271cfccf9407c9348996e61cb3bd39adbc2ec258ff940ff22c6", 12 | "address": "hs1q7q3h4chglps004u3yn79z0cp9ed24rfr5ka9n5" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/kusama.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "kusama", 3 | "name": "Kusama", 4 | "foreign_ids": { 5 | "coingecko": "kusama", 6 | "coinmarketcap": "kusama", 7 | "binance": "kusama" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0xb384cd393db4458afc3129b7c091078c8e7c38742608fed6018175027b6f03e2", 12 | "address": "FRsbeFPVW9tERiU2Bdp8471NQDS4Aq6hD87n1c4JewUUKV3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/litecoin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "litecoin", 3 | "name": "Litecoin", 4 | "foreign_ids": { 5 | "coingecko": "litecoin", 6 | "coinmarketcap": "litecoin", 7 | "binance": "litecoin" 8 | }, 9 | "examples": { 10 | "block": "2257920", 11 | "transaction": "1c092b270672babb297140813d6a5b7dbb8e8173273d9e360443cd5767055f98", 12 | "address": "MVSbdnUxCYTXdYjE1GSK9kwF31EZauNLAf" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/monero.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "monero", 3 | "name": "Monero", 4 | "foreign_ids": { 5 | "coingecko": "monero", 6 | "coinmarketcap": "monero", 7 | "binance": "monero" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "c88ce9783b4f11190d7b9c17a69c1c52200f9faaee8e98dd07e6811175177139", 12 | "address": "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/moonbeam.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "moonbeam", 3 | "name": "Moonbeam", 4 | "foreign_ids": { 5 | "coingecko": "moonbeam", 6 | "coinmarketcap": "moonbeam", 7 | "binance": "moonbeam" 8 | }, 9 | "examples": { 10 | "block": "5310000", 11 | "transaction": "0xb287e79f585405cbd09fb53fa2eaa9bdd5dad431347beea64a64197a5a21dc0c", 12 | "address": "0x229a93039d528b1b6c5357ec9f3f3fd86f71bd14" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/opbnb.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "opbnb", 3 | "name": "opBNB", 4 | "foreign_ids": { 5 | "coingecko": null, 6 | "coinmarketcap": null, 7 | "binance": null 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0x835d817ab9d8e0854416bc8711466d8f20fb2c61e457d46e28f245b6fdc39554", 12 | "address": "0xa66e2cecad16d6de42f98b8224959adc6064a442" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/optimism.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "optimism", 3 | "name": "Optimism", 4 | "foreign_ids": { 5 | "coingecko": "optimism", 6 | "coinmarketcap": "optimism-ethereum", 7 | "binance": "optimism-ethereum" 8 | }, 9 | "examples": { 10 | "block": "100000000", 11 | "transaction": "0x84e92efed88f61b6e901acb7e0d1e39ff69cf82e8fd266b06c42b02ce0a692d5", 12 | "address": "0xb8ff877ed78ba520ece21b1de7843a8a57ca47cb" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/peercoin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "peercoin", 3 | "name": "Peercoin", 4 | "foreign_ids": { 5 | "coingecko": "peercoin", 6 | "coinmarketcap": "peercoin", 7 | "binance": "peercoin" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "4105cc503882c6852b1ce4024c730d4d1d31342aada62c0703aa603d92f75501", 12 | "address": "PTNSKANTVh6mLuCbAWTmKDZeDedddcGeZZ" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/polkadot.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "polkadot", 3 | "name": "Polkadot", 4 | "foreign_ids": { 5 | "coingecko": "polkadot", 6 | "coinmarketcap": "polkadot", 7 | "binance": "polkadot" 8 | }, 9 | "examples": { 10 | "block": "15822006", 11 | "transaction": "0x3b9bf931486b1e4b88cdc9aef6743482aaa2358f12a458a38a9630e462adb3f8", 12 | "address": "14ghKTz5mjZPgGYvgVC9VnFw1HYZmmsnYvSSHFgFTJfMvwQS" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/polygon-zkevm.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "polygon-zkevm", 3 | "name": "Polygon zkEVM", 4 | "foreign_ids": { 5 | "coingecko": null, 6 | "coinmarketcap": null, 7 | "binance": null 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0x00e95d9d1139543ed0cd5fcdf80f078071698e9ec7da5b1012dbfb3aca5b870a", 12 | "address": "0xe25ea842727b8ac593ed106dc9cb4d1562115f10" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/polygon.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "polygon", 3 | "name": "Polygon", 4 | "foreign_ids": { 5 | "coingecko": "polygon", 6 | "coinmarketcap": "polygon", 7 | "binance": "polygon" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "0x0c715b7ac446c896444f93b763ca8c560897a9e069e11718107ad77101f0de19", 12 | "address": "0x0375b2fc7140977c9c76d45421564e354ed42277" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/ripple.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ripple", 3 | "name": "Ripple", 4 | "foreign_ids": { 5 | "coingecko": "ripple", 6 | "coinmarketcap": "ripple", 7 | "binance": "ripple" 8 | }, 9 | "examples": { 10 | "block": "82695177", 11 | "transaction": "1F56104B82618E247F230454D34F24EA30BD0E7465FC066F7FF1971B6EF6CE1F", 12 | "address": "r4AZpDKVoBxVcYUJCWMcqZzyWsHTteC4ZE" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/solana.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "solana", 3 | "name": "Solana", 4 | "foreign_ids": { 5 | "coingecko": "solana", 6 | "coinmarketcap": "solana", 7 | "binance": "solana" 8 | }, 9 | "examples": { 10 | "block": "218705853", 11 | "transaction": "4WuxY8mK4cS7WAAfgS2QPGCcEVe7aXCvA29oK23oRs4HVMkycYuCH5kTs7kXxXXDwubmBczU37WreviYSdzAiLrp", 12 | "address": "8XpocjZodGQiFdoh2P33EXF1dDCJErx5nAsnz81sK4wy" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/ton.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ton", 3 | "name": "The Open Network", 4 | "foreign_ids": { 5 | "coingecko": "toncoin", 6 | "coinmarketcap": "toncoin", 7 | "binance": "toncoin" 8 | }, 9 | "examples": { 10 | "block": "1", 11 | "transaction": "3a175a1995d9634cfa527a1701daeb158b0aeb1e040a390ba697a6110ee1b9bf", 12 | "address": "EQCSP1xhpNpQmIIYDwbMs2lZmy6ep496v3JfIy__DTH6ZqJ2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/tron.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "tron", 3 | "name": "TRON", 4 | "foreign_ids": { 5 | "coingecko": "tron", 6 | "coinmarketcap": "tron", 7 | "binance": "tron" 8 | }, 9 | "examples": { 10 | "block": "52000000", 11 | "transaction": "cd1d85d34914282da1556dc4222f62ed410271f934c9fe96dcfecf1e9a810b81", 12 | "address": "TWjspcCqEJYLukPZYW4V5javLw7QbRj5Ye" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/xrp-ledger.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "xrp-ledger", 3 | "name": "XRP Ledger", 4 | "foreign_ids": { 5 | "coingecko": "xrp", 6 | "coinmarketcap": "xrp", 7 | "binance": "xrp" 8 | }, 9 | "examples": { 10 | "block": "85262358", 11 | "transaction": "002216cfa7896406c59d4bae7c193a57681632f7aa5dd02988803f38ef772ff0", 12 | "address": "r3EmDxejUHvG6gASt66SD4fV5XGeXkWh2q" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chains/zcash.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "zcash", 3 | "name": "Zcash", 4 | "foreign_ids": { 5 | "coingecko": "zcash", 6 | "coinmarketcap": "zcash", 7 | "binance": "zcash" 8 | }, 9 | "examples": { 10 | "block": "0", 11 | "transaction": "c4eaa58879081de3c24a7b117ed2b28300e7ec4c4c1dff1d3f1268b7857a4ddb", 12 | "address": "t1StbPM4X3j4FGM57HpGnb9BMbS7C1nFW1r" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Explorers/3xpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "3xpl", 3 | "name": "3xpl", 4 | "description": "Fastest adless universal block explorer", 5 | "link": "https://3xpl.com", 6 | "x": "https://x.com/3xplcom", 7 | "discord": "https://3xpl.com/discord", 8 | "search": "https://3xpl.com/search?q=%search%", 9 | "blockchains": { 10 | "bitcoin": { 11 | "homepage": "https://3xpl.com/bitcoin", 12 | "block": "https://3xpl.com/bitcoin/block/%block%", 13 | "transaction": "https://3xpl.com/bitcoin/transaction/%transaction%", 14 | "address": "https://3xpl.com/bitcoin/address/%address%" 15 | }, 16 | "ethereum": { 17 | "homepage": "https://3xpl.com/ethereum", 18 | "block": "https://3xpl.com/ethereum/block/%block%", 19 | "transaction": "https://3xpl.com/ethereum/transaction/%transaction%", 20 | "address": "https://3xpl.com/ethereum/address/%address%" 21 | }, 22 | "arbitrum-one": { 23 | "homepage": "https://3xpl.com/arbitrum-one", 24 | "block": "https://3xpl.com/arbitrum-one/block/%block%", 25 | "transaction": "https://3xpl.com/arbitrum-one/transaction/%transaction%", 26 | "address": "https://3xpl.com/arbitrum-one/address/%address%" 27 | }, 28 | "base": { 29 | "homepage": "https://3xpl.com/base", 30 | "block": "https://3xpl.com/base/block/%block%", 31 | "transaction": "https://3xpl.com/base/transaction/%transaction%", 32 | "address": "https://3xpl.com/base/address/%address%" 33 | }, 34 | "beacon-chain": { 35 | "homepage": "https://3xpl.com/beacon-chain", 36 | "block": "https://3xpl.com/beacon-chain/epoch/%block%", 37 | "transaction": "https://3xpl.com/beacon-chain/slot/%transaction%", 38 | "address": "https://3xpl.com/beacon-chain/validator/%address%" 39 | }, 40 | "bitcoin-cash": { 41 | "homepage": "https://3xpl.com/bitcoin-cash", 42 | "block": "https://3xpl.com/bitcoin-cash/block/%block%", 43 | "transaction": "https://3xpl.com/bitcoin-cash/transaction/%transaction%", 44 | "address": "https://3xpl.com/bitcoin-cash/address/%address%" 45 | }, 46 | "bnb": { 47 | "homepage": "https://3xpl.com/bnb", 48 | "block": "https://3xpl.com/bnb/block/%block%", 49 | "transaction": "https://3xpl.com/bnb/transaction/%transaction%", 50 | "address": "https://3xpl.com/bnb/address/%address%" 51 | }, 52 | "cardano": { 53 | "homepage": "https://3xpl.com/cardano", 54 | "block": "https://3xpl.com/cardano/block/%block%", 55 | "transaction": "https://3xpl.com/cardano/transaction/%transaction%", 56 | "address": "https://3xpl.com/cardano/address/%address%" 57 | }, 58 | "dash": { 59 | "homepage": "https://3xpl.com/dash", 60 | "block": "https://3xpl.com/dash/block/%block%", 61 | "transaction": "https://3xpl.com/dash/transaction/%transaction%", 62 | "address": "https://3xpl.com/dash/address/%address%" 63 | }, 64 | "digibyte": { 65 | "homepage": "https://3xpl.com/digibyte", 66 | "block": "https://3xpl.com/digibyte/block/%block%", 67 | "transaction": "https://3xpl.com/digibyte/transaction/%transaction%", 68 | "address": "https://3xpl.com/digibyte/address/%address%" 69 | }, 70 | "dogecoin": { 71 | "homepage": "https://3xpl.com/dogecoin", 72 | "block": "https://3xpl.com/dogecoin/block/%block%", 73 | "transaction": "https://3xpl.com/dogecoin/transaction/%transaction%", 74 | "address": "https://3xpl.com/dogecoin/address/%address%" 75 | }, 76 | "fantom": { 77 | "homepage": "https://3xpl.com/fantom", 78 | "block": "https://3xpl.com/fantom/block/%block%", 79 | "transaction": "https://3xpl.com/fantom/transaction/%transaction%", 80 | "address": "https://3xpl.com/fantom/address/%address%" 81 | }, 82 | "gnosis-chain": { 83 | "homepage": "https://3xpl.com/gnosis-chain", 84 | "block": "https://3xpl.com/gnosis-chain/block/%block%", 85 | "transaction": "https://3xpl.com/gnosis-chain/transaction/%transaction%", 86 | "address": "https://3xpl.com/gnosis-chain/address/%address%" 87 | }, 88 | "handshake": { 89 | "homepage": "https://3xpl.com/handshake", 90 | "block": "https://3xpl.com/handshake/block/%block%", 91 | "transaction": "https://3xpl.com/handshake/transaction/%transaction%", 92 | "address": "https://3xpl.com/handshake/address/%address%" 93 | }, 94 | "litecoin": { 95 | "homepage": "https://3xpl.com/litecoin", 96 | "block": "https://3xpl.com/litecoin/block/%block%", 97 | "transaction": "https://3xpl.com/litecoin/transaction/%transaction%", 98 | "address": "https://3xpl.com/litecoin/address/%address%" 99 | }, 100 | "monero": { 101 | "homepage": "https://3xpl.com/monero", 102 | "block": "https://3xpl.com/monero/block/%block%", 103 | "transaction": "https://3xpl.com/monero/transaction/%transaction%", 104 | "address": "https://3xpl.com/monero/address/%address%" 105 | }, 106 | "moonbeam": { 107 | "homepage": "https://3xpl.com/moonbeam", 108 | "block": "https://3xpl.com/moonbeam/block/%block%", 109 | "transaction": "https://3xpl.com/moonbeam/transaction/%transaction%", 110 | "address": "https://3xpl.com/moonbeam/address/%address%" 111 | }, 112 | "opbnb": { 113 | "homepage": "https://3xpl.com/opbnb", 114 | "block": "https://3xpl.com/opbnb/block/%block%", 115 | "transaction": "https://3xpl.com/opbnb/transaction/%transaction%", 116 | "address": "https://3xpl.com/opbnb/address/%address%" 117 | }, 118 | "optimism": { 119 | "homepage": "https://3xpl.com/optimism", 120 | "block": "https://3xpl.com/optimism/block/%block%", 121 | "transaction": "https://3xpl.com/optimism/transaction/%transaction%", 122 | "address": "https://3xpl.com/optimism/address/%address%" 123 | }, 124 | "peercoin": { 125 | "homepage": "https://3xpl.com/peercoin", 126 | "block": "https://3xpl.com/peercoin/block/%block%", 127 | "transaction": "https://3xpl.com/peercoin/transaction/%transaction%", 128 | "address": "https://3xpl.com/peercoin/address/%address%" 129 | }, 130 | "polkadot": { 131 | "homepage": "https://3xpl.com/polkadot", 132 | "block": "https://3xpl.com/polkadot/block/%block%", 133 | "transaction": "https://3xpl.com/polkadot/transaction/%transaction%", 134 | "address": "https://3xpl.com/polkadot/address/%address%" 135 | }, 136 | "polygon": { 137 | "homepage": "https://3xpl.com/polygon", 138 | "block": "https://3xpl.com/polygon/block/%block%", 139 | "transaction": "https://3xpl.com/polygon/transaction/%transaction%", 140 | "address": "https://3xpl.com/polygon/address/%address%" 141 | }, 142 | "polygon-zkevm": { 143 | "homepage": "https://3xpl.com/polygon-zkevm", 144 | "block": "https://3xpl.com/polygon-zkevm/batch/%block%", 145 | "transaction": "https://3xpl.com/polygon-zkevm/transaction/%transaction%", 146 | "address": "https://3xpl.com/polygon-zkevm/address/%address%" 147 | }, 148 | "solana": { 149 | "homepage": "https://3xpl.com/solana", 150 | "block": "https://3xpl.com/solana/slot/%block%", 151 | "transaction": "https://3xpl.com/solana/transaction/%transaction%", 152 | "address": "https://3xpl.com/solana/address/%address%" 153 | }, 154 | "ton": { 155 | "homepage": "https://3xpl.com/ton", 156 | "block": "https://3xpl.com/ton/block/%block%", 157 | "transaction": "https://3xpl.com/ton/transaction/%transaction%", 158 | "address": "https://3xpl.com/ton/address/%address%" 159 | }, 160 | "tron": { 161 | "homepage": "https://3xpl.com/tron", 162 | "block": "https://3xpl.com/tron/block/%block%", 163 | "transaction": "https://3xpl.com/tron/transaction/%transaction%", 164 | "address": "https://3xpl.com/tron/address/%address%" 165 | }, 166 | "zcash": { 167 | "homepage": "https://3xpl.com/zcash", 168 | "block": "https://3xpl.com/zcash/block/%block%", 169 | "transaction": "https://3xpl.com/zcash/transaction/%transaction%", 170 | "address": "https://3xpl.com/zcash/address/%address%" 171 | } 172 | } 173 | } 174 | -------------------------------------------------------------------------------- /Explorers/adastat.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "adastat", 3 | "name": "adastat.net", 4 | "description": "AdaStat", 5 | "link": "https://adastat.net", 6 | "x": "https://x.com/ada_stat", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "cardano": { 11 | "homepage": "https://adastat.net/", 12 | "block": "https://adastat.net/blocks/%block%", 13 | "transaction": "https://adastat.net/transactions/%transaction%", 14 | "address": "https://adastat.net/addresses/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/beaconcha.in.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "beaconcha.in", 3 | "name": "beaconcha.in", 4 | "description": "Open source Ethereum blockchain explorer", 5 | "link": "https://beaconcha.in", 6 | "x": "https://x.com/beaconcha_in", 7 | "discord": "https://dsc.gg/beaconchain", 8 | "search": "https://beaconcha.in/search", 9 | "blockchains": { 10 | "beacon-chain": { 11 | "homepage": "https://beaconcha.in", 12 | "block": "https://beaconcha.in/epoch/%block%", 13 | "transaction": "https://beaconcha.in/slot/%transaction%", 14 | "address": "https://beaconcha.in/validator/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/binplorer.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "binplorer", 3 | "name": "binplorer.com", 4 | "description": "BNB Chain (BEP-20) explorer", 5 | "link": "https://binplorer.com", 6 | "x": "https://x.com/binplorer", 7 | "discord": null, 8 | "search": "https://binplorer.com/search/%search%", 9 | "blockchains": { 10 | "bnb": { 11 | "homepage": "https://binplorer.com", 12 | "block": null, 13 | "transaction": "https://binplorer.com/tx/%transaction%", 14 | "address": "https://binplorer.com/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/bitcoinunlimited.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bitcoinunlimited", 3 | "name": "bitcoinunlimited.info", 4 | "description": "Bitcoin Cash explorer by Bitcoin Unlimited", 5 | "link": "https://explorer.bitcoinunlimited.info", 6 | "x": "https://x.com/bitcoinunlimit", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "bitcoin-cash": { 11 | "homepage": "https://explorer.bitcoinunlimited.info", 12 | "block": "https://explorer.bitcoinunlimited.info/block-height/%block%", 13 | "transaction": "https://explorer.bitcoinunlimited.info/tx/%transaction%", 14 | "address": "https://explorer.bitcoinunlimited.info/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/bithomp.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bithomp", 3 | "name": "bithomp.com", 4 | "description": "Scan the XRP Ledger", 5 | "link": "https://bithomp.com", 6 | "x": "https://x.com/bithomp", 7 | "discord": "https://discord.gg/ZahGJ29WEs", 8 | "search": "https://bithomp.com/explorer/%search%", 9 | "blockchains": { 10 | "xrp-ledger": { 11 | "homepage": "https://bithomp.com", 12 | "block": "https://bithomp.com/ledger/%block%", 13 | "transaction": "https://bithomp.com/explorer/%transaction%", 14 | "address": "https://bithomp.com/explorer/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/blockchair.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "blockchair", 3 | "name": "blockchair.com", 4 | "description": "Blockchair: the most popular search and analytics engine for multiple blockchains", 5 | "link": "https://blockchair.com", 6 | "x": "https://x.com/blockchair", 7 | "discord": null, 8 | "search": "https://blockchair.com/search?q=%search%", 9 | "blockchains": { 10 | "bitcoin": { 11 | "homepage": "https://blockchair.com/bitcoin", 12 | "block": "https://blockchair.com/bitcoin/block/%block%", 13 | "transaction": "https://blockchair.com/bitcoin/transaction/%transaction%", 14 | "address": "https://blockchair.com/bitcoin/address/%address%" 15 | }, 16 | "ethereum": { 17 | "homepage": "https://blockchair.com/ethereum", 18 | "block": "https://blockchair.com/ethereum/block/%block%", 19 | "transaction": "https://blockchair.com/ethereum/transaction/%transaction%", 20 | "address": "https://blockchair.com/ethereum/address/%address%" 21 | }, 22 | "bnb": { 23 | "homepage": "https://blockchair.com/bnb", 24 | "block": "https://blockchair.com/bnb/block/%block%", 25 | "transaction": "https://blockchair.com/bnb/transaction/%transaction%", 26 | "address": "https://blockchair.com/bnb/address/%address%" 27 | }, 28 | "opbnb": { 29 | "homepage": "https://blockchair.com/opbnb", 30 | "block": "https://blockchair.com/opbnb/block/%block%", 31 | "transaction": "https://blockchair.com/opbnb/transaction/%transaction%", 32 | "address": "https://blockchair.com/opbnb/address/%address%" 33 | }, 34 | "litecoin": { 35 | "homepage": "https://blockchair.com/litecoin", 36 | "block": "https://blockchair.com/litecoin/block/%block%", 37 | "transaction": "https://blockchair.com/litecoin/transaction/%transaction%", 38 | "address": "https://blockchair.com/litecoin/address/%address%" 39 | }, 40 | "cardano": { 41 | "homepage": "https://blockchair.com/cardano", 42 | "block": "https://blockchair.com/cardano/block/%block%", 43 | "transaction": "https://blockchair.com/cardano/transaction/%transaction%", 44 | "address": "https://blockchair.com/cardano/address/%address%" 45 | }, 46 | "ripple": { 47 | "homepage": "https://blockchair.com/ripple", 48 | "block": "https://blockchair.com/ripple/ledger/%block%", 49 | "transaction": "https://blockchair.com/ripple/transaction/%transaction%", 50 | "address": "https://blockchair.com/ripple/account/%address%" 51 | }, 52 | "polkadot": { 53 | "homepage": "https://blockchair.com/polkadot", 54 | "block": "https://blockchair.com/polkadot/block/%block%", 55 | "transaction": "https://blockchair.com/polkadot/transaction/%transaction%", 56 | "address": "https://blockchair.com/polkadot/address/%address%" 57 | }, 58 | "dogecoin": { 59 | "homepage": "https://blockchair.com/dogecoin", 60 | "block": "https://blockchair.com/dogecoin/block/%block%", 61 | "transaction": "https://blockchair.com/dogecoin/transaction/%transaction%", 62 | "address": "https://blockchair.com/dogecoin/address/%address%" 63 | }, 64 | "bitcoin-cash": { 65 | "homepage": "https://blockchair.com/bitcoin-cash", 66 | "block": "https://blockchair.com/bitcoin-cash/block/%block%", 67 | "transaction": "https://blockchair.com/bitcoin-cash/transaction/%transaction%", 68 | "address": "https://blockchair.com/bitcoin-cash/address/%address%" 69 | }, 70 | "monero": { 71 | "homepage": "https://blockchair.com/monero", 72 | "block": "https://blockchair.com/monero/block/%block%", 73 | "transaction": "https://blockchair.com/monero/transaction/%transaction%", 74 | "address": "https://blockchair.com/monero/address/%address%" 75 | }, 76 | "kusama": { 77 | "homepage": "https://blockchair.com/kusama", 78 | "block": "https://blockchair.com/kusama/block/%block%", 79 | "transaction": "https://blockchair.com/kusama/transaction/%transaction%", 80 | "address": "https://blockchair.com/kusama/address/%address%" 81 | }, 82 | "ecash": { 83 | "homepage": "https://blockchair.com/ecash", 84 | "block": "https://blockchair.com/ecash/block/%block%", 85 | "transaction": "https://blockchair.com/ecash/transaction/%transaction%", 86 | "address": "https://blockchair.com/ecash/address/%address%" 87 | }, 88 | "zcash": { 89 | "homepage": "https://blockchair.com/zcash", 90 | "block": "https://blockchair.com/zcash/block/%block%", 91 | "transaction": "https://blockchair.com/zcash/transaction/%transaction%", 92 | "address": "https://blockchair.com/zcash/address/%address%" 93 | }, 94 | "dash": { 95 | "homepage": "https://blockchair.com/dash", 96 | "block": "https://blockchair.com/dash/block/%block%", 97 | "transaction": "https://blockchair.com/dash/transaction/%transaction%", 98 | "address": "https://blockchair.com/dash/address/%address%" 99 | }, 100 | "groestlcoin": { 101 | "homepage": "https://blockchair.com/groestlcoin", 102 | "block": "https://blockchair.com/groestlcoin/block/%block%", 103 | "transaction": "https://blockchair.com/groestlcoin/transaction/%transaction%", 104 | "address": "https://blockchair.com/groestlcoin/address/%address%" 105 | }, 106 | "arbitrum-one": { 107 | "homepage": "https://blockchair.com/arbitrum-one", 108 | "block": "https://blockchair.com/arbitrum-one/block/%block%", 109 | "transaction": "https://blockchair.com/arbitrum-one/transaction/%transaction%", 110 | "address": "https://blockchair.com/arbitrum-one/address/%address%" 111 | }, 112 | "base": { 113 | "homepage": "https://blockchair.com/base", 114 | "block": "https://blockchair.com/base/block/%block%", 115 | "transaction": "https://blockchair.com/base/transaction/%transaction%", 116 | "address": "https://blockchair.com/base/address/%address%" 117 | }, 118 | "beacon-chain": { 119 | "homepage": "https://blockchair.com/beacon-chain", 120 | "block": "https://blockchair.com/beacon-chain/epoch/%block%", 121 | "transaction": "https://blockchair.com/beacon-chain/slot/%transaction%", 122 | "address": "https://blockchair.com/beacon-chain/validator/%address%" 123 | }, 124 | "digibyte": { 125 | "homepage": "https://blockchair.com/digibyte", 126 | "block": "https://blockchair.com/digibyte/block/%block%", 127 | "transaction": "https://blockchair.com/digibyte/transaction/%transaction%", 128 | "address": "https://blockchair.com/digibyte/address/%address%" 129 | }, 130 | "fantom": { 131 | "homepage": "https://blockchair.com/fantom", 132 | "block": "https://blockchair.com/fantom/block/%block%", 133 | "transaction": "https://blockchair.com/fantom/transaction/%transaction%", 134 | "address": "https://blockchair.com/fantom/address/%address%" 135 | }, 136 | "gnosis-chain": { 137 | "homepage": "https://blockchair.com/gnosis-chain", 138 | "block": "https://blockchair.com/gnosis-chain/block/%block%", 139 | "transaction": "https://blockchair.com/gnosis-chain/transaction/%transaction%", 140 | "address": "https://blockchair.com/gnosis-chain/address/%address%" 141 | }, 142 | "handshake": { 143 | "homepage": "https://blockchair.com/handshake", 144 | "block": "https://blockchair.com/handshake/block/%block%", 145 | "transaction": "https://blockchair.com/handshake/transaction/%transaction%", 146 | "address": "https://blockchair.com/handshake/address/%address%" 147 | }, 148 | "moonbeam": { 149 | "homepage": "https://blockchair.com/moonbeam", 150 | "block": "https://blockchair.com/moonbeam/block/%block%", 151 | "transaction": "https://blockchair.com/moonbeam/transaction/%transaction%", 152 | "address": "https://blockchair.com/moonbeam/address/%address%" 153 | }, 154 | "optimism": { 155 | "homepage": "https://blockchair.com/optimism", 156 | "block": "https://blockchair.com/optimism/block/%block%", 157 | "transaction": "https://blockchair.com/optimism/transaction/%transaction%", 158 | "address": "https://blockchair.com/optimism/address/%address%" 159 | }, 160 | "peercoin": { 161 | "homepage": "https://blockchair.com/peercoin", 162 | "block": "https://blockchair.com/peercoin/block/%block%", 163 | "transaction": "https://blockchair.com/peercoin/transaction/%transaction%", 164 | "address": "https://blockchair.com/peercoin/address/%address%" 165 | }, 166 | "polygon": { 167 | "homepage": "https://blockchair.com/polygon", 168 | "block": "https://blockchair.com/polygon/block/%block%", 169 | "transaction": "https://blockchair.com/polygon/transaction/%transaction%", 170 | "address": "https://blockchair.com/polygon/address/%address%" 171 | }, 172 | "polygon-zkevm": { 173 | "homepage": "https://blockchair.com/polygon-zkevm", 174 | "block": "https://blockchair.com/polygon-zkevm/batch/%block%", 175 | "transaction": "https://blockchair.com/polygon-zkevm/transaction/%transaction%", 176 | "address": "https://blockchair.com/polygon-zkevm/address/%address%" 177 | }, 178 | "solana": { 179 | "homepage": "https://blockchair.com/solana", 180 | "block": "https://blockchair.com/solana/slot/%block%", 181 | "transaction": "https://blockchair.com/solana/transaction/%transaction%", 182 | "address": "https://blockchair.com/solana/address/%address%" 183 | }, 184 | "ton": { 185 | "homepage": "https://blockchair.com/ton", 186 | "block": "https://blockchair.com/ton/block/%block%", 187 | "transaction": "https://blockchair.com/ton/transaction/%transaction%", 188 | "address": "https://blockchair.com/ton/address/%address%" 189 | }, 190 | "tron": { 191 | "homepage": "https://blockchair.com/tron", 192 | "block": "https://blockchair.com/tron/block/%block%", 193 | "transaction": "https://blockchair.com/tron/transaction/%transaction%", 194 | "address": "https://blockchair.com/tron/address/%address%" 195 | } 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /Explorers/blockcypher.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "blockcypher", 3 | "name": "blockcypher.com", 4 | "description": "blockcypher.com", 5 | "link": "https://www.blockcypher.com", 6 | "x": null, 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "dogecoin": { 11 | "homepage": "https://live.blockcypher.com/doge", 12 | "block": "https://live.blockcypher.com/doge/block/%block%", 13 | "transaction": "https://live.blockcypher.com/doge/tx/%transaction%", 14 | "address": "https://live.blockcypher.com/doge/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/blockscout.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "blockscout", 3 | "name": "blockscout.com", 4 | "description": "Blockscout is optimized for next-level blockchain exploration. Multi-chain, highly configurable, and open-source, the explorer portal opens up access to all chain data and functionality.", 5 | "link": "https://blockscout.com", 6 | "x": "https://x.com/blockscoutcom", 7 | "discord": "https://discord.gg/blockscout", 8 | "search": null, 9 | "blockchains": { 10 | "ethereum": { 11 | "homepage": "https://eth.blockscout.com", 12 | "block": "https://eth.blockscout.com/block/%block%", 13 | "transaction": "https://eth.blockscout.com/tx/%transaction%", 14 | "address": "https://eth.blockscout.com/address/%address%", 15 | "search": "https://eth.blockscout.com/search-results?q=%search%" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Explorers/bscscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bscscan", 3 | "name": "bscscan.com", 4 | "description": "BscScan allows you to explore and search the Binance blockchain for transactions, addresses, tokens, prices and other activities taking place on BNB Smart Chain", 5 | "link": "https://bscscan.com", 6 | "x": "https://twitter.com/bscscan", 7 | "discord": null, 8 | "search": "https://bscscan.com/search?q=%search%", 9 | "blockchains": { 10 | "bnb": { 11 | "homepage": "https://bscscan.com", 12 | "block": "https://bscscan.com/block/%block%", 13 | "transaction": "https://bscscan.com/tx/%transaction%", 14 | "address": "https://bscscan.com/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/cardanoscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cardanoscan", 3 | "name": "cardanoscan.io", 4 | "description": "Cardanoscan", 5 | "link": "https://cardanoscan.io/", 6 | "x": "https://x.com/cardanoscanio", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "cardano": { 11 | "homepage": "https://cardanoscan.io/", 12 | "block": "https://cardanoscan.io/block/%block%", 13 | "transaction": "https://cardanoscan.io/transaction/%transaction%", 14 | "address": "https://cardanoscan.io/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/chain.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "chain", 3 | "name": "chain.so", 4 | "description": "chain.so", 5 | "link": "https://chain.so", 6 | "x": null, 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "dogecoin": { 11 | "homepage": "https://chain.so/DOGE", 12 | "search": "https://chain.so/resolver/DOGE/?query=%search%", 13 | "block": "https://chain.so/block/DOGE/%block%", 14 | "transaction": "https://chain.so/tx/DOGE/%transaction%", 15 | "address": "https://chain.so/address/DOGE/%address%" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Explorers/dogechain.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dogechain", 3 | "name": "dogechain.info", 4 | "description": "Dogechain helps you search the Dogecoin network for addresses, transactions, blocks. Includes a free Dogecoin wallet and developer API.", 5 | "link": "https://dogechain.info", 6 | "x": null, 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "dogecoin": { 11 | "homepage": "https://dogechain.info", 12 | "block": "https://dogechain.info/block/%block%", 13 | "transaction": "https://dogechain.info/tx/%transaction%", 14 | "address": "https://dogechain.info/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/etherscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "etherscan", 3 | "name": "etherscan.io", 4 | "description": "Etherscan allows you to explore and search the Ethereum blockchain for transactions, addresses, tokens, prices and other activities taking place on Ethereum (ETH)", 5 | "link": "https://etherscan.io", 6 | "x": "https://x.com/etherscan", 7 | "discord": null, 8 | "search": "https://etherscan.io/search?q=%search%", 9 | "blockchains": { 10 | "ethereum": { 11 | "homepage": "https://etherscan.io", 12 | "block": "https://etherscan.io/block/%block%", 13 | "transaction": "https://etherscan.io/tx/%transaction%", 14 | "address": "https://etherscan.io/address/%address%" 15 | }, 16 | "optimism": { 17 | "homepage": "https://optimistic.etherscan.io", 18 | "search": "https://optimistic.etherscan.io/search?q=%search%", 19 | "block": "https://optimistic.etherscan.io/block/%block%", 20 | "transaction": "https://optimistic.etherscan.io/tx/%transaction%", 21 | "address": "https://optimistic.etherscan.io/address/%address%" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Explorers/ethplorer.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ethplorer", 3 | "name": "ethplorer.io", 4 | "description": "Ethereum explorer", 5 | "link": "https://ethplorer.io", 6 | "x": "https://x.com/ethplorer", 7 | "discord": null, 8 | "search": "https://ethplorer.io/search/%search%", 9 | "blockchains": { 10 | "ethereum": { 11 | "homepage": "https://ethplorer.io", 12 | "block": null, 13 | "transaction": "https://ethplorer.io/tx/%transaction%", 14 | "address": "https://ethplorer.io/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/subscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "subscan", 3 | "name": "subscan.io", 4 | "description": "Aggregate Substrate ecological network high-precision Web3 explorer", 5 | "link": "https://www.subscan.io", 6 | "x": "https://twitter.com/subscan_io", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "polkadot": { 11 | "homepage": "https://polkadot.subscan.io", 12 | "block": "https://polkadot.subscan.io/block/%block%", 13 | "transaction": "https://polkadot.subscan.io/extrinsic/%transaction%", 14 | "address": "https://polkadot.subscan.io/account/%address%" 15 | }, 16 | "moonbeam": { 17 | "homepage": "https://moonbeam.subscan.io", 18 | "block": "https://moonbeam.subscan.io/block/%block%", 19 | "transaction": "https://moonbeam.subscan.io/extrinsic/%transaction%", 20 | "address": "https://moonbeam.subscan.io/account/%address%" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Explorers/tronscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "tronscan", 3 | "name": "tronscan.org", 4 | "description": "TRONSCAN: the first blockchain browser in the TRON community", 5 | "link": "https://tronscan.org", 6 | "x": "https://twitter.com/TRONSCAN_ORG", 7 | "discord": "https://discord.gg/AgJGCubZWE", 8 | "search": null, 9 | "blockchains": { 10 | "tron": { 11 | "homepage": "https://tronscan.org", 12 | "block": "https://tronscan.org/#/block/%block%", 13 | "transaction": "https://tronscan.org/#/transaction/%transaction%", 14 | "address": "https://tronscan.org/#/address/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Explorers/viabtc.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "viabtc", 3 | "name": "viabtc.com", 4 | "description": "A global cryptocurency mining pool", 5 | "link": "https://viabtc.com", 6 | "x": "https://twitter.com/ViaBTC", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "bitcoin": { 11 | "homepage": "https://explorer.viabtc.com/btc", 12 | "block": "https://explorer.viabtc.com/btc/block/%block%", 13 | "transaction": "https://explorer.viabtc.com/btc/tx/%transaction%", 14 | "address": "https://explorer.viabtc.com/btc/address/%address%" 15 | }, 16 | "bitcoin-cash": { 17 | "homepage": "https://explorer.viabtc.com/bch", 18 | "block": "https://explorer.viabtc.com/bch/block/%block%", 19 | "transaction": "https://explorer.viabtc.com/bch/tx/%transaction%", 20 | "address": "https://explorer.viabtc.com/bch/address/%address%" 21 | }, 22 | "dogecoin": { 23 | "homepage": "https://explorer.viabtc.com/doge", 24 | "block": "https://explorer.viabtc.com/doge/block/%block%", 25 | "transaction": "https://explorer.viabtc.com/doge/tx/%transaction%", 26 | "address": "https://explorer.viabtc.com/doge/address/%address%" 27 | }, 28 | "ecash": { 29 | "homepage": "https://explorer.viabtc.com/xec", 30 | "block": "https://explorer.viabtc.com/xec/block/%block%", 31 | "transaction": "https://explorer.viabtc.com/xec/tx/%transaction%", 32 | "address": "https://explorer.viabtc.com/xec/address/%address%" 33 | }, 34 | "litecoin": { 35 | "homepage": "https://explorer.viabtc.com/ltc", 36 | "block": "https://explorer.viabtc.com/ltc/block/%block%", 37 | "transaction": "https://explorer.viabtc.com/ltc/tx/%transaction%", 38 | "address": "https://explorer.viabtc.com/ltc/address/%address%" 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Explorers/xrpscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "xrpscan", 3 | "name": "xrpscan.com", 4 | "description": "Explore XRP Ledger, accounts, addresses, balances, transactions, validators, nodes, amendments, metrics and charts.", 5 | "link": "https://xrpscan.com", 6 | "x": "https://x.com/xrpscan", 7 | "discord": null, 8 | "search": null, 9 | "blockchains": { 10 | "xrp-ledger": { 11 | "homepage": "https://xrpscan.com", 12 | "block": "https://xrpscan.com/ledger/%block%", 13 | "transaction": "https://xrpscan.com/tx/%transaction%", 14 | "address": "https://xrpscan.com/account/%address%" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Idea (c) 2023 Nikita Zhavoronkov, nikzh@nikzh.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Awesome Block Explorers 2 | ======================= 3 | 4 | What's this list? 5 | ----------------- 6 | 7 | One of the main goals of crypto is decentralization, and we want this to be applicable to block explorers as well! 8 | 9 | Wouldn't be it useful for a block explorer user to be able to cross-check their transaction on another explorer? 10 | We thought it would, so we've decided to come up with this list of good explorers for multiple chains. 11 | Not only it is good for decentralization, but it also allows users to find some extra details on other explorers. 12 | 13 | We currently integrate this list on [3xpl.com](https://3xpl.com) (see [example transaction](https://3xpl.com/bitcoin/transaction/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b)). 14 | 15 | How to add my favourite explorer? 16 | --------------------------------- 17 | 18 | New explorers should be added to the `Explorers/` folder in JSON format. Just follow the existing examples. 19 | 20 | Note that all blockchains should be present in `Chains/`. If your explorer provides data for a chain we don't yet support, please add a chain JSON file as well. 21 | `foreign_ids` are coin ids (URL slugs) on the following websites: CoinGecko ([example](https://www.coingecko.com/en/coins/bitcoin)), CoinMarketCap ([example](https://coinmarketcap.com/currencies/bitcoin/)), and Binance ([example](https://www.binance.com/en/price/bitcoin)). Don't forget to add examples! 22 | 23 | License 24 | ------- 25 | 26 | This list is released under the terms of the MIT license. 27 | See [LICENSE.md](LICENSE.md) for more information. 28 | 29 | By contributing to this repository, you agree to license your work under the MIT license. 30 | Any work contributed where you are not the original author must contain its license header with the original author and source. 31 | -------------------------------------------------------------------------------- /Utils/Builder.php: -------------------------------------------------------------------------------- 1 | [], 5 | 'explorers' => [], 6 | ]; 7 | 8 | echo "Read blockchain JSONs...\n"; 9 | 10 | $blockchains = scandir(__DIR__ . '/../Chains'); 11 | 12 | for ($i = 2, $c = count($blockchains); $i < $c; $i++) 13 | { 14 | $t = str_pad($blockchains[$i].'...', 23); 15 | echo "Reading {$t}\n"; 16 | 17 | try 18 | { 19 | $file = file_get_contents(__DIR__ . '/../Chains/'.$blockchains[$i]); 20 | if($file !== false) { 21 | $blockchain = json_decode($file, associative: true, flags: JSON_THROW_ON_ERROR); 22 | $result['blockchains'][$blockchain['id']] = $blockchain; 23 | } else 24 | { 25 | throw new Error($blockchains[$i] . 'is not a file'); 26 | } 27 | 28 | } catch (Throwable $t) 29 | { 30 | echo "❌ Error: {$t->getMessage()}\n"; 31 | exit(2); 32 | } 33 | } 34 | 35 | echo "Read explorer JSONs...\n"; 36 | 37 | $explorers = scandir(__DIR__ . '/../Explorers'); 38 | 39 | for ($i = 2, $c = count($explorers); $i < $c; $i++) 40 | { 41 | $t = str_pad($explorers[$i].'...', 23); 42 | echo "Reading {$t}\n"; 43 | 44 | try 45 | { 46 | $file = file_get_contents(__DIR__ . '/../Explorers/'.$explorers[$i]); 47 | if($file !== false) { 48 | $result['explorers'][] = json_decode($file, associative: true, flags: JSON_THROW_ON_ERROR); 49 | } else 50 | { 51 | throw new Error($explorers[$i] . 'is not a file'); 52 | } 53 | 54 | } catch (Throwable $t) 55 | { 56 | echo "❌ Error: {$t->getMessage()}\n"; 57 | exit(2); 58 | } 59 | } 60 | 61 | if(!is_dir(__DIR__ . '/../build')) { 62 | mkdir(__DIR__ . '/../build'); 63 | } 64 | 65 | echo "\nBuilding JSON file\n"; 66 | 67 | try 68 | { 69 | $status = file_put_contents( 70 | filename:__DIR__ . '/../build/build.json', 71 | data: json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) 72 | ); 73 | 74 | if($status === false) { 75 | throw new Error(); 76 | } 77 | } 78 | catch (Throwable $t) 79 | { 80 | echo "❌ Error building JSON: {$t->getMessage()}\n"; 81 | exit(2); 82 | } 83 | 84 | 85 | echo "Building YAML file\n"; 86 | 87 | try 88 | { 89 | $status = yaml_emit_file( 90 | filename: __DIR__ . '/../build/build.yml', 91 | data: $result, 92 | encoding: YAML_UTF8_ENCODING 93 | ); 94 | 95 | if($status === false) { 96 | echo "❌ Error building YAML\n"; 97 | exit(2); 98 | } 99 | } 100 | catch (Throwable $t) 101 | { 102 | echo "❌ Error building YAML: {$t->getMessage()}\n"; 103 | exit(2); 104 | } 105 | 106 | echo "\n✅ Successfully built"; 107 | -------------------------------------------------------------------------------- /Utils/Checker.php: -------------------------------------------------------------------------------- 1 | getMessage()}\n"; 59 | $errors[] = $t->getMessage(); 60 | } 61 | } 62 | 63 | // Second, we check the validity of explorer json files 64 | 65 | echo "Checking explorer JSONs...\n"; 66 | 67 | for ($i = 2, $c = count($explorers); $i < $c; $i++) 68 | { 69 | $t = str_pad($explorers[$i] . '...', 23); 70 | echo "\tChecking {$t}"; 71 | 72 | try 73 | { 74 | $json = json_decode(file_get_contents(__DIR__ . '/../Explorers/' . $explorers[$i]), associative: true, flags: JSON_THROW_ON_ERROR); 75 | 76 | if (!isset($json['id'])) 77 | throw new Error('`id` is not set'); 78 | if (!isset($json['name'])) 79 | throw new Error('`name` is not set'); 80 | if (!isset($json['description'])) 81 | throw new Error('`description` is not set'); 82 | if (!isset($json['link'])) 83 | throw new Error('`link` is not set'); 84 | if (!key_exists('x', $json)) 85 | throw new Error('`x` is not set (can be null)'); 86 | if (!key_exists('discord', $json)) 87 | throw new Error('`discord` is not set (can be null)'); 88 | if (!isset($json['blockchains'])) 89 | throw new Error('`blockchains` is not set'); 90 | if (!key_exists('search', $json)) 91 | throw new Error('`search` is not set (can be null)'); 92 | 93 | foreach ($json['blockchains'] as $id => $blockchain) 94 | { 95 | if (!isset($lib[$id])) 96 | throw new Error("`{$id}` is not a known chain"); 97 | if (!key_exists('homepage', $blockchain)) 98 | throw new Error("`homepage` is not set for {$id} (can be null)"); 99 | if (!key_exists('block', $blockchain)) 100 | throw new Error("`block` is not set for {$id} (can be null)"); 101 | if (!key_exists('transaction', $blockchain)) 102 | throw new Error("`transaction` is not set for {$id} (can be null)"); 103 | if (!key_exists('address', $blockchain)) 104 | throw new Error("`address` is not set for {$id} (can be null)"); 105 | if (isset($blockchain['block']) && !str_contains($blockchain['block'], '%block%')) 106 | throw new Error("`block` should contain `%block%` for {$id}"); 107 | if (isset($blockchain['transaction']) && !str_contains($blockchain['transaction'], '%transaction%')) 108 | throw new Error("`transaction` should contain `%transaction%` for {$id}"); 109 | if (isset($blockchain['address']) && !str_contains($blockchain['address'], '%address%')) 110 | throw new Error("`address` should contain `%address%` for {$id}"); 111 | if (isset($blockchain['search']) && !str_contains($blockchain['search'], '%search%')) 112 | throw new Error("`search` should contain `%search%` for {$id}"); 113 | } 114 | 115 | echo "✅\n"; 116 | } 117 | catch (Throwable $t) 118 | { 119 | echo "❌ Error: {$t->getMessage()}\n"; 120 | $errors[] = $t->getMessage(); 121 | } 122 | } 123 | 124 | // Last, we check whether the explorers respond with 200 125 | 126 | $curl = curl_init(); 127 | curl_setopt($curl, CURLOPT_NOBODY, true); 128 | curl_setopt($curl, CURLOPT_TIMEOUT, 5); 129 | 130 | function check_page($url) 131 | { 132 | global $curl; 133 | 134 | try 135 | { 136 | curl_setopt($curl, CURLOPT_URL, $url); 137 | curl_exec($curl); 138 | $info = curl_getinfo($curl); 139 | 140 | if ($info['http_code'] !== 200) 141 | echo "⚠️ Code: {$info['http_code']}\n"; 142 | else 143 | echo "✅ " . number_format($info['total_time'], decimals: 2). " s. \n"; 144 | } 145 | catch (Throwable $t) 146 | { 147 | echo "⚠️ Error: {$t->getMessage()}\n"; 148 | } 149 | } 150 | 151 | echo "Checking explorers...\n"; 152 | 153 | for ($i = 0, $c = count($explorers); $i < $c; $i++) 154 | { 155 | $explorer = json_decode(file_get_contents(__DIR__ . '/../Explorers/' . $explorers[$i]), true); 156 | 157 | echo "\tChecking {$explorer['name']}...\n"; 158 | 159 | foreach ($explorer['blockchains'] as $j => $chain) 160 | { 161 | echo "\t\tChecking {$lib[$j]['name']}...\n"; 162 | 163 | if (!isset($lib[$j])) 164 | { 165 | echo "\t\tThis chain is not present in the library ❌\n"; 166 | continue; 167 | } 168 | 169 | if (!is_null($chain['homepage'])) 170 | { 171 | echo "\t\t\tChecking homepage... "; 172 | check_page($chain['homepage']); 173 | } 174 | 175 | if (!is_null($chain['block'])) 176 | { 177 | echo "\t\t\tChecking block... "; 178 | check_page(str_replace('%block%', $lib[$j]['examples']['block'], $chain['block'])); 179 | } 180 | 181 | if (!is_null($chain['transaction'])) 182 | { 183 | echo "\t\t\tChecking transaction... "; 184 | check_page(str_replace('%transaction%', $lib[$j]['examples']['transaction'], $chain['transaction'])); 185 | } 186 | 187 | if (!is_null($chain['address'])) 188 | { 189 | echo "\t\t\tChecking address... "; 190 | check_page(str_replace('%address%', $lib[$j]['examples']['address'], $chain['address'])); 191 | } 192 | } 193 | } 194 | 195 | if(count($errors)) { 196 | exit(2); 197 | } 198 | --------------------------------------------------------------------------------