배경
CW-20은 CosmWasm에서 대체 가능한 토큰에 대한 사양으로, ERC-20 사양을 기반으로 합니다. CosmWasm 내에서 임의의 대체 가능한 토큰을 생성하고 처리할 수 있으며, 해당 토큰을 생성, 발행, 소각 및 계정 간 전송하는 방법을 지정합니다. adapter 컨트랙트는 승인된 소스 CW-20 컨트랙트만 토큰을 발행할 수 있도록 하여 “위조” 토큰 생성을 방지합니다. CW-20 표준은 상대적으로 성숙하고 완전하지만, 토큰은 순전히 CosmWasm 컨텍스트 내에 존재하며 발행 컨트랙트에 의해 완전히 관리됩니다(계정 잔액 추적 포함). 이는 Injective의 네이티브 모듈과 직접 상호작용할 수 없음을 의미합니다(예: Injective exchange 모듈을 통해 거래하거나 발행 컨트랙트를 포함하지 않고 전송하는 것이 불가능). 위의 사항을 고려하여 CW20과 Injective bank 모듈 간의 브릿지 역할을 하는 솔루션을 제공해야 합니다. 컨트랙트의 워크플로우는 다음과 같습니다:- 새 CW-20 토큰 등록
- X CW-20 토큰을 Y TokenFactory 토큰으로 교환 (원래 CW-20 토큰은 컨트랙트에 보관됨)
- Y TF 토큰을 X CW-20 토큰으로 다시 교환 (CW-20 토큰이 릴리스되고 TokenFactory 토큰이 소각됨)
메시지
RegisterCw20Contract { addr: Addr }
adapter에서 처리할 새 CW-20 컨트랙트(addr)를 등록하고 factory/{adapter_contract}/{cw20_contract} 형식의 새 TokenFactory 토큰을 생성합니다.
Receive { sender: String, amount: Uint128, msg: Binary }
Receiver CW-20 인터페이스의 구현입니다.
CW-20 컨트랙트에 의해서만 호출되어야 합니다.
