Reference
Octopus (coordinator)
The head. It holds no funds and has no owner.
Constructor
constructor(address impl) // impl : the only wallet implementation this coordinator trusts. Immutable.
Functions
| Signature | Notes |
|---|---|
fire(Job[] jobs, bool atomic) returns (bool[] ok) | Anyone may call. For each job, requires the wallet to carry the marker for IMPL, then calls wallet.execute. In atomic mode a failure reverts everything with ArmFailed. |
isArmed(address wallet) view returns (bool) | True while the wallet carries the trusted marker. |
IMPL() view | The trusted implementation address. |
Job
struct Job {
address wallet;
OctopusWallet.Call[] calls; // { to, value, data }
uint256 deadline;
bytes signature;
}
Events
Arm(address indexed wallet, bool ok) Fired(address indexed sponsor, uint256 arms, uint256 succeeded)
Errors
NotDelegated(address wallet) ArmFailed(uint256 index, address wallet, bytes reason)
The coordinator is stateless. A wallet that is not delegated to IMPL is refused, so a plain wallet can never look like a success.