BlockChain

(BlockChain) Remix 활용

JJeongHyun 2023. 3. 13. 17:02
반응형

Remix를 사용하기 전에 폴더 및 라이브러리 설정

mkdir remix
cd remix
npm init -y
npm i truffle @openzeppelin/contracts @remix-project/remixd
npm i -D prettier-plugin-solidity
npx truffle init

Remix

  • http://remix.ethereum.org에서 사용
  • 스마트 컨트랙트의 작성 및 배포를 쉽게 할 수 있도록 하는 Ethereum IDE이라고 쉽게 이야기가 가
  • VScode에서 작성한 로컬 파일을 Remix에서 연동
    • -s : 로컬 폴더 위치 옵션
    • -u : 연결할 주소
npx remixd -s . --remix-ide https://remix.ethereum.org
# npx remixd -s . -u https://remix.ethereum.org

npx remixd ... 실행 후 터미널 화면 캡처

이후 Remix 웹페이에서 localhost로 연결 해준다

localhost 연결하기

Solidity Compile

remix에서 연동된 VSCode solidity파일 컴파일 설정

pinata를 이용해 testnets.opensea에 NFT 올리기

  • pinata : ipfs 서비스 웹페이지
    • ipfs : InterPlanetary File System
      • 블록체인 이더리움 네트워크에서 사용하는 P2P 파일 저장 방식
    • ipfs를 사용할 경우 Ubuntu, Linux 등 OS에서 프로그램 설치
      • 간단하게 테스트하기 위해 pinata 사용

pinata에 이미지 업로드 하기

  • NFT 객체를 만들기 전에 NFTToken 이미지를 먼저 pinata에 업로드해준다
  • 성공적으로 업로드된 이미지의 CID를 복사해 둔다

NFT 객체 생성

{
  "name": "RPS NFT",
  "description": "Rock, Scissors, Paper with Pinata",
  "image": "https://gateway.pinata.cloud/ipfs/QmTDC8tseTkeo9xqg67rrGugDy9rsyKvAA3BEgdBLqkEhT",
                                // .../ipfs/ + 업로드한 이미지의 CID
  "atrributes": [
    {
      "trait_type": "Rank",
      "value": 1
    },
    {
      "trait_type": "Type",
      "value": 1
    }
  ]
}
  • 이미지의 CID를 위 코드처럼 붙여 넣기 해준다

NFT 객체 업로드

  • JSON 파일 생성 후 이미지 업로드처럼 JSON파일도 업로드해준다
  • 이후 CID를 복사해서 Remix 웹에 있는 solidity를 수정 후 컴파일
  • remix에서 연결된 Metamask 쪽으로 배포(deploy) 및 transact 버튼을 클릭해준다

deploy 배너에서 transact 버튼클릭 전 내용
배포 작업이 끝난 후 MetaMask 화면과 Remix 화면 캡처

NFT Token 생성

Remix 웹을 이용하여 Token minting

  • MetaMask에 연결된 계정 주소를 가져와서 token 개수를 조회
    • Token을 생성한 적이 없기에 숫자 0이 나타난 걸 확인할 수 있다
  • 23이라는 tokenId값을 _minting 함수를 실행시키고 트랜잭션이 발생시킨다
  • 성공적으로 트랜잭션이 끝나고 다시 토큰을 조회해 보면 0 → 1로 바뀐 걸 확인할 수 있다

opensea에서 Token 확인

  • testnets.opensea.io에서 확인

testnets.opensea에서 NFT 객체로 생성한 token 확