10분만에 나만의 ERC20 토큰 발행하기.

앱설치하는 시간 포함 12분 안에 컨트랙트를 생성해서 토큰 발행을 해 보겠습니다. 준비물은 안드로이드 폰입니다. 이 데모는 Ropsten Testnet을 이용했지만 mainnet에서도 거의 다르지 않을 것입니다. 자 그럼 시작해 보겠습니다. 동영상을 선호 하시는 분들은 이 포스팅 끝에 전과정을 담은 동영상이 있으니 참고 하시기 바랍니다.

 

위 사진과 같이 구글플레이 가서 “smallet” 검색하여 “이더리움 스몰렛”을 설치합니다.

 

이더리움 스몰렛을 실행하면 위 화면과 같이 “키 볼트”를 설치 하도록 안내합니다. 키 저장소와 지갑앱이 분리된 이유는 나중에 따로 설명 하겠습니다. 우선은 안내대로 설치를 합니다.

 

처음으로 이더리움 스몰렛을 실행하면 위 화면과 같이 “마스터 시드가 없음” 안내가 나오고 다시 키 볼트를 실행하게 됩니다. 키 볼트에서 패스워드를 입력하면 새로운 마스터 시드를 생성하게 됩니다. 키 볼트는 BIP39 기준에 따라 마스터시드를 이용하여 지갑 키들을 생성하게 됩니다.

 

키 볼트에서 지갑키 생성은 자동으로 됩니다. 이더리움 스몰렛으로 화면이 돌아올때까지 잠깐만 기다리면 됩니다. 이더리움 스몰렛은 네가지 이더리움 네트웍을 지원합니다. 그 중에서 Ropsten Test Network을 선택합니다. Ropsten Test Network을 선택하면 화면 상단 우측에 수도꼭지가 나타납니다. 이것을 누르면 테스트용 이더 한개를 전송 받게 됩니다. 참고로 테스트용 이더는 하루에 한개씩 신청 할 수 있습니다. 신청을 하고 조금 기다리면 이더가 들어옵니다. 입금은 자동으로 갱신되지 않으니 화면을 아래로 당겨서 갱신을 하거나 화면 하단 우측 책읽은 사람 아이콘을 클릭합니다.

 

이더가 들어왔으면 컨트랙트 탭으로 이동하여 “토큰 만들기” 버튼을 터치 합니다. 위 화면처럼 원하는 토큰 심볼, 이름, 소수점 자리수를 입력하고 “생성” 버튼을 누릅니다.

화면이 다시 이더리움 탭으로 자동으로 이동됩니다. 토큰 생성에 필요한 모든 입력이 완료되어 있으므로 “사인&전송” 버튼을 누릅니다. 화면처럼 사인을 할 경우 키 볼트 앱으로 다시 자동으로 넘어가서 거기서 사인을 합니다. 모든 프라이비트 키는 키 볼트가 보관하기 때문입니다. “거래승인”을 누릅니다.

 

거래를 전송하고 블록체인에 기록이 될때까지 기다립니다. 화면과 같은 “전송완료” 안내가 나올때까지 기다립니다. 통상 1분안에 됩니다. “확인”을 누릅니다.

 

위 단계에서 블록체인상 토큰 컨트랙트 생성은 마무리 되었지만 편리를 위해서 지갑에 생성된 토큰과 컨트랙트를 추가하는 과정이 자동으로 진행됩니다. 토큰을 추가하고 컨트랙트도 추가 합니다. 따로 입력할 내용은 없이 모두 자동으로 입력 됩니다. 이제 토큰을 발행해 봅니다. 컨트랙트 탭으로 갑니다.

토큰을 받을 주소를 클립보드에 미리 넣어 둡니다. 데모에서는 현재 계정으로 받기 위해서 좌측 상단 메뉴에서 “받을 주소”를 선택하여  현재 본인 계정을 복사해 두었습니다. 컨트랙트 탭에서 “My First Token” 컨트랙트를 선택합니다.(아마도 이미 선택되어 있을 것입니다.) 컨트랙트 이름 우측의 책읽는 아이콘을 터치 하면 위 화면과 같이 아래쪽에 컨트랙트가 제공하는 함수들이 나열됩니다.

그중에서 “mint”를 선택합니다. mint를 터치하면 위 화면과 같이 토큰을 받을 주소와 수량을 입력하게 됩니다. 수량에 “0” 엄청 많은데, 컨트랙트 생성시 소수점을 18로 줬기 때문에 토큰 1개를 보내려면 “0”을 18개 입력해야 합니다. 위 예제는 1,000개를 보내는 경우 입니다. “0”이 21개입니다. 입력이 다 되었으면 “사인”을 터치 합니다. 컨트랙트 생성때와 마찬가지로 다시 “이더리움” 탭에서 전송하고 사인하고 하면 됩니다.

토큰 탭으로 가보면 토큰이 들어와 있는 것을 확인 할 수 있습니다. 1,000개씩 두번을 보내서 2,000이 되었네요.

이 데모에서 사용된 계정에 대한 정보는 아래 이더스캔 링크에서 모두 보실 수 있습니다.

https://ropsten.etherscan.io/address/0xdAF41A6D6CAA5a2353cc24158C30519c7a36a79a

보시면 이미 소스코드 확인이 모두 되어 있어 소스코드까지 다 보입니다. 따로 확인을 하지 않아도 이렇게 되는 이유는 나중에 다른 기회에 설명을 드리겠습니다.

전과정을 동영상으로 담았습니다.

 

 

9 thoughts on “10분만에 나만의 ERC20 토큰 발행하기.

  1. myeongkyun yu

    안녕하세요. 블록체인을 공부하고 있는 학생입니다.
    현재 스몰렛 앱을 다운로드 받아서 워드프레스에 나와 있는데로 해보고 있는데요.
    개념상으로 이해가 되지 않는 부분이 있어서 질문을 드리고자 합니다.

    Ropsten Test Network 테스트넷에서 이더를 받는거까지는 이해가 되었습니다.
    토큰 컨트랙트 생성에서 토큰 심볼과 토큰이름 그리고 소수점 자리수까지 입력하는거까지 하는건 좋은데

    * 질문 1
    토큰을 발행하는 총 토큰양에 대한 설정이 없는것 같습니다.

    * 질문 2
    토큰 컨트랙트 생성후 거래사인 ( 스몰렛 키볼트 ) 에서 거래승인을 한다는 의미는 무엇인가요?

    * 질문 3
    거래승인 후 스몰렛 앱에서 전송완료 화면이 뜨는데 발행할 토큰양에 대한 설정이 없었는데
    전송완료되었다는 건 블록체인에 어떠한 것을 기록하기 위해 전송완료되는건가요?

    * 질문 4
    전송완료 후 컨트랙트 메뉴에서 mint 를 클릭하여 지갑 주소를 입력하고 수량을 입력하게 되어있는데
    소수점을 18개까지 설정하고 토큰 1개를 보내려면 0을 18개 입력해야 한다고 나와있는데.
    그럼 18개 0 을 입력하면 토큰이 1개 발행된다는 의미인건가요?
    그럼 0을 21개 입력하면 소수점 18개 = 1 토큰이어서 21개를 입력하면 19,20,21 자리수가 되어서 1000 개의
    토큰을 생성할 수 있다는건가요?

    토큰을 생성한다는 의미가 제가 ICO 를 하면서 발행할 총 토큰의 양이 되는건가요?

    Reply
    1. changlee99 Post author

      생생된 컨트랙트의 소스를 보시면 질문 하신 내용을 이해하기 쉬울 것 같습니다.

      1. 생성되는 컨트랙트는 mintable 기능이 있는 컨트랙트로 초기 발행량이 없이 언제든 토큰을 발행할 수 있는 구조입니다. 그러므로 처음 생성시 발행된 토큰은 없습니다.
      2. 컨트랙트를 생성하기 위해서는 컨트랙트 생성을 위한 트랜잭션을 만들고 이를 블록체인에서 승인해야 컨트랙트가 생성되는 것입니다.
      3. 2번에서 답을 드린것 같습니다.
      4. 소수점 자리수에 관한 질문은 이해하신 것이 맞습니다. 토큰 생성에 대해서는 1번에서 답을 드렸습니다.

      Reply
  2. Dong Hyun Ahn

    설명이 된 부분까지는 잘 따라하여 똑같이 되는 것을 확인하였습니다만 조금만 더 스스로 진도를 빼보려고 했는데 바로 실패했습니다.

    ahn이라는 토큰을 만들어서 1000000000000000000000의 양만큼 생성(1000개)하는 것까지는 되었습니다.

    다음 단계로 다른 계정을 만들어서 ahn이라는 토큰을 송금하여 받는 것을 하려고 하는데 잘 안되고 있습니다. 어떻게 해야하는지 알려주시면 너무 감사하겠습니다.

    Reply
    1. changlee99 Post author

      토큰 탭에서 추가하신 토큰이 보이시는지요? 없다면 토큰추가를 해서 토큰이 탭에서 확인이 되도록 하세요. 여기서 확인이 되면 이더리움 탭에서 수량 입력란 우측에서 토큰을 선택 하실 수 있습니다.

      Reply
      1. Dong Hyun Ahn

        넵. 토큰 탭에서 생성한 수량만큼 mint 한 양이 보입니다. 이더리움 탭에서 수량 우측에 내가 생성한 토큰을 단위로 선택해서 다른 계정의 ‘받을 주소’에 보내기도 성공하며, 토큰 탭에서 줄어든 양을 확인할 수도 있습니다.(예: 1000개 중에서 450개를 보내면 550개 남아 있는 것 확인)

        여기까지는 처음에도 제가 했던 부분입니다. 문제는 받은 계정에서 새로 생성한 토큰의 잔고 확인이 안된다는 것입니다.

        이 단계에서 보내는 계정의 토큰 탭에서 잔고(550개)가 표시되는 토큰 항목을 누르고 있으면 ‘컨트랙트 주소가 복사되었습니다. ‘라는 메세지가 나옵니다. 그리고 나서 아까 토큰을 전송한 것은 받은 계정으로 가서 토큰 탭에서 토큰 추가를 누르고 ‘붙여넣기’를 하고 확인을 누르면 곧 토큰탭에서 450개의 잔고를 볼 수 있습니다. 문제는 다시 보내는 계정으로 돌아가면 토큰탭에서 토큰이 사라져 있습니다. 받는 계정에서 한 작업을 반복하면 550개의 잔고를 토큰탭에서 확인할 수 있지만, 다시 받는 계정에 가면 역시나 토큰탭에 토큰이 없습니다.

        Reply
        1. changlee99 Post author

          말씀하신 부분을 확인해 보니 앱에 오류가 있습니다. ㅜㅜ 등록된 토큰을 제대로 불러오지 못하는 오류가 발견되어 앱을 수정하여 업데이트 하였습니다. 새 버전을 업데이트 하여 토큰을 추가해 주시면 될 것으로 생각됩니다. 감사합니다.

          Reply
  3. kimsangyeon

    안녕하세요. 질문이 생겨서 올립니다.
    처음에 따라하다가 수도꼭지 버튼을 클릭했는데요..
    테스트용 1이더가 계속 기다리는데 생성되지 않습니다..새로고침을 해도…1시간째 기다렸는데도 안들어오네요
    어떻게 해야할까요?

    Reply
    1. changlee99 Post author

      죄송합니다. 현재 서버가 고장나서 동작이 안되고 있습니다. 수리가 완료되면 메일로 알려 드리겠습니다.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *