In practical terms, smart contracts differ from conventional contracts in the following ways:

  • The entire lifecycle of a smart contract, from formulation to execution, occurs online
  • That lifecycle need not at any point involve any entity other than the contracting parties (since, for instance, payment can occur directly from bitcoin wallet to bitcoin wallet)
  • Performance is automated and is carried out by the machine, following its programmed instructions
  • Smart contracts are immutably recorded and programmed on the distributed ledger and cannot be altered. If “rectification” is required, a new contract must be written which reverses or modifies the effects of the previous contract
  • A smart contract can only perform in a situation in which there is an “algorithmically determinable solution”. In other words, there is no room in a smart contract for discretion, reasonableness or judgment: potential outcomes will be binary in form

Smart contracts, therefore, will only be useful for transactions of a certain type. An obvious example of the type of transaction to which smart contracts would be well-suited is the transfer of title to assets. Such transactions often take the form of requiring title to be transferred on the receipt of a certain amount of funds into a particular account, perhaps with the added requirement of verifying the absence of any charges over the asset.17 According to the logic of machines, this is simply an action to be performed on the satisfaction of a given condition or set of conditions: ideal for a self-executing algorithm. Machines are arguably better placed than humans to perform such one-dimensional tasks, since, properly programmed, they are simply unable to refuse to act, to omit a condition or to fail to perform. Smart contracts offer, therefore, the potential for reducing transactions costs, defective performance and informational asymmetry between parties. (The potential for defective performance does not, of course, disappear; it shifts its locus to the coder responsible for programming the machine, but that is an issue for another time and place.)

More detail: