testnet
GitHub EN

EAS 프리컴파일

component identity

온체인 KYC / KYB attestation 조회를 위한 Ethereum Attestation Service 브리지 — EVM 호출 가능.

EAS 프리컴파일은 마루의 4개 핵심 정적 프리컴파일 중 하나입니다 (OKRW, PCL, Agent와 함께). Solidity 호출자를 Ethereum Attestation Service (EAS) 생태계로 연결하는 브리지로, 특정 스키마로 발행된 attestation에 대한 읽기 view를 노출합니다. PCL의 EAS_POLICY 템플릿이 KYC / KYB 자격증명에 의존하는 컴플라이언스 게이트를 강제할 때 사용하고, dapp이 자격증명 보유에 따라 기능을 게이팅할 때도 직접 사용합니다.

프리컴파일이 필요한 이유 (EAS 컨트랙트 직접 호출 대신)

EAS 자체는 Solidity에서 직접 호출 가능한 표준 ERC 컨트랙트들입니다. 프리컴파일 + x/eas Cosmos 모듈은 성능 레이어입니다: (recipient, schema)별로 받은 attestation의 인덱싱된 캐시를 유지해, PCL이 AnteHandler 실행 중 "발신자가 스키마 X attestation을 보유하는가?"를 저렴하게 조회할 수 있게 합니다. 프리컴파일 없이는 EAS 컨트랙트 스토리지 순회가 필요해 가스 비용이 지배적이 됩니다.

쓰기 (attestation 발행, 폐기)는 여전히 표준 EAS 컨트랙트로 진행됩니다 — 정식 상태는 거기 머물고, 마루 프리컴파일은 순수히 쿼리 도우미입니다.

Read 메서드 (추상)

개념적으로 노출되는 메서드 (정확한 ABI는 소스):

  • getAttestation(uid) — UID로 단일 attestation 조회. {recipient, schema, time, expirationTime, revocationTime, data} 반환.
  • getReceivedUIDs(recipient, schema, offset, limit) — 지정된 스키마로 recipient가 받은 attestation UID 페이지네이션.
  • getReceivedUIDCount(recipient, schema) — 해당 recipient/schema 조합의 attestation 개수.


유효성 검사 (isValid)는 일반적으로 호출자가 조합합니다 — revocationTime == 0expirationTime == 0 || expirationTime > block.timestamp 확인.

사용 사례 1 — PCL EAS_POLICY 강제

EAS_POLICYGlobalPolicyConfig 또는 ContractPolicyConfig의 일부일 때, PCL ante decorator가 트랜잭션 검증 중 이 프리컴파일을 호출합니다:

1. 정책의 요구 스키마 UID를 UnitPolicy.parameters에서 읽음.
2. getReceivedUIDCount(sender, schemaUid) 호출. 0이면 ReasonCode: EasAttestationRequired로 거절.
3. getAttestation(uid)로 만료/폐기 확인.

이를 통해 dapp이 직접 검사를 구현하지 않아도 "KYC 인증된 계정만 규제 경로 사용"을 마루가 강제합니다.

사용 사례 2 — Dapp 자격증명 게이팅

Solidity 컨트랙트가 프리컴파일을 직접 호출해 기능을 게이팅할 수 있습니다:

``solidity
interface IEAS {
function getReceivedUIDCount(address recipient, bytes32 schema) external view returns (uint256);
}

contract Vault {
IEAS constant EAS = IEAS(0x100000000000000000000000000000000000000A); // 예시 주소
bytes32 constant KYC_SCHEMA = 0x...;

modifier onlyVerified() {
require(EAS.getReceivedUIDCount(msg.sender, KYC_SCHEMA) > 0, "KYC required");
_;
}
}
``

이로써 attestation 조회를 다시 구현할 필요가 없습니다 — 프리컴파일이 저렴하게 처리합니다.
소스: maroo
ESC
검색어를 입력하세요