There seems to be so many tools to make a send transaction. What are the differences from using ethers.js, hardhat, geth, and eth-cli?

I'm just trying to process a bunch of private keys for my service to:

  • Check balance of eth and erc20 tokens on each private key.
  • Create a send transaction of eth or erc20 tokens if it has a balance.
  • Be able to switch networks to polygon, binance smart chain, or avalanche and do the same process as above.

I've been using geth previously, but geth has issues connecting to other networks like BSC. Which is why I want to use another tool, but there seems to be a bunch and I'm not even sure which one is the most efficient for the problem I want to solve. Some people say use hardhat, but some say use eth-cli, but which one is the most up to date and widely adopted?

I don't want to download the blockchain like how geth does it. I just want to check a balance and do send transactions.

  • If you want to write programs to interact with a blockchain I'd use ethers.js, web3.js, web3.py (or similar library in your favorite language). They usually work without issues for Ethereum and testnets, but for L2 chains you may need to write some middleware. Hardhat is an environment for writing smart contract (similarly to truffle, dapp.tools, brownie, etc).
    – Ismael
    Jan 30, 2022 at 5:37

2 Answers 2


I will answer this questions: What are the differences from using ethers.js, hardhat, geth, and eth-cli?

Ethers.js is a javascript library so you can use in your dapps. Hardhat is an IDE for writing, testing and deploying smart contracts. In Hardhat you will probably use ethers.js as a library. The other option would be to use web3.js as a library. Another popular IDE for solidity is Truffle.

Geth is the ethereum client written in Golang. Basically, is the software that most nodes uses to be a node.

eth-cli is a command-line tool you can use to interact with some node. Apparently it is easy to use, but I never used it.

I guess the best option would be to write a simple dApp in html/javascript using ethers.js or web3.js so that you can carry out your transactions faster.. If you just want to get balance and send transactions, maybe just using eth-cli would be a good option too. I don't think using geth is the best option as you don't want to be a node, just perform a few transactions.


I would say definitely use hardhat. It is the most used framework so if you get stuck a lot of people can help you. They also have amazing discord where you can ask lot of questions and get helpful answers. So first choice for me would be hardhat.

Hope this helps.

Also if you like pythonic languages try to look up brownie-eth. It is really simple and I would say a bit easier than hardhat but then you wouldn't have access to ethers...

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.