이더리움 토큰 발행 2) local 테스트넷 배포하기

2021. 7. 15. 15:05블록체인/Solidity

1. truffle init을 통한 skeleton 만들기
2. 기초 코드 작성하기
3. 배포 코드 작성하기
4. 컨트랙트 배포하기

1. truffle init

openzeppelin 라이브러리를 설치해야 하는데 openzeppelin은 smartcontract 코드를 모아둔 라이브러리이다.

$ mkdir smartcontract
$ cd smartcontract
$ truffle init
$ npm init -y
$ npm install -E openzeppelin-solidity

truffle-config.js 파일을 키고 network와  complier 버전을 수정해야 한다.

development 부분 주석을 풀어주고 (코드 38번째 줄)
원래 0.5.1 로 주석 되있는거를 0.8.0 으로 수정하고 주석 풀기

 

 

구조

2. 기초 코드 작성하기

contracts폴더에 Test.sol 만들기

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;     // 솔리디티 버전

contract Test {
    string public name = "Test Token";     //토큰 이름
    string public symbol = "TEST";	       //명칭 이름 
    uint public decimals = 18;	           //소수점 18자리 까지 사용
    uint public INITIAL_SUPPLY = 10000 * 10 ** decimals; //초기 발행량설정 1000.000000000000000000
    string constant test = "You can not see this message";
}

 

public : 누구나 확인할 수 있다,

constant :변하지 않는다.

public이 없으면 사람들이 외부에서 이 TEST 컨트랙트를 확인할 때 그 변수를 찾을 수 없다.

 

 

3. 배포 코드 작성하기

 

migrations 폴더에  2_Test_Migration.js 파일 생성

const TestToken = artifacts.require("./Test.sol");

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

 

4. 컨트랙트 배포하기

배포 전에 ubuntu 하나를 더 켜서

ganache를 실행해줘야 한다.

ganache-cli --host 0.0.0.0

실행 후

기존 우분투에서 컴파일

 

 

중요한 건 contract address인데 이 주소를 기반으로 우리가 발행한 "TEST"라는 smart contract와 통신할 수 있다.

 

complie, migrate가 오류 없이 잘 되었다면 build 폴더가 생성된 걸 볼 수 있다.


https://metamask.io/

생성 후 Metamask를 켜고 network는 localhost8545로 설정해준다.

https://www.myetherwallet.com/

Browser Extension 클릭 후 계정 연결

연결된 모습
 연결 후 좌측 메뉴 Interact with Contract 클릭

Contract Address에는  truffle migrate 해서 나온 지갑 주소를 넣어주고 

ABI/JSON Interface에는

"abi": []   코드에서

[] 안에 해당하는 줄을 복사해서 넣어주면 된다.

 

interact 후에 모습

Read를 누르면 contracts폴더에 Test.sol에 설정한 값이 나온다.