5

There are websites that talk about each mining pool's total % of hashrate.

I think they do that by calculating what % of the last X blocks were mined by a particular miner/pool.

But how can we know who mined a block?


Edit : this isn't a duplicate.

That other question mentions that: "People could try to trace where the mined bitcoins are first seen and where they go. And you could trace the first IPs known to report the blocks"

Sites produce very detailed stats covering mining pools with as little as 0.3% of the global hash rate. see this

There's probably some very reliable method for doing this and I'd like a detailed answer about it.

3

1 Answer 1

5

We know which miner/pool mined a block only if that miner/pool chose to identify themselves. Most commonly, they do this by inserting their name or other recognizable signature in the block's coinbase transaction, which is allowed to contain arbitrary data. Sites like blockchain.info can then record statistics about how many blocks were mined by which pools.

You'll see entries even for very small pools if they identify themselves. For instance KanoPool is shown on that page as having 0.3% of all hash power in the past 48 hours. This is because they mined 1 block out of the roughly 288 total blocks during that time, which is 0.3%. KanoPool apparently identifies its blocks with the string KanoPool (=O.O=) in the coinbase (example).

Presumably someone at blockchain.info is maintaining a list of known pools and their identifiers. But it may not be complete; for instance, block 552572 has in its coinbase the string BTPOOL, which is presumably the name of some pool. Blockchain.info lists it as "unknown", probably because BTPOOL isn't in their list of known identifiers. Maybe they'll add it later.

Other blocks don't contain any recognizable identifier at all. For instance, the coinbase of block 552568 doesn't contain anything that looks to me like text, and Blockchain.info doesn't recognize it either. We won't ever know who mined this block unless they choose to identify themselves someday. (For instance, maybe the data in that coinbase is a nonce signed with some private key; then someone could prove that they mined the block by signing some other data with that same key.)

2
  • How do you get the string KanoPool (=0.0=) or BTPOOL? While you refer specific coinbase transactions, I do not understand where from and how you got these names. Commented Dec 13, 2019 at 14:30
  • 1
    @TomasGreif: Select the HEX display and look at the sigscript. One of the values listed there contains 4b616e6f506f6f6c20283d4f2e4f3d2920 which are the ASCII codes for KanoPool (=0.0=) . I think blockchain.com used to display these directly in ASCII, which made it easy to see without decoding - they seem to have changed their format since I posted the answer. Commented Dec 13, 2019 at 14:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.