Skip to main content

Smart Contracts Overview

PolicyKit’s on-chain layer consists of Solidity contracts built with Foundry. These contracts store policy configurations, evaluate on-chain rules, and verify off-chain attestations. The contracts are published as @policykit/contracts on npm, so you can import them directly in your own Solidity projects:
pnpm add @policykit/contracts
import { IPolicyEngine } from "@policykit/contracts/src/core/IPolicyEngine.sol";
import { IRuleEvaluator } from "@policykit/contracts/src/rules/IRuleEvaluator.sol";

Contract Architecture

Core Contracts

ContractDescription
PolicyEngineCentral registry and evaluation dispatcher
PolicyGuardGuard hook for smart accounts
PolicyKit7579ModuleERC-7579 validation module
AttestationVerifierEIP-712 attestation verification

Rule Evaluators

ContractTierDescription
AllowTargetsRule1Whitelist contract addresses
DenyTargetsRule1Blacklist contract addresses
AllowSelectorsRule1Whitelist function selectors
DenySelectorsRule1Blacklist function selectors
MaxValueRule1Cap ETH value per transaction
SpendLimitRule2Token spending limits with time windows
CooldownRule2Minimum time between transactions

Libraries

LibraryDescription
PolicyCodecEncode/decode policy rules for on-chain storage
CalldataParserParse transaction calldata (target, selector, params)

Deployment

Contracts are deployed using Foundry’s deployment scripts:
cd contracts
forge script script/Deploy.s.sol --rpc-url $RPC_URL --broadcast

Development

Build

forge build

Test

forge test

Gas Report

forge test --gas-report