Koinos v2 is a massive leap from v1 which was intended primarily to test the Koinos Blockchain Framework. As the world’s first truly general purpose blockchain, the Koinos Blockchain Framework (KBF) is a whole new way of building blockchains that is inherently fee-less and infinitely upgradeable.
The fundamentally novel approach to blockchain architecture, built on the world’s first microservice architecture (the ultimate modularity), made extensive testing necessary.
The KBF is the core technology that will serve as the foundation for an entire ecosystem of fee-less and infinitely upgradeable public, private, and hybrid blockchains.
Thanks to its modular upgradeability, any blockchain built on the KBF will be able to improve itself at a far more rapid rate than any other blockchain out there, allowing them to iterate to greatness!
To prove this out we made v1 of the testnet a Bitcoin clone with the goal of iteratively improving that simple design toward something on par with Ethereum exclusively through in-band upgrades (no hard forks). Of course, from there the objective would be to iterate even further to something that is beyond anything else out there. This process would allow us to test the framework at the exact same time we were developing the more complex features needed for Koinos mainnet.
Koinos v2 is already well beyond Ethereum in many ways. It has high performance WASM smart contracts (a planned feature of Ethereum 2.0) and a contract development toolkit so developers can finally create and upload smart contracts on Koinos using the very same CLI Wallet they would use to send and receive test tokens. To reflect the more general utility of this tool, its name has been changed to simply, the “CLI.”
A lot of work has been done to make this the most advanced CLI out there, but the most significant upgrade is this new ability to interact with smart contracts directly through the CLI using commands.
This means that developers and users won’t need to download and learn to use, a different application just to use Koinos smart contracts as they do on most other blockchains, making smart contracts more accessible than ever. The CLI can now even be used by blockchain developers (like Koinos Group) to upgrade the blockchain itself!
But, what developers have been patiently waiting for is the ability to build free-to-use dApps on Koinos which is why we’re excited to announce that v2 now has mana!
The mana system smart contract is the core technology that allows Koinos to have free accounts, free transfers, and free smart contracts! We’re also insanely excited to announce the release of the mana whitepaper! Alongside modular upgradeability, we think mana is one of the most innovative developments in the blockchain space since Vitalik Buterin invented the concept of “gas” for Ethereum.
Gas was his fee-based solution to the blockchain spam, the so-called “halting problem.” Like gas, mana is a solution to the halting problem and blockchain spam, but unlike gas, mana is a totally fee-less solution to that problem. While gas proved that it was possible to deliver a decentralized world computer, mana will prove that it’s possible to deliver a decentralized world computer with no fees, and no barrier to entry, finally delivering a blockchain capable of delivering the user experience that mainstream users have come to expect from their applications.
But mana is not just an alternative to fee-based blockchain designs, it is a superior solution to blockchain resource management. Mana allows for more efficient use of network resources, provides more dynamic and scalable pricing through opportunity costs, all while providing a user experience that is more than tolerable, it is engaging and fun like a game.
Finally, by removing friction from Koinos, mana allows for frictionless markets for digital assets with unmatched efficiency. More efficient markets mean lower prices to consumers, allowing Koinos to deliver even more value to its users.
The mana system works by interpreting every liquid KOIN token as containing “mana” that is consumed down based on how much resources a smart contract consumes. The way Koinos measures this consumption is by counting the instructions that are being run in the VM. Originally Koinos leveraged EOS-VM which claimed to support VM instruction counting, but did not.
While we were able to add support quickly to EOS-VM, we always strive to ensure that Koinos components are as generalized as possible, require as little upkeep as possible, and are not dependent on a single entity for maintenance. That’s why we made the decision to switch to a new VM developed by one of the most experienced blockchain VM development teams in the world: Fizzy.
Not only did we make the switch to Fizzy, a state-of-the-art VM that has native instruction counting and is faster than EOS-VM, we also developed a “VM Manager, which abstracts the VM implementation so that Koinos can rapidly shift to new and better VMs when they come to market. That means Koinos is no longer tied to a specific VM (including Fizzy) giving it yet another degree of flexibility. The VM is one of the biggest performance bottlenecks for any blockchain, so this additional flexibility could provide massive performance benefits in the future.
We learned a lot from testnet v1, including mistakes we made, like the decision to build our own serialization solution (Koinos Types) and how we designed the p2p microservice. Unfortunately, these mistakes required going back to the drawing board which meant doing a lot of work just to get back to where we started, but that work is already paying massive dividends.
Koinos Types worked but it was rigid, labor intensive, and didn’t give us any “free” language support which would make it harder for us to achieve our objective of Universal Language Support which we believe is critical for delivering the most developer-friendly blockchain in the world. For those reasons and more listed below, we made the hard decision to rip out Koinos Types and replace it with Protobuf.
Within a Koinos node messages are constantly being sent both between microservices and between the blockchain and the VM. Serialization is the process of standardizing those messages so that developers can work in their preferred programming languages.
But how you serialize this information can have a profound impact on both the performance of the node, as we learned more recently, the upgradeability of the Koinos protocol.
Google’s Protocol Buffers (or “Protobuf”) was always a potential serialization solution that we were evaluating because of its high performance, efficiency, and fantastic language support.
Developed by Google and quickly becoming an industry standard, Protobuf will continue to improve and acquire additional language support for the foreseeable future.
But Protobuf already gives us incredible language support for free, supporting generated code in Java, Python, Objective-C, C++, Dart, Go, Ruby, and C#, with more languages to come. There are also third-party implementations available for Erlang, Haskell, JavaScript, Perl, PHP, R, Rust, Scala, and even Swift!
Thanks to Protobuf, Koinos already supports developing Koinos microservices in: C++, Embedded C++, Golang, JavaScript, and Python.
One of the reasons we did not originally use Protobuf was because its large library size would cause smart contracts to be large which would negatively impact network performance.
In a perfect demonstration of why it’s always best to integrate widely adopted and independently maintained software, during the very same time we were developing Koinos a new library was released called “EmbeddedProto” that solved this problem and turned Protobuf into the ideal solution.
EmbeddedProto is a C++ Protobuf generator designed to generate types for use in embedded systems where minimizing size is critical. EmbeddedProto generates types quite similar to Koinos Types in size by ignoring all the Protobuf features that aren’t needed within smart contracts.
Using this library gives us the best of both worlds allowing Koinos to benefit from Protobuf in its microservices and client libraries, where size isn’t an issue, while not having to pay the cost of Protobuf in smart contracts. So not only did we get to have our cake and eat it too, but that cake was delicious!
Now that this work is done, we are able to iterate much faster and will be able to deliver client library and smart contract support in multiple languages a lot faster than before.
One of the valuable insights we gained from v1 was that the performance of the p2p microservice did not meet our standards for performance. The p2p is effectively the “plumbing” of the network and can seriously bottleneck performance, so after conducting an in depth retrospective to understand what went wrong in our process that led to this result, we decided we had to go back to the drawing board and totally rebuild the p2p microservice from scratch.
The new p2p is now much smaller, much easier to add features to, and more feature-rich with checkpointing and sophisticated error handling that will increase the stability of the network. Most importantly the new p2p is already faster than the old.
As you can see, Koinos has evolved so much since v1. V1 allowed us to test the Koinos Blockchain Framework and validate whether it really could serve as a new foundation for a truly decentralized and highly accessible future filled with rapidly evolving and frictionless blockchains. We now know that it can.
V2 of the testnet is the next stage in the evolution of Koinos. With its new p2p, Protobufs, Fizzy, the contract development toolkit, and advanced CLI now in place, Koinos is ready to evolve into its ultimate form: the Koinos mainnet.
If you'd like to run fee-less smart contracts on Koinos, go here to learn how to acquire the necessary tKOIN
Visit koinos.io to learn more about Koinos
Visit koinos.group if you're interested in exploring blockchain integration
(Disclaimer: The author is the CEO at Koinos)