오픈제플린(OpenZeepelin)은 2015년 데미안 브리너와 마누엘 아라오스가 공동 설립한 블록체인 개발 회사다.
오픈제플린은 솔리디티 기반의 스마트 컨트랙트를 개발하는 프레임워크인 오픈제플린(OpenZeppelin)과, 스마트 컨트랙트를 관리하고 운영하는 플랫폼인 제플린OS를 제공한다.쉽게 말해서, solidity로 작성된 모듈식의 smart contract library라고 생각하면된다.
truffle(or remix), ganache와 함께 사용한다
$ mkdir openZeppelinSample
$ cd openZeppelinSample
$ truffle init
$ npm install -E openzeppelin-solidity
연동방법 해당 글 맨 밑에 있다
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