04 Start

Concepts

A glossary of the terms used across the docs, in the order you meet them.

#Glossary

A send is the act of locking value for a recipient. The link is the URL you share. The escrow record (Link in the contract) is the on-chain entry that holds the terms. There is one record per send, and it is deleted when the send ends.

#Sender

The address that called createLinkEth or createLinkToken. It is stored in the record and is the only address that can undo, and the only address that ever receives a refund.

A uint64 chosen by the sender's app, usually random. Together with the sender address it determines where the record lives. Reusing an id for the same sender reverts with LinkExists. The id is published in the LinkCreated event, so a sender can always find the ids of their own open links.

keccak256(abi.encode(sender, id)). It is the storage key of the record, and it is what the claim signature commits to. Do not confuse it with the claim key.

#Claim key

A throw-away key pair created in the sender's browser. The contract stores only the address. The private key is the link's secret. Signing with it is the proof of the right to claim.

#Secret

The 32-byte private key of the claim key, encoded in base58 and placed in the URL fragment (the part after #). Browsers do not send fragments to servers, so the app's backend never sees it.

#Claim

Calling claim(sender, id, recipient, signature). It pays the recipient and closes the record. Anyone may submit it. Only a holder of the secret can produce a valid signature.

#Recipient

The address named inside the signature. It does not need to hold ETH, and it can be a brand-new address.

#Relayer

Whoever submits the claim transaction and pays its gas. A relayer is a convenience, not a trusted party: the signature fixes the recipient, so a relayer cannot redirect funds. See Relayer.

#Undo

Calling undo(id) as the sender. It returns the full amount and deletes the record. It works at any time while the record exists.

#Expiry and refund

Every record has an expiresAt between 10 minutes and 90 days after creation. After it, claims revert and anyone may call expireRefund(sender, id) to send the funds back to the sender.

#Undo window

The period during which a link can still be reversed. Technically it is the whole life of the record: from creation until it is claimed. The sender chooses the expiry, which bounds how long a link can sit open.

#Fee, fee accrual, sweep

On a claim only, feeBps of the amount is set aside (default 30 basis points, 0.3%). It is added to feesAccrued[token] inside the contract. Anyone can call sweepFees(token) to send the accrued balance to the fee wallet. The fee is locked into each record at creation.

#Fee wallet

An address fixed at deployment (it is immutable). It receives swept fees and is where the buyback and burn of $OOPS is run from.

#Caps

Per-link limits that bound the damage of a leaked link or a bug in a young contract. ETH links are capped at ethCap (2 ETH by default). Token links are capped at tokenCapBps of the token's total supply (1% by default). The admin can tune them.

#Admin

An address that can call setParams (fee up to 1%, caps, pause new links) and transferAdmin. It has no function that moves escrowed funds. It can renounce itself with transferAdmin(address(0)).

#Pause

A flag that blocks new links only. Undo, expiry refunds, claims and fee sweeps keep working while paused.

#EIP-712 domain

The context a signature is valid in: the name Oopsend, version 1, the chain id, and the contract address. A claim signed for one contract or chain is invalid on another. See The claim signature.

#Pons

The launchpad of Robinhood Chain. $OOPS launches there. Pons tokens are standard 18-decimal ERC-20 tokens, so they work as link assets like any other token.

#Simulation (the lab)

The lab and the live attacks on the home page run a JavaScript port of the contract's rules against a local ledger and a simulated clock. The cryptography is real; the ledger is not a chain. The port is checked against Solidity test vectors, see Architecture.