반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- elasticSearch
- Sentinel
- reactnative
- 당사자표시정정신청서
- Eclipse
- 사업자계좌
- Blade
- Laravel
- Python
- 홈택스
- 인민공원
- win32
- 보정명령
- php
- javascript
- vue
- 이더리움
- blockchain
- 체당금
- 소액임금체불
- 코로나
- Java
- 개인사업자
- cartalyst
- 코로나19
- 전자소송
- Tutorial
- auth
- as후기
- Bootstrap
Archives
- Today
- Total
그냥 사는 이야기
자신만의 ERC20 Token 만들기 본문
반응형
Ethereum
의 erc20
으로 자신만의 토큰을 만드려고 합니다. 토큰이 무엇인지? erc20이 무엇인지 등은 넘어가겠습니다. 여기서는 OpenZeppelin의 코드를 사용하였습니다.
토큰을 만들기 위해서는 토큰의 기능들 (예를 들면, 전송이나 잔액조회 같은)을 어떻게 할 것인지에 대한 Solidity
코드를 작성하여야 하며 이를 Contract
작성이라고 합니다. 이렇게 만들어진 contract를 이더리움에 올리면 토큰으로서 작동하게 되는데 한번 올린 다음에는 수정이 쉽지 않기 때문에 초기에 충분히 테스트하여 확인 후 올려야 합니다.
이러한 이유로 OpenZeppelin에서는 (아마도 다른것도 마찬가지일 것 같지만) 기존에 충분히 테스트된 contract 코드를 제공하며 이를 가져다 일부만 변경한 다음에 적용하면 토큰을 바로 사용할 수 있습니다.
Instructions
Solidity를 위한 IDE는 Remix IDE를 사용하였습니다.
- openzeppelin-contracts github에서 contracts/token/ERC20 디렉토리로 이동합니다.
ERC20.sol
,ERC20Burnable.sol
,ERC20Detailed.sol
,IERC20.sol
,SafeERC20.sol
을 가져다 IDE에 등록시킵니다.ERC20.sol
에서 현재 소스의 solidity 버전을 확인할 수 있습니다. 그리고 import 파일 중에서 다른 디렉터리에 있는 파일들도 모두 찾아서 구해줍니다. 아래의 경우Context.sol
과SafeMath.sol
도 각각의 디렉토리로 들어가서 모두 구해옵니다.pragma solidity ^0.5.0; import "../../GSN/Context.sol"; import "./IERC20.sol"; import "../../math/SafeMath.sol";
- 이렇게 모든 파일들을 구해서 Remix IDE에 생성한 후 import의 디렉터리도 모두 “./” 으로 변경합니다. 가령 위의
ERC20.sol
은 아래처럼 될 것입니다.
import "./Context.sol"; import "./IERC20.sol"; import "./SafeMath.sol";
- contracts/examples 디렉토리로 가서
SimpleToken.sol
을 구해와서 몇 가지를 수정해 줍니다. import 디렉터리도 모두 “./”으로 변경합니다. 코드상에서Context
와ERC20Burnable
을 추가시켜 줍니다. 그리고 토큰명과 토큰의 단위가 될 축약어를 지정해줍니다. 아래 예제에서는BusToken
과BTK
로 해주었습니다. 그러면 아래와 같은 코드가 될 것입니다. 참고로,ERC20Burnable
에는 토큰의 소각 기능이 포함되어 있습니다. 이런 것들이 필요한 경우 몇몇 가지를 상속의 형태로 가져오면 됩니다.pragma solidity ^0.5.0; import "./Context.sol"; import "./ERC20.sol"; import "./ERC20Detailed.sol"; import "./ERC20Burnable.sol"; contract SimpleToken is Context, ERC20, ERC20Detailed, ERC20Burnable { constructor () public ERC20Detailed("BusToken", "BTK", 18) { _mint(_msgSender(), 10000 * (10 ** uint256(decimals()))); } }
-
최종 나온 코드의 파일들은 아래와 같습니다.
- ERC20Burnable.sol
- IERC20.sol
- ERC20Detailed.sol
- SafeMath.sol
- Context.sol
- SimpleToken.sol
- ERC20.sol
- REMIX IDE의 Compile탭에서 compiler version 을
0.5.0
으로 맞춰준 후 compile를 해줍니다. - Run탭에서 Environment를
JavaScriptVM
으로 맞추고SimpleToken
을 Deploy 합니다. 그러면 아래에 Deployed 된 기능들이 생겨남을 알 수 있으며 이를 테스트 할 수 있습니다. JavaScriptVM에서 deploy 한다는 것은 이더리움에 아직 올린것이 아니라 local 에서 vm을 구성하여 만든 것이고 이를 통해 기능 테스트를 미리 해볼 수 있습니다. - 테스트에 문제가 없다면 실제 이더리움넷에 deploy 해줍니다. Environment를
Injected Web3 Robsten
(테스트넷)으로 해서 Deploy해보겠습니다. 실제 토큰을 생성하기 위해서는 전체 수량을 가질 최초의 지갑을 자신이 접근가능한 주소로 해야 합니다.여기서 주의사항으로는 토큰생성에 대한 contract 수행도
Ether Gas fee
가 발생하기 때문에 테스트넷용 이더넷을 확보한 뒤 contract deploy를 한다. deploy가 성공하면 아래와 같이 etherscan에서 확인 가능하다.(테스트넷은 간헐적으로 reset 되므로 일정시간이 지나면 사라질 수도 있다) - 이후 wallet에서 확인해 보면 토큰을 확인 할 수 있다.
Refernece
'Development > 기타' 카테고리의 다른 글
exiftool 을 사용하여 이미지 혹은 동영상 메타정보 수정하기 (7) | 2021.03.18 |
---|---|
윈도우즈 커널 드라이버에서 EventViewer를 위한 로그 작성 (0) | 2021.01.14 |
git push에서 Permission denied 해결 (0) | 2020.11.27 |
git history에서 파일 영구적으로 지우기 (0) | 2020.11.25 |
wsl2 에서 ohmyzsh 설치 및 사용하기 (0) | 2020.06.17 |
Comments