Blockchain development has evolved pretty drastically over the last few years. What started as a means to power up a decentralized payment network has morphed into a decentralized supercomputer where developers from all around the world can come and create their own software applications. This is a truly exciting space with lots of scope for development. However, as a developer who is a new entrant in this space, you might feel a little lost. So, we have created this guide specifically for you.
15 of the Best Tools for Blockchain Development
Before You Use The Tools
Before we get to the tools there are some basics that you should know.
A blockchain is, in the simplest of terms, a time-stamped series of immutable record of data that is managed by a cluster of computers not owned by any single entity. Each of these blocks of data (i.e. block) are secured and bound to each other using cryptographic principles (i.e. chain).
Bitcoin brought blockchains to the forefront by using it to power a decentralized payment system but since then, blockchain technology has seen wider adoption. Projects like Ethereum has shown us that one can use a public blockchain to create decentralized applications.
Similarly, organizations could prefer a private blockchain service like Hyperledger created by the Linux Foundation. If you are at the beginning of your journey as a developer then it is critical that you know how Bitcoin, Ethereum, and Hyperledger work. That is where you should begin.
Alright, so now let’s look at the tools.
Best Blockchain Development Tools
Tool #1 Geth
Geth is an implementation of an Ethereum node in the Go programming language. To put it simply, Geth is a program which acts as a node of the Ethereum blockchain. By using Geth. a user can do the following:
- Mine ether tokens
- Transfer tokens between addresses
- Create smart contracts and execute it on the Ethereum Virtual Machine
- Explore the block history
You can go here and download Geth. Geth is supported by Linux, Mac, and Windows. There are two types of installations supported, Binary and Scripted.
Once you start up Geth, you will have the option to connect to:
- The existing live blockchain
- Create its own blockchain by depending on the provide settings
However, if you don’t set any default values, Geth will automatically connect to the Ethereum mainnet. Geth also serves as a console for inputting certain commands and executing specific functions. Keep one thing in mind though, on running Geth it will automatically download the entire Ethereum blockchain, which can take a long time (even days). It may make sense to use an external hard drive to store the data.
Tool #2 Mist
Image Credit: Hackernoon
Now before you start using Ethereum, you must have a place where you can actually store your Ether tokens and execute your smart contracts. Mist, is the official Ethereum wallet that has been developed by the people responsible for Ethereum themselves. While it makes a lot of sense to use Mist, especially for smart contract deployment, you must keep one thing in mind. It is a full node wallet, which means you will have to download the entire Ethereum blockchain, which is >1TB.
Mist is available for Windows (both 32- and 64-bit), Mac, and Linux (32- and 64-bit).
After you are done installing Mist, you will be told to wait for some time as the software syncs you up to date with the Ethereum blockchain. Once the node is fully synced, you will be given the option to operate on the test blockchain or the main blockchain. If you simply want to test out Ethereum then we recommend that you use the test blockchain.
It is around this time that you will be asked to choose a password. Couple of things that you must keep in mind here:
- Firstly, once set, you will never ever be able to change your password ever again. So you have to set a really strong password from the get go AND you must never forget your password.
- Secondly, you will need to enter your password as a final confirmation every single time you want to send Ether.
Tool #3 Solc
Image Credit: Karl.Tech
There are two kings of Solidity compilers:
- solc, which has been coded in C++
Even though technically speaking, they are pretty much built from the same source code, in practice, they tend to come up with slightly different results. They also have different command line interfaces. Having said that, solc-js is a little bit slower than solc.
The following data has been taken from this article by Brandon O’Brien.
$ time solc --optimize --bin -o . Test1.sol Warning: This is a pre-release compiler version, please do not use it in production. real 0m0.075s user 0m0.007s sys 0m0.009s $ time solcjs --optimize --bin Test1.sol real 0m3.950s user 0m3.524s sys 0m0.337s
A good number of Ethereum nodes natively includes a solc implementation, but it is also packaged as a standalone module for an offline compiling. So, you can decide to use web3.eth.compile.solidity() to compile your Solidity files using your node, or you can start using a solc.compile() that doesn’t rely on any external node.
Tool #4: Remix
Remix is a great compiler that we use for small contracts. If you are looking to learn solidity then this is seriously the best way to go about it. Simply go to their website and you should be greeted with the following screen:
The Remix default screen. You see a screen on the left that lets you write code. The right-hand side lets you deploy your code on the blockchain and lets you interact with the functions that you have written.
Remix’s code analyzer to makes sure that developers write their best code. Remix connects to the Ethereum blockchain through Metamask (more on this in a bit).
Tool #5: Blockchain Testnet
When you are writing programs for the Ethereum Virtual Machine (EVM) there are certain things that you will need to consider:
- Firstly, you need to pay for the launch and gas usage. Gas usage costs in Ethereum is a huge issue. So do you really want to pay so much money for a project that you have not even tested out yet?
- Secondly, an untested program may have some bug in its code which might cause havoc to the Ethereum blockchain. Plus remember that the Ethereum blockchain is immutable, so whatever happens to it is permanent and cannot be undone.
This is the reason why you might want to test out the dapp in a testnet before actually using the mainnet to deploy them. Testnets are copies of the Ethereum blockchain almost identical in every way to the Mainnet except in the fact that their Ether is worthless (and, of course, the software that’s been deployed on these testnets).
There are three kinds of testnets:
- Public Test
- Private Test
- GanacheCLI (or Testrpc)
Public testnets are freely available to everyone who is connected to the internet. Anyone can connect to them by using wallet interfaces like MyEtherWallet or MetaMask. The public testnets available are Ropsten, Rinkeby, and Kovan.
Instead of a public blockchain, you also have the option to get your own personal blockchain i.e. a private test network. So, how exactly do you build this personal blockchain?
A genesis file, which gets generated by you, will use a tool, quite like Geth, which will build a new chain just for you. This chain then gets inspected and interacted with via tools like Mist, MetaMask, MyEtherWallet, etc.
So, who would use private testnets?
Blockchain teams which are working on sensitive projects and need simulate mining and transaction confirmations without exposing themselves to the risks of attacks and hacks can use these testnets.
These private testnets are free to create. The only costs that are required are as follows:
- A small part of the CPU power
- Disk space in the developer’s computer
Also, once a private testnet has grown enough, the developers involved can expose the network to the public online.
Tool #6 GanacheCLI
GanacheCLI (previously Testrpc), a NodeJS package, is a fast and customizable blockchain emulator. It simulates the Ethereum network on a single computer and allows you to make calls to the blockchain without any of the hassles of running a real Ethereum node.
Some of the things that you can do in a GanacheCLI are:
- Instant mining of the transactions
- 0 transaction fees
- All the accounts inside the testnet can be recycled, reset and instantiated with a fixed amount of Ether
- Gas prices and mining speed can be changed and modified as and when you want
- An extremely easy-to-use GUI which will give you an overview of your testchain events.
Tool #7 : Coinbase’s API
Coinbase is a San Francisco-based “fiat-to-crypto” exchange. Over the last 3-4 years, it has become one of the most widely used exchange in the world. Coinbase’s API allows developers to build new bitcoin apps and integrate bitcoin into already existing applications.
This system enables a wide range of capabilities from gathering read-only data to building something really new. Also, Coinbase’s APIs provides a system to create bitcoin wallets and addresses, buy, sell, send and receive bitcoins worldwide, and they offer several client libraries and mobile SDKs that are quite useful for a developer.
Tool #8: EtherScripter
Ether scripting for newbie developers can be an extremely challenging task. EtherScripter presents a really fun interface that one can use to start coding basic contracts. The interface is a simple drag and drop wherein you must connect jigsaw puzzle pieces to make your contract come to life. At the particular moment, it can only be used with the Serpent programming language.
Following is an implementation of a “coin flip” smart contract using EtherScripter:
You can see how the puzzle pieces fit inside each other in a pretty cool and visual way.
Tool #9: BaaS
Blockchain as a Service (BaaS) is a term that has been floating around a lot lately. BaaS is basically an offering which allows its users to
“leverage cloud-based solutions to build, host and use their own blockchain apps, smart contracts, and functions on the blockchain while the cloud-based service provider manages all the necessary tasks and activities to keep the infrastructure agile and operational.”
To keep it simple, use the blockchain without dealing with any of the hassles that come with keeping the blockchain operational. This pretty much models the way Software As A Service or SaaS works.
This service is extremely useful for individuals or companies who have long yearned to adopt the blockchain technology but have been hampered by the technical complexities and operational overhead.
Many startups and big companies have started offering BaaS services. Microsoft has created Azure to offer these services. It is a useful tool for developers to build dapps in a safe and cheaper environment that supports several chains, including MultiChain, Eris, Storj, and Augur.
The user pays the BaaS service provider the necessary fees to set up and maintain the blockchain infrastructure. The provider basically handles the complex back-end for the client and their business.
Tool #10: Metamask
Metamask gives their users a software which doesn’t only allow them to serve Ether and other ERC-20 assets but also allows them to interact with Ethereum Dapps. The best part, they can do it right in their browser. Metamask can be easily installed as a Google Chrome extension or Firefox add-on. The setup is relatively easy to do.
Once you have installed the app, you have a Ethereum wallet built right into your browser, which can store all ERC-20 tokens as well. Interestingly, for developers, Metamask can interact with various Ethereum test networks, so it can be a really useful tool.
Tool #11: Ethers.js
Ethers.js is an alternative to web3, which happens to be the most commonly used library for ethereum applications. The following are some of the most intriguing properties of ether.js:
- Instead of a contract address, in ether.js you can use an ENS name. This can be extremely helpful for developers. Eg. if they need to call the ENS resolver, they can simply use “resolver.eth” rather than enter the actual contract address (“0x5FfC014343cd971B7eb70732021E26C35B744cc4”)
- Ethers.js only takes 77kb worth of space when compressed.
- There is a lot of documentation on ethers.js, so interested developers can simply look them up as and when they want to.
- It has been used in extensive use cases. Ethers.js uses Travis-ci, meaning that every time new code is added to the repo, all tests are automatically and publicly run.
- Ethers.js is completely licensed by MIT
- Ethers.js handles key management and Ethereum blockchain interaction in a way that gives developers more flexibility. They have separated the nodes into two distinct roles: wallet, to hold keys and sign transactions, and provider, to serve as an anonymous connection to the ethereum network, checking state and sending transactions.What this does is that it helps developers manage these two roles discretely.
Tool #12: Tierion
Tierion enables to create a verifiable database of any data or process on the bitcoin blockchain by offering developer tools & API to add data to the distributed ledger. Tierior has also developed an open standard called ChainPoint for recording data and generating receipts that contain all the info needed to verify the data without relying on any intermediaries.
According to them,
“We see a future where the blockchain is used to verify everything from medical records to online purchases. We’re building technology and products that reduce the cost and complexity of trust.”
At the heart of Tierion’s technological infrastructure is the Chainpoint Proof protocol. The protocol comes into play whenever a user adds something in Tierion’s data store. Chainpoint and Tierion’s API anchors the data to the blockchain in order to generate a timestamp proof.
Chainpoint also has the capability to create millions of proofs per second because of its highly scalable architecture. It also adds accuracy to its proofs by collecting data from Network Time Protocol (NTP) servers and the National Institute of Standards and Technology (NIST) and linking anchors to both the Bitcoin and Ethereum blockchain.
Tool #13: Embark
Embark is a developer framework for Ethereum dapps, so this means that it allows you to easily develop and deploy dapps, or a serverless html5 application that uses decentralized technologies. Embark enables you to create new smart contracts and make them available in the JS code. Also, it watches for changes, and if you update the contract, Embark will automatically modify the contracts and its related dapp.
In order to interact with the the Embark platform, you can use traditional web development language like Angular, React, Meteor, etc. You can also use any build pipeline you want, including grunt or gulp.
Tool #14: Truffle
Quite like Embark, Truffle is a great framework for Ethereum which provides a development environment and asset pipelines for Ethereum development. It also includes support for the library that links complex Ethereum apps and provides custom deployments to make coding new contracts that much more simple. The following are some of the features you will enjoy with Truffle (taken from the Truffle GitHub Documents):
- Built-in smart contract compilation, linking, deployment and binary management.
- Automated contract testing with Mocha and Chai.
- Configurable build pipeline with support for custom build processes.
- Scriptable deployment & migrations framework.
- Network management for deploying to many public & private networks.
- Interactive console for direct contract communication.
- The instant rebuilding of assets during development.
- External script runner that executes scripts within a Truffle environment.
Tool #15: MyEtherWallet
Without a doubt, the safest way to store any cryptocurrency is using a paper wallet. In your journey as a developer, there will be times that you may want to save a significant part of your crypto earnings in a safe and secure way. There are two kinds of storages that you can use:
- Hot storage: Makes it easier for you to spend crypto since it is linked to the internet but is vulnerable to hacking.
- Cold Storage: Your crypto is saved offline. So while it may not be that easy to spend, it is safe from hackers.
Paper wallet is a form of cold storage, which is by and large, the safest way to keep your crypto.
It includes printing out your public and private keys in a piece of paper (hence the term paper wallet) which you then store and save in a secure place. The keys are printed in the form of QR codes which you can scan in the future for all your transactions. The reason why it is so safe is that it gives complete control to you, the user. You do not need to worry about the well-being of a piece of hardware, nor do you have to worry about hackers or any piece of malware. You just need to take care of a piece of paper.
If you want to keep your crypto safe in a paper wallet then follow our guide here.
Blockchain Development Conclusion
So, there you have it. These tools should help you immensely in your journey as a developer. Do you think we have missed out on something? If yes then do sound off in the comments below and let us know.