Concepts

Arms and jobs

The two words you need.

Arm

An arm is an ordinary wallet that takes part in a firing. It does not change address, it keeps its history, and it keeps working as a normal wallet afterwards. Use fresh wallets for new arms: a fresh wallet has nonce 0 and no past.

Job

FieldMeaning
walletThe arm's address.
calls[]What the arm will do: target, ETH value, calldata, in order.
deadlineUnix time after which the arm refuses to act.
signatureThe arm's key signature over those exact calls, its current nonce and the deadline.

One arm, several calls

An arm can run several calls in one job, for example approve and swap. They run in order and succeed or fail together. If one fails the arm reverts and keeps its nonce.

Who the target sees

The wallet makes the calls, so the target sees msg.sender = wallet. A launchpad curve records eight different buyers. The coordinator never appears as the buyer.

Funding

Each arm holds what it will spend: ETH for a buy, or tokens for a sell. It needs no gas money, because the sponsor pays the gas of the whole transaction.