What can be done with tokens?

Back in 2014 when NXT added support for tokens, it was brand new and unexplored territory. The ability to issue tokens and then assign whatever arbitrary value was quite a new functionality, but all of the initial usages were fully centralized around the token issuer. Generally speaking, this is a problem with most tokens as if it is a centralized token, then the failure of the issuer to honor the commitments made for the token and, well, the token would become worthless.

Its not like the token is running a consensus algorithm and protected by hashrate or stake directly. In fact, as purely a construct of the blockchain it runs on, it turns out tokens are totally at the mercy of that chain. If host chain decides to hardfork and totally change the transaction fees, or functionality, the token issuers have ZERO voice in the matter. A significant problem for any blockchain whose total value is less than the sum of the value of all the tokens issued on it, is that the game theory makes it likely that the host chain will be changing its consensus rules to transfer value from the tokens to the host chain coin. There is nothing the token issuers can do to stop this.

For tokens that are just markers for ownership that are not really used for anything else, then transaction fees are rare enough, so it is probably ok to have such centralized ownership tokens. However for tokens that are actively used, there is always a risk that the rules of usage can be changed at any time.

Given these caveats, which I learned painfully by experiencing the hardfork attack against my tokens, I was motivated to create the komodo ecosystem where tokens can be issued on independent chains but preferably just the independent chain can be used directly. I also designed it to not have a platform tax, nor any vendor lockin. Basically a platform that I wish existed, but didnt. So I had to create it.

Anyway, back to 2014…

I was thinking about what could be done with tokens that made is less centralized, or even fully decentralized. Keep in mind I had just started in crypto at the end of 2013, so I had much less experience back then. The best I came up with was to tokenize BTC (and other bitcoin protocol coins) and make an automated multisig gateway. MGW. I believe it was the first such automated gateway that bound deposited BTC to onchain tokens. That allowed transferring, buying and selling the token as a 1:1 proxy for the actual BTC. Whenever desired, the BTC could be redeemed by sending in the token to the issuer.

And it worked!

We had a distributed control over the BTC via the multisig. Once it was onchain, then all operations were fully decentralized. However, the weakness it had was that the control over the tokens wasnt blockchain enforced. Anyway, I had discovered cross chain atomic swaps and was off to perfecting barterDEX and didnt revisit a proxy token based system until recently.

Over the years, it seems bitshares has become an actively used proxy token based DEX, though most of the tokens appear to be centrally issued and not even protected by multisig. With the experience I had gained over the years, I designed a gateways CC that improved upon the MGW in several ways.

The most important is that the token issuing is fully blockchain enforced. Also, the process on the deposit side is transactionalized and under the control of the user. Automated code extracts the required merkleproofs to prove the deposit was made on the external chain and the multisig signers are posting merkleroot data via oracles CC.

This allows the gateways CC to fully validate that the deposit was done and also that it hasnt already been credited. It does trust require that valid merkleroot data is in the oracles CC, but with the multisig signers posting it, they are already safekeeping the external coins, so the trust profile required isnt increased.

Now we can have tokenized BTC onchain, that is totally under the control of the user. In MGW, even for deposits, one of the multisig nodes had to process the deposit. This decentralizing of the deposit processing means that there wont be any need to wonder when the deposit will be processed by whatever node, as the user node is the one that submits the claim transaction that gets the tokens 1:1 for the deposited BTC. And any bitcoin protocol coin can be supported.

On withdraw, we finally have a distributed dependency to process the redeem, but by utilizing 7 of the top 13 komodo notary nodes, we just need to rely on them to run the dapp that automatically posts the merkle roots and processes the multisig withdraw. I think at some point, even the multisig can be fully decentralized, but it would require a way for the blockchain to hold the privkey in a way that is immune to exploits…. I have some ideas on this, but since the industry appears to be accepting centralized proxy tokens, lets get sufficient usage of gateways CC before advancing the state of the art again.