I got this really nice infographic from blockgeeks. For those of you that are not familiar with smart contracts, it is a contract that automatically executes when the terms of the contract are fulfilled. It is trustless, so you dont need a lawyer or any other third party to verify the transaction because it is run on a decentralized blockchain.
Last week Benjamin, Tenor and I did a whiteboard session around an idea that Tenor has for a blockchain mechanism for communities. I am not going to talk too much about the idea, because hopefully we will build it and the I can write it up along with demo, but it caused us to look at the smart contract landscape.
But why use a blockchain solution in the first place? For me the first is public infrastructure: The idea that you can deploy a program and not worry about the dev ops reminds me of the ORM (object relational mapping) spearheaded by Django and Rails. It hides away a bunch of complexity (in ORM that would be SQL, stored procedures and the like), and allows people to work on business logic and specific solutions rather than tech infrastructure or boilerplate.
The second reason is transparency. Blockchain smart contracts allow anyone to not only see the code, but see how it is executed. It is as if you gave everyone access to your internal databases and log files. Sure this is possible without a blockchain solution, but blockchain gives you a standard way to describe and access this information.
With decentralized smart contract networks, we do away with the dev ops part of tech infrastructure. One issue with this is that money is necessary to deploy and execute smart contracts, which in the case of Ethereum and microtransactions, can be onerous – perhaps more than building your own infrastructure and paying an engineer(s). The second issue is the idea of consensus. How do you know that your contract is executing directly? Are you going to run on a public blockchain or a private blockchain and lose transparency. This final question is not one that we have solved completely, but we have started looking at alternatives to Ethereum in order to execute smart contract affordably.
First up was Codius, built by the folks behind the Ripple, XRP, XSpring, etc. Ethereum has a parameterized approach to smart contracts, you create a solidity contract and pay to deploy it to ethereum and that is it. The currency and the contract are intertwined. Codius is much more open ended. You create a smart contract in an language you like, wrap it in docker and deploy it to a codius host. Anyone can be a codius host, it is sort of like a bitcoin or ethereum mining node for smart contracts. Payments and then made and received through the Interledger protocol that is run on another node (or service). The currency and smart contract in this case is decoupled. It is an interesting alternative to the type of smart contracts initiated by bitcoin or counterparty or Ethereum, and the goal is to keep the transaction costs down in deploying and executing a smart contract.
We are exploring a few other smart contract technologies but this look promising.