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을 보유한 사람 또는 법인 계정)에 연결합니다.
  • 에이전트에 부착되는 온체인 attestation으로 위임 범위(세션 키, 지출 한도, 허용 함수 selector)를 기록합니다.
  • 에이전트를 폐기합니다 (상태 변경이며 프로토콜 레벨에서 비가역적입니다).


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

Owner ↔ Agent 연결과 KYA

마루 라이트페이퍼에 따르면 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를 구성하며, 어떤 단일 레지스트리도 KYA를 모놀리딕하게 인코딩할 필요가 없습니다.

레지스트리 호출

Solidity 컨트랙트에서 IdentityRegistry는 표준 ERC-8004 배포와 동일하게 호출합니다:
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
검색어를 입력하세요