When it comes to software development in general, we have evolved a lot in terms of processes. We started with the waterfall model of software development, where the requirements were fixed before any code was written. We then moved on to more flexible models - iterative, agile, scrum, and so on. This flexibility is essential for building solutions that keep evolving as per the needs. Things change, situations change, and with them, the problems change too. With changing needs, the solutions must change as well.
Blockchains, on the other hand, are hard to change. While the data and state on the blockchain must be immutable, the logic to store and process data should be easy to upgrade. There are a lot of times when we need to fix bugs, change business logic and rules and implement new features even for blockchain solutions. The process to change or update anything in blockchain solutions is much harder and longer when compared to that in non-blockchain solutions.
Blockchain solutions based on existing platforms, I think, take us back to the waterfall model days. The effort required to make small changes to the decentralized business logic is just too much to keep the solution evolving.
Complex Upgrade and Maintenance Process
Let’s take an example. Let’s say we have a supply chain blockchain solution running in production. The solution has several blockchain nodes with decentralized business logic in smart contracts connected to ERP systems using oracles.
Now let’s say a new partner needs to join the network. If the blockchain is built using any of the existing platforms (Ethereum, Hyperledger Fabric, etc.), the change process would require at least the following steps:
- Update the logic of smart contracts with new rules to accommodate the needs of the new partner.
- Create a new oracle/service for the new partner.
- Changes to data schema (to integrate the new external system).
- Migrate data to new contracts.
- Audit the new logic (as needed).
- Deployment script updates.
- End-to-end testing.
Now that’s a lot of effort for making simple upgrades to the system. If not done correctly, this could also impact regular business processes and operations.
This massive amount of work also delays the necessary maintenance work. I have seen maintenance being postponed in several blockchain projects just because there’s too much work involved, and it couldn’t be done “now.” This accumulates work to be done at a later stage (months), and hence we get back into sort of waterfall model.
Things Change; Blockchains Don’t!
Huge Maintenance Costs
When the maintenance involves too much work for simple things, it impacts costs also. In general, the cost of maintaining a blockchain solution is much higher than maintaining a traditional distributed system.
In non-blockchain projects, we have easy upgrade paths. The steps to fix bugs and make minor changes do not involve rewriting code and migration of data. They also do not include audits. This saves a ton of person-hours and hence costs. In blockchain projects, we have more steps involved in changing anything: more steps = more effort = more person-hours, and thus more costs.
The Need of the Hour
What if we could update our blockchains the same way we update other systems?
What if blockchain solution development and maintenance could become as agile as conventional projects?
We need blockchain platforms that can provide the ability to build, update, and maintain solutions quickly and efficiently.
With its forkless upgrades feature, Substrate provides precisely what is needed to solve these blockchain upgradeability challenges.
Substrate is Modular
It is a very well known best practice to design modular software so that it can be easily maintained and updated. It is even more essential to decompose the system into modules based on changeability.
In blockchain solutions, we do not frequently require changes in the core infrastructure components—networking, database, consensus, etc. The changes are generally needed in the business logic. Substrate separates the business logic (or the blockchain runtime) from the rest of the core components.
Substrate, unlike other blockchain platforms, takes a very modular and loosely coupled approach with the core blockchain components. As a result, it becomes reasonably easy to change and configure almost anything.
Substrate Forkless Upgrades
In Substrate, the blockchain runtime or the State Transition Function (STF) logic is stored on-chain as a Wasm blob. All the business logic related to your custom blockchain is part of this runtime. This Wasm blob and its executor are loosely coupled with the core infrastructure components of the Substrate node. This loose coupling makes it extremely easy to upgrade the blockchain runtime in Substrate-based blockchains.
To change or update anything, all you have to do is “upload” a newer version of this Wasm blob through a transaction, and that’s it. With the next block onwards, your blockchain will have the new business logic as part of its upgraded runtime.
Wait; what? Yeah, you can read that last paragraph again. It is kind of hard to believe it the first time. ;)
When it comes to updating or changing anything on a blockchain, it is pretty clear that a single party cannot do it. It needs to be done only after agreement from at least a majority of stakeholders or validators.
While the actual runtime upgrade process is straightforward in Substrate-based blockchains, the ability to drive it through a decentralized governance mechanism is also built-in.
Substrate includes several governance modules for efficient decision making and enactment on the blockchain. These governance modules include collective/council, democracy, membership management, Sudo, treasury, etc. You are free to choose any of these governance mechanisms for your blockchain and to govern the upgrade process.
Evolving Blockchains with Substrate
When you build your blockchain with Substrate, you can upgrade it as per your needs, at any time. With changing business needs and rules, your blockchain can evolve at the same pace as other components in your solution.
Simpler Upgrade Process
Revisiting our previous example of a supply chain blockchain, let’s say a new partner needs to join the running network. With a blockchain solution based on Substrate, the update process has far fewer steps than with a traditional blockchain.
- Add new logic to the runtime. This logic can also include data migration, as needed.
- Connect the new system using Substrate off-chain workers.
- Upload the Wasm blob for the new runtime.
That’s it. Your blockchain is now ready with the new logic and rules.
Reduced Maintenance Costs
With fewer steps involved in the upgrade and maintenance process, the overall effort and associated costs are also come down drastically.
The following graph shows how the maintenance costs of Substrate-based solutions compare with other blockchain platforms and non-blockchain projects.
Note: The costs numbers are relative; based on the analysis that less process steps would result in lower costs.
As you can imagine, this more straightforward upgrade process makes the maintenance of Substrate-based blockchain solutions much more efficient and seamless. You don’t have to wait for longer release cycles to upgrade your blockchain solutions. Development and maintenance become far more agile, and the costs are low. I wouldn’t call it any less than a breakthrough in blockchain technology.
That, right there, are your evolving blockchains!
Alexandra Heller: For reviewing and for suggesting the post title.
Alina Grubnyak on Unsplash: For the post feature image.