Very recently, I took a small peek into the world of blockchain and played around with a couple of projects in the space. The whole ride was extremely great. I had to read a couple of academic papers in order to understand and learn stuff. The first project that I checked out was Tendermint. This is a project which provides a foundation for building blockchain applications. Tendermint can handle all the ‘blockchain’ aspects of an application, i.e. networking and the replication of data across the different machines.
Tendermint allows you to write blockchain applications in any programming language. Which as far as I know, is not possible on other platforms like Ethereum. Tendermint achieves this by following a modularized architecture. In Tendermint-based applications, there is a tight separation between the blockchain component and the application (business logic). The communication between the application and Tendermint happens through an interface called ABCI (Application Blockchain Communication Interface).
Tendermint is written in Go and being a Go programmer I had a chance to dig into the codebase and contribute some code, which I think has increased my understanding of the project. I’ve also spent some time in building an application on top of Tendermint using ABCI. Even though I was very new to blockchain and the ecosystem I found it relatively easy to write code on top of Tendermint, thanks to the abstraction ABCI provides.
Cosmos SDK is the second project that I checked out. It’s built on top of Tendermint and written in Go. It aspires to make the process of building blockchain-based applications easier and more familiar. Using it, we can build DApps in a more conventional fashion. It has a modularised design, and therefore we can easily swap out parts. By parts I mean the parts of the application which handle transferring coins, staking, governance etc. The SDK has modules which implement the basic functionalities needed for any blockchain app such as auth, accounts, governance etc. Also, it aims to have an npm-like repository, where we can get, and add third-party modules easily to our app.
Both Cosmos SDK and Tendermint haven’t reached their 1.0 releases yet but are scheduled to get there very soon. This is why there are a handful of breaking changes in releases and some disparities with the docs and the code. From my point of view Tendermint and it’s docs are very mature compared to Cosmos SDK. Both of these seem to be promising projects. I have a strong feeling that they will make building blockchain-based applications easier and more accessible which in turn will bring more developers to this space.