메인 콘텐츠로 건너뛰기
Injective의 Token Factory 모듈을 사용하면 사용자와 컨트랙트가 새로운 네이티브 토큰을 생성하고 Mint + Burn 모델을 사용하여 네이티브 토큰을 CW20 토큰과 교환할 수 있습니다. 다른 소스의 자산을 네이티브 bank denom으로 표현하면 사용자가 exchange, auction, insurance funds 등 나머지 온체인 모듈에 액세스할 수 있으므로 체인에서 이 기능을 갖추는 것이 중요합니다. Token factory denom은 factory/{creator address}/{subdenom} 형식입니다. 생성자 역할을 하는 CW20AdapterContract와 결합하여 CW20 자산을 Injective에서 Token Factory denom으로 네이티브하게 표현할 수 있습니다. 작동 방식은 CW20 자산이 CW20AdapterContract에 보관되고 injective 주소에 대한 factory denom으로 발행되며, 다시 CW20으로 되찾으려면 bank 모듈에서 소각되고 CW20AdapterContract에서 잠금이 해제되어 소유자 주소로 돌아갑니다.

factory denom을 CW20으로 되찾는 방법 예시

import {
  MsgExecuteContractCompat,
  ExecArgCW20AdapterRedeemAndTransfer,
} from '@injectivelabs/sdk-ts/core/modules'

const CW20_ADAPTER_CONTRACT = 'inj...'
const contractCw20Address = 'inj...'
const injectiveAddress = 'inj...'

const message = MsgExecuteContractCompat.fromJSON({
  sender: injectiveAddress,
  contractAddress: CW20_ADAPTER_CONTRACT,
  funds: {
    denom: `factory/${CW20_ADAPTER_CONTRACT}/${contractCw20Address}`,
    amount: actualAmount.toFixed(),
  },
  execArgs: ExecArgCW20AdapterRedeemAndTransfer.fromJSON({
    recipient: injectiveAddress,
  }),
})

// 그런 다음 메시지를 트랜잭션에 패킹하고 서명한 후 체인에 브로드캐스트합니다

CW20을 factory denom으로 변환하는 방법 예시

import {
  ExecArgCW20Send,
  MsgExecuteContractCompat,
} from '@injectivelabs/sdk-ts/core/modules'

const CW20_ADAPTER_CONTRACT = 'inj...'
const contractCw20Address = 'inj...'
const injectiveAddress = 'inj...'
const amount = '1000000' // 6 소수점을 가지므로 체인에서 1 USDT로 표현됨

const message = MsgExecuteContractCompat.fromJSON({
  contractAddress: contractCw20Address,
  sender: injectiveAddress,
  execArgs: ExecArgCW20Send.fromJSON({
    amount,
    contractAddress: CW20_ADAPTER_CONTRACT,
  }),
})

// 그런 다음 메시지를 트랜잭션에 패킹하고 서명한 후 체인에 브로드캐스트합니다