How to Choose a Blockchain
How do you chose a blockchain or distributed web technology stack to build world-changing applications?
Choosing a platform to build on top of can be hard. This blog outlines our thought process in choosing the tech stack for Regen Ledger, the blockchain backbone of Regen Network.
Our standards for choosing a technological backbone were high. As an environmentally-focused project, energy efficiency has always been critical. This was a strong point against big public proof-of-work (POW) blockchains. Also, given the rather high-profile bugs that have plagued some of these “one-chain-to-rule-them-all” platforms, we were compelled to find a clear, yet still decentralized governance mechanism, that aligned with the interests of our application. Furthermore, all public blockchain options at the time had significant scalability issues and passed on unpredictable transaction costs to users. These points briefly capture our reasons for choosing to build our own domain-specific blockchain.
Choosing a Tech Stack
Once Regen Network made the decision to actually launch our own blockchain, we still had to choose a tech stack. We didn’t want to start from scratch because doing so would be far beyond the scope of our project. Instead, we explored several platforms for launching a domain-specific blockchain including the Hyperledger projects, Kadena, and finally Tendermint/Cosmos.
We settled on the Tendermint consensus engine for a number of reasons. For one, it was one of the few projects that fully abstracted the mechanism of consensus from application logic. Using Tendermint, we could have the flexibility to use whatever programming language and data-store we wanted for our blockchain. Additionally, Tendermint’s documentation was uniformly high-quality, the project was well-maintained, and was being used actively by several other projects.
After collectively deciding Tendermint was the right choice for Regen Ledger, we still had to choose a programming language. Initially, we considered using Haskell, which would have allowed us to build our application with a strongly-typed functional programming language from the ground-up. This likely would have been a good option, but after consulting with the Tendermint/Cosmos team, we learned of all the work they had done in the Cosmos SDK that would need to reproduced by us if we started from scratch in another language. While Golang isn’t our favorite language, it’s suited to the task and taking advantage of the 2+ years of testing that the Cosmos team had done won us over in the end. It wasn’t long after beginning development with Cosmos SDK that we created a running testnet and started integrating more broadly with the Cosmos community.
In choosing an open source software project to work with, the quality, comradery, and care of the community are key. We really love the Tendermint, Interchain Foundation, and broader Cosmos SDK community of developers. Members are cooperative, open-minded, and speak clearly to trade-offs in design, which is helpful in not creating a polarized working environment. This is also true of the way Cosmos relates to other projects in the space. We experience the Cosmos team as non-dogmatic and friendly, even with projects that might be considered “competitors”. This goes a long way.
While technological concerns are obviously important, at the end of the day they are secondary to the value of empowering the users of any given blockchain toward their own sovereignty. The Cosmos community’s attention to voluntary, mutual aid through blockchain was key. Many other projects are pushy and opinionated about how a project should interact with users, or simply make implicit assumptions while staying blind to the needs of users and projects. Cosmos prioritizes making it possible for each blockchain project to write its own governance rules, which in our view, is imperative to promoting healthy and useful projects.
Full Sovereignty and Governance Flexibility
Central to Cosmos’ ethos is a powerful and important concept: to not just “allow” but to encourage projects to develop their own community of validators and custom governance. Their team puts a heavy emphasis on allowing governance choice and blockchain sovereignty for the members of its ecosystem. This domain-specific alternative to the “one chain to rule them all” mentality can look different for each group in the network. That means you don’t have to use the same programming language, validator set, or other base layer elements that a blockchain is assembled from. Ultimately, this culminates in more choices and more potential. Different groups will need different governance and economic structures. Because the throughput of many different applications does not need to flow through a single blockchain, this model allows for great scalability.
Now that we’ve walked through some of Regen Network’s reasoning for choosing to join the Cosmos ecosystem, let’s take a quick tour of the vision and the implementation of the Cosmos Interchain.
The Cosmos Ecosystem
The vision of the Interchain is a network of autonomous and sovereign blockchains. Their core premise is an empowered group of individuals and organizations able to build tools that allow them to generate social consensus about what matters for a healthy global economy, nailing in the powerful alternative vision from a single unified blockchain, or “the one ring to rule them all” mentality that we mentioned above.
Cosmos Hub is the first blockchain in the Cosmos Network, successfully launched on March 14, 2019. It serves to facilitate value transfer between autonomous zones that maintain their own sovereign governance. It will provide a way to get tokens in and out of Regen Ledger, allowing them to be transferred on exchanges and used in other sovereign chains in the Cosmos Network. This function can create the benefit of liquidity between Regen Network and other blockchains. After the Inter-blockchain Communication Protocol is complete, we look forward to being able to transfer carbon credits and biodiversity coins that represent ecological conservation or regeneration, out of Regen Ledger and into other blockchains. This will greatly support the adoption of the environmental health ledger we are creating.
The Cosmos SDK is a robust, modular, production-ready blockchain software development kit written in Golang that enables developers to create custom blockchains. It includes tested modules for proof-of-stake (POS) consensus, governance, and token issuance. The Cosmos ecosystem’s diverse network of public blockchains (called “zones”) is composed of many different domain-specific blockchains.
Using the Cosmos SDK as a starting point, we are building the Regen Ledger zone to include a robust database of ecological health, ecosystem oracles, a framework for ecological smart contracts, data visualization tools, and interoperability tools for farm management software. Other notable groups building on the Cosmos SDK are Sentinel VPN service and wallets, Binance’s coin and token exchange, and the Terra stable coin, to name just a few.
Please let us know if you have questions or are a project looking to understand more about what Cosmos offers to developers and application designers. We are just a humble member of a much bigger community, but we are very happy to answer questions about our (so far amazing) experience working with the Cosmos SDK.