ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Smart Contract 생성
    Front-end/Solidity 2024. 5. 30. 14:10
    728x90
    반응형

    OpenZeppelin

    OpenZeppelin이란 솔리디티 기반의 스마트 컨트랙트를 개발할 수 있는 표준 프레임워크이다.

     

    OpenZeppelin 설치

    VSCode를 설치하고 폴더(폴더명: contracts)를 하나 생성 한 후 터미널을 열어서 npm으로 OpenZeppelin 을 설치한다.

     

    npm i @openzeppelin/contracts

     

    명령어를 입력해서 설치한다.

     

    설치가 완료되면 VSCode에서 스마트 컨트랙트를 생성하기위해 솔리디티 기반 MintAnimalToken.sol 파일을 생성하고 스마트 컨트랙트를 작성한다.

     

     

    Solidity 작성법

    solidity 코드를 작성할때 주석으로 SPDX (Software Package Data Exchange) 라이선스 식별자를 작성한다.

    SPDX는 소프트웨어 패키지의 라이선스 정보를 교환하기 위한 규약이다.

     

    // SPDX-License-Identifier: MIT

     

     

    반응형

     

    ERC-721

    ERC-721 이란 이더리움 블록체인에서 고유한 토큰을 생성하고 관리하기 위한 표준 프로토콜이다.

    ERC-721은 "비대체성 토큰(Non-Fungible Tokens, NFTs)"을 생성하기 위해 사용된다.

     

    import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";

     

    ERC-721import 한 후 컨트랙트를 하나 생성한다.

     

    contract MintAnimalToken is ERC721Enumerable {
    	constructor() ERC721("zelordAnimals", "zelord") {}  // 1번째 인자 = name, 2번째 인자 = symbol
        
        ....
        
    }

     

     

    728x90

     

     

    Mint

    MintERC-721에서 새로운 고유한 토큰을 생성하고 발행하는 작업이다.

     

    Mint함수를 생성한다.

    function mintAnimalToken() public { // 함수 범위 : public
        uint256 animalTokenId = totalSupply() + 1; // unsigned int로 solidity의 문법이다.
        					       // totalSupply(): mint의 수를 나타낸다.
    
        _mint(msg.sender, animalTokenId); // _mint는 ERC-721에서 제공한다.
        				      // 1번째 인자 msg.sender: 현재 스마트 계약을 호출한 계정의 주소
                                          // 2번째 인자 tokenId: NFT를 증명하는 토큰Id
    }

     

    생성한 함수를 실행하기 위해 RemixIDE를 통해서 실행 할 수 있다.

     

     

    REMIX IDE

    REMIX IDE브라우저에서 이더리움(Ethereum)과 같은 블록체인스마트 컨트랙트 개발 및 구축을지원하는  솔리디티 프로그래밍 언어로  통합개발환경(IDE)이다.

     

    remixd -s . --remix-ide https://remix.ethereum.org

    터미널을 열어 명령어를 실행 하면 브라우저에서 접속 할 수 있는 상태로 만들어준다.

     

    명령어 실행이 성공되면 크롬에서 Remix IDE 주소(https://remix.ethereum.org/)로 들어간다.

     

    브라우저에서 REMIX IDE 주소로 접속하면 VSCode와 비슷한 개발환경이 나타난다.

    첫번째 탭에서 default_workspace를 클릭 한 후 connect to localhost를 클릭하면

    VSCode에 작성한 폴더들이 연동된다.

     

    생성한 MintAnimalToken.sol 파일을 클릭하면 세번째 탭에서 컴파일이 실행되서 에러를 체크해준다.

     

    자동으로 컴파일이 되지 않으면 Auto compile 을 체크해준다.

     

    네번째 탭에서 Deploy가 가능하다.

    ENVIRONMENT 영역에서 Remix VM 이 있는 환경을 설정해주고

    CONTRACT 영역에서 생성한 MintAnimalToken 을 선택한 후 Deploy 를 클릭한다.

     

    성공하게 되면 로그창에 이러한 상태가 나타난다.

     

    탭 영역 하단부에 Deploy가 된 Contracts를 확인할 수 있다.

     

    화살표를 클릭해서 Contract를 확인하면 OpenZeppelin 에서 제공하는 항목들이 나타난다.

     

     

    생성한 mintAnimalToken 함수를 클릭하면 Mint 가 실행된다.

    성공하면 로그창에 초록색 체크로 나타난다.

     

    Mint 를 확인하기위해 ownerOf 항목을 열어 "1"을 입력하면 msg.sender 의 address가 나타난다.

    address 마지막 주소가 eddC4임을 확인하고 Account를 확인하면 같은 주소임을 알 수 있다.

     

    MintAccount 주소이다.

     

    account 를 변경 후 Mint를 발생하면 "2"번의 owner가 나타난다.

     

    변경된 Account주소이다.

     

    728x90
    반응형

    'Front-end > Solidity' 카테고리의 다른 글

    Solidity 와 DApp 와 SmartContract  (0) 2024.05.30
Designed by Tistory.