OpenZeppelin

Hong·2022년 12월 4일
0
post-thumbnail






🕵️ What is OpenZeppelin?

오픈제플린(OpenZeepelin)은 2015년 데미안 브리너와 마누엘 아라오스가 공동 설립한 블록체인 개발 회사다.
오픈제플린은 솔리디티 기반의 스마트 컨트랙트를 개발하는 프레임워크인 오픈제플린(OpenZeppelin)과, 스마트 컨트랙트를 관리하고 운영하는 플랫폼인 제플린OS를 제공한다.

쉽게 말해서, solidity로 작성된 모듈식의 smart contract library라고 생각하면된다.
truffle(or remix), ganache와 함께 사용한다




🍄 Truffle위에서 openzeppelin-solidity Library 활용하기

1. openZeppelinSample 폴더를 만들고 truffle init을 통해 트러플 기반 프로젝트 초기화를 진행했다.

$ mkdir openZeppelinSample
$ cd openZeppelinSample
$ truffle init


2. openzeppelin solidity 라이브러리를 설치해준다.

$ npm install -E openzeppelin-solidity


2-1. VScode에서 확인하면 node_modules 에서 openzeppelin-solidity 내부 구조를 확인할 수 있다.



3. Ganache에 contract를 배포하기 위해 Ganache - Truffle 연동을 진행한다.

연동방법 해당 글 맨 밑에 있다



4. ERC-20 스마트 컨트랙트 작성

ZepplinTestToken.sol

// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.10;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract ZeppelinTestToken is ERC20 { // 이전에는 ERC20 token을 직접 작성했지만 library로 다운 후 module로 끌어와서 contract에 상속하니 코드 작성이 훨씬 편해짐
    constructor() ERC20("ZeppelinTestToken", "ZTT") {
          _mint(msg.sender, 100000000e18);
    }

}

만약 ERC-20 코드 전체를 작성해야 했다면 훨씬 코드가 복잡해 졌을 것이다.


아래 부분의 import를 통해 openZepplin library에 존재하는 ERC20.sol 파일을 가져와서 ERC20 token의 틀을 사용한 것이다.

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";




2_deploy_ZeppelinTestToken.js

var ZeppelinTestToken = artifacts.require("ZeppelinTestToken");

module.exports = function(deployer) {
    deployer.deploy(ZeppelinTestToken);
};

migration폴더 안에 2_deploy_ZeppelinTestToken.js를 작성


배포를 하기 전 사용할 openzeppelin/contract 경로를 추가한다.

$ npm install @openzeppelin/contracts

truffle에서 ganache로 배포

$ truffle migrate
profile
Notorious

0개의 댓글