https://coding-maggot.tistory.com/28
에서 이어집니다.
무료로 프로젝트를 만들어서주는 이더리움 api 사이트다. 해당 사이트에서 회원가입을 하고 대시보드로 가자.
왼쪽 메뉴에서 이더리움을 누르고 create new project를 누르고 프로젝트명을 입력하면 알아서 프로젝트를 만들어준다.
만들어둔 토큰의 truffle-config.js 의 21~25번째 줄과 61~68번째 줄 주석을 해제한다.
방금 만든 프로젝트의 settings > keys 부분에서 project ID를 복사해 22번째줄 infurakey에 넣고,
endpoints 부분의 https://ropsten~ 를 복사해 62번째줄 hdwalletprovider 부분의 링크에 붙여넣는다.
(mainnet에서 발행하려면 mainnet으로 설정하면 된다.)
truffle-config.js
//21~25
const HDWalletProvider = require('@truffle/hdwallet-provider');
const infuraKey = "d26c8922fff04b01830e71f9ebdb9601";
const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();
//61~68
ropsten: {
provider: () => new HDWalletProvider(mnemonic, `https://mainnet.infura.io/v3/d26c8922fff04b01830e71f9ebdb9601`),
network_id: 3, // Ropsten's id
gas: 5500000, // Ropsten has a lower block limit than mainnet
confirmations: 2, // # of confs to wait between deployments. (default: 0)
timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
},
토큰 폴더 최상위(truffle-config.js가 있는 위치)에 .secret 파일을 만들어줘야한다.
메타마스크에서 가입할 때 받은 계정 시드 구문이 있다면 그대로 붙여넣고, 기억나지 않는다면
[설정 - 보안 및 개인정보 보호 - 계정 시드 구문 복사] 를 통해 계정 시드 구문을 가져올 수 있다.
이제 우분투에서 truffle/hdwallet-provider를 설치한다.
npm install @truffle/hdwallet-provider
이더리움 관련 작업을 수행할 때마다 수수료인 gas를 소모하기 때문에, 테스트를 하기 위해서는 이더가 필요하다.
ropsten 이더를 받을 수 있는 사이트들은 다음이 있다. 다만 시도가 많아서인지 한번에 잘 받아지지 않을 수 있다.
시도하다보면 받아진다.
https://faucet.dimensions.network/
우분투를 하나 더 열어서 ganache-cli를 켜고,
코드의 수정사항을 반영하기 위해 truffle compile과 migrate를 실행해준다. (이더가 있어야 가능하다.)
truffle compile --all
truffle migrate --network ropsten
이렇게 ropsten 네트워크에 토큰을 올려놓았다.
토큰이 수정되었으므로 migrate해서 나온 contract address를 복사해 메타마스크에서 토큰을 추가해 사용할 지갑에 새로 생성하자.
그리고 ganache-cli에서 나온 비공개키로 다른 계정을 가져와 토큰이 있는 쪽에서 없는 쪽으로 보내기 작업을 한다.
아래는 토큰을 발행해볼 수 있는 이더리움 블록체인 익스플로러 사이트다.
우리는 ropsten에서 발행할 것이기 때문에 우측 상단의 아이콘을 눌러 ropsten testnet을 선택해 https://ropsten.etherscan.io/ 로 이동해준다.
자신의 토큰명을 입력하고 기다리면 토큰이 조회된다.
조회가 잘 안될 시)
토큰 대신 자신의 지갑주소를 넣으면 지갑에서 실행한 전송 등의 활동내역이 뜬다.
만들었던 토큰을 다른 주소에 보낸적이 있다면 ERC20 Token Txns 에서 자기 토큰을 조회해볼 수도 있다.
토큰 페이지는 다음과 같이 생겼다.
토큰 페이지의 contract 탭을 누르면 코드에서 설정한 것을 읽어오는 read contract와 전송 등 동작을 수행하는 write contract 모두 contract 소스코드를 verify 하기를 요구한다.
해당 부분을 누르고 토큰의 contract address를 넣어준다. 세개의 선택창은 각각 solidity(single), 0.8.0, no-license(또는 MIT)를 선택해주자(마지막 건 순서대로 선택하다 보면 뜬다).
그리고 중간의 빈칸에는 토큰 동작에 필요한 코드에 들어있는 소스들을 한 곳에 통합하여 넣어줘야 한다.
필요한 소스들의 파일 목록은 다음과 같다.
Magtoken/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol
Magtoken/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
Magtoken/node_modules/@openzeppelin/contracts/utils/Context.sol
Magtoken/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol
Magtoken/contracts/MagToken.sol
각 파일들을 열어보면 import 된 것과 상속관계가 있어 위의 순서대로 배치해야한다.
.secret과 truffle-config.js가 있는 토큰 폴더 최상위에 sol 파일을 만들어 코드들을 한 곳에 모아주자.
주석은 지워주는 것이 사이트에서 읽을 때 더 좋다고 한다. 나는 수업 따라가야해서 생략했다.
아까의 빈칸에 위 파일내용 전체를 복사해 붙여넣고 체크박스를 체크한 뒤,
verify and publish를 누르면 긴 해쉬값이 뜨며 토큰 발행이 완료된다. 이제 contract 탭에서 실행가능한 옵션들을 조회할 수 있다.
'블록체인 기반 핀테크 및 응용 SW 개발 > Solidity' 카테고리의 다른 글
[Solidity] 3. 이더리움 토큰에 기능 넣고 실험해보기 (0) | 2021.08.06 |
---|---|
[Solidity] 1. 우분투에서 이더리움 토큰 만들고 MetaMask로 배포해보기 (0) | 2021.07.16 |