{"id":19720468,"url":"https://github.com/xdagger/xdag-pool","last_synced_at":"2025-04-29T21:30:54.467Z","repository":{"id":191854249,"uuid":"685533887","full_name":"XDagger/xdag-pool","owner":"XDagger","description":"xdag mining pool","archived":false,"fork":false,"pushed_at":"2025-03-02T15:12:35.000Z","size":2933,"stargazers_count":8,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-05T19:34:21.275Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XDagger.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-31T12:55:08.000Z","updated_at":"2024-11-25T22:45:16.000Z","dependencies_parsed_at":"2023-12-08T03:21:50.088Z","dependency_job_id":"bb549ccd-8aa1-4191-af69-b03bc5d60585","html_url":"https://github.com/XDagger/xdag-pool","commit_stats":null,"previous_names":["swordlet/xdagpool","xdagger/xdag-pool"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XDagger%2Fxdag-pool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XDagger%2Fxdag-pool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XDagger%2Fxdag-pool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XDagger%2Fxdag-pool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XDagger","download_url":"https://codeload.github.com/XDagger/xdag-pool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251585752,"owners_count":21613274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-11T23:11:34.821Z","updated_at":"2025-04-29T21:30:51.851Z","avatar_url":"https://github.com/XDagger.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xdagPool\n\nHigh performance xdag mining stratum with Web-interface written in Golang.\n\n**Stratum feature list:**\n\n* Be your own pool\n* Rigs availability monitoring\n* Keep track of accepts, rejects, blocks stats\n* Easy detection of sick rigs\n* Concurrent shares processing\n* config encrypted by pool password\n* Beautiful Web-interface\n\n![](screenshot.png)\n\n## Installation\n\nDependencies:\n\n  * go-1.20\n  * RandomX\n\n  enter clib/randomx, build randomx library with CMakeLists.txt\n\n## Encrypt tool\n\n### build\n```\n$\u003e cd tools\n$\u003e go build ./encrypt.go\n```\n\n### usage\n```\n./encrypt [-h] [-p pool password] [-a address] [-w wallet password] [-k kv store password]\n```\n## Configuration\n\nConfiguration is self-describing, just copy *config.example.json* to *config.json* and run stratum with path to config file as 1st argument.\n\n```javascript\n{\n  // Pool Address for rewards, pool key: 12345678\n  // AES: CBC, Key Size: 128bits, IV and Secret Key: 16 characters long( add '*' if length not enough)\n  \"addressEncrypted\": \"G6LLHMvWi6HiysT+PuCWXhuaTWOxbHlEocNf5ilWAy+e7KsjAGPVOu1PBgIxxeFD\",\n  \"threads\": 4,\n\n  //hashrate estimation\n  \"estimationWindow\": \"15m\",\n  \"luckWindow\": \"24h\",\n\n  // purge stale kv store data, remain recent 3 days data\n  \"purgeInterval\": \"3h\",\n  \"purgeWindow\": \"72h\",\n\n  // randomx mode: fast(3G ram), light(300M ram)\n  \"rx_mode\":\"fast\",\n\n  //AES encrypted wallet password by pool key\n  \"walletEncrypted\": \"9FilIh6x3WdWaC74YGg3qw==\",\n  \"stratum\": {\n    // Socket timeout\n    \"timeout\": \"2m\",\n\n    \"listen\": [\n      {\n        \"host\": \"0.0.0.0\",\n        \"port\": 1111,\n        \"diff\": 20000,\n        \"maxConn\": 32768\n      }\n    ]\n  },\n\n  \"frontend\": {\n    \"enabled\": true,\n    \"listen\": \"0.0.0.0:8082\",\n    \"login\": \"admin\",\n    \"password\": \"\",\n    \"hideIP\": false\n  },\n\n  \"kvrocks\": {\n\t\t\"endpoint\": \"127.0.0.1:6379\",\n\t\t\"poolSize\": 10,\n\t\t\"database\": 0,\n    //123456\n\t\t\"passwordEncrypted\": \"MbRmWtAs7GA2E1B6ioBSoQ==\"\n\t},\n\n\t\"payout\": {\n\t\t\"poolRation\": 5.0,\n\t\t\"rewardRation\": 0.0,\n\t\t\"directRation\": 0.0, //deprecated\n    // threshhold to pay miner\n\t\t\"threshold\": 3,\n\t\t\"paymentInterval\": \"10m\",\n    // solo or equal\n\t\t\"mode\": \"equal\",\n\t\t\"paymentRemark\": \"http://mypool.com\"\n\t}\n\n }\n```\n\nYou must use ``\u003caddress\u003e.WorkerID`` as username in your miner. If there is no workerID specified your rig stats will be merged under `0` worker.\n\nCopy your wallet data folder ``xdagj_wallet`` to pool path.\n\nTo skip password input, modify code pool/pool.go and put your pool key in the code.\n\n```\nconst PoolKey = \"12345678\" // it can make pool boot/reboot without interfering.\n```\n\n## RPC\n\n### xdag_poolConfig\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data '{\"jsonrpc\":\"2.0\",\"method\":\"xdag_poolConfig\",\"params\":[],\"id\":1}'\n```\n\n#### response\n```\n{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\n{\"poolIp\":\"127.0.0.1\",\"poolPort\":7001,\"nodeIp\":\"127.0.0.1\",\"nodePort\":8001,\"globalMiner\nLimit\":8192,\"maxConnectMinerPerIp\":256,\"maxMinerPerAccount\":256,\"poolFeeRation\":\"5.0\",\"\npoolRewardRation\":\"5.0\",\"poolDirectRation\":\"5.0\",\"poolFundRation\":\"0.0\",\"threshold\":\"3\"}}\n```\n\n### xdag_updatePoolConfig\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data '{\"jsonrpc\":\"2.0\",\"method\":\"xdag_updatePoolConfig\",\"params\":[{\"poolFeeRation\":\"4\",\"poolRewardRation\":\"4\",\"poolDirectRation\":\"4\",\"threshold\":\"4\"},\"pool_password\"],\"id\":1}'\n```\n#### response\n```\n{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"Success\"}\n```\n\n### xdag_getPoolWorkers\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data\n'{\"jsonrpc\":\"2.0\",\"method\":\"xdag_getPoolWorkers\",\"params\":[],\"id\":1}'\n```\n\n#### response\n```\njson {\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\n[{\"address\":\"pCuGwAx/THicdSMFiy7vPgixsSP9AVRQ\",\"status\":\"fee\",\"unpaidShares\":0.0,\"hashr\nate\":2.2551405187698493E-18,\"workers\":[]},\n{\"address\":\"oJA3+RpvYRb0eJKdUo38XTxLRhqircNa\",\"status\":\"MINER_ACTIVE\",\"unpaidShares\":0.\n02088520508135681,\"hashrate\":3.9752369225781053E-4,\"workers\":\n[{\"address\":\"172.31.100.234:48466\",\"inBound\":145,\"outBound\":438,\"unpaidShares\":0.020885\n20508135681,\"name\":\"wb1\",\"hashrate\":3.9752369225781053E-4}]},\n{\"address\":\"3oQtj/YtlIl8PGNWtqFR0QNo0dXJ+FDq\",\"status\":\"MINER_ACTIVE\",\"unpaidShares\":1.\n5918582804382894E-8,\"hashrate\":2.8651250602006866E-8,\"workers\":\n[{\"address\":\"172.31.100.234:53154\",\"inBound\":201,\"outBound\":260,\"unpaidShares\":1.591858\n2804382894E-8,\"name\":\"\", \"hashrate\":2.8651250602006866E-8}]},\n{\"address\":\"jWx51h049qtJH68Zd0buxwW5xPML4GZR\",\"status\":\"MINER_ACTIVE\",\"unpaidShares\":4.\n186463512272553E-4,\"hashrate\":0.0012218697372245008,\"workers\":\n[{\"address\":\"172.31.100.234:48488\",\"inBound\":108,\"outBound\":327,\"unpaidShares\":1.893309\n5261087333E-4,\"name\":\"wb2\",\"hashrate\":5.014658633706342E-4}\n{\"address\":\"172.31.100.234:48490\",\"inBound\":89,\"outBound\":295,\"unpaidShares\":4.18646351\n2272553E-4,\"name\":\"wb3\",\"hashrate\":3.704957506989368E-4},\n{\"address\":\"172.31.100.234:48492\",\"inBound\":102,\"outBound\":295,\"unpaidShares\":1.6494257\n81936861E-4,\"name\":\"wb4\",\"hashrate\":2.4399312515244604E-4}]}]}\n```\n\n### xdag_poolHashrate\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data\n'{\"jsonrpc\":\"2.0\",\"method\":\"xdag_poolHashrate\",\"params\":[],\"id\":1}'\n```\n\n#### response\n```\njson {\n  \"jsonrpc\": \"2.0\",\n  \"result\": {\n    \"hashrate\": 600,\n    \"hashrate24h\": 6.25,\n    \"total\": 2, // total miners\n    \"total_online\": 2 // online miners\n  },\n  \"id\": 1\n}\n```\n\n### xdag_minerHashrate\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data\n'{\"jsonrpc\":\"2.0\",\"method\":\"xdag_minerHashrate\",\"params\":[\"miner's address\"],\"id\":1}'\n```\n\n#### response\n```\njson {\n  \"jsonrpc\": \"2.0\",\n  \"result\": {\n    \"address\": \"miner's address\",\n    \"timestamp\": 1715694978524,\n    \"total_hashrate\": 222.22222222222223,\n    \"total_hashrate24h\": 0,\n    \"total_online\": 2,\n    \"hashrate\": [\n      {\n        \"name\": \"test\",\n        \"hashrate\": 44.44444444444444,\n        \"hashrate24h\": 0.46296296296296297,\n        \"lastBeat\": 1715694938551,\n        \"validShares\": 2,\n        \"staleShares\": 0,\n        \"invalidShares\": 0,\n        \"accepts\": 0,\n        \"rejects\": 0,\n        \"ip\": \"127.0.0.1:53148\",\n        \"warning\": false,\n        \"timeout\": false\n      },\n      {\n        \"name\": \"rig02\",\n        \"hashrate\": 177.77777777777777,\n        \"hashrate24h\": 1.8518518518518519,\n        \"lastBeat\": 1715694950748,\n        \"validShares\": 8,\n        \"staleShares\": 0,\n        \"invalidShares\": 0,\n        \"accepts\": 0,\n        \"rejects\": 0,\n        \"ip\": \"192.168.10.5:7548\",\n        \"warning\": false,\n        \"timeout\": false\n      }\n    ]\n  },\n  \"id\": 1\n}\n```\n\n### xdag_minerAccount\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data\n'{\"jsonrpc\":\"2.0\",\"method\":\"xdag_minerAccount\",\"params\":[\"miner's address\"],\"id\":1}'\n```\n\n#### response\n```\njson {\n  \"jsonrpc\": \"2.0\",\n  \"result\": {\n    \"address\": \"miner's address\",\n    \"timestamp\": 1715695039585,\n    \"total_reward\": 225.795999996,\n    \"total_payment\": 56.448999999,\n    \"total_unpaid\": 169.346999997\n  },\n  \"id\": 1\n}\n```\n\n### xdag_poolVersion\n#### request\n```\ncurl http://127.0.0.1:8082/api -s -X POST -H \"Content-Type: application/json\" --data\n'{\"jsonrpc\":\"2.0\",\"method\":\"xdag_poolVersion\",\"params\":[\"\"],\"id\":1}'\n```\n\n#### response\n```\njson {\n  \"jsonrpc\": \"2.0\",\n  \"result\": \"0.1.0\",\n  \"id\": 1\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdagger%2Fxdag-pool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdagger%2Fxdag-pool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdagger%2Fxdag-pool/lists"}