testnet
GitHub EN

OKRW 프리컴파일

core external-dapp

스마트 컨트랙트에서 직접 원화(KRW) 기반 스테이블코인(OKRW)을 발행하세요.

OKRW 프리컴파일은 고정된 주소에 위치한 특수하고 가스 효율적인 컨트랙트로, Maroo의 네이티브 x/okrw 모듈의 핵심 발행 기능을 EVM에 노출합니다. 이를 통해 개발자는 프로그래밍 방식으로 새로운 OKRW 토큰을 생성할 수 있으며, 이는 규제된 금융 애플리케이션, 탈중앙화 거래소 및 스테이블코인 유동성을 관리해야 하는 기타 프로토콜에 필수적인 기능입니다. 프리컴파일은 엄격한 접근 제어를 시행하여 지정된 발행자 계정만이 새로운 토큰을 생성할 수 있도록 보장합니다.

주요 기능

EVM 네이티브 발행

복잡한 모듈 간 통신 없이 Solidity에서 다른 컨트랙트 호출처럼 `mint` 함수를 호출할 수 있습니다.

엄격한 접근 제어

전역적으로 설정된 '발행자 주소'만이 성공적으로 발행을 실행할 수 있어, 승인되지 않은 토큰 생성을 방지합니다.

사용자 정의 오류 보고

실패한 호출은 `UnauthorizedMinter`와 같은 상세한 사용자 정의 Solidity 오류와 함께 되돌려져, 견고한 오프체인 및 온체인 오류 처리를 가능하게 합니다.

표준 이벤트 발생

표준 EVM `Mint` 이벤트를 발생시켜 인덱서, 블록 탐색기, dApp이 발행 활동을 쉽게 추적할 수 있도록 합니다.

아키텍처

graph TD
    subgraph EVM Environment
        A[Your Smart Contract] -->|calls IOkrw.mint(...)| B{OKRW Precompile<br>0x100...0001}
    end
    subgraph Cosmos SDK
        D[x/okrw Module] -->|updates balances| E[x/bank Module]
    end
    B -->|constructs & dispatches MsgMint| C(Maroo Message Router)
    C -->|routes message| D

OKRW 프리컴파일 호출의 아키텍처 흐름. EVM 호출이 네이티브 Cosmos SDK 메시지로 변환되고, `x/okrw` 모듈에 의해 처리된 후 `x/bank` 모듈의 상태 변경을 야기합니다.

작동 방식

컨트랙트나 EOA가 프리컴파일의 고정 주소(0x100...0001)에서 mint 함수를 호출하면, Maroo 노드는 해당 호출이 EVM에 도달하기 전에 가로챕니다. 프리컴파일의 Go 구현이 실행되어 함수 인자(recipient, amount)를 디코딩합니다.

핵심 로직은 몇 가지 중요한 단계를 수행합니다. 첫째, 입력을 검증합니다. 둘째, x/okrw 모듈의 파라미터에서 전역적으로 설정된 MinterAddress를 가져옵니다. 이 주소를 프리컴파일을 직접 호출한 contract.Caller()와 비교합니다. 일치하지 않으면 트랜잭션은 되돌려집니다. 일치하면 프리컴파일은 네이티브 Cosmos SDK MsgMint를 구성합니다. 이 메시지는 Maroo의 내부 메시지 라우터를 통해 x/okrw 모듈로 전달되며, 이 모듈이 최종 발행 로직을 실행하고 핵심 x/bank 모듈에서 수신자의 잔액을 업데이트합니다.
참고: `contract.Caller()`의 사용은 의도적인 보안 선택입니다. 이는 프리컴파일에 대한 직접 호출만 허용하여, 한 컨트랙트가 다른 컨트랙트를 대신하여 발행을 시도할 수 있는 복잡하고 잠재적으로 취약한 호출 체인을 방지합니다.

오류 및 이벤트 처리

EVM 내에서 풍부한 개발자 경험을 제공하기 위해, 프리컴파일은 Cosmos SDK 레이어의 결과를 표준 EVM 구조로 변환합니다. 만약 x/okrw 모듈이 오류(예: 권한 부여 실패)를 반환하면, errors.go에 있는 프리컴파일의 오류 처리 로직이 이를 사용자 정의 Solidity 오류 revert로 패킹합니다. 이는 단순한 문자열 revert보다 가스 효율적이고 기계가 읽기 쉽습니다.

발행에 성공하면, events.go 로직이 IOkrw 인터페이스에 정의된 Mint 이벤트와 일치하는 표준 EVM 로그를 구성하고 발생시킵니다. 이를 통해 dApp 프론트엔드, 인덱서 및 기타 오프체인 서비스는 표준 ERC20 토큰과 마찬가지로 발행 이벤트를 수신하고 반응할 수 있습니다.

다음 단계

소스: maroo
ESC
검색어를 입력하세요