#9. (실습) 동네 아저씨도 할 수 있는 아무기능없는 토큰 만들기

안녕하십니까 블록체인 알려주는 남자 Ryan KIM 입니다.

오늘은 첫 실습으로 “아무 기능 없는 토큰(Token)”을 만들어 보는 실습을 해보겠습니다.

이더리움(Ethereum) 플랫폼에서 유동성 있고 교환 가능한 상품을 토큰(Token)이라고 합니다. 오늘은 최소 요건을 갖춘 토큰을 만들어 봄으로써, 이를 기반으로 자신만의 토큰을 만들어보거나 기존에 나와있는 소스(ex. 이더리움 토큰 소스)를 붙여넣어 만들어 볼 수 있겠죠? : )


실습 전 준비사항

실습을 위해 아래의 사이트를 통해 1. MIST프로그램을 설치합니다. remix를 통해서도 토큰 만들기가 쉽게 가능하지만, 더욱 간단하게 만들 수 있는 프로그램인 mist를 통해 만들어 보도록 하겠습니다.

이번 포스팅을 통해 이더리움 토큰 오픈소스를 활용해 자신만의 토큰을 직접 만들어 볼 수 있는 기회가 될 수 있습니다.

자신에게 해당하는 OS를 선택해 installor를 설치해 줍니다.

당신에게 맞는 OS를 선택해 설치해줍니다.

2. 미스트 설치 후 Ropsten 으로 접속합니다.

Ropsten 넷 기억하시나요?? 지난 시간에 간단한 스마트컨트랙트를 알아보았을 때 메타마스크에서 사용했던 테스트 서버인데요? 설치된 mist에서 새로 계정을 생성하시고 메타마스크에서 받았던 이더를 보내줍니다.

3. 이더가 전송이 안료되었으면 오른쪽 컨트랙트 탭을 눌러 신규 컨트랙트 설치를 눌러줍니다.

4. 솔리디티 컨트랙트 소스코드에 아래와 같이 입력해 주고, initial supply의 경우 발행하고 싶은 원하는 수량을 입력합니다.

* 코드 설명

Minimumtoken의 경우 balanceOf라는 상태변수를 퍼블릭으로 선언합니다.

balanceOf는 토큰 보유 잔액을 관리하기 위한 상태 변수로 account address를 키로 사용하고 account address 가 보유한 잔액을 값으로 가지고 있습니다.

상태변수를 퍼블릭으로 선언하면 솔리디티 컴파일러는 상태 변수를 조회하는 함수를 상태변수와 같은 이름으로 생성합니다. balanceOf 함수에 account address를 입력하면 해당 주소가 보유한 토큰 잔액을 확인할 수 있습니다.

Minimumtoken토큰 생성자에 의해 initial supply를 생성자로 받도록 정의한다.

초기에 발행되는 토큰을 모두 msg.sender에 할당된다.

메세지 호출로는 트랜잭션과 메세지 호출이 있다. 이더리움의 EOA가 요청한 메세지 호출을 트랜잭션(Transaction)이라 하며, EOA의 서명을 포함한다. 컨트랙트가 다른 컨트랙트를 부르거나 다른 어카운트로 송금거나 다른 컨트랙트의 함수를 부르는 경우에는 서명(Sign)이 필요하지 않다. 이것을 메세지 호출(message call)이라 한다.

5. 이제 코드를 입력후 initial supply에 원하는 수량을 입력하셨다면 아래에 설치를 클릭하여 트랜잭션을 발생시킵니다.

생성된 컨트랙트를 확인하시면 트랜잭션이 포함 된 블록이 생성되고, 블록에 대한 승인 과정이 완료되면서 트랜잭션이 확장됩니다.

트랜잭션이 완료되면 컨트랙트 상세 화면에서 balanceOf에 mainaccount 주소를 입력하면 initialsupply 값인 10000이 표시 될 것입니다.

하지만 현재 실습한 코드는 가장 최소의 요건만 가지고 토큰을 생성했으므로 여러가지 문제점들이 존재합니다.

문제점 1. 메세지를 송신하는 사람이 토큰을 가지고 있지 않아도 다른 어카운트로 토큰을 송금할 수가 있습니다.

문제점 2. 토큰 수신자가 이미 많은 토큰을 보유하고 있어 오버플로우가 발생하는 경우 보유하고 있는 토큰 잔액이 사라 질 수 있습니다.

이제 생성된 토큰을 지갑에 표시하는 실습을 해보겠습니다.

MinimumToken의 경우 이더리움 플랫폼에서 교환 가능한 토큰의 최소 기능을 가지고 있지만, 정보가 부족하기 때문에 수동으로 토큰을 추가해야 합니다.

6. 컨트랙트 버튼을 클릭해 아래 주문형 토큰에서 그림과 같이 원하는 이름을 입력해 줍니다.

7. 완성된 MinimunToken을 10,000개 발행된 모습을 지갑에서 확인하실 수 있으며 해당 토큰의 경우 다른 account에게 송금할 수 있습니다.

자, 이렇게 아무기능이 없는 토큰을 만들어 보았는데요 우리는 앞으로 solidity를 배움으로써 불완전한 토큰에서 완벽하고 안전한 토큰 + 여러 기능들이 추가된 토큰들을 만들어 볼 수 있습니다.

다음번 포스팅에는 좀 더 기능적인 토큰을 만들어 보는 실습을 해보겠습니다.


저와 같은 비전공자, 블록체인을 처음 접해보시는 분들, 블록체인 분야로의 진출을 고려하시는 분들을 위해 같이 공부하고 알아가기 위해서 글을 쓰기 시작해보려고 합니다.

또한, 같이 블록체인 공부하여 논의하는 취지로 만든 카카오톡 방에 들어오셔서 blockchain, ICO, 투자 등 다양하게 논의했으면 합니다. : )

(비밀번호:lb0808)