BitHalo gets a mention when asked who knows something about smart contracts.
Contracts between parties which are executed automatically are called smart contracts, as the computer decides which party receives the money agreed upon in this contract. While this has its advantages over more traditional means, there are some aspects which can not be executed through smart contracts (yet?).
Disruptive technology has its own parameters. New technology doesn’t have to be better in every single aspect to improve the old technology. New technology usually improves on one front, while it could be worse in other parts.
Car engines are a great example, as some new cars have a lower price, or better efficiency, even though the look might still be the same. On the other hand, it doesn’t travel as far on one gas tank when compared to the previous model.
Bitcoin is not better in every aspect of the technology, as it has its own flaws. Confirmation times are a major problem, compared to other digital payment services such as Paypal, which can technically be labelled as almost instant. Bitcoins have to be stored in a very secure place, as security is a point people need to worry about more.
However, Bitcoin also offers a lot of advantages when being compared to current services and economic models. Bitcoin is far better when it comes to transaction fees, creating accounts is done instantly, just to name a few things.
Smart Contracts are enforceable by machines, and they offer a lot of benefits compared to traditional contacts. Security for example, as you do not need to rely on (un)trustworthy humans to decide on the outcome should an issue arise.
“If I pay for someone to send me something, so a smart contract would guarantee I get my money back! – bad example, as this is an escrow issue, and has nothing to do with smart contracts. Smart contracts does not mean you won’t have to pay if you are not satisfied with the other party’s work.”
Loaning funds to other people is another bad example for smart contracts. Smart contracts lock funds for a certain period of time, but when it comes to lending people money, the funds cannot be locked.
People have to be able to get back through the blocks and makee sure every previous block on the blockchain is valid. By saying that, this also includes validating who received what money and verifying the money was in their account in that time.
Bitcoin is not just a way of sending money from user A to user B, but it has a lot more functionality. For example, money is sent from user A to user B ONLY if a certain set of rules is validated and respected.
Signatures are also a form of equations. Traditional contracts require 1 or multiple signatures. When it comes to escrow, at least three signatures are required. Blockchain transactions could require more signatures in order to validate a transaction.
What about using something like “Lock time”, which means validating a transaction but only after a certain block time? For example, I can only send money to someone when x event takes place. Unfortunately, the Bitcoin blockchain does not allow for external inputs.
Ethereum has found a solution to this, as their scripts offer far more capabilities. Unfortunately, they don’t allow for external inputs either. You cannot have a script which includes a variable for checking something at a certain date in the future.
Oracles can be put in place , whose job is to validate input (kind of like notaries). Unfortunately, oracles cannot be trusted, they could lie, they can be hacked, something can happen to them,… Single oracles are a problem.
Distributed oracles all delivering input to the same transaction, for example, if two out of three oracles agree on something, the transaction will receive the right outcome. An interesting proposal, but Bitcoin’s amount of oracles is limited to 15, which is not enough.
In the real world, getting money back is far less of an issue compared to when it comes to Bitcoin and digital currency. Once you lose Bitcoin, they are pretty much gone. Traditional currency can be retrieved, despite having to wait some time for it to be returned to you.
Multisignature is an improvement compared to how transactions are done traditionally. Granted, there is still a small risk when it comes to using a middleman such as an escrow or an oracle, but there are less risks compared to one-to-one transactions.
Smart contracts and escrow look exactly the same when it comes to architecture. However, escrow involves a human being as a third party, whereas smart contracts verify a set of rules through a computer.
“A mix of human verification and smart contracts is possible, for example when elections take place. Computers decide the result, but it is based on human input.“
Even though the outcome of a transaction can be decided by an oracle or escrow, there could be an issue when they disagree on the outcome. Arbitration on top of smart contracts is possible, by having a lot of people voting on the outcome.
A software (Orisi) has been developed which uses 15 different oracles to decide upon the outcome of a transaction. Orisi is an open-sourced framework which anyone can use.
We at CryptoArticles would like to thank Tomasz Kolinko for this excellent presentation during BTC2B In Brussels. Especially the old school approach of writing things down instead of using a presentation was a nice touch, which we both appreciated immensely!