# ERC721 토큰 컨트랙트 배포하기

### 시작하기 전에

시작하기 전에 다음을 확인하세요:

* [*InfraEVM* 파라체인](https://docs.infrablockchain.net/infrablockchain-docs/ko/infrablockchain/service-chains/infra-evm-parachain)
* [EVM으로 자산 이동하기](https://docs.infrablockchain.net/infrablockchain-docs/ko/infrablockchain/tutorials/service-chains/infra-evm-parachain/deposit-and-withdraw-token)

### Remix를 사용하여 ERC721 토큰 컨트랙트 배포하기

1. [Remix](https://remix.ethereum.org)에 접속합니다.

   ![remix-main](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-4ee267524fe031a6c66e085b0d4e421159c3defe%2Ferc721-remix-main.png?alt=media)
2. ERC721 토큰 컨트랙트 템플릿을 선택하여 workspace를 생성합니다.

   ![erc721-create-workspace](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-f59f604e7c3a0ab982badde5d79a34e2ae5d4526%2Ferc721-create-workspace.png?alt=media)
3. 생성한 workspace를 확인합니다.

   ![erc721-check-code](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-f85271397fc755c63bb1b4948e0c5efa901dc507%2Ferc721-check-code.png?alt=media)
4. 생성된 코드를 컴파일 합니다.

   ![erc721-compile](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-cec592ce33b2b2e2f03f2da04ccbea31ec0bdce1%2Ferc721-compile.png?alt=media)
5. 배포할 네트워크를 `Injected Provider - MetaMask`로 선택해 준 뒤 MetaMask와 Remix를 연결합니다.

   ![erc721-change-network](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-ce5a6e46439da9200f73c119c2b6b2acd06c2655%2Ferc721-change-network.png?alt=media)
6. 배포하기 전에 소유자 등의 변수 값들을 설정하고 컨트랙트를 배포합니다.

   ![erc721-set-owner-and-deploy](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-4c311592fddf262ecb6144f3549e6750823b33e1%2Ferc721-set-owner-and-deploy.png?alt=media)
7. MetaMask에서 확인 창이 나타나면, 다시 한번 확인한 뒤 컨트랙트 배포를 진행합니다.

   ![erc721-deploy-check](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-22ea7a17c6d12db4625e5c95524067d83fb075fb%2Ferc721-deploy-check.png?alt=media)
8. 배포가 완료되면 MetaMask에서 아래와 같은 화면을 확인할 수 있습니다.

   ![erc721-deploy-complete](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-beb78ddc2fbf2c58122e011be8e5e7e2b6d0bba5%2Ferc721-deploy-complete.png?alt=media)

### 배포된 ERC721 토큰 컨트랙트로 NFT 발행하기

위 튜토리얼에서 계속 이어집니다.

1. 아래 이미지 `Deployed Contracts` 영역에, `safeMint` 함수가 있는 것을 확인할 수 있습니다. 이 함수를 이용하여 NFT를 발행할 수 있습니다. 'to', 'tokenId' 영역에 적절한 값을 채워줍니다.

   ![erc721-mint](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-6b3f5b41103a02731343ac5bc807fd29d10fc4c1%2Ferc721-mint.png?alt=media)
2. `transact` 버튼을 누르면, 트랜잭션에 대해 컨펌할 수 있는 창이 나타납니다.

   ![erc721-mint-check](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-3525608ea043d64f27266425475ba1f451eaefd7%2Ferc721-mint-check.png?alt=media)
3. 트랜잭션이 정상적으로 실행되면, NFT가 발행됩니다. MetaMask와 같은 월렛 내 NFT토큰 보기를 통해 확인이 가능합니다.

   ![erc721-metamask-nft-check](https://2690783012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSAjPxw4oPZa4ydYufEQe%2Fuploads%2Fgit-blob-03149f1f72fc75c4710617af907ecaa149fe2eeb%2Ferc721-metamask-nft-check.png?alt=media)

### 다음 단계로 넘어가기

* [ERC1155 토큰 컨트랙트 배포하기](https://docs.infrablockchain.net/infrablockchain-docs/ko/infrablockchain/tutorials/service-chains/infra-evm-parachain/deploy-erc1155-contract)
