Maroo에서 EAS로 신원 검증하기
Hardhat을 사용하여 증명을 생성하고 Maroo CLI를 사용하여 이를 검증하는 전체 과정입니다.
학습 목표
- ✓Maroo에 EAS 스키마를 배포하는 방법
- ✓온체인 증명을 생성하는 방법
- ✓`marood`를 사용하여 증명을 조회하는 방법
사전 요구사항
- OKRW가 있는 Maroo 테스트넷 계정
- 기본적인 Solidity/Ethers.js 지식
필요 도구
HardhatmaroodNode.js
이 튜토리얼에서는 KYC 제공자가 사용자에게 'IsVerified' 증명을 발급하는 상황을 시뮬레이션합니다. 그런 다음 Maroo CLI를 사용하여 이 증명을 읽어, dApp이나 백엔드 서비스가 사용자의 상태를 검증하는 방법을 시뮬레이션합니다.
1
1. 스키마 정의
먼저 스키마를 등록해야 합니다. 이 튜토리얼의 스키마는 간단한
bool isVerified입니다. 스크립트를 사용하여 글로벌 EAS 스키마 레지스트리에 이를 등록합니다. scripts/register.js javascript
const { SchemaRegistry } = require("@ethereum-attestation-service/eas-sdk");
// ... 프로바이더/사이너 설정 ...
const schemaRegistry = new SchemaRegistry(SCHEMA_REGISTRY_ADDRESS);
const schema = "bool isVerified";
const resolverAddress = "0x0000000000000000000000000000000000000000"; // 리졸버 없음
const revocable = true;
const tx = await schemaRegistry.register({ schema, resolverAddress, revocable });
const uid = await tx.wait();
console.log("Schema UID:", uid); 2
2. 증명 생성
이제 발급자 역할을 수행합니다. 특정 수신자 주소가 검증되었음을 증명합니다.
scripts/attest.js javascript
const { EAS, SchemaEncoder } = require("@ethereum-attestation-service/eas-sdk");
const eas = new EAS(EAS_CONTRACT_ADDRESS);
eas.connect(signer);
const schemaEncoder = new SchemaEncoder("bool isVerified");
const encodedData = schemaEncoder.encodeData([{ name: "isVerified", value: true, type: "bool" }]);
const tx = await eas.attest({
schema: SCHEMA_UID,
data: {
recipient: "0xRecipientAddress...",
expirationTime: 0,
revocable: true,
data: encodedData,
},
});
const newAttestationUID = await tx.wait();
console.log("Attestation UID:", newAttestationUID); 3
3. CLI를 통한 검증
마지막으로 Maroo CLI를 사용하여 증명이 존재하고 유효한지 확인합니다. 이는 데이터가 Cosmos 레이어에서 접근 가능함을 확인시켜 줍니다.
terminal bash
marood query eas get-attestation \
0xEASContractAddress... \
0xYourAttestationUID... 팁: 출력에서 'revocation_time' 필드를 확인하세요. 0이면 증명이 여전히 유효한 것입니다.
마무리
EVM 도구와 Cosmos 인프라 간의 간극을 성공적으로 메웠습니다. 표준 이더리움 도구를 사용하여 증명을 생성하고 Maroo의 네이티브 CLI를 사용하여 이를 검증했습니다.