Suppose I want to design generic crypto currency miner starting from scratch . By generic I mean it can be configured to support a large number of available crypto currencies.

This generic miner must be able to connect to mining pools for the coins it supports in addition to being able to mine solo. In the case that it is configured to connect to mining pool , it does not need to store the blockchain on the PC on which miner is running? In this case the blockchain is stored on the server running mining pool? In this case the miner PC only has the current block?

The answers to above questions do not depend on wether the miner is configured to use CPU or GPU or both?

2 Answers 2


A mining pool does need to store the entire blockchain, however that doesn't mean that every participant of the mining pool needs to store it. Someone in the pool needs it, but not everyone.

Individuals in a pool can just be sent block headers and perform the proof-of-work without ever verifying the transactions themselves. This does not require the full blockchain. However, someone should have already verified the transactions ahead of time, and this node does need the blockchain.

  • 1
    You don't need the blockchain at all to validate transactions. You need the UTXO set defined by all previous transactions in the chain, but there is no need to keep the actual chain around. A pruned node is sufficient. Mar 27, 2018 at 3:14

Yes, participants of the mining pool don't have to store anything certainly not the whole blockchain. What they need is the hash of the transaction included in the next block and the hash of the previous block.

The other part that has to be done but it’s the mining server that does it is validating transactions which can be a done by a pruned node minimizing the amount of data that has to be stored.

  • They don't need the current block either... They just need some pieces of the header, and a Merkle branch for the generation transaction. Feb 20, 2018 at 20:03
  • Is this better?
    – Yitzchok
    Feb 21, 2018 at 2:35
  • I think it's not quite there yet. What they need is not a transaction - quite the opposite, they make up the transaction themselves. They need the Merkle branch that complements the transaction; and also the address to credit the pool. This is assuming that each work unit consists of multiple extraNonces; otherwise they don't need that, they are given the Merkle root and just use nonce and nTime rolling. If that's too complicated, you can just say that they need the header, it's not far from accurate. Feb 21, 2018 at 23:00

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.