Account abstraction
The first release has one protected execution path: an ERC-4337 smart account with a Ravelin validation module. Off-chain approval alone is never enough.
Why on-chain enforcement
If an agent keeps an unrestricted private key, it can bypass any off-chain firewall by broadcasting directly. The account's validation logic must reject any operation that lacks a valid authorization from a registered Ravelin signer. Plain EOA forwarding may be offered for convenience, but it is not a security boundary and is never presented as one.
The module builds on an audited smart-account implementation rather than a custom wallet. It contains signer registration, rotation and revocation, nonce-based replay protection, a human-approval validation path, emergency pause, and events for every security-relevant change.
UserOperation lifecycle
- The SDK constructs a UserOperation for the supported account and chain.
- Ravelin Wall evaluates it against the active policy and authoritative state.
- An ALLOW produces a short-lived authorization bound to the operation hash, account, chain, policy version and expiry.
- If approval is required, the operation waits unsigned and unsubmitted.
- The signing service signs only the exact approved payload.
- The bundler validates and submits the UserOperation.
- Ravelin Wall tracks inclusion, execution outcome, gas cost and finality.
- The reservation is reconciled and the audit record is updated.
Human approval binding
The approver signs the actual operation, not a notification. The approval record binds:
| Bound field | Why |
|---|---|
| Smart account + chain ID | Prevents cross-account and cross-chain reuse. |
| Target + selector | The approval covers one method on one contract. |
| Value + decoded parameters | What the approver actually saw. |
| Operation hash | Any change to the operation invalidates the approval. |
| Policy version | Activating a new version invalidates it. |
| Request + reservation ID | Links approval to budget state. |
| Approver identity | Independent wallet signature, recorded. |
| Expiry + one-time use | Cannot be replayed or reused. |
A human signature approves one operation. It never grants the agent blanket permission.