AdminOperation values and executed after the timelock delay.
Roles
| Role | Purpose |
|---|---|
PROPOSER | Schedules operations. |
EXECUTOR | Executes ready operations when execution is restricted. |
CANCELLER | Cancels pending operations. |
ORACLE | Governance operational role for oracle-related administration. |
Entry Points
| Function | Purpose |
|---|---|
deploy_controller(wasm_hash) | One-time controller deployment. |
controller() | Returns deployed controller address. |
propose(proposer, op, salt) | Validates and schedules an AdminOperation. |
execute(executor, target, function, args, predecessor, salt) | Executes a ready controller-targeted operation. |
cancel(canceller, operation_id) | Cancels a pending operation. |
get_min_delay() | Returns timelock delay in ledgers. |
get_operation_state(operation_id) | Returns operation lifecycle state. |
get_operation_ledger(operation_id) | Returns ready ledger, done marker, or unset marker. |
hash_operation(target, function, args, predecessor, salt) | Computes operation id. |
resolve_market_oracle_config(asset, cfg) | Read-only helper matching proposal-time oracle resolution. |
resolve_oracle_tolerance(tolerance) | Read-only helper matching proposal-time tolerance resolution. |
AdminOperation Groups
Controller-targeted variants include:- aggregator and accumulator;
- pool template, pool deployment, pool upgrade, and pool params;
- token approval and Blend pool approval;
- hub creation;
- spoke creation, deprecation, and spoke-asset changes;
- market creation;
- oracle config, oracle disable, and oracle tolerance;
- position limits and minimum borrow collateral;
- position manager registration;
- controller upgrade, migration, and ownership transfer.
- governance upgrade;
- delay update;
- governance role grant/revoke;
- governance ownership transfer.
Execution Model
Controller-targeted operations execute throughexecute. Governance-self
operations use typed inline execution because Soroban does not allow the generic
self-call pattern used for controller calls.
Testing-only immediate forwarders are gated by #[cfg(any(test, feature = "testing"))] and are not part of the production admin path.
