Skip to content

Glossary

Precise definitions of the terms used throughout these docs. Where a term maps to a code identifier, that is noted.

SMA (Separately Managed Account) — A Safe smart account registered with SailKernel, with the kernel enabled as a Safe module. Holds the owner’s capital self-custodially.

Owner — The party that holds the Safe and custodies the SMA’s capital, via the Safe’s own owners and threshold. Can always revoke the manager.

Permission Signer — The address whose EIP-712 signatures authorize permission-registry operations (register, configure, replace, revoke, session, fee-policy). AccountConfig.permissionSigner. Cannot move assets.

Manager — The address whose EIP-712 signatures authorize dispatches. AccountConfig.manager. May be an EOA, multisig, MPC wallet, or autonomous agent. Cannot change the mandate.

Submitter — The msg.sender of a dispatch; the address that pays gas. Not an authority role; may be a relayer. Exposed to permissions as ctx.submitter.

Mandate — The set of permission contracts registered for an SMA. Defines what the manager is authorized to do. Not a document; a set of contracts.

Permission — A contract implementing IPermission that decides whether a given call is allowed, via evaluate(txData, ctx) → bool.

Template — A reusable permission implementation. Shared (multi-tenant) templates serve many accounts from one deployment, each configured independently; standalone templates are one instance per account.

Dispatch — A manager-signed request to execute one call through the SMA, naming one registered permission as its authorizer. SailKernel.dispatch(...).

Batch dispatch — A manager-signed request to execute an ordered array of calls atomically, gated by one batch-aware permission (IBatchPermission). SailKernel.dispatchBatch(...).

Selective authorization — The model in which the manager’s signature names one registered permission and only that permission is evaluated.

Fail-closed — The property that any permission failure (false, revert, OOG, malformed return) reverts the whole dispatch. Deny-by-default.

Context / ctx — The read-only snapshot of the dispatch environment passed to a permission’s evaluate (account, manager, submitter, target, selector, value, blockTimestamp, blockNumber).

Kernel — SailKernel, the single trusted execution contract. Registers accounts, holds the permission registry, verifies signatures, dispatches to the Safe, accounts for fees.

Fee policy — A contract implementing IFeePolicy that computes the maximum collectable fee for an account and records collection state. The reference implementation is StandardFeePolicy.

Protocol cut — The protocol’s share of a manager-collected fee, in basis points, bounded by the immutable cap MAX_PROTOCOL_CUT_BPS = 2500 (25%). Zero at launch.

Registration fee — A flat native-token fee charged per permission registration, bounded by the immutable cap MAX_PERMISSION_FEE_WEI (≤ 0.01 native). Live at launch (0.00015 native; higher on BSC and HyperEVM).

High-water mark (HWM) — The highest NAV seen at collection time for an account; StandardFeePolicy charges performance fees only on gains above it.

NAV — Net asset value, supplied by the manager at fee collection. Not independently verified by the kernel; the fee policy is the guard against inflated NAV.

Timelock — The standalone TimelockController (48-hour delay) through which all governance parameter changes flow.

PERMISSION_GAS_CAP — The fixed gas budget (150_000) for each permission’s evaluate staticcall. BATCH_EVAL_GAS_CAP (1_000_000) is the batch equivalent.

boundSalt — keccak256(saltNonce, caller, permissionSigner, manager, feePolicy), the salt that binds an SMA’s CREATE2 address to its principals.