Code as agreement.
WHAT ONE IS
A program deployed to a network, executing when called, according to fixed rules.
WHAT MAKES IT DISTINCTIVE
It executes without an operator, and generally cannot be changed.
WHAT THAT PROVIDES
Certainty about behaviour No party able to refuse execution Verifiability by anyone
WHAT IT COSTS
Defects that cannot be fixed No ability to handle circumstances not anticipated No discretion
WHAT IT IS NOT
A legal contract, unless separately made one.
WHY THAT MATTERS
Code executing is not the same as an agreement being enforceable.
WHAT THE CODE-IS-LAW POSITION CLAIMS
That the code's outcome is the agreement, whatever was intended.
WHAT PRACTICE HAS SHOWN
Communities intervening when outcomes were considered unacceptable.
WHAT THAT DEMONSTRATES
Social consensus overriding code, when the stakes are high enough.
WHAT UPGRADE PATTERNS PROVIDE
The ability to change behaviour after deployment.
WHAT THEY COST
The immutability that was the point.
WHAT THAT MEANS
An upgradeable contract is controlled by whoever holds the upgrade authority.
WHAT TO ESTABLISH BEFORE USING ANY CONTRACT
Whether it is upgradeable, and by whom.