유튜버 "코인리서치" 님의 강의로 공부하면서 정리해본 글
코인리서치님이 매우 쉽게 잘 알려주셔서 잘 성공할 수 있었다.
블록체인 선구자 역할을 해주셔서 감사합니다.
https://www.youtube.com/watch?v=3Z1FTufzD1Y
클레이튼 Klaytn으로 아래 두 가지의 토큰을 만들어볼 예정이다.
- premint만 하는 방법 - 발행량이 딱! 정해진 토큰 : 생성할 토큰의 일정 발행량 정하고 이후에 발행 안함
- premint하고 또 mint 하는 방법 - 발행량이 추가로 늘어날 수 있는 토큰 : 일정 발행량 생성하고 이후에 추가 발행
토큰을 만들어 보기에 앞서 준비해놓아햐 하는 것
1. kaikas : 클레이튼 지갑 (이더리움의 메타마스크와 매우 흡사함)
아래 링크를 타거나 구글에 "kaikas" 검색해서 크롬 확장 프로그램으로 설치 및 회원가입하면 된다.
주의점은 각 계정마다 주어지는 본인인증 암호(?)라고 해야하나 본인만 알아야하는 (kaikas도 알면 안됨) 글자들로 이루어진 키를 주는데 이 키를 (영문 소문자 무작위 단어로 이루어져있음) 소중하게 나만 잘 보관해야함. 메모지에 적어두거나 일기장에 적어두거나 ! 이걸 까먹거나 잃어버리게 되면 나중에 나의 코인들을 찾지 못하게 된다. 그 누구도......
https://chrome.google.com/webstore/detail/kaikas/jblndlipeogpafnldhgmapagcccfchpi
그리고 왼쪽 위의 버튼을 눌러 메인넷 -> baobab 테스트 넷으로 변경한다.
2. 테스트 클레이 얻기 :
클레이튼의 메인넷 블록체인에 올릴 때 진짜 클레이튼 코인이 필요하듯이 테스트넷에는 테스트 용 클레이 코인이 필요하다.
아래의 링크로 들어가서 테스트용 코인을 받기! 보통 테스트용 코인을 받는 걸 faucet(수도꼭지)이라고 한다.
https://baobab.wallet.klaytn.com/access?next=faucet
klaytn wallet key or private key 넣어 주는 곳에 우리는 private key를 넣을 예정이다.
아까 설치한 클레이튼 kaikas 카이카스를 열고 왼쪽 위의 본인 아이디 클릭 -> 아래 그림의 "지갑키 관리" 를 클릭 -> 비밀번호 입력하고 "지갑키 내보내기"까지 하면 나의 개인키 주소가 나온다.
복사한 걸 붙여 넣고 Access를 눌러주면 테스트용 클레이 코인을 얻을 수 있다. 오른쪽 사진을 보면 5Klay 가 생겼다~! 현재 1450원 시세로 따지면 7,250원 정도의 가짜(?) 테스트용 코인을 얻었다. 물론 실제 사용할 수 없음
현재 24시간에 한번씩 다시 받는게 가능하다.
3. Kaytn IDE : 이더리움의 remix와 같은 존재
그냥 아래 링크 또는 구글에 "Klaytn IDE" 검색해서 들어가면 된다. 들어간 것만으로 준비는 끗 ~
4. KlaytnScope : 모든 클레이튼 거래의 집약소
테스트넷의 클레이튼의 거래 진행상황을 실시간으로 보고 또 과거의 기록을 검색할 수 있는 사이트이다.
이것도 아래 링크에 들어가면 바로 볼 수 있다.
https://baobab.scope.klaytn.com/
이제 토큰 만들기 준비는 끝! 이제 토큰 만들기 시작 💫
먼저 Premint (발행량이 딱 정해져있는 토큰 - 추가 발급 없는) 토큰을 발행하는 방법
1. 오픈제플린에 들어가 ERC20 규격으로 솔리디티 코드를 복사하기
아래 링크 openZeppelin 사이트에서 erc20 규격에 맞는 토큰 코드를 아주 쉽게 만들 수 있다. openZeppelin은 토큰 생성을 쉽고 편하게 만들어주는 하나의 라이브러리라고 생각하면 된다.
Name : 내가 발행할 토큰 이름
Symbol : 토큰의 상징이름 (이더리움의 경우 ETH)
premint : 발행할 코튼의 개수
https://wizard.openzeppelin.com/
2. Klaytn IDE 코드 컴파일하기
(컴파일하기 -> 블록체인이 알아들을 수 있는 언어로 바꾼다)
Klaytn IDE 를 열고 위에서 복사한 코드 contracts 폴더 안, 파일 생성하여 붙여넣기
여기서 파일명은 자유롭게 해도 좋지만 소스 코드가 솔리디티 언어이므로 .sol 로 끝나게 한다.
그 다음
왼쪽 메뉴의 두번째 아이콘을 클릭 -> compliler의 버전을 맞춰준다.
Language : solidity
EVM version : istanbul (Baobab)
-> 그리고 컴파일 버튼 클릭!
3. 블록체인 테스트용 네트워크 상에 배포하기 (deploy)
메뉴 세번째 클레이튼 K 아이콘 클릭
-> Account에 나의 개인키를 넣어줘야 한다. (개인키 얻는 방법은 위 준비사항의 2번. 테스트 클레이 얻기 참고)
-> Contract : 작성한 코드의 배포할 함수명을 선택해준다. 아래 그림에서 내가 배포할 함수는 "CoinResearch"이므로 "CoinResearch"를 찾아 선택!
-> Deploy 버튼 클릭
Deploy 성공! == 테스트넷에 나의 토큰생성하는 함수가 배포됨
아래에 ERC20규격 (토큰만들 때 정해져있는 규칙)에 맞는 함수들이 쭉 나온다.
balanceOf 함수에 나의 계정주소를 넣고 call을 하면 (함수호출) 내 계정에 100만 토큰이 들어온다.
저 0이 많은 이유는 끝에서 18개는 소수점이다.
나온 함수들을 잘 보면 "mint (발행하다, 주조하다)" 새로 토큰을 생성할 때 사용할 함수가 없는 걸 확인할 수 있다.
위의 방법은 발행량 100만개로 정해져있는 토큰이었고 이제 계속해서 첫 발행 이후에도 계속 토큰을 찍어낼 수 있는 방법을 알아보자
추가 토큰 발행할 수 있는 방법
위의 내용과 크게 다르지 않다. 그냥 토큰 소스를 오픈제플린에서 가져올 때 mintable(발행할 수 있는) 을 클릭만 해주면 된다.
1. OpenZepplin 에서 mintable기능을 추가한 코드를 복사한다.
CRMint라는 토큰 이름의 상징 CRM으로 설정, mintable을 클릭 -> mint 함수 생김
-> 코인을 만든 사람이 찍어낼 수 있다. (onlyOwner)
즉, 코인을 만든사람에게만 mint 함수 권리가 있다. (다른 사람이 계속 찍어낼 수 있는 건 토큰계의 초인플레이션을 불러올듯..)
이후 Klaytn IDE에서 컴파일, 배포 모두 동일하게 진행한다. (위 첫번째 방법의 2, 3번째 과정 그대로 ㄱㄱ)
그럼 내 계좌에 현재 CRMint 코인이 10000개가 있는 상태이다. 여기에 더 추가로 토큰을 발행하고 싶으면
-> 배포 후에 Mint라는 함수 찾기
mint함수에 to - 내 주소 넣고 amount 넣고 transact 클릭
0 이 18개가 소수점이므로 위의 0은 총 19개 -> 토큰 10개 !만 추가 발행
그리고 테스트넷 상의 나의 거래들을 확인하고 싶을 때 klaytnScope 사이트에서 확인하기
KlaytnScope 활용
검색 창에 나의 주소나 contract 토큰 주소를 넣어 트렌젝션을 트레킹해볼 수 있다.
내 계정주소를 넣고 토큰 발랜스 클릭해보니 위에서 실행한 토큰들을 확인할 수 있었다.
https://baobab.scope.klaytn.com/
사실상 클레이튼 토큰 발행은 Klaytn IDE에서 코드를 작성 -> 컴파일 -> 배포 라는 간단한 절차였다.
openZeppeline은 토큰 규격에 맞는 소스코드를 제공해주고
Klaytn IDE에서 실질적으로 솔리디티언어의 코드를 컴파일, 블록체인 네트워크 상 배포하고
KlaytnScope에서 나의 거래를 확인할 수 있다.
처음에는 뭐가 먼지 헷갈렸는데 정리해보니 조금 이해가 간다. 위에서 ERC20 토큰 규격으로 만들어보았는데 ERC20과 다른 규격들이 또 어떻게 다른지 자세하게 공부겸 정리를 또 해봐야겠다.
'Block Chain' 카테고리의 다른 글
[클레이튼]Klaytn KCT, KIP-7, KIP-17 (ERC20, ERC721와 다른점) (0) | 2022.03.02 |
---|---|
ERC-20이란 무엇일까? ERC-223, ERC-777, ERC-721, ERC-998와의 비교 (0) | 2022.03.02 |
[Klaytn] 클레이튼이란? 안전한가? 클레이 코인 시세 (0) | 2022.02.24 |
[solidity Ganache-cli web3 solc] smart Contract 만들어 배포하기 (0) | 2022.02.21 |
[SPDX란?] Warning: SPDX license identifier not provided in source file (0) | 2022.02.21 |
댓글