OKRW 모듈
네이티브 KRW 연동 스테이블코인 OKRW의 생성 및 파라미터를 관리합니다.
x/okrw 모듈은 마루의 네이티브 가스 토큰인 aokrw 토큰의 발행을 관리합니다. (스테이킹은 별도의 본드 단위인 amaroo로 정산됩니다.) 의도적으로 단순한 설계입니다. 권한 있는 단일 'minter' 주소만 새 토큰을 생성할 수 있고, 그 주소는 온체인 거버넌스로만 변경 가능한 모듈 파라미터입니다.
주요 기능
통제된 발행
사전에 설정된 단일 주소(minter_address)만이 새로운 OKRW 토큰을 발행할 권한을 가집니다.
단순성과 보안성
모듈은 복잡성과 공격 벡터를 줄이기 위해 발행 및 파라미터 관리에만 초점을 맞춘 최소한의 API만 제공합니다.
아키텍처
graph TD
subgraph Governance
A[Gov Proposal: UpdateParams] -->|sets| B(okrw/Params: minter_address)
end
subgraph Minting Process
C(Authorized Minter) -->|sends tx| D{MsgMint}
D -- recipient, amount --> E[x/okrw Module]
E -->|1. MintCoins| F[x/bank Module]
F -->|creates coins in| G[okrw Module Account]
E -->|2. SendCoinsFromModuleToAccount| F
F -->|sends coins to| H(Recipient Address)
end
style A fill:#f9f,stroke:#333,stroke-width:2px
style C fill:#ccf,stroke:#333,stroke-width:2px OKRW 발행 및 파라미터 관리 프로세스 아키텍처. 거버넌스가 승인된 민터를 설정하면, 해당 민터는 발행 흐름을 시작할 수 있습니다. 이 과정에서 bank 모듈을 사용하여 토큰을 생성하고 분배합니다.
발행 메커니즘
x/okrw 모듈의 핵심 기능은 새 토큰 발행입니다. Mint 메시지 서버가 이 프로세스를 처리합니다. MsgMint 트랜잭션을 수신하면 모듈은 다음과 같은 일련의 중요한 검사를 수행합니다:1. 트랜잭션 서명자의 주소가 모듈 파라미터에 저장된
minter_address와 일치하는지 확인합니다.2. 요청된 금액이 양수이고 토큰 단위가 설정된
mint_denom(일반적으로 aokrw)과 일치하는지 확인합니다.3. 수신자 주소가 유효한 Bech32 주소인지 검증합니다.
모든 검사를 통과하면 모듈은
x/bank 모듈을 사용하여 2단계 발행 작업을 실행합니다. 먼저, MintCoins를 호출하여 지정된 양의 토큰을 생성하고 이를 x/okrw 모듈 자체 계정에 예치합니다. 그 직후, SendCoinsFromModuleToAccount를 호출하여 새로 생성된 이 토큰들을 모듈 계정에서 최종 수신자의 주소로 전송합니다. 이 2단계 프로세스를 통해 토큰 생성과 분배 과정을 명확하게 감사할 수 있습니다. 참고: `x/okrw` 모듈 자체는 영구적인 잔액을 보유하지 않습니다. 모듈 계정은 원자적 발행·전송이 일어나는 동안 임시 보관 영역으로만 사용됩니다.
파라미터 관리
x/okrw 모듈의 동작은 주로 minter_address와 mint_denom 같은 작은 파라미터 집합으로 제어됩니다. 네트워크 보안과 안정성을 유지하기 위해 이러한 파라미터는 직접 수정할 수 없습니다. 대신, 모든 변경 사항은 거버넌스 제안으로 제출되어야 합니다.UpdateParams 메시지는 모듈의 지정된 권한자에게만 허용됩니다. 기본적으로 이 권한은 x/gov 모듈 계정이므로, 성공적인 거버넌스 투표만이 파라미터 업데이트를 승인할 수 있습니다. 이 메커니즘 덕분에 OKRW 발행 권한자와 통화의 기본 단위를 커뮤니티가 완전히 통제할 수 있습니다. 파라미터 업데이트 제안이 통과되면, x/okrw 키퍼는 새로운 파라미터를 검증하고 상태에 저장합니다. 주의: 파라미터를 업데이트할 때는 변경하려는 필드뿐만 아니라 전체 `Params` 객체를 메시지에 제공해야 합니다. 필드를 생략하면 해당 필드는 기본값(예: 빈 문자열)으로 재설정됩니다.