Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ACTUS Kernel Interface

The ACTUS Kernel interface configures the normalized contract, stores the execution schedule, and advances non-cash lifecycle events.

contract_create

{
  "name": "contract_create",
  "create": "require",
  "readonly": false,
  "args": [
    { "name": "arranger", "type": "address" }
  ],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of contract creation" },
  "errors": ["INVALID_ROLE_ADDRESS"]
}

The arranger argument must not be the Algorand global zero address.

contract_config

{
  "name": "contract_config",
  "readonly": false,
  "args": [
    { "name": "terms", "type": "NormalizedActusTerms" },
    { "name": "initial_state", "type": "InitialKernelState" },
    { "name": "prospectus", "type": "Prospectus" }
  ],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of contract configuration" },
  "errors": [
    "UNAUTHORIZED",
    "ALREADY_CONFIGURED",
    "INVALID_ACTUS_CONFIG",
    "INVALID_DAY_COUNT_CONVENTION",
    "INVALID_DENOMINATION",
    "INVALID_SETTLEMENT_ASSET",
    "INVALID_IED"
  ]
}

Only the Arranger may call this method.

contract_schedule

{
  "name": "contract_schedule",
  "readonly": false,
  "args": [
    { "name": "schedule_page_index", "type": "uint64" },
    { "name": "is_last_page", "type": "bool" },
    { "name": "schedule_page", "type": "ExecutionSchedulePage" }
  ],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of the schedule upload" },
  "errors": [
    "UNAUTHORIZED",
    "ALREADY_CONFIGURED",
    "TERMS_NOT_CONFIGURED",
    "INVALID_SCHEDULE_PAGE",
    "INVALID_EVENT_ID",
    "INVALID_ACTUS_CONFIG",
    "INVALID_SORTING"
  ]
}

Only the Arranger may call this method.

contract_execute_ied

{
  "name": "contract_execute_ied",
  "readonly": false,
  "args": [],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of the IED execution" },
  "errors": [
    "NOT_CONFIGURED",
    "UNAUTHORIZED",
    "DEFAULTED",
    "SUSPENDED",
    "INVALID_EVENT_CURSOR",
    "INVALID_EVENT_TYPE",
    "NO_DUE_CASHFLOW",
    "INVALID_ACTUS_CONFIG",
    "PRIMARY_DISTRIBUTION_INCOMPLETE"
  ]
}

Only the Arranger may call this method.

apply_non_cash_event

{
  "name": "apply_non_cash_event",
  "readonly": false,
  "args": [
    { "name": "event_id", "type": "uint64" },
    { "name": "payload", "type": "ObservedEventRequest" }
  ],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of the event application" },
  "errors": [
    "NOT_CONFIGURED",
    "DEFAULTED",
    "SUSPENDED",
    "OBSERVED_EVENT_REQUIRED",
    "UNAUTHORIZED",
    "INVALID_EVENT_ID",
    "INVALID_EVENT_CURSOR",
    "INVALID_EVENT_TYPE",
    "INVALID_SCHEDULE_PAGE",
    "INVALID_ACTUS_CONFIG",
    "INVALID_SORTING",
    "NO_DUE_CASHFLOW",
    "PENDING_IED"
  ]
}

RR and RRF execution is Observer-controlled. Other non-cash events are Arranger-controlled.

append_observed_cash_event

{
  "name": "append_observed_cash_event",
  "readonly": false,
  "args": [
    { "name": "payload", "type": "ObservedCashEventRequest" }
  ],
  "returns": { "type": "uint64", "desc": "UNIX timestamp of the append operation" },
  "errors": [
    "NOT_CONFIGURED",
    "UNAUTHORIZED",
    "DEFAULTED",
    "SUSPENDED",
    "PENDING_IED",
    "OBSERVED_EVENT_REQUIRED",
    "INVALID_EVENT_ID",
    "INVALID_EVENT_TYPE",
    "INVALID_SCHEDULE_PAGE",
    "INVALID_ACTUS_CONFIG",
    "INVALID_SORTING"
  ]
}

contract_get_state

{
  "name": "contract_get_state",
  "readonly": true,
  "args": [],
  "returns": { "type": "KernelState", "desc": "Current kernel state snapshot" },
  "errors": ["NOT_CONFIGURED"]
}

KernelState does not include the separate RBAC-managed defaulted performance flag. Clients that need that value must read the dedicated global-state key.

contract_get_next_due_event

{
  "name": "contract_get_next_due_event",
  "readonly": true,
  "args": [],
  "returns": {
    "type": "ExecutionScheduleEntry",
    "desc": "Next due schedule entry, or a zero sentinel if the contract ended"
  },
  "errors": ["NOT_CONFIGURED"]
}