IEas.getParams
getParams() external view returns (EasParams memory params) 이 마루 네트워크의 정식 EAS 배포 주소들을 반환합니다. SchemaRegistry, EAS 컨트랙트, Indexer 주소가 포함됩니다. 앱 시작 시 한 번 호출하면 testnet과 mainnet 모두에서 하드코딩 없이 올바른 주소를 해결할 수 있습니다. 반환 struct 이름은 EasParams입니다. 여러 프리컴파일 인터페이스를 함께 import할 때 충돌을 피하기 위해 네임스페이스 없는 Params 이름에서 변경되었습니다.
파라미터
이 메서드는 파라미터가 없습니다.
반환값
타입:
EasParams 세 개의 필드를 가진 EasParams 튜플을 반환합니다. address schemaRegistry(SchemaRegistry 컨트랙트), address eas(EAS attestation 컨트랙트), address indexer(역방향 조회용 EAS Indexer 컨트랙트)로 구성됩니다.
예제
Solidity에서 EAS 주소 해결
인터페이스와 함께 EasParams struct를 import합니다. 상수 EAS_CONTRACT는 0x1000000000000000000000000000000000000009의 프리컴파일을 가리킵니다.
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.18;
import { IEas, EasParams, EAS_CONTRACT } from "@maroo-chain/contracts/precompiles/eas/IEas.sol";
contract EasResolver {
function readEas() external view returns (address schemaRegistry, address eas, address indexer) {
EasParams memory p = EAS_CONTRACT.getParams();
return (p.schemaRegistry, p.eas, p.indexer);
}
} viem으로 EAS 주소 해결
클라이언트 측에서는 struct 이름 변경이 보이지 않습니다. viem과 ethers는 반환값을 익명 튜플로 다룹니다. Solidity import에서만 새 struct 이름을 따라가면 됩니다.
import { createPublicClient, http } from "viem";
const EAS_PRECOMPILE = "0x1000000000000000000000000000000000000009";
const easPrecompileAbi = [{
name: "getParams",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{
type: "tuple",
components: [
{ name: "schemaRegistry", type: "address" },
{ name: "eas", type: "address" },
{ name: "indexer", type: "address" },
],
}],
}] as const;
const client = createPublicClient({ transport: http("https://rpc-testnet.maroo.io") });
const params = await client.readContract({
address: EAS_PRECOMPILE,
abi: easPrecompileAbi,
functionName: "getParams",
});
console.log("schemaRegistry:", params.schemaRegistry);
console.log("eas: ", params.eas);
console.log("indexer: ", params.indexer);