EAS 프리컴파일

component identity

정식 EAS 배포의 디스커버리 표면입니다. getParams()가 SchemaRegistry, EAS, Indexer 주소를 반환하며, 설정되지 않은 슬롯은 0 주소로 표시됩니다.

0x1000000000000000000000000000000000000009 주소의 EAS 프리컴파일은 얇은 모듈 설정 표면입니다. 단일 view 메서드인 getParams()만 노출하며, 이 체인의 정식 Ethereum Attestation Service 배포 주소(schemaRegistry, eas, indexer)를 반환합니다. 각 주소 슬롯은 독립적으로 설정할 수 있으며, 설정되지 않은 슬롯은 0 주소(0x0000…0000)로 반환되므로 호출자가 사용 전에 확인해야 합니다. 실제 attestation API(발급, 조회, 폐기)는 이 프리컴파일이 아니라 EAS 컨트랙트 preinstall에 있습니다.

getParams()가 반환하는 값

getParams()x/eas 모듈 파라미터에서 가져온 세 개의 주소 튜플(SchemaRegistry, EAS 컨트랙트, Indexer)을 반환합니다. 런타임에 이 값을 해결하면 testnet과 mainnet에서 같은 dApp 코드가 그대로 동작합니다. 프로덕션 코드에 하드코딩하지 않습니다.
interface IEas {
    struct EasParams {
        address schemaRegistry;
        address eas;
        address indexer;
    }
    function getParams() external view returns (EasParams memory params);
}

address constant EAS_PRECOMPILE = 0x1000000000000000000000000000000000000009;
IEas.EasParams memory p = IEas(EAS_PRECOMPILE).getParams();
require(p.eas != address(0), "EAS not configured on this network");

설정되지 않은 슬롯의 0 주소 처리

모듈 파라미터의 세 주소 슬롯은 각각 선택적입니다. 체인에 SchemaRegistry, EAS, Indexer 배포가 설정되지 않은 경우 해당 필드는 0x0000000000000000000000000000000000000000로 반환됩니다. 프리컴파일은 슬롯이 비어 있어도 revert하지 않고 0을 반환하므로, 호출자가 부분 배포 상태를 감지하고 우아하게 대응할 수 있습니다. 반환된 컨트랙트를 호출하기 전에 항상 0 주소를 확인합니다.
import { createPublicClient, http } from "viem";

const client = createPublicClient({ transport: http("https://rpc-testnet.maroo.io") });
const params = await client.readContract({
  address: "0x1000000000000000000000000000000000000009",
  abi: easPrecompileAbi,
  functionName: "getParams",
});

if (params.eas === "0x0000000000000000000000000000000000000000") {
  throw new Error("이 네트워크에는 EAS 컨트랙트가 아직 설정되지 않았습니다");
}
if (params.indexer === "0x0000000000000000000000000000000000000000") {
  console.warn("Indexer가 설정되지 않았습니다. 역방향 조회 쿼리를 사용할 수 없습니다");
}

이 프리컴파일이 하지 않는 일

이 프리컴파일은 attestation의 발급, 조회, 폐기를 수행하지 않습니다. 해당 작업은 표준 @ethereum-attestation-service/eas-sdk 패키지나 동등한 ABI 바인딩으로 EAS 컨트랙트 preinstall을 직접 호출합니다. 이 프리컴파일은 디스커버리 단계로만 사용합니다. 한 번 호출해 주소를 캐싱하고, 이후 흐름은 EAS 컨트랙트와 직접 통신합니다.

참고

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