Loom Network’s mainnet, Basechain, went live in December 2018, and since then, we’ve upgraded the protocol numerous times in order to fix bugs and add many new features. One of our primary goals has always been to ensure that our mainnet upgrades resulted in zero downtime for dapp developers and users. Barring a few brief chain halts in the early days, we’ve done a pretty good job of reaching that liveness goal.
Unfortunately, such live upgrades are not without a cost. Some core dependencies of the Loom protocol couldn’t be upgraded without incurring a significant amount of downtime, because backwards compatibility was not as high of a priority for the authors of those dependencies as it was for us. This lack of backward compatibility in our dependencies forced our blockchain development team to spend a significant amount of time carefully backporting important bug fixes and features. However, backporting has its limits, as the code eventually diverges too far for that approach to remain practical.
The Loom protocol code has also accumulated a lot of cruft since the mainnet went live. We’ve shipped a few features that turned out to be less useful than we envisioned, and we fixed many bugs in some non-ideal ways to ensure that the fixes could be deployed without any downtime.
So we need to address all that technical debt, upgrade core dependencies, and redesign some of the core systems — now that we have a much better understanding of how the initial designs performed in production. It’s time for us to build the next major version of the Loom protocol that will power Basechain and other blockchains we build for our enterprise clients. Let’s take a look at a non-exhaustive list of changes that will be going into the new version:
- Upgrade the consensus engine to the latest 0.33.X Tendermint release to take advantage of all the performance improvements and bug fixes.
- Upgrade go-ethereum to v1.9.14 to benefit from optimizations made to EVM opcodes and storage.
- Address a number of design issues in the EVM integration affecting receipts, Tx hashes, gas estimation, and contract debugging.
- Improve reliability of the contract events system.
- Integrate a WASM runtime to support performant and upgradable smart contracts to replace native Go smart contracts. Native Go smart contracts underpin many important capabilities of the current Loom protocol including DPoS, ETH and LOOM transfers, and token transfers between chains. These smart contracts are powerful and performant when compared to EVM contracts, but are also more difficult to implement correctly because they can do a lot more than an EVM contract — including causing consensus failures that can result in chain halts.
We’ll be sharing more technical details about these changes in the following months.