GIWA의 계정 인프라(EIP-7702 · Dojang KYC) 위에서, 투자자는 ETH 없이 서명만으로 외부 체인 자산에 투자합니다.
01 · Overview
온체인 투자에는 세 가지 진입 장벽이 있습니다. 투자를 시작하려면 가스 토큰이 필요하고, 자산은 다른 체인에 있으며, RWA에 필요한 KYC는 서비스마다 반복됩니다. Mulle은 이를 각각 표준으로 해결합니다.
| 장벽 | 접근 | 표준 |
|---|---|---|
| 가스 | 투자자는 서명만 하고, 가스는 스폰서가 대납 | EIP-7702 |
| 크로스체인 | 요청과 정산을 분리한 비동기 볼트, 체결은 릴레이어가 외부 체인에서 수행 | ERC-7540 |
| KYC | 체인 레벨 KYC(Dojang attestation)를 볼트 진입 시점에 검증 | Dojang (EAS) |
02 · Architecture
프론트엔드는 서명 데이터를 릴레이 API에 전달하고, 이후의 모든 조율은 볼트의 온체인 이벤트와 상태를 통해 이루어집니다. 프론트엔드와 백엔드가 별도로 상태를 공유하지 않으므로, 릴레이어가 중단되어도 요청은 볼트에 pending 상태로 유지되고 재시작 시 최근 블록을 다시 스캔해 처리됩니다.
flowchart LR
subgraph B["브라우저 — 서명만"]
FE["웹 프론트엔드 + 임베디드 지갑
EIP-712 · 7702 authorization 서명"]
end
subgraph R["릴레이어 — Node"]
RELAY["Sponsor Relay API
POST /relay · /setup"]
SETTLE["Settlement Worker
이벤트 폴링 → 외부 체결 → fulfill"]
NAV["NAV Oracle · 60s"]
end
subgraph G["GIWA Sepolia"]
ACC["MulleAccount
7702 위임 · ERC-7821 배치"]
VAULT["MulleVault
ERC-7540 비동기 볼트"]
KYC["DojangKyc → DojangScroll"]
end
subgraph X["Robinhood Testnet"]
V4["Uniswap v4
TSLA / USDC 풀"]
end
FE -- "서명 페이로드" --> RELAY
RELAY -- "스폰서 tx" --> ACC
ACC --> VAULT
VAULT -- "KYC 게이트" --> KYC
SETTLE -- "이벤트 감시" --> VAULT
SETTLE -- "실제 매수·매도" --> V4
SETTLE -- "fulfill" --> VAULT
NAV -- "postNav" --> VAULT
03 · Account
투자자의 EOA는 최초 1회 authorization 서명으로 MulleAccount 구현체에
위임됩니다. 이후 모든 실행은 다음 순서로 진행됩니다.
SponsoredExecution { mode, executionData, nonce }POST /relay로 전달 — 스폰서 키는 서버에만 보관authorizationList 포함MulleAccount가 온체인에서 서명과 nonce를 검증한 뒤 배치를 투자자 계정으로 실행ERC-4337의 EntryPoint · bundler · paymaster 역할을 컨트랙트 하나와 서버 하나로 구성한 형태입니다. 배치 실행 인터페이스는 ERC-7821 표준을 따르므로, 프로덕션에서는 위임 대상을 ERC-7579 모듈러 계정으로 교체할 수 있습니다.
04 · Vault
크로스체인 정산에는 지연이 따르므로, 예치와 출금은 request → fulfill → claim 3단계의 비동기 플로우로 처리됩니다.
requestId를 발급받고, 에스크로는 요청 단위로 기록됩니다
sequenceDiagram
participant U as 투자자 (서명만)
participant R as 릴레이어
participant V as MulleVault (GIWA)
participant X as Uniswap v4 (외부 체인)
U->>R: EIP-712 서명 (approve + requestDeposit)
R->>V: 스폰서 tx 제출
V->>V: KYC 체크 · 에스크로 · requestId 발급
R->>V: DepositRequest 이벤트 감지
R->>X: USDC → TSLA 실제 매수
R->>V: fulfillDeposit(requestId, shares)
U->>R: EIP-712 서명 (claim)
R->>V: 스폰서 tx 제출 → shares 민팅
출금은 동일한 구조로 처리됩니다 — 외부 체인 매도 후 fulfillRedeem, 정산금 수령.
05 · KYC
faucet 호출은 7702 배치로 실행되므로 msg.sender가 투자자 본인이며,
attestation은 투자자 주소로 발급됩니다. 수수료와 가스는 스폰서가 부담합니다.
DojangKyc는 유효한 attester 목록(메인넷 Upbit, 테스트넷 faucet)을 관리하고,
Dojang이 없는 환경에서는 폴백 검증을 제공합니다. 볼트는 isVerified(address)
인터페이스만 참조하므로, KYC 정책이 변경되어도 볼트 코드는 영향을 받지 않습니다.
06 · Relayer
릴레이어는 현재 GIWA 테스트넷과 외부 체인 사이의 임시 브리지 역할을 합니다. 양쪽 체인에 유동성을 보유하고, 예치 시 외부 체인에서 매수한 뒤 GIWA의 에스크로를 회수하며, 출금 시 매도 대금을 GIWA에서 정산합니다. 장애 상황(RPC 오류, nonce 경합, 프로세스 재시작)에 대비해 다음 장치를 갖추고 있습니다.
| 장치 | 내용 |
|---|---|
| Redrive | 미체결 요청은 컨트랙트에서 소진이 확인될 때까지 매 폴링마다 재시도됩니다 |
| Backfill | 재시작 시 최근 약 12시간의 블록을 스캔해 다운타임 중 요청을 회수합니다 |
| 체결 idempotency | 외부 체결 결과를 fulfill 전에 기록해, 재시도 시 중복 체결을 방지합니다 |
| Nonce 직렬화 | 매니저와 스폰서 트랜잭션을 각각 단일 nonce 레인으로 순차 처리합니다 |
| NAV 오라클 | 외부 시세를 60초마다 볼트에 기록해, GIWA 위에서 포지션을 평가할 수 있습니다 |
체결은 Robinhood Chain 테스트넷의 Uniswap v4 풀(TSLA/USDC)에서 실행됩니다.
시세는 PoolManager의 extsload로 slot0의 sqrtPriceX96을 조회해 계산합니다.
07 · Trust Assumptions
| 항목 | 현재 (해커톤) | 프로덕션 방향 |
|---|---|---|
| 브리지 | 단일 릴레이어 (trusted solver) | 인텐트·솔버 네트워크 또는 정식 브리지 메시징 |
| 계정 | 자체 MulleAccount (미니멀) | ERC-7579 모듈러 계정으로 위임 대상 교체 |
| 스폰서 | 단일 서버 + 단일 키 | ERC-4337 paymaster · bundler 인프라 |
| KYC | Dojang + 데모 allowlist 폴백 | 폴백 제거, Upbit attester 단독 |
| NAV | 단일 서버 오라클 | 검증 가능한 오라클 피드 |
검증 — Foundry 테스트 26개(요청 단위 체결, 서명 재사용 차단, KYC 게이트 등), 예치부터 출금까지 전체 플로우의 E2E 테스트, 배포 컨트랙트 4개 소스 검증.
Appendix
| 컨트랙트 | 주소 (전부 verified) |
|---|---|
| MulleVault · ERC-7540 | 0x8A78E6Aa63704471e4CFB11504880Ecd4F7C126A |
| MulleAccount · 7702 위임 대상 | 0x736a0703eaF453AdCACDcF1cfe103fA7Cf86a7F0 |
| DojangKyc | 0x260d335834a3A9656eaF9A0C050eB004ad9BEd5C |
| mUSD · 정산 자산 | 0x970F3c5D468a0F6Ae608A51317a9189fa48770e5 |
| DojangScroll · GIWA 공식 | 0xd5077b67dcb56caC8b270C7788FC3E6ee03F17B9 |
| Dojang Faucet · GIWA 공식 | 0x63CCe2b569A7bC35895ee24306c1512fefc06121 |
| 김상욱 | Smart Contract Engineer — MulleVault · MulleAccount · DojangKyc |
| 원알렉스 | Backend — 크로스체인 릴레이어 · 스폰서 relay API |
| 김기황 | Web3 Product & Frontend Engineer — 투자 플로우 UI |
| 윤성권 | DevOps / Infra Engineer — 인프라 · 배포 자동화 |
| 샴쇼드 로지코프 | Product Owner — 프로덕트 전략 · BM · GTM |