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.

  • Possible duplicate of [How to tell who mined a bitcoin?](https://bitcoin.stackexchange.com/questions/22925/how-to-tell-who-mined-a-bitcoin) – Nate Eldredge May 14 '18 at 00:29
  • See also https://bitcoin.stackexchange.com/questions/70274/why-do-some-blocks-not-have-miners-name-identity/70279#70279. Short answer: we know who mined a block if that miner/pool chooses to identify themselves in some way, commonly by including their name in the coinbase transaction. If they don't do so, then we don't know. – Nate Eldredge May 14 '18 at 00:30
  • Nate, so do you know what % of mined blocks can be linked to a specific miner/pool? – Damian Siniakowicz May 14 '18 at 00:38

1 Answers1

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.)

Nate Eldredge
  • 22,970
  • 3
  • 39
  • 80
  • 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. – Tomas Greif Dec 13 '19 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. – Nate Eldredge Dec 13 '19 at 14:49