Recently a group of Blockchain enthusiasts at the co-working space I occasionally work from decided that it was time we stopped talking about Blockchain and actually learned how to create something based on it.
We wanted to create a coin or token for the community to use internally, and whilst the project has stalled for now, I started investigating Ethereum in more depth, and the language it uses for creating smart contracts, Solidity. I will cover the language itself in more detail in the future (when I understand it more myself!), but in this post, I will cover some of the tools available for working with the language.
Your starting point is the official Ethereum clients, available for all operating systems and in Go, C++, Rust, and Python. All support the full breadth of classes and methods for Solidity and many of the other tools listed here will need them as dependencies.
There is an unofficial client for JavaScript. The repository I linked to is out of date, but it contains a useful reference to where to now find the libraries you need.
Mix promised to be a fully-fledged Solidity IDE, but it never materialized and Remix is its the web-based alternative. You can lint, compile, debug, run, and analyze your Solidity code based on different versions of the Ethereum compiler. You can also run your own local copy of Remix in the browser, or as a browser extension.
The official Ethereum wallet and mist applications allow you to deploy contracts to networks, but not much else, so you should make sure your code is finished before using them.
If you use any of the IDEs based on the IntelliJ platform, then there’s a plugin available that supports formatting, snippets, and code completion.
Papyrus is a UML modeling environment for the Eclipse IDE (and the Oxygen XML editor), and uml2solidity is a plugin for Papyrus that lets you convert UML models to Solidity. For experienced programmers who are new to smart contracts, this is a great way to model your ideas in languages that are familiar to you.
I am a big Atom fan, so I was delighted to find a selection of packages available with Solidity support.
There’s the Solidity linter based on coding standards from the solc npm package, and the solium linter based on the solium project. They take different approaches to configuration, linter-solidity
has far more users, and I couldn’t even get linter-solium
to work, so that may make deciding between the two an easy choice. And finally, there’s autocomplete for Solidity and language-ethereum that adds support for Solidity and Serpent, another language you can use for creating smart contracts.
The etheratom package lets you compile and deploy Solidity code from the editor, but it’s complicated to setup and you have to know what you’re doing as it requires several Ethereum related tools to already be installed, and working, on your machine.
You know when the development community has started to accept a language when it starts creating frameworks for it. Unsurprisingly Ethereum has a couple of options.
Truffle claims to be the most popular option, supporting compilation, testing, deployment, and dependency management.
Embark is similar, and also offers integration with IPFS for storage-based solutions and whisper or orbit for communications-based applications.
Dapp is a simpler CLI tool for package management, testing, and deployment of smart contracts.
For more enterprise-like projects, BlockApps offers a full-stack platform for creating private blockchain applications that promise to fit into any of your existing toolchains.
The blockchain space is in constant flux and thus a list of tools will not be comprehensive for the foreseeable future. If there’s anything missing from this list, please add it to the comments below.
Originally published at dzone.com.