testnet
GitHub EN

ERC-8004 Identity Registry (Preinstall)

component identity

AI 에이전트 신원을 위한 온체인 프리미티브. 제네시스에 배포된 ERC-8004 표준 컨트랙트, 소유자 없음.

마루는 AI 에이전트 신원을 체인 레벨 프리미티브로 취급하기 위해, ERC-8004 IdentityRegistry 표준 컨트랙트를 preinstall로 배포합니다 — 즉, 이 컨트랙트는 어떤 단일 dapp이 배포하는 것이 아니라, 고정된 잘 알려진 주소에 제네시스 상태의 일부로 존재합니다. 따라서 에이전트 등록, attestation, 폐기는 정식 ERC-8004 ABI를 사용하며, ERC-8004를 지원하는 도구는 어디서든 수정 없이 마루에서 작동합니다. 마루 고유의 agent 프리컴파일이 이 컨트랙트 위에서 저렴한 인덱싱 읽기를 제공합니다 (agent-precompile-overview 참조).

왜 preinstall인가 (dapp 배포 컨트랙트가 아닌)

IdentityRegistry가 단일 dapp이 배포한다면 (또는 더 나쁘게는 발행자별로 배포한다면) 에이전트 신원은 경쟁하는 레지스트리들 사이에서 파편화됩니다 — 정확히 ERC-8004가 해결하려던 문제입니다. 마루는 레지스트리를 제네시스 상태에 포함시켜 그 파편화를 제거합니다. 체인 위에는 정확히 하나의 정식 IdentityRegistry가 고정 주소에 존재하고, x/agent 인덱싱 + agent 프리컴파일이 그 단일 컨트랙트를 추적합니다.

OKRW나 PCL은 프리컴파일 (고정 주소의 Go 네이티브 코드)인 것과 비교하세요. IdentityRegistry는 일반 Solidity 컨트랙트이며, 바이트코드는 ERC-8004 표준을 그대로 따릅니다. Preinstall은 체인 운영자가 "이것은 기초이며, 직접 배포할 필요가 없다"고 선언하는 방식입니다.

V1에서 다루는 범위

ERC-8004은 세 개의 하위 레지스트리를 정의합니다: Identity Registry, Reputation Registry, Validation Registry. 마루 V1은 Identity Registry만 구현합니다. 나머지 둘은 V2+로 연기되며 현재 개발 범위 밖입니다.

실제로 V1이 지원하는 것:
  • 에이전트 등록 (agentId 생성 + 에이전트 자체 EVM 주소 할당).
  • 에이전트를 소유자(EAS KYC/KYB attestation을 보유한 사람 또는 법인 계정)에 연결.
  • 위임 범위 기록 — 세션 키, 지출 한도, 허용 함수 selector — 에이전트에 부착되는 온체인 attestation으로.
  • 에이전트 폐기 (상태 변경, 프로토콜 레벨에서 비가역).


Reputation 점수와 validator 형식 클레임 검증(나머지 ERC-8004 부분)은 V1에 없습니다.

Owner ↔ Agent 연결과 KYA

마루 화이트페이퍼 §6.3에 따라, KYA (Know Your Agent)는 KYC의 확장이 아닙니다. 세 컴포넌트의 결합 속성입니다:

1. 소유자 신원 — 에이전트를 등록한 사람 또는 법인 계정이 보유한 KYC/KYB EAS attestation.
2. 위임 범위 — 세션 키, 일/월 지출 한도, 함수 selector allowlist. 에이전트에 ERC-8004 attestation 또는 보조 attestation으로 기록.
3. 행위 제약 — 에이전트 지갑이 기술적으로 허용된 행동, 실행 시점에 PCL이 강제.

IdentityRegistry는 (1)과 (2)를 저장합니다. PCL은 (1)을 EAS 프리컴파일로, (2)를 Agent 프리컴파일로 읽어 (3)을 강제합니다. 전체 스택이 KYA를 구성하며, 어떤 단일 레지스트리도 모놀리딕하게 인코딩할 필요가 없습니다.

레지스트리 호출

Solidity 컨트랙트에서 IdentityRegistry는 표준 ERC-8004 배포와 동일하게 호출합니다:

``solidity
interface IIdentityRegistry {
function register(...) external returns (bytes32 agentId);
function attest(bytes32 agentId, ...) external;
function revoke(bytes32 agentId) external;
// 외 표준 ERC-8004 view 메서드
}

contract MyAgentDeployer {
IIdentityRegistry constant REGISTRY = IIdentityRegistry(0x...); // 마루 preinstall 주소
// ... 일반적으로 사용
}
`

주소는 체인 제네시스 설정에 게시되며 변경되지 않습니다. 쿼리 ("X가 소유한 에이전트 목록")는
agent` 프리컴파일을 대신 사용하세요 — Registry 스토리지 순회보다 훨씬 저렴합니다.

참고

소스: maroo
ESC
검색어를 입력하세요