16 Key Tools and Technologies to Develop and Test Blockchain Applications

blockchain

In this article, I would like to discuss the most popular tools for blockchain development.

The development process of smart contracts is quite different compared to the regular development process of websites or mobile applications. Not only tools and frameworks are different, but also approaches, e.g. how to develop smart contracts in a collaborative manner, test them properly, implement continuous integration and host them in production.

It worth mentioning that most blockchain tools are made on Node.js, although smart contracts are written using Solidity language. Below you can find the review of the most popular tools.

Tools for blockchain backend development

Visual Studio Code

Solidity is a relatively new language that is not properly supported yet by the majority of popular IDEs. However, there is a fully functional plugin for Visual Studio Code that supports a wide variety of functions like syntax highlighting of smart contracts, code completion and compilation. So it makes Visual Studio Code a perfect IDE for smart contract development.

Truffle

Truffle is one of the most popular development frameworks for testing and deployment of Ethereum-based smart contracts. Developers can create a local environment on it for blockchain. Using Truffle developers can compile, run unit tests, and deploy the artefacts to a blockchain network on their local machine.

It is very important that Truffle offers a comprehensive approach and methodology for smart contract development and testing, also provided with a smart contract project template, which includes a project structure, all needed files and directories. Due to these facts, a lot of manual steps are eliminated, which generally improves developer productivity.

Embark

As an alternative to Truffle, Embark supports not only EVM blockchains (Ethereum), but also Decentralized Storages (IPFS), and Decentralized communication platforms (Whisper and Orbit). Swarm is supported for deployment.
It allows you to easily develop and deploy Decentralized Applications (DApps), which in fact are serverless html5 applications that use one or more decentralized technologies.
It also has a powerful console application.

Ganache

Ganache plays a crucial role in the blockchain development process because it is a minimalistic version of the blockchain network, which you can use for local development.

It provides you with a blockchain emulator and a web console to manage it, which offers features like block exporter and advanced mining control.

As a result, you can create a private Ethereum blockchain to run tests, execute commands and monitor how blockchain works. Because Ganache spins up your own private blockchain, all blockchain operations are performed without the cost.

The key benefit is that you can easily integrate it with Truffle and deploy your contracts there, once you want to test your code.

Dapp

Dapp is a set of utilities that allows you to easily start development of Ethereum-based blockchain applications. The main advantage of Dapp is that it provides package management, contract building and deployment scripting features. You can also use Dapp to run Solidity unit tests, launch testnets and debug smart contracts.

Infura

Infura is a web service which acts as a gateway to a distributed Ethereum chains such as CryptoKitties, Mainnet or Kovan. The main benefit of using Infura is that you don’t need to have and maintain your own node for each Ethereum chain. It can dramatically reduce your time to market and spendings when running in production.

Tools for blockchain frontend development

Drizzle

Drizzle is a special javascript component library that is integrated with blockchain, providing you with synchronization of your contract data and transaction data from the blockchain to a Redux store. You can use it from your React application using drizzle-react-components.

MetaMask

MetaMask is a Chrome and Firefox extension that is extremely useful for debugging of blockchain frontend applications. It provides you with the following:

  • Enables you with a connection to a needed Ethereum network through its own remote node, so you don’t need to deploy your own node for that.
  • Allows you to create new or import existing accounts to work with blockchain. It provides you with the ability to sign transactions using your private key, which is stored on your local computer.

Tools for Ethereum testing and CI

In the previous parts, we were talking about tools for a single developer. When you have a team you should think about continuous integration and testing.

Ganache CLI

Ganache CLI is a headless version of Ganache, which makes it ideal to run tests. With ganache CLI you can set up and tear down an Ethereum chain during a CI build. The good news is that its state is not persisted between sessions, so you can run all tests in a clean environment.

Ethlint

Ethlint (formerly Solium) is a command-line tool that analyses your Solidity smart contract code and searches for security issues.

Jenkins or TeamCity or Circle CI or Gitlab

These build servers are well known and needed to implement a proper CI/CD process for blockchain applications. You can integrate Truffle, Ganache CLI and Ethlint into build steps of your favourite CI to achieve the fastest time-to-market.

Hosting platform for Node.js web apps

If you want your developers to have an individual access to smart contract with similar data, you need to choose a hosting platform. In case you don’t want to make configurations manually you can use PaaS platforms. I’m suggesting to look at two PaaS platforms that support Node.js applications. PaaS not only simplifies the life of your developers but also save time to launch the product. And as we all know Time-To-Market is one of the most important metrics when we are talking about the success of the blockchain project.

Heroku

Heroku is a PaaS that allows you to run Node.js applications. It is integrated with Circle CI and hosted on Amazon Web Service.

Hidora

Cloud platform that allows you to run blockchain applications on Node.js or any other programming language. Datacenters are located in Switzerland, which has the most blockchain-friendly jurisdiction.