본문 바로가기
블록체인 및 경제/솔리디티

13. 리믹스 솔리디티 6.0 버전 ERC20토큰 만들기

by kimsfamily 2020. 11. 15.

1. 스마트 계약의 시작, 리믹스 도구 사용해보기

2. 솔리디티 개발환경 구성

3. 스마트컨트랙트 작성 후 배포하기

4. openzeppelin 사용하여 ERC20 토큰 만들기

5. Ropsten 테스트넷에 ERC20토큰 배포하기

6. web3.js 와 자바스크립트를 활용한 간단한 예제

7. 솔리디티 기초, 리믹스로 컨트랙트 작성하기

8. 솔리디티 기본문법 (변수, 데이터타입, 구조체)

9. 솔리디티 배열, 맵핑

10. 솔리디티 조건문, 반복문(if, else, for)

11. 솔리디티 암호화폐 지불(호텔룸 예약하기 프로그램)

12. 솔리디티 상속

13. 리믹스 솔리디티 6.0 버전 ERC20토큰 만들기

14. web3.js 와 자바스크립트를 활용하여 (이더잔액조회) 지갑 만들기

15. 솔리디티 컨트랙트 Web.js 활용하여 웹으로 보여주기


 

1. 리믹스에서 ERC20 라이브러리 다운받아서 추가합니다.

 

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20Burnable.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20Capped.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20Pausable.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20Snapshot.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/SafeERC20.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/TokenTimelock.sol

 

 

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/GSN/Context.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Pausable.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Arrays.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol

github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol

 

위 파일을 모두 다운받으시면 아래와 같은 폴더구조가 생깁니다.

 

2. Mytoken.sol 파일을 만들고 아래와 같이 코딩해줍니다.

 

소스는 이렇습니다.

토큰이름은 비트코인 ㅎㅎㅎㅎ 그리고 토큰심볼은 BC, 발행량은 150개입니다. 

뒤에 숫자를 저렇게 많이 적은건 소수점 뒷자리 18개를 표시한겁니다.

pragma solidity ^0.6.0;

import "./token/ERC20/ERC20.sol";

contract MyToken is ERC20{
    uint public INITIAL_SUPPLY = 150000000000000000000;
    
    constructor() public ERC20("BITCOIN","BC"){
        _mint(msg.sender, INITIAL_SUPPLY );
    }
}

 

3. 컴파일 해줍니다. 버전을 6.0으로 맞춥니다.

 

 

4. Deploy를 해줍니다.

 - 메타마스크가 사전에 설치되어 있어야 합니다.(이 부분은 설명은 생략합니다.)

 - Injected Web3를 선택하면 메타마스크로 연결이 됩니다.

 

 - 메타마스크를 연결하고 Ropsten 테스트넷 계정을 연결합니다.

 

혹시 Ropsten 테스트넷 계정에 이더가 없으면, 아래 사이트에서 이더를 받습니다.

https://faucet.dimensions.network/

 

이제 모든 준비가 끝났습니다. 마지막으로 컨트랙트 MyToken을 선택해주고 Deploy하면 Ropsten테스트넷 계정으로 컨트랙트가 배포됩니다.

 

Deploy를 클릭하면, 메타마스크로 자동연결이 되면서 승인을 누를것을 요청합니다. 승인해줍니다.

 

트랜잭션이 정상적으로 되었으면, 아래와 같이 메타마스크에서 Confirmed transaction 메세지를 보내줍니다.

해당 링크를 따라 들어가서 컨트랙트 주소를 살펴봅니다.

아래와 같이 150 비트코인이 만들어졌네요!!

와우!!!! 이제 이 비트코인을 친구들에게 보내주면 됩니다!!!!

 

 

뭔가 아쉬우니...마지막으로 리믹스로 돌아가서 기본적으로 어떤 기능을 제공하는지 살펴봅니다.

아래와 같은 기능들을 제공하고 있네요.

 

그런데, 우리에게는 조금 더 많은 기능이 필요합니다.

락이라든지..에어드랍이라든지..종류는 많이 있겠죠?

 

일단 기본적인 ERC20 토큰 생성법은 아래 메뉴얼에 잘 나와 있습니다.

docs.openzeppelin.com/contracts/3.x/erc20

 

ERC20 - OpenZeppelin Docs

Often, you’ll want to be able to divide your tokens into arbitrary amounts: say, if you own 5 GLD, you may want to send 1.5 GLD to a friend, and keep 3.5 GLD to yourself. Unfortunately, Solidity and the EVM do not support this behavior: only integer (who

docs.openzeppelin.com

 

기본적으로 제공하고 있는 기능과 추가적으로 제공하는 기능들은 아래와 같습니다.

 

ERC20 기본기능

 

추가적으로 사용할 수 있는 기능

 

ERC20Snapshot

ERC20Pausable

ERC20Burnable

ERC20Capped

SafeERC20

TokenTimelock

 

기본기능과 추가기능 모두 아래 API 메뉴얼을 통해서 사용법을 확인 할 수 있으니 한번씩 응용해서 토큰을 만들어보세요!!!

docs.openzeppelin.com/contracts/3.x/api/token/erc20

 

 

참고로 이 예제는 테스트넷에 배포하였는데, 메인넷 배포를 위해서는 메인넷 계정을 연결하고 Deploy하면 됩니다.

 

Deploy를 누르면  아래와 같은 화면이 뜹니다.

가스비가 아래와 같이 소요되네요~

 

트랜잭션이 성공했습니다. 10초도 안걸렸네요!!!

자, 그럼 이걸 제 지갑에 추가해야겠죠?

 

 

아래와 같이 토큰컨트랙트 주소를 추가하면 자동으로 추가됩니다.

토큰 추가 하면 제 지갑에서 토큰을 보낼 수 있습니다.

 

 

아래 이더리움 메인넷에서 제가 발행한 실제 토큰을 확인할 수 있습니다.

 

etherscan.io/token/0x50435674C82960070cFE34feE43bd8090Ac7a29B?a=0x2cB13725CBeA985a01d00a7090c1D7218B9dAF76

 

SANSTUDIO (SAN) Token Tracker | Etherscan

SANSTUDIO (SAN) Token Tracker on Etherscan shows the price of the Token $0.0000, total supply 150, number of holders 1 and updated information of the token. The token tracker page also shows the analytics and historical data.

etherscan.io

 

이제 ICO후에 상장하는 일만 남았군요!!! 

 

반응형

댓글0