배포된 컨트랙트 (테스트넷)

resources

마루 테스트넷의 정식 컨트랙트 주소 목록입니다. 유틸리티, AA, EAS, ERC-8004, 상속된 EVM 프리컴파일, 마루 프리컴파일과 네이티브 OKRW ERC20 표현을 포함합니다.

OKRW — 두 EVM 진입점

OKRW는 고정된 두 주소로 노출됩니다. IOkrw 프리컴파일은 마루 고유 작업(mint, getParams)을 처리하고, 네이티브 ERC20 표현은 표준 ERC20 호출(transfer, approve, transferFrom, balanceOf)을 처리합니다. 두 주소 모두 결국 동일한 aokrw 잔액을 이동시키며, 호출에 필요한 API 표면에 맞는 주소를 선택합니다.

진입점주소용도
IOkrw 프리컴파일0x1000000000000000000000000000000000000001mint, getParams
네이티브 ERC20 표현0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE표준 ERC20 (transfer, approve, balanceOf, …)
// 지갑·DEX 연동 — ERC20 주소와 통신합니다
IERC20 okrw = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
okrw.approve(router, 10_000_000 ether);   // 10,000,000 OKRW

// 마루 확장 작업 — IOkrw 프리컴파일과 통신합니다
import "@maroo-chain/contracts/precompiles/okrw/IOkrw.sol";
IOkrw extn = IOkrw(0x1000000000000000000000000000000000000001);
extn.mint(recipient, 10_000_000 ether);
참고: ERC20 주소는 제네시스에서 `aokrw` base denom을 ERC20 진입점에 매핑하는 토큰 페어로 등록됩니다. 표준 EVM 도구(블록 익스플로러, 지갑, DEX 라우터)가 마루 고유 패치 없이 이 주소와 그대로 동작합니다.

마루 프리컴파일

다음 네 개의 프리컴파일 주소는 테스트넷과 메인넷에서 동일합니다. @maroo-chain/contracts/precompiles/...의 인터페이스를 가져와 호출합니다.

프리컴파일주소목적
IOkrw0x1000000000000000000000000000000000000001OKRW mint·params
IPcl0x1000000000000000000000000000000000000005프로그래머블 컴플라이언스 레이어
IEas0x1000000000000000000000000000000000000009EAS 디스커버리(getParams)
IAgent0x100000000000000000000000000000000000000A에이전트 디스커버리·역방향 조회
export const ADDR = {
  OKRW_PRECOMPILE: "0x1000000000000000000000000000000000000001",
  OKRW_ERC20:      "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
  PCL:             "0x1000000000000000000000000000000000000005",
  EAS_PRECOMPILE:  "0x1000000000000000000000000000000000000009",
  AGENT:           "0x100000000000000000000000000000000000000A",
  // ERC-8004 IdentityRegistry preinstall
  ERC8004_IDENTITY:"0x8004000000000000000000000000000000000001",
} as const;

EAS와 ERC-8004 preinstall

실제 EAS attestation 컨트랙트, SchemaRegistry, Indexer는 preinstall로 배포되어 있으므로 하드코딩 대신 IEas.getParams()로 정식 주소를 조회합니다. ERC-8004 IdentityRegistry는 별도의 preinstall로 0x8004000000000000000000000000000000000001에 위치합니다.
import { createPublicClient, http } from "viem";

const EAS_PRECOMPILE = "0x1000000000000000000000000000000000000009";
const easAbi = [{
  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 { eas, indexer, schemaRegistry } = await client.readContract({
  address: EAS_PRECOMPILE,
  abi: easAbi,
  functionName: "getParams",
});
ESC
검색어를 입력하세요