라이브 데모
문서에서 읽은 수명주기를 직접 돌려보는 화면입니다. 발급부터 폐기까지 5개 탭으로 이어지고, 지갑이 없어도 됩니다.
시작 전에
- ·데모는 GIWA Sepolia 테스트넷에서 동작하며, 실제 자산이 오가지 않습니다.
- ·MetaMask를 연결하거나, 브라우저에서 바로 데모 지갑을 만들 수 있습니다. 발급·폐기 가스는 발급 서비스가 부담합니다.
탭 1 — 발급 체험
- 지갑을 연결하거나 데모 지갑을 생성합니다.
- 생년월일·국적·거주 국가를 입력합니다. 브라우저가 이 값을 Poseidon2 커밋먼트로 바꾸고, 서버에는 루트 32바이트만 보냅니다. 원본은 브라우저 밖으로 나가지 않습니다. 데모 UI가 “확인값”이라 부르는 값이 이 커밋먼트 루트(claimsRoot)입니다.
- 지갑 서명으로 소유권을 증명합니다. 서버는 서명을 검증한 뒤에만 발급하므로, 다른 사람의 주소로는 받을 수 없습니다.
- L1 본인 선언 — KYC level 1 어테스테이션이 발급됩니다. 벤더 검증 등급(L2 명의확인·L3 신원증명)은 연동 전이라 발급되지 않습니다 — 등급은 검증 강도의 약속이기 때문입니다.
- 헤더의 인증 배지가 실시간으로 켜집니다.
발급 전에 심사가 먼저 돕니다 — OFAC·UN 실명단 대사, 제재 지정 지갑 대사, 온체인 노출, 관할, 위험평가. 검사 하나라도 FAIL이면 발급되지 않습니다. 없는 것은 벤더 신원 검증입니다.
탭 2 — 지갑 검색
임의 지갑 주소의 어테스테이션 상태를 조회합니다. dApp이 수취인을 확인하는 것과 같은 경로입니다.
- ·수명주기 상태(
active / revoked / lapsed / none)와 등급, 발급·만료 시각을 보여줍니다. - ·게이트 통과 여부 — minLevel 1·2·3 게이트의 실시간
isVerified()판정을 나란히 보여줍니다.
탭 3 — 송금 데모 (gKRW)
gKRW는 인증 지갑끼리만 전송되는 데모 토큰입니다. 게이트는 컨트랙트에서 동작합니다.
- 파우셋으로 1,000,000 gKRW를 받습니다. 미인증 지갑은 revert됩니다.
- 인증된 수취인에게 전송하면 성공합니다.
- 콘솔에서 내 호패를 폐기한 뒤 다시 전송하면
NotKycVerified로 revert됩니다. 토큰 쪽 코드는 그대로입니다.
탭 4 — 크리덴셜 검증
발급 때 온체인에 올라간 claimsRoot가 정말 검증 필드들의 커밋먼트인지 브라우저에서 재계산해 확인합니다. 서버는 개입하지 않습니다.
- 발급을 마친 지갑으로 내 크리덴셜 검증을 누릅니다. 크리덴셜은 발급 시 이 브라우저에만 저장됩니다.
- 브라우저가 루트를 재계산해 크리덴셜 기재값, 온체인
claimsRootOf()와 대조합니다. - 필드 하나를 골라 선택 공개를 검증합니다. 나머지 필드는 비공개로 남습니다.
- 위변조 테스트는 값을 1 바꿔 재검증합니다. 실패해야 정상입니다.
- 콘솔 탭에서 폐기한 뒤 다시 검증하면 온체인 루트가 0이 되어 즉시 실패합니다.
우리 코드 없이 재현하는 방법은 프라이버시와 ZK 문서에 있습니다.
탭 5 — 컴플라이언스 콘솔
운영자 관점의 화면입니다.
- ·온체인 이벤트를 스캔해 발급 현황·만료 시각·KPI를 보여줍니다.
- ·제재 명단 소스 — 적재한 원본의 발행일·건수·해시를 보여줍니다. 판정에 쓰인 명단 버전이 증적에 함께 남습니다.
- ·일일 재대사 — 활성 호패 전체를 제재 지정 주소·온체인 접촉으로 다시 대사하고, 적중하면 사람 개입 없이 폐기합니다. 매일 00:00 KST 자동 실행이며 콘솔에서 즉시 실행할 수도 있습니다.
- ·케이스 — 심사마다 케이스가 열리고 검사 7종의 결과가 상태바로 남습니다. 비해당 검사도 SKIPPED로 남깁니다.
- ·증적 체인 — 발급·폐기 증적이 앞 레코드의 해시를 품고 이어집니다. 중간을 고치면 뒤가 전부 어긋납니다.
- ·내 호패 철회 — 연결한 지갑이 자기 호패를 철회하는 경로입니다(사유 코드 USER_REQUEST). 소유권 서명을 거치며, 제재 적중에 의한 폐기는 이 경로가 아니라 재대사가 실행합니다.
- ·폐기 SLA — 폐기 승인부터 확정까지 걸린 시간을 측정합니다.
- ·폐기 직후 탭 2에서 같은 주소를 검색하면 모든 게이트가 false로 바뀌어 있습니다.
무엇이 실제이고 무엇이 시뮬레이션인가
실제 (온체인)
| 영역 | 내용 |
|---|---|
| 발급·폐기 | 실제 GIWA Sepolia 트랜잭션. 익스플로러에서 확인 가능 |
| 검증 판정 | isVerified()·게이트·배지 전부 실시간 온체인 read |
| gKRW 게이트 | 컨트랙트에서 실제로 revert |
| 증적 해시 | 증적 레코드의 keccak256이 온체인에 기록. 사본으로 재계산해 대조 가능 |
| 제재 명단 대사 | OFAC SDN·UN Consolidated 원본 적재 — 엔티티 2만여 건 |
| 지정 지갑 대사 | OFAC 디지털자산 주소(EVM) 109건과 정확 일치 대사 |
| 위험평가 | 인자 6종 가중 + 무조건 격상 → 등급이 만료·재심사 주기를 결정 |
| 일일 재대사 | 활성 로스터 재대사 → 적중 시 자동 폐기 (Vercel Cron) |
| 신원 커밋먼트 | 입력값의 Poseidon2 루트가 온체인 기록. 원본은 브라우저 보관 |
| 소유권 증명 | 대상 지갑의 EIP-191 서명을 서버가 검증한 뒤에만 발급 |
시뮬레이션
| 영역 | 내용 |
|---|---|
| 벤더 검증 | 휴대폰 본인확인·eKYC는 미연동(로드맵) — 신원 정보는 본인 선언 |
| 이름 축 상시 감시 | 이름을 저장하지 않으므로 재대사는 지갑·온체인 축만. 벤더 웹훅 필요 |
| 국내 명단 | 금융위 금융제재대상자·테러자금금지법 명단은 기계 판독 배포본이 없어 미적재 |
| 증적 영속성 | 증적 색인은 인스턴스 메모리 — 재시작 시 소실. WORM 저장소는 다음 단계 |