If I use a proof-of-work (PoW) algorithm in the Ethereum blockchain, the node selects to mine a new block is totally random as per my local implementation using Go-Ethereum and inter-process communication (IPC).

However, I am trying to develop a mechanism that is similar to the proof-of-stake (PoS) protocol. For example, what we see in the proof-of-stake (PoS). If a node provides more stakes, it is more likely to be selected as a miner/validator.

I find an example that provides the node's ability to give a vote which I believe is related to PoA and somehow related to my problem, but to be frank, I do not understand what the system will do by getting those votes. The example is here, https://docs.soliditylang.org/en/develop/solidity-by-example.html

I am exploring whether the problem could be solved by smart contract coding. For example, a smart contract that keeps track of the votes for different nodes, and the node that has the highest vote is allowed to add the block in the blockchain.

Advance thanks for your time and helping me out from this situation.


The PoW protocol is not meant for a scenario where you'd "choose" a miner. Furthemore, smart contracts have no way of influencing who mines their transactions.

So if I understand correctly, you are running your own private Ethereum blockchain, with PoW. I'm not sure why you would like to be able to choose who mines a transaction - it shouldn't make a difference.

Since it's your network, I'd say you have a few alternatives:

  1. Use some other consensus protocol, such as PoA

  2. Use only one miner node, and the rest as non-mining nodes

  3. Set the initial difficulty high enough that only a single miner has enough power to mine blocks. Not a very good solution overall

Otherwise, I'd say you should re-evaluate your need for "choosing" the miner. Typically there shouldn't be need to try to choose one.

  • Hi Lauri, I agree with what you said about the PoW. Multiple mining node is necessary for me to select a miner among them as validator and actually it is aligned with Proof of stake (PoS) protocol. However, I do not find any option to use PoS in ethereum. PoA somewhat works in my scenario as PoA use reputation instead of stake. I do not find clear implementation guidelines about PoA used in a local private network. Please let me know if you come across any guidelines. It would be of great help. Thank you very much in advance. – monir zaman May 1 at 17:43
  • I have a question. In PoA, the node that add the block in the blockchain selects randomly irrspective of the reputation, right? – monir zaman May 3 at 17:37
  • Please post a new question if you have further questions – Lauri Peltonen May 3 at 19:07
  • Thanks, Here is the question, [link] ethereum.stackexchange.com/questions/98253/… – monir zaman May 5 at 18:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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