Determining Which Miner or Pool Mined a Block: A Closer Look
The Ethereum network relies on miners and pools to validate transactions, create new blocks, and secure the network. However, one of the most frustrating aspects of mining is determining which miner or pool mined a particular block. The solution lies in understanding how miners and pools are identified, as well as the process for calculating their hashing power.
How Miners and Pools Identify Themselves
In Ethereum, each miner uses a unique codebook to identify themselves on the blockchain. This codebook contains information such as the miner’s wallet address, public key, and hash rate. Each block is mined using a set of blocks from previous blocks in the chain, called a “messaging” or “blockset.” The first 2^64 – 1 (or 1,073,741,824) messages in the blockset are considered the last 2^64 blocks and are typically mined by a group of miners called “mainnet” miners.
The mainnet miners use their codebook to identify themselves and claim ownership in each block. The first message in the block is called the “first message” and contains information about the miner’s wallet address, public key, and hash rate. After this point, more messages are added to the block, but they still contain metadata that helps identify the miner.
How Pools Identify Themselves
Ethereum pools are groups of miners who share their computing power to validate transactions and create new blocks. Pools can be thought of as “virtual mining organizations.” Each member of a pool has their own codebook that contains information about their wallet address, public key, and hash rate.
To identify themselves on the blockchain, each member of a pool typically uses a unique identifier called a “hash signature” or “pool ID.” This hash signature is used to confirm that the member belongs to the particular pool. Pool IDs are usually randomly generated when members join the pool and stored securely on the Ethereum network.
Calculating Hashrate
Now let’s talk about how we can determine which miner or pool mined a particular block. The solution lies in understanding the process of calculating the hashrate for each miner and pool.
When a new block is created, it contains a set of messages that identify the miners who participated in its creation. Each message is associated with a specific weight value that indicates the miner’s contribution to the block. These weights are usually calculated based on the miner’s mining speed.
To calculate the hashrate for each miner and pool, we need to know the weight values of all the messages in the block. This allows us to determine the percentage of the last X blocks mined by a given miner or pool.
Assuming there are any number of blocks (X) on the blockchain before the current block is mined, we can calculate the total hash rate for each miner and pool as follows:
Let’s assume the weight values of all messages in the block are:
| Message ID | Weight Value |
| — | — |
| 1 | 10.5% |
| 2 | 20.8% |
| 3 | 30.4% |
| … | … |
Then we can calculate the hash rate for each miner and pool as follows:
Hash Rate = (Weight of Message 1 / Total Weight) + (Weight of Message 2 / Total Weight) + …
Using this formula, we can find the percentage of the last X blocks mined by a given miner or pool.
Example
Let’s say we want to calculate the hash rate for every miner and pool on the Ethereum network. We know there are currently 500 blocks in the blockchain, and we want to find out which miner and pool(s) mined the last block (block 1).