{"id":21659005,"url":"https://github.com/ethereumclassic/explorer","last_synced_at":"2026-01-18T05:19:15.233Z","repository":{"id":37664632,"uuid":"64328732","full_name":"ethereumclassic/explorer","owner":"ethereumclassic","description":"EthereumClassic Block Explorer","archived":false,"fork":false,"pushed_at":"2022-12-30T17:22:14.000Z","size":10391,"stargazers_count":263,"open_issues_count":77,"forks_count":251,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-10-06T11:57:22.986Z","etag":null,"topics":["ethereum","ethereum-classic","explorer"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereumclassic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-27T17:33:12.000Z","updated_at":"2025-09-03T21:01:14.000Z","dependencies_parsed_at":"2023-01-31T12:15:24.808Z","dependency_job_id":null,"html_url":"https://github.com/ethereumclassic/explorer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ethereumclassic/explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereumclassic%2Fexplorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereumclassic%2Fexplorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereumclassic%2Fexplorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereumclassic%2Fexplorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereumclassic","download_url":"https://codeload.github.com/ethereumclassic/explorer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereumclassic%2Fexplorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28530810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","ethereum-classic","explorer"],"created_at":"2024-11-25T09:30:17.219Z","updated_at":"2026-01-18T05:19:15.207Z","avatar_url":"https://github.com/ethereumclassic.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# ETC Explorer\n\n\u003cimg src=\"public/img/explorer-logo.png\" alt=\"ETC Explorer logo\" height=\"200\" /\u003e\n\n\u003cb\u003eLive Version: [etherhub.io](http://etherhub.io)\u003c/b\u003e\n\nFollow the project progress at: [ETC Block Explorer Development](https://github.com/ethereumclassic/explorer)\n\n## Local installation\n\nClone the repo\n\n`git clone https://github.com/ethereumclassic/explorer`\n\nDownload [Nodejs and npm](https://docs.npmjs.com/getting-started/installing-node \"Nodejs install\") if you don't have them\n\nInstall dependencies:\n\n`npm install`\n\nInstall mongodb:\n\nMacOS: `brew install mongodb`\n\nUbuntu: `sudo apt-get install -y mongodb-org`\n\n## Populate the DB\n\nThis will fetch and parse the entire blockchain.\n\nSetup your configuration file: `cp config.example.json config.json`\n\nEdit `config.json` as you wish\n\nBasic settings:\n```json\n{\n    \"nodeAddr\":     \"localhost\",\n    \"wsPort\":       8546,\n    \"startBlock\":   0,\n    \"endBlock\":     \"latest\",\n    \"quiet\":        true,\n    \"syncAll\":      true,\n    \"patch\":        true,\n    \"patchBlocks\":  100,\n    \"bulkSize\":     100,\n    \"settings\": {\n        \"symbol\": \"ETC\",\n        \"name\": \"Ethereum Classic\",\n        \"title\": \"Ethereum Classic Block Explorer\",\n        \"author\": \"Elaine\",\n        \"rss\": \"https://ethereumclassic.org\",\n        \"reddit\": \"https://www.reddit.com/r/EthereumClassic\",\n        \"twitter\": \"https://twitter.com/eth_classic\",\n        \"linkedin\": \"https://www.linkedin.com/company/ethereum-classic\",\n        \"github\": \"https://github.com/ethereumclassic\",\n        \"logo\": \"/img/explorer-logo.png\",\n        \"copyright\": \"2019 \u0026copy; Ethereum Classic.\",\n        \"poweredbyCustom\": false,\n        \"poweredbyEtcImage\": \"/img/powered-by-etcexplorer-w.png\",\n        \"poweredbyEtc\": true,\n        \"useRichList\": true,\n        \"useFiat\": true,\n        \"miners\": {\n            \"0xdf7d7e053933b5cc24372f878c90e62dadad5d42\": \"EtherMine\",\n            \"0xc91716199ccde49dc4fafaeb68925127ac80443f\": \"F2Pool\",\n            \"0x9eab4b0fc468a7f5d46228bf5a76cb52370d068d\": \"NanoPool\",\n            \"0x1C0FA194a9d3B44313DCD849F3C6be6Ad270a0A4\": \"MiningPoolHub\",\n            \"0x4750e296949b747df1585aa67beee8be903dd560\": \"UUPool\",\n            \"0xef224fa5fad302b51f38898f4df499d7af127af0\": \"91pool\",\n            \"0x0073Cf1B9230cF3EE8Cab1971B8DbeF21eA7B595\": \"2miners\",\n            \"0x4c2b4e716883a2c3f6b980b70b577e54b9441060\": \"ETCPool PL\",\n            \"0xd144e30a0571aaf0d0c050070ac435deba461fab\": \"Clona Network\",\n            \"0x568f58bf1667504fdf5aa02d776c156f940178a5\": \"Whalesburg\",\n            \"0x3b2d2613ad66d66ee0cb518aeeccc98e9e3b19c0\": \"private(0x3b2d2613)\",\n            \"0x919973eb38844313dc31c41e140700d6e333f8d5\": \"private(0x919973eb)\",\n            \"0xb205f337bad80e28351c7540b741c81470c4927f\": \"private(0xb205f337)\",\n            \"0x232cad0429e653ab610fbcf7e7ebee2f05f28410\": \"private(0x232cad04)\",\n            \"0x999c2944807874d3677ee3c6065c8a8a92721ac5\": \"NinjaPool.jp\",\n            \"0x39cd14977601184b7da518fd352261aad0cb9fd3\": \"91pool\",\n            \"0xf35074bbd0a9aee46f4ea137971feec024ab704e\": \"Solo Mining Pools\",\n            \"0xa97ed75172773ec705c2c78d999d3203199101bd\": \"epool\",\n            \"0x58b3cabd0c5c777da2c1c4d4f7ecc8afe5674f20\": \"private(0x58b3cabd0)\",\n            \"0x87cfd09c483fe65352456bb26c784a0e4c4ba389\": \"ArsMine\",\n            \"0x5bc9ccbd3115cefb6f382d33e8ce2a0aba084da4\": \"private(0x5bc9ccbd3)\",\n            \"0x4924414988feb1ee16e29298509f96317400eb57\": \"private(0x492441498)\",\n            \"0xa9a926bed50dc038b20bb20de361e4c35aae51fc\": \"private(0xa9a926bed)\",\n            \"0x0073cf1b9230cf3ee8cab1971b8dbef21ea7b595\": \"2miners\",\n            \"0x004730417cd2b1d19f6be2679906ded4fa8a64e2\": \"2miners\",\n            \"0x1c0fa194a9d3b44313dcd849f3c6be6ad270a0a4\": \"MiningPoolHub\"\n         }\n    }\n}\n\n```\n\n| Name  | Explanation |\n|-------------|-----|\n| `nodeAddr` | Your node API RPC address. |\n| `wsPort` | Your node API WS (Websocket) port. (RPC HTTP port is deprecated on Web3 1.0 see https://web3js.readthedocs.io/en/1.0/web3.html#value) |\n| `startBlock` | This is the start block of the blockchain, should always be 0 if you want to sync the whole ETC blockchain. |\n| `endBlock` | This is usually the 'latest'/'newest' block in the blockchain, this value gets updated automatically, and will be used to patch missing blocks if the whole app goes down. |\n| `quiet` | Suppress some messages. (admittedly still not quiet) |\n| `syncAll` | If this is set to true at the start of the app, the sync will start syncing all blocks from lastSync, and if lastSync is 0 it will start from whatever the endBlock or latest block in the blockchain is. |\n| `patch` | If set to true and below value is set, sync will iterated through the # of blocks specified. |\n| `patchBlocks` | If `patch` is set to true, the amount of block specified will be check from the latest one. |\n| `useRichList` | If `useRichList` is set to true, explorer will update account balance for richlist page. |\n| `useFiat` | If `useFiat` is set to true, explorer will show price for account \u0026 tx page. ( Disable for testnets )|\n\n### Mongodb Auth setting.\n\n#### Configure MongoDB\n\nIn view of system security, most of mongoDB Admin has setup security options, So, You need to setup mongodb auth informations.\nSwitch to the built-in admin database:\n\n```\n$ mongo\n$ \u003e use admin\n```\n\n1. Create an administrative user  (if you have already admin or root of mongodb account, then skip it)\n\n```\n# make admin auth and role setup\n$ \u003e db.createUser( { user: \"admin\", pwd: \"\u003cEnter a secure password\u003e\", roles: [\"root\"] } )\n```\n\nAnd, You can make Explorer's \"explorerDB\" database with db user accounts \"explorer\" and password \"some_pass_code\".\n\n```\n$ \u003e use explorerDB\n$ \u003e db.createUser( { user: \"explorer\", pwd: \"\u003cEnter a secure password\u003e\", roles: [\"dbOwner\"] } )\n$ \u003e quit()\n```\n\nAbove dbuser explorer will full access explorerDB and clustor setting will be well used on monitoring the multiple sharding and replication of multiple mongodb instances.\nEnable database authorization in the MongoDB configuration file /etc/mongodb.conf by appending the following lines:\n\n```\nauth=true\n```\n\nRestart MongoDB and verify the administrative user created earlier can connect:\n\n```\n$ sudo service mongodb restart\n$ mongo -u admin -p your_password --authenticationDatabase=admin\n```\n\nIf everything is configured correctly the Mongo Shell will connect and\n\n```\n$ \u003e show dbs\n```\n\nwill show db informations.\nand You can add modified from  ./db.js:103 lines,  add auth information and mongodb connect options.\n\n```\nmongoose.connect(process.env.MONGO_URI || 'mongodb://localhost/explorerDB', {\n  useMongoClient: true\n  // poolSize: 5,\n  // rs_name: 'myReplicaSetName',\n  // user: 'explorer',\n  // pass: 'yourdbpasscode'\n});\n```\n\nAnd explore it.\n\n### Run\n\nThe below will start both the web-gui and sync.js (which populates MongoDB with blocks/transactions).\n\n`npm start`\n\nYou can leave sync.js running without app.js and it will sync and grab blocks based on config.json parameters\n\n`npm run sync`\n\nEnabling stats requires running a separate process:\n\n`npm run stats`\n\nEnabling richlist requires running a separate process:\n\n`npm run rich`\n\nYou can configure intervals (how often a new data point is pulled) and range (how many blocks to go back) with the following:\n\n`RESCAN=100:7700000 node tools/stats.js` (New data point every 100 blocks. Go back 7,700,000 blocks).\n\n## Docker installation\n\nSet `nodeAddr` in `config.json` to `host.docker.internal`\n\nRun `docker-compose up`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereumclassic%2Fexplorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereumclassic%2Fexplorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereumclassic%2Fexplorer/lists"}