{"id":25058314,"url":"https://github.com/0xb10c/rust-bitcoin-pool-identification","last_synced_at":"2025-04-14T12:41:23.879Z","repository":{"id":57513300,"uuid":"339321942","full_name":"0xB10C/rust-bitcoin-pool-identification","owner":"0xB10C","description":"Coinbase tag and coinbase output address based mining-pool identification for rust-bitcoin's bitcoin::{Block, Transaction}","archived":false,"fork":false,"pushed_at":"2025-04-08T16:33:07.000Z","size":73,"stargazers_count":14,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-08T17:32:41.784Z","etag":null,"topics":["bitcoin","identification","mining-pool","rust-bitcoin"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/0xB10C.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":"2021-02-16T07:50:20.000Z","updated_at":"2025-04-08T16:28:45.000Z","dependencies_parsed_at":"2023-12-03T12:21:17.129Z","dependency_job_id":"56a499a3-6ea4-4905-a3ea-7d91fde6a464","html_url":"https://github.com/0xB10C/rust-bitcoin-pool-identification","commit_stats":{"total_commits":50,"total_committers":3,"mean_commits":"16.666666666666668","dds":"0.33999999999999997","last_synced_commit":"036df29b9d1d76a5a95b641f529b7c3a0168bb08"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xB10C%2Frust-bitcoin-pool-identification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xB10C%2Frust-bitcoin-pool-identification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xB10C%2Frust-bitcoin-pool-identification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xB10C%2Frust-bitcoin-pool-identification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xB10C","download_url":"https://codeload.github.com/0xB10C/rust-bitcoin-pool-identification/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248883065,"owners_count":21177147,"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":["bitcoin","identification","mining-pool","rust-bitcoin"],"created_at":"2025-02-06T14:25:03.261Z","updated_at":"2025-04-14T12:41:23.836Z","avatar_url":"https://github.com/0xB10C.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![docs.rs](https://img.shields.io/docsrs/bitcoin-pool-identification)](https://docs.rs/bitcoin-pool-identification/)\n[![Crates.io](https://img.shields.io/crates/v/bitcoin_pool_identification)](https://crates.io/crates/bitcoin-pool-identification)\n[![Rust build](https://github.com/0xB10C/rust-bitcoin-pool-identification/actions/workflows/rust.yml/badge.svg)](https://github.com/0xB10C/rust-bitcoin-pool-identification/actions/workflows/rust.yml)\n\n# Bitcoin Mining Pool Identification\n\nThis Rust crate implements a new `PoolIdentification` trait on rust-bitcoin's\n[bitcoin::Transaction][0] and [bitcoin::Block][1] structs. This trait can be used\nfor mining pool identification.\n\n[0]: https://docs.rs/bitcoin/0.26.0/bitcoin/blockdata/transaction/struct.Transaction.html\n[1]: https://docs.rs/bitcoin/0.26.0/bitcoin/blockdata/block/struct.Block.html\n\n## Methodology\n\nThere are generally two methods to identify mining pools based on the coinbase\ntransaction in a block. Firstly, miners often put a human readable (ASCII or\nUTF-8) tag in the coinbase transaction. For example, a block mined by the Slush\nmining pool might have `/slush/` placed in the coinbase input's script sig.\nMiners can be identified by mapping a tag found in the coinbase to the mining\npool identity. Secondly, mining pools often reuse the address where the coinbase\nreward is paid to. These can be mapped to the pool identity too.\n\nBoth methods produce false negatives if a pool doesn't want to be identified.\nThe coinbase tags are not authenticated. Pools can set a different coinbase tag\n(e.g. pool A mines his blocks with the coinbase tag of pool B). These would be\npicked up as false positives. It's however unlikely that a pool would pay the\ncoinbase reward to an address he doesn't control, thus false positives are\nunlikely.\n\n## Implementation\n\nThe mapping of coinbase tags and mining pool addresses is based on data from\n[0xB10C/known-mining-pools][3] which is a fork from [btccom/Blockchain-Known-Pools][4]\nwhich in turn is a fork from [blockchain/Blockchain-Known-Pools][5]. These\nprojects provide a `pools.json` file mapping coinbase tags and pool addresses to\npool identities.\n\nThe [0xB10C/known-mining-pools][3] repository is included in this repository as\na Git submodule. The `pools.json` file is used during the Rust build process to\ngenerate the code mapping coinbase tags and addresses to pool identities. The\ncode generation can be found in `build.rs`.\n\n[3]: https://github.com/0xB10C/known-mining-pools\n[4]: https://github.com/btccom/Blockchain-Known-Pools\n[5]: https://github.com/blockchain/Blockchain-Known-Pools\n\n## Development\n\nThe [0xB10C/known-mining-pools][3] submodule can be initialized and updated with\nthe following commands.\n\n``` console\ngit submodule init\ngit submodule update\n```\n\nTo pull changes from [0xB10C/known-mining-pools][3]'s master you need to `cd known-mining-pools` and `git pull` them there. These must be commited. Make sure the tests run!\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xb10c%2Frust-bitcoin-pool-identification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xb10c%2Frust-bitcoin-pool-identification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xb10c%2Frust-bitcoin-pool-identification/lists"}