March 30, 2015

Smart contracts are a centralising force - exactly the opposite effect to the one you hoped for?

@gendal writes on smart contracts and as usual his words are prophetic and dangerous:

Bitcoin as a currency might be to miss the point

For me, it is a mistake to think about Bitcoin solely as a currency. Because the Bitcoin currency system is a masterclass in mirage: underneath the hood, it's a fascinating smart contract platform.

Or, as I said at the Financial Services Club, every time you make a Bitcoin payment, you're actually asking over 6000 computers around the world to run a small computer program for you... and your only task is to make sure that the computer program returns "TRUE". Within the Bitcoin community, this is well-known, of course. Indeed, the work done by Mike Hearn and others to document the platform's capabilities has been around for years. But I find most people in the broader debate are unaware that the platform is pretty much built on this capability -- it's not an add-on.

He then goes on to describe the smart contract within the Bitcoin system as two programs: one of which comes from the past, and the other of which is your proving program to say you can get access. Out of this we build payments: each new program sets up an unspent transaction output for the next program, run by your recipient, to prove she is a recipient and can further send the funds.

Makes sense? Do not be afraid to say it is a bit tricky, and this is the theme I'm developing on. Have a read of @gendal's description and see if you're any the wiser.

Now, I have always eschewed smart contracts because I'm a-feared of their potency "But notice how powerful this is... because the other thing you do is..." and he goes on:

So what does this have to do with smart contracts? The key is that the model I outlined above is quite generic. The programming language is (just about) powerful enough to implement some interesting business logic that goes beyond "Richard paying money to Bob". For example, you can write a program that will only return "TRUE" if you provide proof that you know the private key to multiple bitcoin addresses. This is a way to model "a majority of Board Directors must jointly sign before these funds can be spent", perhaps. The Bitcoin "contracts" wiki page goes into far more depth.

What has got the Bitcoin community so excited is that these smart contracts are *really powerful*. This has led to several rather perverse and contradictory effects which I'll try and list out:

  • Firstly, geeks have gone into the smart contracts with expectations of writing very powerful things. Mike Hearn for example has gone for crowd-funding in smart contracts, a business line I heartily approve of (since 1997)!
  • However, in contrast to the hype we've only really seen a very small puff of a possibility: the multisig. Not the explosion of possibilities that the hype predicts.
  • Perhaps as a response to this Ethereum and others are building the blockchains to run smart contracts in the full vision as promised.
  • Now let me drift along here a bit. Smart contracts are like programming, and programming is difficult. So much so that we typically send kids off to university to study the stuff for 4 years before letting them loose on small parts of commercial systems.
  • This time, we've got "programming" added to "money". Indeed I call them state machines with money . Double trouble - so we can imagine that this is also going to become a very specialised and tricky area, and it was this combination of explosive elements (including the net, crypto, accounting, etc) that caused the 1990s oldtimers to coin the phrase financial cryptography.
  • Now's the time to include the link to the team that writes space shuttle software, because when things go wrong in this area the consequences can be devastating.

My point here isn't that you the Bitcoin geek will find it beyond you. Actually more subtle than this: you will find that you actually do write a smart contract, and it's a lot of fun.

But, others do too. And others do better, as a consequence of the hollywood/star effect, or the grass is always greener. So, you'll be overtaken, and if you're not careful, you lose as well. Money.

This all leads to what the economists call economies of scale . Which is to say that assuming smart contracts are about to take off, we are actually not looking at an empowering technology that returns finance to the people, but quite the reverse: an arms race where the corporation that can muster the most human capital to write these complicated things will dominate.

Or, the government.

Smart contracts are a centralising force, not a decentralising force. Once they get going, they may be unstoppable. Yes you can write your own, but in the same way as you can write your own operating system. Hell, Linus did it, right? But that's part of the point, the only reason you know his name is because he actually succeeded and the other 10000 people who tried this in the 1980s are forgotten.

So in contrast to the normal libertarian rhetoric around self-empowerment, the people's finance, up against the government, what are we likely to see?

As systems start to take off, smart operators will collect groups of programmers and collect their combined effort into frameworks. Which they will sell to customers. It takes capital to do that, so VCs take note of this play, and recall that my day rate is not exorbitant.

These groups will compete and combine .. until we end up with the larger group that can do it all. Is this a market of naturally 4 players (like banks, mobile, accounting) or naturally one player (guilds, landline, governments) ? I don't know yet, but watch for the IPOs.

The libertarians and geeks will rise up and say "open source!" It will be open and empowered and free. Shrug. Have a look at SSL. It's open source, but it is totally and utterly controlled by a few huge corporations: The browsers, the CAs, the Redhats and Akamai's of the world. That's because there are such economies of scale that it takes real capital to bring together the elements to control and build these systems end-to-end. And these companies mob the committees and RFCs and make sure their apple cart is not upset.

Complexity it turns out is not only the enemy of security, it's the enemy of individual empowerment, freedom to contract and all that.

What to do about this? I've written before about the problem of funding the developers in open source projects. It may be that there is still room to "do smart contracts right." In this sense I'm envisaging something like the Blockstream play, which is a company that has collected many of the Bitcoin experts, but it has been financed explicitly by Reid Hoffman on the basis that "we have to do it right, to preserve the commons." This stands in contrast to the efforts of Ethereum and others that are building their platforms as without the limitations of the bitcoin network and without their philosophical guidance: weaponised smart contracts, ready to go.

Maybe there is a play like that which is possible for smart contracts? I don't know. But I do know that the future starts with understanding the forces pushing on the present, and the smart contract does not represent decentralisation but instead will lead to massive centralisation of programming power.

In this sense it's like every other great enabling technology: gunpowder led to cannons, steam led to railroads to WWI, the internet led to cyberwarfare, all stories of centralisation. What can we do to keep smart contracts from not turning into a future disaster against us all?

Posted by iang at March 30, 2015 08:12 AM
Comments

The problem with your argument is that it neglects the progenitor of smart contracts, strong attribution. The ability for individuals to opt into irrevocable cryptographically strong reputation systems is what transforms a smart contract system from being merely a distributed system to a decentralized system.

Posted by: A. F. Dudley at March 30, 2015 09:57 AM
Post a comment









Remember personal info?






Hit preview to see your comment as it would be displayed.