Discussion topic for ERC-8225: On-Chain Agency for Represented RWAs
Update Log
2026-04-14: Initial draft submitted, PR #1685
External Reviews
None as of 2026-04-14.
Outstanding Issues
2026-04-14: Custody model — should ERC-8225 prescribe a default (agent-custodied vs principal-custodied) or remain agnostic? Feedback welcome.
2026-04-14: RAMS composition — should isValidAgency automatically check RAMS mandates, or leave integration to implementers?
2026-04-14: Permission bitmask — is the suggested 6-action set sufficient for early RWA agent use-cases?
Abstract
This ERC defines a minimal interface (`IERC8225`) that allows an on-chain agent (identified via ERC-8004) to act as a programmable agency or delegated representative for a verified human owner when interacting with tokenized regulated Real World Assets (RWAs).
It provides scoped, revocable, time-bounded permissions for active operations (transfer, voting, rebalancing, yield strategies, etc.) while preserving legal beneficial ownership signals and feeding audit/reputation events back into the agentic stack.
It is designed as a higher-layer execution companion to the RAMS proposal (@Ludovico.r ) (compliance mandates + dual `canTransact` checks) and works with both ERC-7943 (uRWA) and ERC-3643 (T-REX) tokens.
Motivation
The emergence of autonomous agents (ERC-8004) and regulated tokenized assets (ERC-3643, ERC-7943) creates a new primitive need: how do agents act as true on-chain representatives for verified owners when managing legal RWAs?
While the RAMS proposal elegantly solves *compliance delegation* (ensuring agents don’t bypass KYC/AML during transfers), many agentic RWA use-cases require the agent to actively *manage* represented assets:
- Autonomous treasury rebalancing across tokenized bonds
- Voting on governance proposals for represented equity tokens
- Executing compliant yield strategies on permissioned DeFi pools
- Triggering forced transfers or freezes via ERC-3643 Agent roles under owner delegation
This standard adds the missing liability and execution primitive for autonomous A2A commerce involving represented RWAs. It enables:
- Clear ownership linking: Human owner (ONCHAINID) → Agent (ERC-8004 NFT) → Represented RWA positions
- Scoped delegation: Bitmask permissions + expiration for least-privilege agency
- Audit + reputation: Every action emits events for compliance trails and ERC-8004 reputation feeds
- Composability: Hooks into ERC-8183 Jobs for job-based agentic workflows
Specification (Summary)
```vyper
# pragma version 0.4.0
interface IERC8225:
event AgencyAuthorized:
owner: indexed(address)
agent: indexed(address)
rwa_token: indexed(address)
permissions: uint256
expiration: uint256
event AgencyRevoked:
owner: indexed(address)
agent: indexed(address)
rwa_token: indexed(address)
event AgencyActionPerformed:
owner: indexed(address)
agent: indexed(address)
rwa_token: indexed(address)
action_type: uint256
data: Bytes[1024]
def isValidAgency(owner: address, agent: address, rwa_token: address) -> bool: ...
def getAgencyPermissions(owner: address, agent: address, rwa_token: address) -> uint256: ...
def authorizeAgency(agent: address, rwa_token: address, permissions: uint256, expiration: uint256) -> bool: ...
def revokeAgency(agent: address, rwa_token: address) -> bool: ...
def performAgencyAction(rwa_token: address, action_type: uint256, calldata: Bytes[1024]) -> Bytes[1024]: ...
Questions for Feedback
- Should we prescribe a custody model default or stay agnostic?
- Is the permission bitmask granularity right for V1?
- How should RAMS composition work: automatic check or opt-in?
Full spec & PR: Add ERC: On-Chain Agency for Represented RWAs by neonmercenary · Pull Request #1685 · ethereum/ERCs · GitHub