Smart Contracts

Hi Everyone,

This week markets have been dropping from $630/BTC to $595/BTC.  A sharp selloff on Thursday was subsequently followed by two smaller selloffs.

In the news this week:
  • Ethereum launches their presale where you can buy 2000 Ether per BTC: https://www.ethereum.org.  Price goes up in 10 days.
  • BitsharesX, a cryptocurrency developed to be used with DACs (Decentralized Autonomous Corporations), starts trading on select altcoin exchanges (bter and BTC38): http://bit.ly/1rlstMN.  It is currently the 8th largest crypto with a market cap of $18m.
  • Ripple introduces their smart contract project, Codius: http://bit.ly/1rH2aEo.
Given the news this week, let's talk about smart contracts.  A smart contract is essentially a computer program which mediates between two (or multiple) parties based on predetermined encoded rules.  It essentially replaces the function of lawyers and courts for dispute mediation.  It is also often self-enforcing.  The simplest example of a smart contract would be a vending machine.  You put money into the vending machine with the understanding that a Coke will come out.  The vending machine functions as a smart contract between you and the owner.

So what about Ethereum?  Ethereum is a protocol on which smart contracts can be designed and executed.  These smart contracts also have the property of not requiring trust between the parties mediated by the contract (e.g. if a contract specifies the rules where I can hold your data for you and you pay me for it (decentralized Dropbox style), then so long as I can produce proof-of-storing-your-data to the contract machine, I will get paid even if neither of us trust each other or even know each other).  However, there are certain types of contract which require external information which requires trust of some type of oracle (e.g. if I bet you through a contract that the BTCUSD price is going to go up, the contract machine must serve also as an oracle to figure out what the price of BTCUSD actually is).  Trust is therefore required in the process by which the oracle decides on the state of the outside world.  For example, if the oracle checks the BTCUSD price through Bitstamp's and Btc-e's APIs, as party to the contract you have to trust that Bitstamp and BTC-e's API's are working properly, the oracle has the right certs for Bitstamp and BTC-e, and that there are proper failover procedures for when Bitstamp and BTC-e's APIs are formatted differently from before, temporarily down, or completely defunct.  Also how does the oracle handle bad/glitched data (e.g. Bitstamp shows $0/BTC because of some bug)?  Where oracles are involved, the situation can get messy.  Still in today's world, there are many companies and services we choose to trust for deciding on the state of things like our bank serving as an oracle on the amount of money we have in our account.  If Ethereum works out, there will likely be many contracts essentially doing the same thing, competing with each other for business.  There will likely be two opposite effects. First, an oracle with high trust would be more valuable than an oracle with low trust or a short history of correctly deciding on states of the world.  Over time, those contracts (which require oracles) with strong network effects will tend towards natural monopolies as the highest trust oracle squeezes out its clones.  The second effect is that newer and better (seen as more fair) oracles will be created to mediate the same conceptual contract.  If the newer and fairer oracles are significantly better than the older oracles, they will gain market share.  If the newer and fairer oracles are only marginally better than the older one(s), then the network effect dominates and the older oracle(s) stays a monopoly (oligopoly).  But who knows how things play out.  Ethereum is a highly speculative play at a new and more decentralized world.

Bitshares, on the other hand, wants to do away with oracles for outside world state verification. It was born out of the idea, can we have a USDBTC, gold, oil, exchange without touching fiat/gold/oil.  They believe that a bitAsset like USDBTS will be pegged to the real USDBTS rate based on behavioral confirmation of traders even without the virtual asset being redeemable for the real one (i.e. bitAsset USDBTS cannot be redeemed for real USD).  The logic is very circular but I can't say for sure that it won't work.  After all, most gold ETFs cannot be redeemed for gold.  But all things considered, I'm leaning toward this not working correctly.  On a side note, Bitshares uses Delegated Proof of Stake for it's consensus mechanism.  Everyone uses their stake to vote for delegates who they entrust their staking rights to.  These delegates then have staking power equal to the total stake delegated to them and use it to decide which transactions to include in the next block and which transactions are legitimate if there are double-spend conflicts. Individuals can, at anytime, choose a different delegate to represent them.  I'm not sure this solves the Nothing-at-Stake problem (might make it worse).  Bitshares also uses TITAN (Transfer Invisibly To Any Name) which is basically just stealth addresses bound to a naming registrar (e.g. you can send to Bob instead of 13w5sdkdgs42sSk4EsfdeE).

Cheers,
Kevin & Team Buttercoin
Bitcoin Trading Made Easy | Buttercoin.com 

Buttercoin currently in Private Beta, if you'd like access right now apply here: http://bit.ly/1kSgHZg.