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

SignatureNotes
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() viewThe 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.