Skip to content

feat: ExecutionBoundEnforcer — exact execution commitment at redemption #172

@terriclaw

Description

@terriclaw

Description

Add ExecutionBoundEnforcer, a CaveatEnforcer that binds execution to an EIP-712 signed commitment at redemption.

Existing caveats enforce policy constraints, but not exact execution. Requires exact equality between execution and a pre-signed ExecutionIntent.


Technical Details

  • Inherits CaveatEnforcer
  • terms: unused (0x)
  • args: abi.encode(ExecutionIntent intent, address signer, bytes signature)
  • ExecutionIntent: (account, target, value, dataHash, nonce, deadline)
  • dataHash = keccak256(execution.callData)
  • Nonce scoped by (delegationManager, account, nonce)
  • Nonce is consumed before signature verification (CEI)
  • Supports EOA + ERC-1271 signatures via SignatureChecker
  • Restricted to single-call + default execution mode
  • EIP-712 domain anchored to enforcer contract address

Acceptance Criteria

  • exact execution passes
  • mutated calldata reverts (DataHashMismatch)
  • replay reverts (NonceAlreadyUsed)
  • unsupported call type reverts (CaveatEnforcer:invalid-call-type)
  • signer distinct from delegator passes with valid signature
  • wrong signer reverts (InvalidSignature)
  • wrong account reverts (AccountMismatch)
  • expired deadline reverts (IntentExpired)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions