IAgent.getAgentIds

getAgentIds(address wallet, PageRequest pageRequest) external view returns (uint256[] agentIds, PageResponse pageResponse)

페이지네이션 역방향 조회입니다. wallet에 등록된 agent ID 목록을 반환합니다. 마루 Agent 프리컴파일이 이 메서드를 노출하는 이유는 컨트랙트 내부에서 IdentityRegistry 스토리지를 순회하는 비용이 너무 크기 때문입니다. 프리컴파일은 동기화된 x/agent 체인 측 인덱스에서 직접 읽어옵니다. 그 외의 호출(register, attest, 메타데이터)은 IdentityRegistry를 직접 호출합니다.

파라미터

이름 타입 필수 설명
wallet address agent ID를 열거할 owner 지갑 주소입니다.
pageRequest PageRequest 표준 PageRequest 구조체입니다(필드: key, offset, limit, count_total, reverse). 빈 구조체를 전달하면 기본 limit으로 첫 페이지를 가져옵니다. cosmos-evm-contracts/precompiles/common/Types.sol에서 import합니다.

반환값

타입: (uint256[] agentIds, PageResponse pageResponse)

agentIds는 지갑이 소유한 ERC-8004 IdentityRegistry 토큰 ID의 배열입니다. pageResponse는 다음 페이지의 next_key를 담으며, 요청에서 count_total을 true로 설정한 경우 total이 함께 채워집니다.

에러

코드 이름 설명
InvalidArgsLength InvalidArgsLength 호출 인자가 이 메서드의 예상 개수와 다르면 revert됩니다(내부 검증 — 타입이 있는 클라이언트에서는 발생하지 않아야 합니다).
InvalidAddress InvalidAddress wallet이 0 주소이거나 형식이 잘못된 경우 revert됩니다.
InvalidPageRequest InvalidPageRequest pageRequest 필드가 일관성이 없을 때 revert됩니다(예: keyoffset을 동시에 설정한 경우).

예제

지갑의 agent ID 목록

const AGENT = "0x100000000000000000000000000000000000000A";

const pageRequest = {
  key:         "0x",
  offset:      0n,
  limit:       100n,
  countTotal:  false,
  reverse:     false,
};

const [agentIds, pageResponse] = await publicClient.readContract({
  address: AGENT,
  abi: iAgentAbi,
  functionName: "getAgentIds",
  args: [wallet, pageRequest],
});
// agentIds is uint256[] of ERC-8004 token IDs
ESC
검색어를 입력하세요