Deconstructing “Code Is Law” and Layer 2 “Smart Contracts”

Layer 2 “smart” contracts typically spend participant’s money to an N of N multisig controlled by all participants, and/or an arbiter. To be a bit sardonic, in this architecture you get to use cool, trendy “smart contracts” up until someone honest thinks something went wrong, or someone dishonest thinks that they can take advantage of you, and at that point you are back to human negotiation and the judicial system. For example, given a 2 party contract based on top of 2-of-2 multisig, let us presume that the contract execution awards the money to party A. Party B can simply choose to not acknowledge that and refuse to sign the spend transaction. At this point the only option is a negotiation between A and B. Any such negotiation ultimately comes down to who needs the money more verses who is willing to let it sit, potentially indefinitely, in the multisig address. Ultimately, A may be able to sue B in an attempt to use the judicial system to force B to sign the transaction. A similar exploit is possible with an arbiter (based on 2 of 3 multisig, say) by compromising the arbiter. Sounds a lot like paper contracts, right?

Weren’t “smart” contracts supposed to be more than that?

Yes, the original smart contract concept is better described as “trustless, uninterruptible contracts”. This is the crux of smart contracts. The fundamental difference between this technology and current pen-and-paper contracts with manual at-will execution is that the contract is executed as stated, automatically and unstoppably, no matter what. Smart contracts are therefore very different than traditional contracts, and have different advantages and disadvantages.

This is the formulation that I will refer to for the rest of this document when using the term “smart contract”, and I will refer to architectures that record traditionally executed contracts on the blockchain as “blockchain settled contracts”.

If you believe that contracts are generally more correct than wrong, then you can see how one could argue that in general it is better to use “trustless, uninterruptible contracts” and allow parties to negotiate fix-ups for any contractual errors afterwards than to allow either party to stop executing the contract whenever they want to, forcing litigation and a judge that determines what to do.

Code Is Law

But in cases where there jurisdiction is unclear, where the contract value is too small to justify the expense of a suit, where parties are not identified, or where there is no clarifying “human” agreement, the smart contract’s content effectively defines and guarantees the final outcome because the difficulty of bringing or winning a suit is overwhelming.

Uses For Smart Contracts?

Smart contracts may fill the niche described by this “danger checklist”, because it is not possible for the other party to interrupt the contract’s execution.

Uses for Blockchain settled Contracts?

To round out the negatives, smart contracts may be not applicable or provide only marginal benefits in many situations that already require trust. For example, a smart contract for widgets may pay based on some signed statement by the delivery service, allowing the sender to trigger payment by mailing an empty box.

Today, when people think of contracts, they typically think of agreements that require trust. Payment for service. Payment for digital goods. Agreement to deliver N widgets on some schedule. Smart contracts cannot determine whether the goods were delivered or the service completed. So for the majority of contracts blockchain settled contracts may be the only applicable technology for what we see as contracts today.

Hybrid Contracts: Using Smart Contracts as a better base for Blockchain Settled Contracts

You can see movement to hybrid contracts in the token community. Originally, tokens were controlled entirely by smart contracts, but various exploits and hacks have convinced designers to give powers, like the ability to force-upgrade the token to a new version, to the underwriter. But I believe that in some cases too much power is being given away. After a few exploits by the underwriter (or criminals compromising the underwriter’s authority) we may find token contracts moving to a middle ground that carefully offers very specific powers to the underwriter.

Finally hybrid contracts can be used to minimize and isolate trust. This is the goal of DATASIGVERIFY (implemented as OP_CHECKDATASIG in BCH). A hybrid contract could be written to pay some escrowed money to person Alice or Bob, based on a signed statement (using CDS) by Carol. Unlike traditional escrow, Carol cannot in any way access the money. She must conspire with Alice or Bob. But in general, Carol is expected to run an “expert service” (building inspection, for example) where a false statement will undermine her future business and potentially lead to prison.

So smart contracts are no panacea. Like any new technology, they will be useful in some situations and not in others. Their most common use may be underpinning clauses in hybrid contracts, but that is still an incredible innovation. But if your so-called “smart contract” system is really a blockchain settled contract. If it does not have the property of guaranteed trustless execution, then it is not novel. It is not fundamentally different than traditional contracts, and is more similar to placing an agreement written in english into an OP_RETURN than it is to trustless, uninterruptable smart contracts. It therefore may not be useful in elevated-risk situations, and should be valued by investors accordingly. And finally, shame on you for exploiting buzzwords and creating confusion by disguising the same old thing in the clothes of a genuinely novel and interesting technology.