IEUM Runtime & 하이브리드 렛저
IEUM Runtime은 NestJS 기반 API 서버와 비동기 Commit Worker로 구성됩니다. Hybrid Ledger(오프체인 SSOT)를 통해 결제의 즉시성과 정산의 확정성을 분리합니다.
4.1 시스템 구성 요소
White-label API 서버
NestJS
인증/지갑/결제/발행 API 제공. 오프체인 즉시 응답(1초 목표).
Commit Worker
Queue / Worker
비동기 체인 트랜잭션 실행. 재시도·중복방지 내장.
Off-chain Ledger (SSOT)
TypeORM / PostgreSQL
Receipt·Batch·정산 상태 관리의 단일 진실 원본.
Vault Execution
스마트컨트랙트
사전 민팅된 Vault에서 Transfer로 충전 처리. Multicall/Bulk 최적화.
Subnet
Avalanche Subnet
실제 체인 트랜잭션 실행 레이어.
4.2 Receipt 상태 머신
AUTHORIZED
즉시 응답. 정책 평가·잔액 락(Lock) 완료. 사용자 기준 결제 완료 상태.
COMMITTED
비동기 체인 실행 성공. txHash 확보. 중복 처리 불가한 고정점.
BATCHED
정산 배치(Batch)에 포함. 앵커링 대기 상태.
ANCHORED (v1.1~)
배치 머클 루트가 L1(PayChain)에 기록됨. 기술적·법적 정산 확정.
SETTLED (v1.1~)
은행 레일 또는 스테이블코인 전송을 통한 최종 정산 완료.
4.3 SSOT 데이터 모델
기관/키
orgs, api_keys
파트너사 및 API 키 관리
사용자/지갑
users, wallet_registry
userId ↔ 지갑 주소 매핑
결제
receipts, legs
결제 논리 단위 + 결제/캐시백/수수료 세부 항목
발행·소각
mint_requests, burn_requests
Mint/Burn 요청 및 상태 추적
정산
batches, batch_items
정산 배치 단위 및 Receipt 링크
감사
audit_logs
누가/언제/무엇을 변경했는지 초단위 기록
4.4 Vault 아키텍처 (충전 최적화)
담보 입금 확인 시 최대 발행량(maxSupply)까지 선(先)민팅하여 Vault에 보관합니다.
사용자 충전 시에는 기존 Mint/Burn 대신 Vault → 사용자 지갑으로 Transfer 처리합니다.
1개 트랜잭션으로 다수 사용자에게 배분 가능한 Multicall/Bulk 방식을 적용하여 처리 속도를 개선합니다.
Dual Control 원칙 유지: Bank(issuer) + Trust(trustee) 양측 승인이 있어야만 maxSupply 조정 가능합니다.
Last updated