Smart contracts were supposed to revolutionize finance. So far, however, they have proven adept mainly at helping people lose their money.
The digital contracts make use of blockchain technology to get around trusted intermediaries like banks. Let’s say you want to send your landlord $2,000 every month. You can go to your bank, set up a recurring payment and rely on the inherently flawed humans at the bank to follow through. Or you can publish a bit of software on the internet that instructs a global network of computers to make the transfer automatically, according to whatever conditions you stipulate. In principle, you can do the same with all kinds of agreements, from insurance to derivatives.
Problem is, one platform designed to host such contracts — known as Ethereum — has so far turned out to be a lot less trustworthy than a bank. Consider what happened with so-called multi-signature wallets, which are supposed to open only with the permission of two or more individuals — like a joint bank account. Last week, more than $150 million worth of ether, the platform’s currency, ended up stuck in the wallets — forever — after a botched hacking attempt. Only a few months earlier, a bug in an earlier version of the same wallet allowed hackers to run off with $32 million. Shortly before that, a Canadian exchange accidentally trapped $13 million in its own broken smart contract.
Such issues are difficult to resolve thanks to a fundamental feature of the blockchain: All changes are immutable, which makes them tamper-resistant but also means that they can’t be reversed if something goes awry. Although there’s an ongoing proposal to recompense users who lost money through self-inflicted error, it has remained open for more than a year because people keep chiming in with new stories of how they lost money in yet another unanticipated way.
It shouldn’t be so difficult to create a smart contract that doesn’t end in disaster. A multi-signature wallet, for example, is about the simplest application you can build. In this case, however, the creators complicated the design to reduce transaction fees: All the wallets relied on a single, centralized bit of code to do their job, instead of having each wallet owner control an independent copy of the software. When a hacker destroyed that bit of code, hundreds of wallets stopped working, trapping the users’ funds inside.