> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Token Factory

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으로 되찾는 방법 예시

```ts theme={null}
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으로 변환하는 방법 예시

```ts theme={null}
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,
  }),
})

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