ERights Home
Back to: Handling Symbolic Data 1st child: Donut Lab: a PlatnetLab with no center On to: E Development Process

Smart Contracts
Friedrich Hayek was the first object-oriented programmer. -- Bill Tulloh


Board games show how interesting patterns emerge from play within a framework of simple rules. The market economy is such a pattern, emergent from property rights and contracts as the rules of the game. Just as chess doesn't change when you switch from wooden to aluminum pieces, the virtues of market phenomena should survive when ported into a properly secured digital world.

The rules of the capability game are well matched to the rules needed for market interactions. Capabilities are bearer instruments for rights, and message passing is the secure rights transfer primitive. Simple programs can then express Smart Contracts, arrangements granting derived rights to the participants, where the terms of the contract are enforced by the program's execution.


Smart Contracts are Nick Szabo's idea

What are Smart Contracts?

Here is a slightly idealized explanation of AMIX (The American Information Exchange)--the first smart contracting system.

Our paper, Capability-based Financial Instruments, explains how Smart Contracts can be written in E. In contains two main examples:

Donut-Lab, a PlanetLab with no center, built from Smart Contracts

ERTP: The Electronic Rights Transfer Protocol

ERTP has been superceded by the Waterken IOU Protocol. This section remains for historical interest.

Capabilities are electronic rights of a sort, but by themselves lack 2 crucial features needed for tradable electronic rights:

  • Exclusive rights transfer.
  • Assayability (so a 3rd party can determine if a trade is mutually acceptable).

The next layer above distributed capabilities, ERTP, does provide these properties. The ERTP protocol accommodates fungible & non-fungible rights, exclusive & non-exclusive rights, and blinded or non-blinded transfer. Only electronic rights manipulable via ERTP are called erights.

ERTP is a simple protocol involving only 4 types and 9 methods. Money in ERTP shows money re-implemented as a proper eright. Money is exclusive, fungible, and non-exercisable. Money transfers should be blinded, but this implementation provides only non-blinded transfer.

By contrast, exclusive.updoc implements, as an exclusively transferable eright, the ability to invoke (pass messages to) particular underlying objects that an Issuer decides to make accessible in this manner. These erights are exclusive, non-fungible, and exersizable. As Nick explains in Contracts with Bearer, since these erights are non-fungible, nothing would be gained by blinding their transfer.

ERTP has been independently implemented as part of the Waterken Sea package, which also defines many particular erights. The Waterken version of ERTP seems better on many dimensions than the one explained here, and we expect to be adopting it (or a close variant of it) as our new definition of ERTP.



Unless stated otherwise, all text on this page which is either unattributed or by Mark S. Miller is hereby placed in the public domain.
ERights Home
Back to: Handling Symbolic Data 1st child: Donut Lab: a PlatnetLab with no center On to: E Development Process
Download    FAQ    API    Mail Archive    Donate

report bug (including invalid html)

Golden Key Campaign Blue Ribbon Campaign