What development tools you need for developing ethereum smart contract?

Jude Zhu
BleevIn
Published in
3 min readOct 28, 2018

The purpose of this page is to serve as an introduction to the basics of ethereum development.

First of all, you will need to understand the difference between dApp and traditional application development.

Decentralized application development consists of two parts:

  1. off-chain development (client)
  2. on-chain development (server)

Off-chain development is very similar to normal application development. Currently, in most cases, it is just a web application. The web application runs as a client in the whole system.

On-chain development part is very different from what normal developers experience. On-chain development is limited to few tools. The on-chain application runs on ethereum platform, as a server. Because of the limitation of ethereum blockchain, the capability of the on-chain server is also very limited.

Decentralized Application Architecture

Decentralized Application Architecture

Ethereum node set-up

  • Local single-node ethereum network

TestRPC & Ganache is necessary for running smart contract unit tests. Any on-chain transaction is slow, no matter it is mainnet or testnet. For running smart contract unit test, the easiest way is to set up a local single-node ethereum network for quick development purpose. Check their github repo more details to test smart contracts locally.

  • Full testnet or mainet node

Parity is the fastest and lightest ethereum client so far, implemented by Rust programming language. It comes with a web based wallet. You can interact with ethereum blockchain via communicating with parity node. You can find installation instructions Here.

  • Remote testnet or mainet node

MetaMask is a chrome extension based ethereum client, that allows you to interact with ethereum blockchain without downloading the full blockchain data. It talks a remote node provided by Infura. This is the most convenient and recommended way to deploy your smart contract code for developers.

On-Chain Development

  • Solidity

For developers, who wants to get hands on ethereum deveopment. Solidity is the first thing you need to learn. It is a contract-oriented, high-level language, whose syntax is similar to JavaScript. Here is the Solidity official document for you to learn the basics step by step.

  • OpenZeppelin

OpenZeppelin is an open framework of reusable and secure smart contracts in the Solidity language. OpenZeppelin provides many smart contracts you need to write a secure on-chain application. It has become the golden-standard of some specific smart contracts.

Off-Chain Development:

  • Wep application development tools

You can use any kind of popular web development tools here. React, Angular or whatever. You also can add a node.js middle layer.

  • web3.js

web.js is a must-have for developing ethereum based dApps. It is embedded in the client side application to bridge onchain and offchian development. It’s available as a npmmodule. please refer to the api documentation for what you can do with web3. web3 is still under rapid development. Please make sure you are aware with what version you are using, and refer to the right version of documentation.

IDE & Deployment & Testing

  • Truffle

Truffle is the most popular ethereum development framework for build, deploy and test. Check here for installation instructions. It is a little tricky to use it for deployment. Because if there is anything wrong, the error message is vague to see what is really happening. But we love to use it as a unit test tool.

  • Remix

You will love Remix to do some casual test and deployment development. It is so convenient to be integrated with Metamask to provide a “green” and ready-to-use dev environment. And it is much more powerful than you think as a online IDE tool. Recommended!

  • VS Code

VS code is good for maintaining a relatively large code base. It has extension to support solidity.

Other resources:

  1. Ethereum development tutorial.
  2. Get free test ether.

--

--