ERC20 토큰과 Smart contract에 대해서 알아보자.

in #kr7 years ago (edited)

들어가며...

이더리움 혹은 이더리움 기반의 Dapp coin에 투자하는 분들이라면 ERC20 Token에 대해서 한번쯤 들어보셨을것입니다. 요즘 인기를 끌고 있는 대부분의 ICO가 이더리움 블록체인 기반으로 만들어지고 있습니다. 이 말은 즉, 요즘 개발되는 대부분의 신규 코인들은 완전히 새로운 블록 체인 기반의 코인을 개발하는게 아닌 이더리움 네트워크 상에서 개발이 이루어지고 있다는 점입니다.

ERC20는 Ethereum Request for Comment 20의 약자로서 이더리움 블록체인 네트워크에서 발행되는 토큰의 표준으로 한줄 정의 할 수 있겠습니다.

what-is-erc20-1024x512-04-27-2017.jpg

본론

ERC20을 이더리움 블록체인 상에서 발행되는 토큰의 표준이라고 정의 했는데, 이 표준은 어떻게 정의되어 있고 이 표준을 이용해서 어떻게 새로운 코인을 만들수 있을까요? 정답은 스마트 컨트랙트(Smart contract)입니다. 이를 이용해서 새로운 코인을 만드는데 이러한 암화화 화폐들을 탈중앙화 어플리케이션(Dapp, Decentralized Application)이라고 부릅니다. 수많은 Dapp들이 존재하고 있고 계속해서 생겨나고 있습니다. 이러한 Dapp들은 ERC20 토큰의 표준을 따르고 있습니다.

이더리움 네트워크는 서로 다른 기능을 하는 Dapp들간의 상효운용성(interoperability)을 증진시켜주는데 이더리움이 지향하는 가장 큰 핵심 가치라고 생각합니다.

이더리움을 설명할때 보통 안드로이드나 iOS와 같은 플랫폼으로, Dapp들을 그 플랫폼에서 운용되는 Application으로 비유합니다. 플랫폼에서 제공하는 API를 이용하여 앱들을 개발한다면, Smart contract를 이용하여 Dapp들을 개발하는 것이죠.

Dapp에서 사용하는 Smart contract 코드는 모두 오픈되어 있고 이를 이용한 서비스코드는 공개되어 있기도 하고 공개하지 않기도 합니다. Dapp들이 어떻게 Smart contract를 구현해서 사용하고 있는지 한번 살펴보도록 하겠습니다.

이더리움 네트워크의 모든 정보를 실시간으로 확인 할 수 있는 이더스캔 으로 한번 가보겠습니다.

이더스캔에서는 이더리움 네트워크의 블록 정보 및 트랜잭션 하나하나에 대한 모든 정보를 확인 할 수 있습니다.
이 포스팅과 관련된 smart contract만 살짝 살펴보려고 하니, 나머지 정보는 각자 한번 살펴 보시길 바랍니다.

이더리움 네트워크의 Account는 Normal Account과 Contract Account 두 개로 구성되어 있습니다. Normal Account는 이더리움 지갑을 만들때 실제 사용자가 소유하는 Account(EOAs, Externally Owned Accounts)이고, Contract Account는 Dapp에서 사용하는 Dapp의 root account로 보시면 될 것 같습니다. Normal Account는 수없이 생성 될 수 있지만, Contract Account는 Dapp당 오직 한개만 가질수가 있죠.

etherscan.io 페이지의 상단에 위치한 세번째 메뉴인 Account를 선택해보면 두가지 Account를 선택해서 볼 수 있는 메뉴가 보입니다. Normal Accounts를 선택하면 개인 지갑 목록이 나올텐데 현재는 가장 많은 이더리움을 소유한
계좌 순서대로 보일 것입니다.

이제 Contract Accounts를 선택하면 관련 account목록이 주욱 나올텐데요. 그 목록에서 항목을 선택해도 되고 아래 이미지처럼 상단에 검색 바에서 Dapp 코인 명을 입력 후에 바로 찾아갈수도 있습니다.

개인적으로 "오미세고" 코인을 좋아해서 한번 검색해보겠습니다. 참고로, 코인명으로 검색시 두개의 결과가 나오는데 "OmiseGo" 는 오미세고로 개인간에 거래한 거래 내역을 보여주는 Normal Accounts이고, "OmiseGoToken"이 Smart contract account입니다. 다른 코인을 검색 할때에도 꼭 Token이 접미로 붙은 것으로 선택하시길 바랍니다. 검색 후 아래와 같은 결과를 확인 할 수 있습니다.

중간에 보이는 4번째 탭인 Contract Source를 보시면 OmiseGo에서 사용되는 Smart Contract 소스코드를 확인 할 수 있습니다.

solidity 언어로 작성되어 있고, 코드는 그렇게 복잡하지 않은 것을 확인 할 수 있습니다. 아래와 같은 ERC20 인터페이스를 사용하고 있네요.

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20Basic {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function transfer(address to, uint value);
  event Transfer(address indexed from, address indexed to, uint value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint);
  function transferFrom(address from, address to, uint value);
  function approve(address spender, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}

개발자가 아니더라도 한줄 한줄 읽어 보시면 어떤 기능들을 의미하는지 어림짐작 하실 수 있을 것 입니다. 개발자 분들중에서는 이미 solidity 프로그래밍을 통해 smart contract를 만들어보신분들도 계시겠지만 그렇지 않으신분들은 공식 문서를 한번 읽어보시고 따라 해보시면 많은 도움이 될 것 같습니다. 주요 튜토리얼 관련해서는 나중에 한번 포스팅 할 계획입니다.

Contract Source Code 하단에 있는 Contract ABI(Application Binary Interface)는 solidity를 컴파일하면 나오는 산출물중의 하나로서 binary 실행 파일과 contract에서 설정한 함수 또는 변수를 연결해주는 역할을 합니다. 자세한건 이더리움 위키(https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI)를 참고 바랍니다.

마치며...

ERC20 토큰과 Smart contract에 대해서 한번 살펴보았습니다. 이더리움은 아직 풀어야 할 숙제들이 많이 남아 있지만 꾸준하게 개발이 진행되고 있고 EEA에 가입하는 기업들이나 개인 개발자들, Dapp 그리고 contents들이 하루가 다르게 늘어나고 있습니다. 이들 모두는 플랫폼의 힘과 선점이 얼마나 중요한지 알고 있는 분들이겠죠. 저 또한 뒤늦게 암호화 화폐에 뛰어들어서 조금씩 알아가고 있지만 이더리움의 미래는 정말 기대가 큽니다. 아직 메트로폴리스 시작단계인 현 시점에서 세레니티 단계에서 모든 Dapp들이 이더리움 네트워크에서 상호작용하며 전 세계를 움직이는 모습을 상상하며 포스팅 마치도록 하겠습니다.

유용한 포스팅이었다면 upvote 부탁드리고, 소통하고픈분들은 follow 신청 많이 해주세요! ^^

Sort:  

Cheer Up!

  • from Clean STEEM activity supporter

이더리움 네트워크가 나날이 발전하길 기대합니다 !!
아직은 모든 DAPP을 수용하기에는 ... 부족한 것 같습니다

넵, 그러게요..
하루 빨리 모든 Dapp을 수용 하고도 실시간 거래가 일어날 수 있는 날이 오길 기대 해봐요..^^

이 글 읽기전에는 erc20 토큰 듣기만 하고 몰랐는데 kims172님 글 읽고 이해가 어느정도 된 것 같아욯. 다음번에는 어떤 내용 올려주실지 기대되요 ^.^ kims172님 프사 돼지코인 어플 맞죠? ㅋㅋ

넵 돼코 어플이에요,,ㅋㅋ
다음 글도 좋은 내용으로 찾아 뵐게요 ^^

Congratulations @kims172, this post is the seventh most rewarded post (based on pending payouts) in the last 12 hours written by a Dust account holder (accounts that hold between 0 and 0.01 Mega Vests). The total number of posts by Dust account holders during this period was 3707 and the total pending payments to posts in this category was $653.19. To see the full list of highest paid posts across all accounts categories, click here.

If you do not wish to receive these messages in future, please reply stop to this comment.

뉴비는 언제나 응원!이에요.
팁! : 스팀파워가 50%일때보다 100%일때 보팅파워가 더 세단 걸 알고 계신가요?
26.00% 보팅
현재 보상량 : [ 평균 - 3.49 / 3개 / 합계 : 10.48 ]

  • kr-newbie 보안관 봇! (beta 0.8.0 - 2017/08/29)

잘 보고 갑니다 ㅎㅎ

우아 감사합니다!!