Smart Contract

A smart contract is a program deployed to a blockchain. It has an address, holds state, and executes when a transaction calls it. On Ethereum these are typically written in Solidity and compiled to EVM bytecode.

The name is misleading in both halves. It is not smart — it is a deterministic program with no judgment. And it is not a contract in the legal sense: there is no interpretation, no doctrine of intent, no remedy. If the code permits an outcome, that outcome is legitimate by the system’s own rules regardless of what anyone meant.

Immutability cuts both ways

Once deployed, a contract cannot be changed. That is the guarantee — nobody can alter the rules after you commit funds to them.

It also means bugs are permanent. Ordinary software ships with defects and patches them; a smart contract holding assets cannot be patched, and a defect is an unfixable vulnerability in a system where anyone can call the code and the value at stake is often substantial. The major historical losses in this space have been contract bugs rather than cryptographic failures.

The workarounds — proxy patterns separating storage from upgradeable logic — reintroduce exactly the trusted party the design was meant to eliminate. Whoever controls the upgrade controls the contract. This is an honest engineering trade and it is usually presented as a technical detail rather than as the reversal it is.

The oracle problem

A contract can only act on what the chain knows, which is its own state and transaction history. Anything external — a price, a temperature, whether a shipment arrived — must be reported by an oracle.

That relocates the trust rather than removing it. A contract paying out on a weather condition is exactly as reliable as whoever reports the weather, and no amount of on-chain verification improves that. Decentralised oracle networks aggregate multiple reporters to reduce the dependence on any one, which is a genuine mitigation and not an elimination.

The general form is worth holding onto: cryptography can guarantee that a computation was performed correctly on given inputs; it can say nothing about whether the inputs were true. Most disappointment with these systems traces back to that boundary.

See also: Ethereum and the computing map.