04 · 전체 비즈니스 프로세스
이 장에서는 RWA 자산의 발행부터 종료까지 전체 수명주기를 연결합니다.
4.1 수명주기 개요
| 프로세스 | 주요 책임자 | 온체인 결과 |
|---|---|---|
| 자산 발행 | 플랫폼 + 자산 발행자 | 새로운 자산 Suite |
| 투자자 온보딩 | 투자자 + 자격 기관 + 발행자 | isVerified == true |
| Mint | Token Agent | 투자자 잔액 증가 |
| Transfer | Token 보유자 | 적격 지갑 간 잔액 이동 |
| Burn | Token Agent | 투자자 잔액과 총공급량 감소 |
4.2 1단계: 자산 발행
발행자는 자산, 자격, 규칙, 역할을 정의한 후 플랫폼 승인 진입점을 통해 Suite를 생성합니다.
| 분류 | 내용 |
|---|---|
| 자산 | 이름, 심볼, decimals, 실물 권리 |
| 자격 | 투자자가 보유해야 하는 Claim Topics |
| 발급 기관 | 각 Topic에 승인된 ClaimIssuers |
| 규칙 | 국가, 보유, 공급, 락업 등의 제한 |
| 역할 | Owner, Token Agent, IR Agent |
| 환경 | Testnet 또는 BOT Mainnet |
발행 후 Token과 Suite 프록시 주소, Chain ID, RPC, 탐색기, 자격 요건, 거래 규칙, 컨트랙트 버전, 소스 검증 상태, pause 상태, 자산 효력 시작 시점을 공개합니다.
새 Token은 기본적으로 pause 상태입니다. pause 중에도 mint와 burn은 가능하지만 일반 투자자 transfer는 실패합니다. 출시 검사를 마친 후 Token Agent가 unpause()를 호출합니다.
4.3 2단계: 투자자 온보딩
각 단계를 수행하는 주체
| 단계 | 실행자 | 온체인 | gas 지불자 | 완료 신호 |
|---|---|---|---|---|
| 자료 제출 및 심사 | 투자자, 자격 기관 | 아니요 | 없음 | 심사 결론 |
| ONCHAINID 생성 | 투자자 | 예 | 투자자 | wallet과 신원 연결 |
| Claim 서명 생성 | 자격 기관 | 아니요 | 없음 | 서명과 Claim 필드 |
| Claim 기록 | 투자자 | 예 | 투자자 | ClaimAdded |
| 대상 자산 등록 | IR Agent | 예 | 자산 발행자 | IdentityRegistered |
| 최종 자격 조회 | 모든 앱 | read-only | 트랜잭션 gas 없음 | isVerified == true |
ClaimSigner가 addClaim을 직접 호출하지 않는 이유
ClaimSigner가 오프체인에서 서명
↓
투자자가 서명을 수령
↓
투자자가 ONCHAINID.addClaim 호출
ClaimSigner는 자격 결론을 증명하고 투자자는 본인의 ONCHAINID를 제어합니다. 자격 기관이 모든 투자자의 gas를 지불하거나 신원을 통제하지 않습니다.
온보딩 완료 판단
IdFactory.getIdentity(wallet)이 유효한 신원을 반환합니다.- ONCHAINID에 대상 Topic의 Claim이 있습니다.
IdentityRegistry.contains(wallet) == true입니다.IdentityRegistry.isVerified(wallet) == true입니다.
대상 Token에 연결된 IdentityRegistry가 최종 판단 기준입니다.
4.4 3단계: Mint
청약·발행 조건, 수신자 자격, decimals 기반 금액 변환을 확인하고 Token Agent가 전송합니다. 영수증과 Transfer 이벤트를 기다린 후 비즈니스 주문을 최종 갱신합니다. 브로드캐스트만으로 지분 도착이 완료되지는 않습니다.
4.5 4단계: 투자자 transfer
권장 순서:
Chain ID와 Token 주소 검증
→ decimals 읽기
→ paused 및 freeze 상태 확인
→ 수신자 isVerified 조회
→ 필요 시 canTransfer 호출
→ 보유자 서명 및 전송
→ 영수증 대기
canTransfer는 사전 검사입니다. 확정 전 온체인 상태가 바뀔 수 있으므로 실제 트랜잭션이 최종 결과를 결정합니다.
4.6 5단계: 상환 및 burn
온체인 burn과 오프체인 결제는 별도 상태로 기록해야 합니다. burn 성공은 실물 자금 수령을 증명하지 않습니다.
4.7 Transfer 이벤트 해석
from | to | 의미 |
|---|---|---|
| 영 주소 | 투자자 | Mint |
| 투자자 | 영 주소 | Burn |
| 영이 아닌 주소 | 영이 아닌 주소 | 일반 transfer 또는 강제 이전 |
일반 transfer와 Agent 강제 이전은 호출된 메서드와 관리 이벤트를 함께 확인해 구분합니다.
4.8 자주 발생하는 실패
| 증상 | 일반 원인 | 대응 |
|---|---|---|
isVerified == false | 미등록, Claim 누락·만료, 미승인 Issuer | 실패한 온보딩 단계 식별 |
Identity is not verified. | mint 수신자 부적격 | 자격 절차 완료 |
Compliance not followed | 자산 규칙 위반 | 규칙 조회 후 발행자 문의 |
Pausable: paused | transfer 미활성화 | 전송 중지 및 pause 상태 표시 |
| 지갑 freeze | 발행자가 주소 동결 | 발행자 문의 |
| 잔액 부족 | 금액 변환 오류 또는 사용 가능 잔액 부족 | decimals와 freeze 수량 재조회 |
| 권한 오류 | 호출자가 필요한 Agent/Owner가 아님 | 올바른 역할로 라우팅 |
| pending 지속 | RPC, gas 또는 네트워크 문제 | tx hash로 조회하고 비즈니스 지시 중복 방지 |