I want to configure Ethereum client to only maintain a transaction pool:

  • Receive incoming transactions
  • Receive incoming blocks

I want a minimal functionality: I don't need to validate blocks, I don't care about the state or synching with the chain and waiting for it to catch up.

What is the easiest way to achieve this?

I can modify existing client if needed (e.g. Go Ethereum), but I'm not sure if nodes in the network will ban my node because they expect some of the functionality that was disabled. I didn't find a way to achieve this via configuration files of some of the popular clients.


In my understanding, maintaining a transaction pool needs world states. When receiving a transaction, the ProtocolManager will validate the nonce amount, signature, etc., of incoming transactions, and decides where it goes, PendingPool or Queued. Only once verification passes will the transactions be added to Pool. That process needs world states. Without that,the incoming transaction will be discarded. What does your transaction pool mean? Is it that you just want to record new incoming transactions and blocks?

If so ,you can modify source code. When syncing, your nodes will send a getBlockHeader message first and then send getBlock message. You can modify these codes and stop these messages so that you won't get blocks. Doing so, you can still receive incoming transactions, but I am not sure if you will get incoming blocks. I have recorded incoming transactions and its arriving time in that way, but not paying attention to incoming blocks.

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.