Komodo Platform: Why Assetchains?
Part 01
Komodo Platform, with its unique multi-chain architecture, allows for the creation of an unlimited number of independent blockchains. Traditionally, the Komodo team has called independent blockchains launched with Komodo “Assetchains.” However, I’ve recently noticed many people refer to Assetchains as “Sidechains” in public discussions and sometimes in public articles/posts/videos.
To prevent this confusion of terminology, let’s clear up what exactly Assetchains means from a regular user’s point of view and a bit of from a technical mindset as well. To get a better understanding, let’s begin by covering a bit of a history on how Assetchains came into existence in the first place.
DISCLAIMER: All the views, opinions, and thoughts shared in this post are mine alone. It contains a version of SuperNET and Komodo Platform history from my point of view as I witnessed and experienced.
The Origins of Assetchains
When talking about the beginnings of Komodo’s technology, it is impossible to not talk about NXT Asset Exchange [1, 2]. I think most of the old Komodo community members are very grateful to NXT for being the starting point for Komodo Platform’s journey. At least I am.
The roots of the Assetchains idea and the need to create them all came from the developments made around MultiGateway, the NXT Asset Exchange [0, 0.1, 1, 2, 3, 4, 5, first multigateway alpha release]. For short, it’s simply called MGW.
MGW is the technology that let users trade coins from external blockchains on NXT’s decentralized exchange via proxy tokens issued by the SuperNET project. MGW was the gateway for other cryptocurrencies to get in and out of the NXT ecosystem. Traders could use MGW to trade crypto in a blockchain-based DEX. To exit MGW, traders could simply redeem the proxy tokens like SuperBTC/SuperLTC/SuperDOGE, etc. for the original coins at a 1:1 ratio.
MultiGateway earned fees for providing this DEX service and these fees were distributed as dividends to those who held NXT Assets issued on the NXT blockchain.
It became a very healthy ecosystem for traders and an absolutely heavenly match for NXT and SuperNET MultiGateway.
But exactly like Ethereum’s ERC20 [1, 2, 3] tokens all these NXT assets were totally dependent on NXT blockchain. If you wanted to send an asset from one address to another, it would have cost you the NXT transaction fee, as expected. NXT worked just like ETH works as Gas for ERC20 tokens on Ethereum.
jl777’s Declaration of Independence — Cross-chain Multi-Blockchain Assets
In early 2016, James (jl777) Lee announced an independence of Assets/colored-coins (example NXT Assets, or ERC20) from dependency on any single blockchain. I myself have witnessed this whole thing come to fruition, as I have been following, testing, and participating in development of SuperNET to Komodo Platform since 2014.
In my opinion, no person could have come to this stage simply by planing it through an initial design. It was a result of a series of challenging situations that eventually lead to the creation of Assetchains.
I remember James approaching Bitcoin community developers on bitcointalk forum (and github?? don’t remember exactly) and having discussions about this technology. Mostly, if you were a new developer, you were made to feel rather unwelcome. Check the bitcointalk profile of jl777 and read old posts to see for yourself [1, 2, 3, 4, 5, 6].
Then I saw James doing development work around NXT project and building a decentralized exchange for the community. The result was a working SuperNET MultiGateway Asset Exchange. It was an independent code written in C language which used the NXT blockchain API and managed NXT Assets as proxy tokens, which were issued on the NXT Asset Exchange. I don’t have the data, but it is said that MGW increased NXT Asset Exchange usage a lot, driving most of the NXT Assets traded on NXT blockchain using SuperNET assets — SuperBTC, SuperLTC, SuperDOGE, etc.
The MGW technology was dependent on NXT. In particular, MGW relied on the NXT blockchain’s RPC API.
There were incidents where NXT blockchain developers updated the protocol and also made revisions to its API. The API wasn’t backward compatible [1, 2, 3, 4, 5, 6, 7], and the NXT Dev team didn’t give the SuperNET Dev team notification of the API changes with enough time to make all the necessary adjustments. The whole system was upgrading to Ardor with a different fee structure [1, 2, 3, 4] and a lot of different changes to the underlying architecture of NXT blockchain.
This upgrade wasn’t compatible with the core code maintenance of MultiGateway. So, it was concluded that the SuperNET MultiGateway DEX would not be sustainable after the NXT update had been made.
While the Ardor update was still approximately a year or so away, the best option was to move away from NXT and build the SuperNET technology on an independent blockchain that was controlled exclusively by the SuperNET team and community.
At that time, it was BitcoinDark [1, 2, 3] a privacy-focused, Proof of Stake (PoS) cryptocurrency originally developed by the developer btcddev [1, 2, 3] and maintained by other developers like jl777, Azeh, and Torrn.
It was this entire series of events that lead to the bitcointalk post in which James “jl7777” Lee declared the independence of assets from any single blockchain.
The reason for the declaration, in my view, is that a developer — jl777 — got fed up with the control and governance decisions being made by the base blockchain project (NXT) without taking a dedicated developer’s project into consideration. After all, James’s SuperNET MultiGateway project brought a great deal of value to NXT’s primary feature, the NXT Asset Exchange.
After all of these complex situations were put in the path of the SuperNET, it became clear to the SuperNET Dev team that all of these issues could be avoided if they could gain full control of the project and its governance. This moment surely must have felt like a hostile environment not just for jl777, but for many supporting developers and SuperNET community members as well.
Idea of Independent Blockchains
If you read James’s declaration of independence post, you’ll see that it mentions the absolute independence of issued assets from any blockchain. It calls for a class of totally portable assets which can change the blockchain to which they are hosted at any given time — Passport Assets, as they were referred to in general discussions back then.
For instance, if you have assets on NXT blockchain, but you don’t wish to use NXT blockchain anymore, you move your assets to Ethereum, or maybe Komodo, or Waves, Bitshares, Lisk, or maybe even Bitcoin. It’s about giving the choice to end users where they want to keep their assets. Giving them total independence of ownership and total control of their assets.
The technology discussed in that bitcointalk forum thread eventually lead to something slightly different than what was stated there. But, in my opinion, it was an even better system that became one of the most crucial parts of the Komodo Platform Ecosystem: Assetchains.
Side Note: This idea of totally Independent Multi-Blockchain Token system was later picked by projects like Pantos, which is being advised by jl777.
Birth of Assetchains
James was learning and creating an innovative technology while developing SuperNET. I saw him pick up on Blockchain technology’s inner workings very quickly and he started building his own version of Bitcoin code from scratch [1, 2, 3, 4, 5] in his/her favorite programming language C language.
It is said that the best way to learn something new in technology is by breaking it apart and rebuilding it again yourself. And that’s exactly I witnessed with James.
He created the C codebase of a totally independent Bitcoin node which could act like another Bitcoin client node on the bitcoin network. And while developing this codebase he figured a lot of things (eg. kv777, Jumblr, PAX, RAMChains, etc. Will elaborate on these some other time. For now, explore the NXT forum if want to know more about them.)
James realized he could create a better version of Bitcoin or just improve Bitcoin itself. The ideal thing would have been to push these innovative solutions back to Bitcoin, but alas the unfriendly Bitcoin core developers were the issue.
The ideas like timestamp server, multiple x speedy transactions, atomic swaps development all evolved during this time. You can find a dedicated, respected space he got with other Bitcoin forums like bitco.in forum under Bitcoin Protocol named “Iguana”.
The idea of Timestamp Server later evolved to delayed Proof of Work (dPoW), and atomic swaps evolved more solid from the original version of InstantDEX [1, 2, 3, video] to BarterDEX [1, 2, 3, 4, 5, video] with constant testing and improvements.
When Komodo Platform’s Notary Nodes were first built/setup, I remember this system requiring Bitcoin and Komodo daemon running on the machine to do the notarization for dPoW to work. When James was developing this technology, he first finished the Komodo dPoW feature and then added the Assetchains feature later. At one point in time, James mentioned that he first moved the code that created new runtime forks of a blockchain to a clone of Bitcoin Unlimited fork’s codebase. Later, he moved this Assetchain-creating-code to “Iguana” daemon, which controlled the Notary Nodes process. After that, the code was moved once again to the Komodo daemon for the better architecture, dependability, and maintenance.
The Assetchains are a Runtime fork of Komodo.
This phrase must be confusing to many people out there. You must have heard of the blockchain fork, a source code fork, but not a “Runtime fork.”
A runtime fork means that the source code of the executable binary remains same, it’s just that the execution parameters are changed when you execute this binary and it creates its very own independent blockchain out of the box.
- It does not require Komodo blockchain.
- It does not issue a token on Komodo blockchain.
- It does not create another blockchain that somehow depends on or links to the Komodo blockchain.
- It does not require sending KMD coins to keep it running.
- It doesn’t require any of the bullshit that other blockchain platforms have been enforcing on the token holders. NONE AT ALL! Absolute freedom to govern your very own blockchain project!
Just by issuing the custom command of komodod
binary , you can create a totally independent blockchain! Read that bold paragraph and bullet points again if you still feel unclear.
It is HUGE development progress and the most important feature of Komodo Platform architecture.
Prior to this innovation, in order to create a blockchain, a developer would need to: make a fork/copy of the source code of an existing project (example BTC); make the changes to their own copy/fork of that source code with different settings and consensus; provide this copy to the public so they can either compile this new forked source code themselves to run this new project or just trust the developer’s code and accept the pre-compiled binaries of the blockchain project.
I think you get the idea of the hardship for a developer and the risk the end users would have had to face on trusting any new project in the blockchain industry.
None of the stuff mentioned in previous paragraph was required after the innovation of Assetchains. Just a single command with different parameters could spawn a new independent blockchain. Like:
./komodod -ac_name=EXAMPLECHAIN -ac_supply=1000 -gen -addnode=<PUBLIC_IP_OF_SERVER_HERE>
Just this single command. Even a child can create a new blockchain with some basic training on how to type on a keyboard.
The blockchain created with such command is the copy of komodod
having all the feature of Komodo, like same mining algorithm, but with different name, and different total supply.
The assetchain created this way would be absolutely as independent as Litcoin (LTC) is to Bitcoin (BTC), or say Ethereum (ETH) is to Bitcoin (BTC). There is no need to pay the transaction fee in Komodo, as the transaction fees are paid in the native token/coin which it is running as. (Example: EXAMPLECHAIN). If, for example, you send 1 EXAMPLECHAIN COIN the transaction fee would cost the default of 0.0001 EXAMPLECHAIN COIN, not KMD coins.
This runtime fork of Komodo is an easy way to create new blockchain. As the new chain is an exact copy of Komodo source code, it uses the “Equihash” Proof of Work consensus algorithm. However, even if you get a decent share of Equihash PoW hash rate securing your blockchain, it might still be vulnerable to 51% Sybil attacks. The reality is that all new Proof of Work (PoW) blockchains face huge security issues. This is where Komodo has yet another solution — the delayed Proof of Work (dPoW) [1, 2] security mechanism.
With Assetchains, dPoW security integration support comes built-in, out of the box. It just needs to be added to the community-elected 64 Notary Nodes along with notarization fee payments of a few hundred of the new chain’s native tokens + a few hundred KMD coins.
dPoW provides protection by writing the block hashes of this assetchain onto the KMD chain, and then putting block hashes from the KMD chain onto the BTC ledger. So, indirectly via Komodo, all the assetchains are protected from any 51% Sybil attacks.
If you understand the previous few paragraphs, it should now be much clearer to you how Assetchains are totally independent and how they are 51% attack resistant.
These 2 main features of the Komodo Platform (Assetchains + dPoW) is the heart of the architecture design of Komodo Platform.
Assetchains Empowers Smart Contract Application Developers
Assetchains leave no power to Komodo Platform developers to mess with your blockchain project, despite the fact that the chain was launched with Komodo’s tech. This prevents the issues like those the ones Komodo faced back in the NXT days: a lack of backwards API compatibility, transaction fees changes, and totally new base architecture which was unhealthy for SuperNET project.
This very same thing CAN HAPPEN to the major Smart Contract platforms like Ethereum, too! I have witnessed this happen already with NXT and I will not be surprised to see this exact thing happen on Ethereum, or ANY blockchain platform which makes your project dependent on its own main blockchain by making third-party projects run on-chain tokens and smart contracts.
The same fate awaits all cryptocurrency blockchain projects who are either influenced by or are following the same architecture as Ethereum. From a technology architecture point of view, they are all in the same boat as Ethereum — no matter whether it’s EOS, Cardano, Ethereum Classic, Waves, NXT, Ardor, NEM, NEO, Lisk, Bitshares, or Blockstream’s Sidechains!
I bet there are hundreds more similar blockchain projects who force developers to make their smart contract’s tokens either on top of or dependant upon their main parent chain.
This blockchain base architecture model leads to congestion problems, such as high transaction fees and extremely slow transaction times, which we’ve all witnessed with the CryptoKitties project [1, 2, 3, 4] on Ethereum blockchain, which made the network slow as hell.
Then there are solutions like Sharding [1, 2] which developers are waiting to be available on the Ethereum network but don’t know when they will be released. And all of this, just to manage other smart contract application data which other decentralized applications (dApp) pushed to Ethereum.
Ethereum is exactly a sharing economy based decentralized App development platform, so far I understand. It’s like riding a bus which is being over-crowded by so many other developer’s apps that your own application must pay a higher fee just to continue to ride the bus because it the demand of bus-riding has risen since you got on. You have to comply with the rules of supply and demand, meaning your smart dApps are slower and you pay more fees when other people want to use the same platform.
With such a messy way of creating smart contracts, I do not understand why any developer in his/her right mind wouldn’t look for a better blockchain architecture upon which to build their project. If they did so, they would certainly end up with Komodo Platform.
In this post, I have only mentioned the two primary aspects of comparison between Komodo Platform’s architecture in terms of tokens/cryptocurrency issuance, management & governance, and its independence from the main blockchain. There’s more on Komodo Platform which is surprisingly 2018 level of mind-blowing stuff, as compared to other platforms that still feel stuck in the year 2010 or 2011.
Komodo platform has been done with this tech since 2014 and moved on to next generation development, while others seem like they’re still hung up on problems from the early 2010s.
Komodo Platform, from the base architecture point of view, has made other smart contract platforms like Ethereum or any other platform with a similar architecture, completely obsolete.
Opposite of Assetchains: Sidechains
The following screenshot contains a quick answer to what are sidechains:
On a quick read of this explanation of sidechains, you can get easily confused and perhaps think that they have similar properties of Assetchain. Here are the differences:
- An Assetchain does NOT require Komodo. In any transaction. It can live its own independent life without ever needing to get dPoW security.
- Unlike Sidechains, Assetchains have NO concept of “main chain” or “parent chain,” since an Assetchains always has “a choice” whether or not to get Bitcoin level security!
- An Assetchain does not require spending any KMD to create a new Sidechain, and then expect the amount to be sent back to KMD.
Conclusion
This is article is the first in a series. As I have more content to write about assetchains, I only covered the reason of why assetchains exist, how the idea was born and a brief history of assetchains, and then finished with a quick comparison of assetchains with other smart blockchain platforms.
In coming articles, I’ll cover the evolution of Assetchains, the far-future expectations as per my point of view, and how this whole ecosystem can flourish from the great blockchain architecture design that James (jl777) Lee has developed.
Note: You will find many links in “[]”. Follow those to read more on the references I mentioned. Since there were many links to include, I just used the brackets.
Hope you find this post informative. Please leave a comment, share this post with others and leave a feedback no matter positive or negative.
Thank you for taking time to read such long post.
Satinder