Smart Contracts

The on-chain contracts and deployed addresses across supported chains.

Network Information

Aegis contracts are deployed on Base mainnet, Base Sepolia, Sepolia testnet, and Arc Testnet

Base Mainnet
Chain ID: 8453
Base Sepolia
Chain ID: 84532
Sepolia Testnet
Chain ID: 11155111
Arc Testnet
Chain ID: 5042002
EntryPoint v0.6(all chains)
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789

Base Mainnet

IdentityRegistry

ERC-8004 agent identity registration

0xE49Eeb26346c0af54c98D82BA33DeA43174Ef7C1

Key functions: registerAgent, getAgent, isAgentActive

PolicyRegistry

On-chain policy and permission storage

0x1C3aA1eb29Bbe4C18Cc5C483524E18B40CF64f94

Key functions: createPolicy, grantPermission, revokePermission, isPermissionValid

PermissionEnforcer

Per-asset, raw-amount action validation + usage accounting (no price oracle). Limits are per asset in that asset's own base units.

0x1BD9deD0e5C80C7c163D5eFD86ff552706B538a4

Key functions: setConstraints (per-asset), checkAction, consumeAllowance (atomic enforce+record), recordUsage, getUsage, getRemainingQuota

PriceOracle

Chainlink ETH/USD price — used ONLY for fee USD→wei conversion. No role in policy enforcement (limits are raw per-asset).

0x9883A48206F0e84bbaB8d8Cb93700e51A03078f7

Key functions: getEthUsdPrice, setTokenFeed

GuardrailFeeManager

Centralized fee configuration for account creation and transfer fees

0x5178098F549a3cb4eC06B036EAf4fA0c2160cC6A

Key functions: getCreationFeeWei, calculateTransferFee, feeCollector

SpendResolverRegistry

Protocol calldata resolver for DeFi adapters

0x2ef16690b9298Fb99eBc8903CC1c4d14A95793A2
CommonDeFiSpendResolver

Registered adapter for common DeFi selectors

0x79098A54eef98364e9058d8975C1CFAf570ce7d1
AgentAccountFactory

CREATE2 factory for deterministic smart account deployment

0xe94B60040f169D063b6E1684d683097907fC7F41

Key functions: createAccount (payable), getAddress, getCreationFee

Base Sepolia

IdentityRegistry

ERC-8004 agent identity registration

0x03cf1EbD5A7727ee1d3e9F07d96188407D4035F9
PolicyRegistry

On-chain policy and permission storage

0x687D218AA8b7088e2376c9d420b8E1f3253f2d9A
PermissionEnforcer

Per-asset, raw-amount action validation + usage accounting

0x83301bd61640c9AfA6eD6eb51521D0F1299c8B03
PriceOracle

Chainlink ETH/USD price — used only for fee USD→wei conversion

0xDE3B9DAEC6BacbA69A2470058DD6B9DefC629A50
GuardrailFeeManager

Fee configuration for accounts

0x1A8a26C457f520ef61A84c8AA459ffE700BBd1f4
SpendResolverRegistry

Protocol calldata resolver for DeFi adapters

0x7A31231aC0f5263172493a01A87C40b5a61ee5F6
CommonDeFiSpendResolver

Registered adapter for common DeFi selectors

0xF3f81D9b3E2aC251441C2E508f51eB9C2B7D8db8
AgentAccountFactory

CREATE2 factory that deploys policy-enforced ERC-4337 smart accounts

0x421558444D2d23c5e04b20F50765ae5EC4DD0EbF

Sepolia Testnet

IdentityRegistry

ERC-8004 agent identity registration

0x9F388Dcf2B37c2384EbF8A79f58861ca8c8Dcd14
PolicyRegistry

On-chain policy and permission storage

0x96d00C3b3a686a30044BAD93dbbF52540b649b18
PermissionEnforcer

Action validation with constraints

0x989b844317f0a7f731cB2e1dB367BEd72a142aA6
PriceOracle

Chainlink-powered price feeds

0xf8d5Ed5520593187AFC950738946C6f1bf0d349d
GuardrailFeeManager

Fee configuration for accounts

0x37c03a1d96D70dc60F2dde48Ebc19AC5cAD1fb88
SpendResolverRegistry

Protocol calldata resolver for DeFi adapters

0xb24F255b776179363132e870743105732b195De9
CommonDeFiSpendResolver

Registered adapter for common DeFi selectors

0xDD990DbFAAefEa727e6B28ADA45091fbAd59FBfe
AgentAccountFactory

CREATE2 factory that deploys policy-enforced ERC-4337 smart accounts

0x74298E689C46955696c26Ceba5BA71DA7058A231

Arc Testnet

IdentityRegistry

ERC-8004 agent identity registration

0x162fEd23de17D7e4998933475a04acF2c3cb10bD
PolicyRegistry

On-chain policy and permission storage

0xa89c36172D01BF33746B401f0e8C4D316B06D6ec
PermissionEnforcer

Per-asset, raw-amount action validation + usage accounting

0x4B8C8Ef37fd7a07fAd7a8bc2Cb1ccFDc6bC68019
PriceOracle

Static USDC/USD feed for Arc testnet fee conversion

0xEAF9179C6FEBDb41f1a317D1f6287B6773312278
GuardrailFeeManager

Fee configuration for accounts

0x1ee21DB922Cf6D781497f565b33cb39822892165
SpendResolverRegistry

Protocol calldata resolver for DeFi adapters

0x195768687C95E6A09fC8D30e4909D1Fda3d76254
CommonDeFiSpendResolver

Registered adapter for common DeFi selectors

0xb30692735F001088ad096ba3C49e55EBA2F6ed3E
AgentAccountFactory

CREATE2 factory that deploys policy-enforced ERC-4337 smart accounts

0xF9e9BB23a0B76Ae6F85652Da7c85A16a0B6B21e8

Per-Asset Limits

Limits are per asset, in that asset's own base units — there is no price-oracle conversion. A USDC cap is set in 6-decimal USDC units (e.g. 1000000000 = 1,000 USDC); native ETH (address(0)) in wei. Each asset has its own daily-rolling budget. An action moving an asset with no configured limit is denied unless the policy enables allowUnlistedAssets. Common token addresses below.

v14 decodes and caps token-input swaps plus LP position flows, and registers CommonDeFi adapters for multicall, Universal Router, Permit2, Curve, Balancer, Aave, Compound, Beefy, and V2-style router paths. Multi-asset flows enforce each input token against its own cap; collect/withdrawal-style recipient checks are restricted to the smart account where required.

Base Mainnet
TokenContract
ETH (native)always supported
USDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
WETH0x4200000000000000000000000000000000000006
USDT0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2
DAI0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb
USDbC0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA
cbETH0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22
cbBTC0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
Base Sepolia
TokenContract
ETH (native)always supported
USDC0x036CbD53842c5426634e7929541eC2318f3dCF7e
WETH0x4200000000000000000000000000000000000006
Sepolia Testnet
TokenContract
ETH (native)always supported
USDC0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238
LINK0x779877A7B0D9E8603169DdbD7836e478b4624789
Arc Testnet
TokenContract
USDC (native)always supported
USDC0x3600000000000000000000000000000000000000
ETH0x4ccccd3220ac80c07a8B575A4cb494c0E77606Ed

Fee Structure

Protocol-level fees enforced on-chain via GuardrailFeeManager

Account Creation Fee
Free
No fee at smart account deployment during early access. The on-chain fee mechanism stays in place — current value is 0.
Transfer Fee (Outbound)
Free
No protocol fee on outbound ETH transfers. Inbound deposits are also free. Network gas still applies as usual.

Fees are read on every call from GuardrailFeeManager (creationFeeUsd, transferFeeBps, transferFeeCapUsd). Both are currently set to 0 on Sepolia and Base. The contract enforces a hard cap of 10% (1000 bps) on the transfer fee so the protocol owner cannot exceed that even if fees are reintroduced.

Contract Interaction Flow

contract-interaction-flow.txt
1. Factory.createAccount{value: fee}(owner, signer, agentId, mode, salt, parentId)
   └── Deploys AgentSmartAccount; enforcer.registerAccount(account, agentId)

2. Agent op (ERC-4337):
   EntryPoint.handleOps  Account.validateUserOp        [read-only fail-fast: enforcer.checkAction]
                        Account.execute(target, value, AEGIS_MAGICpermissionIddata)
                          ├── enforcer.consumeAllowance(agentId, permissionId, ...)            [atomic check + record — the real guard]
                          └── target.call(actualData)   [a revert rolls back the reservation]

   Limits are PER-ASSET in raw base units (no oracle). consumeAllowance runs
   before the call, so even ops bundled in one block can't exceed a cap.

3. Owner emergency: owner EOA calls Account.execute(target, value, rawData)
   └── privileged bypass — raw calldata, no policy enforcement (recovery path)