Smart contracts and token economy without Blockchains
or: A token (even smart one) needs a blockchain, like a fish needs a bicycle.
Image above: Tokenizing assets on a Blockchain
In this post, I explain why I believe Blockchains are just coincidentally associated with “token economy” and smart contracts, and how in essence they are not their enablers, but actually a hindrance. Then I propose an alternative: a concept of an open, federated smart contract system, that maintains all the benefits traditionally associated with blockchain platforms like Ethereum and can practically support a global scale token-economy, without all the problems inherent to blockchain-based systems.
Inherent impotence of Blockchains
By a Blockchain (capital B) I mean a distributed, p2p system maintaining a self-amendable ledger, typically bundled with some crypto-currency, representing a unit of value in such a system. Bitcoin, Ethereum, etc.
There are many aspects of Blockchain, but I'm going to focus on just one: Blockchain is a database – a purely digital phenomenon and not a material thing. Blockchains can not interact with the world directly. In a sense, one could say that Blockchains are completely oblivious to the world outside of the blockchain itself. The only way to interact with a blockchain is altering its state (according to some rules) and observing its state. Because of this, the Blockchain and data it contains can only ever be a representation of value or any other meaning that people associate with it, and not a value in itself.
Eg. without people believing (and acting on it) that owning some coins on Bitcoin blockchain is valuable, “Bitcoins” are just a bunch of otherwise worthless ones and zeroes on computers all over the world: They can not move rocks, shoot guns, or force anyone to do anything.
As such I would separate the following groups of value represented on blockchains:
- native asset
- purely digital assets
- physical-world asset tokens
Native currency means the currency/asset that powers the given Blockchain. Example. BTC for Bitcoin, Ether for Ethereum. This type of asset is the only asset that is not just a representation of something else outside of blockchain itself. Typically each Blockchain comes with rules of creating and transferring native asset and is able to enforce them internally. Native assets are the only Blockchain assets that do not require the outside world to enforce its ownership, because they actually exist only on the blockchain.
Purely digital assets (eg. digital ownership of game items, digital tacos, reward points), while not being a representation of a physical-world assets, require outside world agreement and enforcement. Eg. a social website could use a Blockchain to transfer and keep a ledger of digital reddit-like karma tokens. But as soon as such social website change their system to ignore the token and eg. use a different one, the digital asset loses the outside world enforcement and becomes meaningless.
Finally, the most interesting case: physical world asset tokens. Examples: a tokenized barrel of oil, tokenized real-estate, tokenized car ownership, etc. Such blockchain assets are purely a digital representation of physical-world assets. And as Blockchains are immaterial and can not “hold” or interact directly with things, there is no escaping the fact that for any such token there has to be a counter-party: a custodian of some sort that will actually hold the real world asset, and promises to respect the state of the asset on the Blockchain. The power over such asset is entirely centralized in the custodian.
For any non-native asset on the Blockchain, there is no way to actually enforce anything about it in the real-world through the blockchain itself. There is no point in talking about censorship resistance or trustlessness. For any gold-backed token on a blockchain, there has to exist a physical-world gold vault somewhere, that can either deny respecting the state of the token on the Blockchain at any point or be forced to do so eg. by a government / court order.
For the token economy it doesn't really matter if eg. Ethereum has hundreds of thousands of nodes or just one node run by one company. If it's PoW or PoS, if it sharded or not. It's all moot anyway, as each token cannot be censorship-resistant or trustless by definition. Instead, it is only as trustworthy as its unavoidable custodian. ICO is only as good as promises of the company behind it, a digital gold ounce is only as good as the vault storing the actual gold.
Image above: All powerful custodian of a tokenized asset
Smart contracts don't require Blockchains
I believe that part of the reason why Ethereum captured imaginations of many people and spawned the countless number of clones is its ability to execute Touring-complete smart contracts operating on digital assets on a decentralized, censorship-resistant, open platform. It made people realize the potential and efficiencies of encoding arbitrary business rules operating on digital assets automatically, in a predictable and verifiable manner.
However, as we've established in the previous part: the decentralized, censorship-resistant part is mostly a fantasy, due to the inability of any Blockchain to actually enforce anything in the real world. And decentralization and censorship resistance were the only reasons why using a blockchain was necessary.
- execute automated, Turing-complete contracts,
- in a transparent, tamper-evident way,
- manipulating digital tokens representing real-life assets
- on an open, standardized platform,
- using accessible, Open Source tools
with no stinking blockchains! Smart contracts and tokens do not require blockchains! I would go as far as to say that blockchains are actually a smoke screen and a hindrance for a practical, world-scale token economy.
The alternative Blockchainless architecture for a token economy
The promised land of Web 3.0 – an ability to transfer value over Internet ... can be just a layer on top of normal Web, and not entirely new stack, just like Web 2.0 is the normal Web.
I propose an alternative architecture, that recognizes the fact that trustlessness and censorship resistance are impossible to achieve for real-world tokenized assets, for reasons explained before. Architecture in which we move the book-keeping of token ownership from the Blockchain to the custodian infrastructure, so that the burden of maintaining infrastructure would be shifted to actual stake and power-holders, leaving behind problems and false pretense associated with Blockchains.
Each custodian of a given token would keep track of ownership on their end by:
- running an instance of a Open Source server software,
- as a part of a bigger Open Source federated network (think Mastodon or eMails servers, but for value-transfer),
- publicly accessible just like any normal web platform,
- identifiable by self-generated cryptographic identity as a digital token custodian,
- exposing a standardized, open, HTTP API,
- allowing registration of cryptographic pseudonymous “accounts” under cryptographic control of their creators,
- allowing registration smart contracts utilizing sandboxed, Touring-complete VM (WebAssembly bytecode),
- which build on top of a set of basic primitives (like atomic swaps, redeemeable vouchers, etc) to build arbitrary, transparent business logic.
- All of that with associated well-known mechanisms minimizing trust and increasing transparency with publicly accessible tamper-evident audit log, verifiable execution and other tamper-resistance measures like Triple-Signed Receipts.
Cross-token (cross-server instance) operations would be achieved through combination of methods like atomic-swaps, generating and exchanging redeemable cryptographic vouchers and so on.
In a sense, this architecture is quite similar to what existing software like OpenTransactions and it's predecessors were aiming at, with the important difference of supporting arbitrary business logic through smart contracts, instead of trying to come up with a limited set of hard-coded operations.
As for UX: end users would use “client-wallets” that would call the standard APIs on multiple instances of respective token servers, triggering contracts, exchanging vouchers, keeping receipts and tamper-evident auto-logs, etc. Similarly, other services and platforms could build on top of a standardized platform like this.
Another way to conceptualize this architecture is a spin on a Fix protocol, but more modern, open-participation, with cryptographic identities, and support for arbitrary smart contract logic.
This architecture takes what is useful from Ethereum world, and implements it as just another protocol on top of Web, without bloat, slowness and craze of Blockchains.
Implementing the vision
In this part, I'll try to describe and estimate the work needed to build such a tool.
First, an initial Open Source implementation would have to be built. A relatively simple REST API web-app, with a redundant db-backed storage, a couple of cryptographic primitives and embedded WebAssembly engine to execute smart-contracts. Nothing too fancy really – much easier task than building an actual Blockchain from scratch, that's for sure.
Coming up with the necessary set of external-effect-operations (think: issue a voucher, credit other identity, etc.) for the smart contracts, to support all sorts of useful applications seems like the hardest part. But as the API like this can be versioned, the first version does not have to be perfect. Future versions can gracefully support older API calls with backward-compatibility, etc. No need for hard forks, flag dates, and consensus debates.
Then it's just tooling and business adoption. Which is the difficult part. The biggest obstacle is that in such a architecture: there's no magic currency that is supposed to make investors rich, no ICO to be had, riches to promise, and people to take money from, so also less reason to capture minds and imagination of uncritical audience.
Feel free to contact me on twitter or send me an email with any feedback. I am especially interested in constructive criticism and potential improvements, and people that would be interested in actually building it.
Thinking more about it, it seems to me that decoupling the custodian and the notary would benefit the system. The job of the notaries would be mostly running the platform, and taking care of security and technical part, while the custodians are going to be just a different type of users, that are focused on handling the physical-world assets and transferring in and out of their digital representation, possibly paying notaries for using their platform to control handling of their token.
Some forms of making switching notaries easy and practical (eg. delegated, signed control over token cryptographic identity), might be a good way to ensure competitiveness and good behavior by notaries.