When developing a dapp, is Geth a better choice to start with for a beginner? I see there's other options which are ganache and truffle, but not so sure which one to begin with. I guess beginners might be confused with these three clients when they start to learn dapp development.

  1. Are these three essentially serve the same purpose?
  2. Are these three a must learn for dapp development? or either one of them can be skipped?

1 Answer 1


All three are good to use for D-app development. I'm also a beginner and have found that to understand how the blockchain works the geth console is the best way to learn although it may take you a while to sync a node. I recommend using the the ropsten testnet if you choose to use geth. you can start to sync the node using "geth --testnet" as a terminal command and you should see the node start to sync. To use the node once it synced I recommend you check out https://web3js.readthedocs.io/en/1.0/

Regarding truffles and ganache, they are decent frameworks for testing contracts and initialising a project with the required folders for it to be competent. But if you are new to development you will come across some troubles with configuration etc. I'm Not saying that I would not try and use them but they can be tricky and there will be a lot of reading and research as to how you can utilise the frameworks.

If you are looking for a way to deploy a simple smart contract, the easiest way I have found is to use web3.deploy which can be accessed through the "details" button on https://remix.ethereum.org.

What you have to do is have a geth console open to deploy the contract with web3.deploy, the best for a beginner would be to use "geth --dev console" as a terminal command this will give you a local instance of the ethereum blockchain "ONLY A LOCAL NODE, IT WILL NOT BE CONNECTED TO ANY OTHERS AND ONLY THE TX'S YOU SEND WILL APPEAR IN THE BLOCKCHAIN".

Once you have the dev console set up all you would have to do is copy and paste the web3.deploy script from the details button in Remix and then use

contractName.function(parameter, {from: account1 gas: 1000})

for a function that would change the current state of the data on the blockchain or you can just use


to call a function that would otherwise "view" something from the blockchain.

Hope this helps =)

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.