on-chain vs off-chain

On-chain and off-chain describe where a step of a payment happens. Signing an authorization is off-chain: it touches no network, costs nothing, and produces a message. Submitting that authorization is on-chain: it costs a fee, waits for confirmation, and is what anybody can look up afterwards.

A machine payment over x402 keeps the whole exchange with the endpoint off-chain. The client reads a payment challenge, signs an EIP-3009 authorization for the terms it names, and sends the signature; the endpoint and its facilitator check that message without asking any chain anything. The submission at the end is the single step that touches the network.

The reason for the split is cost and delay. An on-chain write costs gas and waits to be confirmed, and a payment worth a fraction of a cent cannot carry either for every field the two sides have to agree on. EIP-2612's own motivation says the same thing from the token side: without a signed message, using a token inside a contract takes two transactions and the user has to hold the chain's native token to pay for them.

The two halves also differ in what they leave behind. An off-chain signature exists between the parties that exchanged it, so a third party has no way to know one was made. An on-chain settlement is a public record anybody can query afterwards, naming amounts and addresses without naming what was bought. Neither half by itself says what an endpoint was charging at a given moment.

That is the gap an outside reading fills. A payment challenge is stated off-chain and nothing retains it by default, so what an endpoint quoted on a given day exists afterwards if somebody asked and kept the answer.

→ probe402 keeps its own dated capture of what each tracked endpoint quoted off-chain, and how those captures are sealed against later change is published at the integrity record.

Sources

Related settlement · payment authorization · gas · EIP-3009

Glossary