이전글
[web3.js] 2. 트러플, 가나슈
이전글 [web3.js] 1. Visual Studio Code 이전글 [web3.js] 0. 들어가기 전에 0. 들어가기 전에 web3.js는 이더리움 노드와의 상호작용을 도와주기 위한 자바스크립트 라이브러리입니다. web3.js를 이용하여 이더
kwjdnjs.tistory.com
ERC-20 토큰 컨트랙트
이번 글에서는 ERC-20 토큰 컨트랙트를 가나슈에 배포하고 트러플 콘솔을 이용해 간단한 상호작용을 해보겠습니다.
1. ERC-20 토큰 컨트랙트 배포
먼저 ERC-20 토큰 컨트랙트를 가나슈에 배포해 보겠습니다. 사용할 코드는 다음과 같습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract TESTToken is ERC20("Test", "TST") {
constructor(uint256 initialSupply) {
_mint(msg.sender, initialSupply);
}
}
위 코드는 openzeppelin을 이용한 간단한 ERC-20 토큰 코드입니다. ERC-20에 대한 보다 자세한 내용은 아래 글에서 확인할 수 있습니다.
[솔리디티] 17. ERC-20 토큰
이전글 [솔리디티] 16. import, 라이브러리 이전글 [솔리디티] 15. 인터페이스 이전글 [솔리디티] 14. 상속, 오버라이딩, 다중 상속 이전글 [솔리디티] 13. receive, fallback, delegatecall 이전글 [솔리디티] 12.
kwjdnjs.tistory.com
리믹스에서는 openzeppelin을 기본적으로 제공하기 때문에 추가적인 설치를 할 필요가 없으나, 트러플을 이용해 개발을 할 경우 openzeppelin의 설치가 필요합니다. 아래 명령어를 터미널에 입력하여 openzeppelin을 설치합니다.
npm install @openzeppelin/contracts@4.9.3
이제 contracts 폴더로 이동하여 코드를 컴파일해줍니다. 컴파일에 오류가 발생할 경우 ERC20 코드와 truffle-config.js의 솔리디티 버전을 적절히 수정해 줍니다.
cd contracts
truffle compile
마지막으로 배포를 진행하기 위한 코드를 작성합니다. migrations 폴더의 2_deploy_contracts.js 파일을 생성한 뒤 아래 코드를 입력합니다. ERC20 컨트랙트 배포를 위해서는 초기 발행량도 필요하므로 배포 과정에서 해당 값을 함께 입력합니다.
var TESTToken = artifacts.require('TESTToken');
module.exports = function (deployer) {
deployer.deploy(TESTToken, 1000000000000);
};
truffle-config.js에서 가나슈 관련 설정도 확인해 줍니다.
development: {
host: '127.0.0.1', // Localhost (default: none)
port: 7545, // Standard Ethereum port (default: none)
network_id: '5777', // Any network (default: none)
},
모든 작성을 마쳤으면 가나슈를 실행한 뒤 아래 명령어를 입력하여 컨트랙트를 배포합니다.
truffle migrate --reset
정상적으로 배포가 이뤄질 경우 아래와 같은 결과를 터미널에서 확인할 수 있습니다.
2. 트러플 콘솔
리믹스에서는 다음과 같이 함수 버튼을 눌러 함수를 호출할 수 있었습니다.
트러플에서는 트러플 콘솔을 이용하여 함수를 호출할 수 있습니다.
트러플 콘솔을 사용하기 위해 truffle console을 터미널에 입력합니다.
truffle console
truffle(development)로 변경된 후에 다음 코드를 입력합니다.
testtoken = await TESTToken.deployed()
성공적으로 입력되었다면 해당 컨트랙트에 대한 정보가 출력될 것입니다.
이 상태에서 다음 코드를 터미널에 입력합니다.
testtoken.name()
정상적으로 실행된다면 리믹스에서 name 함수 버튼을 눌러 확인한 것과 동일한 결과를 얻을 수 있습니다.
지금까지 openzeppelin을 설치하고 ERC-20 컨트랙트를 가나슈에 배포한 뒤 트러플 콘솔을 이용해 함수를 실행하는 방법에 대해 알아봤습니다. 감사합니다.
다음글
[web3.js] 4. web3.js
이전글 [web3.js] 3. ERC-20 토큰 컨트랙트 이전글 [web3.js] 2. 트러플, 가나슈 이전글 [web3.js] 1. Visual Studio Code 이전글 [web3.js] 0. 들어가기 전에 0. 들어가기 전에 web3.js는 이더리움 노드와의 상호작용을
kwjdnjs.tistory.com
'이더리움 > web3.js' 카테고리의 다른 글
[web3.js] 2. 트러플, 가나슈 (0) | 2023.11.11 |
---|---|
[web3.js] 1. Visual Studio Code (0) | 2023.11.08 |
[web3.js] 0. 들어가기 전에 (0) | 2023.11.03 |