마루 프리컴파일 아키텍처
마루가 프리컴파일된 계약을 통해 네이티브 블록체인 기능으로 EVM을 확장하는 방법.
마루는 제네시스 시점에 4개의 핵심 프리컴파일을 등록합니다 (Cosmos EVM에서 상속받은 표준 셋과 별도). 마루 고유 4개 프리컴파일: OKRW (스테이블코인 연산), PCL (규제 강제), EAS (KYC/KYB attestation 조회), Agent (ERC-8004 에이전트 신원 인덱싱). 각각 고정 주소에 위치하며 Solidity 호출 가능한 인터페이스를 노출합니다. 신원 프리미티브는 의도적으로 두 프리컴파일로 분리되어 있습니다 — 사람/법인 attestation은 EAS, AI 에이전트 신원은 Agent — 기저 attestation 모델이 다르기 때문입니다.
주요 기능
네이티브 성능
최적화된 Go 코드로 작업이 실행되어, 솔리디티로 작성된 동일한 로직보다 훨씬 낮은 가스 비용과 빠른 실행 속도를 제공합니다.
원활한 EVM 통합
개발자는 표준 솔리디티 인터페이스와 Hardhat, Foundry 같은 익숙한 도구를 사용하여 다른 스마트 계약과 마찬가지로 프리컴파일과 상호작용합니다.
4개 핵심 프리컴파일
OKRW (스테이블코인 연산), PCL (규제 강제), EAS (Ethereum Attestation Service 통한 KYC/KYB attestation 조회), Agent (ERC-8004 에이전트 신원 인덱싱). 각각 고정 주소.
모듈식 및 확장 가능
등록 시스템을 통해 프리컴파일을 쉽게 추가하거나 제거할 수 있어 특정 사용 사례에 맞는 맞춤형 마루 네트워크 구성이 가능합니다.
아키텍처
graph TD
A[Solidity Contract] -.->|calls fixed address| C{Precompile Map}
subgraph Maroo["Maroo-specific precompiles (4)"]
D1[OKRW] --> K1[x/okrw Keeper]
D2[PCL] --> K2[x/pcl Keeper]
D3[EAS] --> K3[x/eas Keeper]
D4[Agent] --> K4[x/agent Keeper]
end
subgraph Std["Standard Cosmos EVM precompiles"]
S1[Staking] --> KS1[x/staking]
S2[Bank] --> KS2[x/bank]
S3[Gov] --> KS3[x/gov]
end
K4 --> R[ERC-8004 IdentityRegistry preinstall]
C --> D1
C --> D2
C --> D3
C --> D4
C --> S1
C --> S2
C --> S3 마루 프리컴파일 시스템의 아키텍처 개요. 솔리디티 계약이 프리컴파일 주소를 호출하면, EVM은 이를 네이티브 Go 구현으로 라우팅합니다. 이 구현은 코스모스 SDK 키퍼를 사용하여 기본 블록체인 상태와 상호작용합니다.
등록 프로세스
DefaultStaticPrecompiles 함수에 중앙 집중화되어 있으며, 이 함수는 프리컴파일 주소와 해당 Go 구현의 맵을 구성합니다.이 함수는 빌더 패턴을 사용하며, 코스모스 EVM에서 상속된 표준 프리컴파일(스테이킹, 거버넌스, 뱅크 작업 등)의 기본 세트로 시작하여 점진적으로 마루의 커스텀 프리컴파일을 추가합니다.
WithOkrwPrecompile 및 WithPclPrecompile 메서드가 호출되어 마루의 핵심 기능이 이 맵에 추가됩니다. 최종 맵은 EVM 모듈로 전달되어 프리컴파일을 실행할 수 있게 됩니다.키퍼를 통한 의존성 주입
프리컴파일이 초기화될 때(예:
WithOkrwPrecompile에서), 의존하는 키퍼들이 '주입'됩니다. okrwKeeper는 x/okrw 모듈의 상태와 로직에 대한 접근을 제공하고, bankKeeper는 토큰 전송을 위한 보편적인 x/bank 모듈에 대한 접근을 제공합니다. 이 의존성 주입 패턴은 프리컴파일이 안전하고 모듈화되며, 무제한적인 접근 없이 블록체인의 나머지 상태와 안전하게 상호작용할 수 있도록 보장합니다.