[Ethereum] ERC-20

in erc-20 •  7 years ago 

요즘 ICO 에 대한 이야기가 많이 나오는데요.
ICO는 Initial Coin Offering 의 약자로 일종의 투자금을 모금 하기위한 수단 입니다.
투자금을 어떻게 모으냐구요?
토큰을 생성하여 블록체인 기반의 서비스를 제공하기 전에 미리 토큰을 판매하여 투자금을 모금 합니다.

ICO를 진행하기 위해서 스마트 컨트랙트를 지원하는 블록체인 플랫폼(ETH, NXT, NEO...등)을 이용 하며, 그 중 가장 많이 사용하는 플랫폼은 이더리움 입니다.
ERC-20은 이더리움 기반으로 토큰을 생성하기 위한 기본 스펙이며, 이를 구현한 토큰은 이더리움 지갑을 사용하여 거래가 가능 합니다.

그럼 ERC-20 에 대하여 알아 보겠습니다.

ERC-20 인터페이스

아래는 ERC-20의 기본 인터페이스 입니다.

contract ERC20 {
    function totalSupply() constant returns (uint totalSupply);
    function balanceOf(address _owner) constant returns (uint balance);
    function transfer(address _to, uint _value) returns (bool success);
    function transferFrom(address _from, address _to, uint _value) returns (bool success);
    function approve(address _spender, uint _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

각 함수의 용도를 살펴 보면

  • function totalSupply() constant returns (uint totalSupply);
    총 발행 토큰수를 반환 합니다.
  • function balanceOf(address _owner) constant returns (uint balance);
    입력된 주소 _owner 의 잔액을 반환합니다.
  • function transfer(address _to, uint _value) returns (bool success);
    _value 만큼의 토큰을 입력한 주소 _to로 이체 합니다.
  • function transferFrom(address _from, address _to, uint _value) returns (bool success);
    _value 만큼의 토큰을 입력한 주소 _from 로 부터 목적주소 _to로 이체 합니다.
  • function approve(address _spender, uint _value) returns (bool success);
    입력한 주소 _spender 에게 입력한 수 _value 만큼의 토큰을 사용할수 있도록 허용한다.
  • function allowance(address _owner, address _spender) constant returns (uint remaining);
    _owner의 주소에서 _spender에게 approve 함수를 통하여 허용된 토큰의 수를 반환합니다.
  • event Transfer(address indexed _from, address indexed _to, uint _value);
    토큰전송 이벤트
  • event Approval(address indexed _owner, address indexed _spender, uint _value);
    토큰사용 승인 이벤트

transfer은 주로 토큰 소유자가 토큰전송시 사용이 되며,
transferFrom은 토큰 소비주체(contract 함수 등)가 allowance를 통하여 소비가능 수량을 확인한 후에 수행이 되며, 소유자는 approve 를 통하여 소비량을 미리 지정 해야 합니다.

위 기능만 구현을 해주면 이더리움 네트워크를 통하여 발행한 토큰을 거래 할수 있습니다.
이더리움 기반에서는 토큰을 전송을 하더라도 가스가 사용되는데요. 가스는 이더리움 코인으로만 지불이 가능한 관계로 토큰 만으로는 어떠한 행위도 할수 없다는게 큰 장애물(?) 입니다.
이 부분을 해결할수 있는 방법이 있는지도 찾아 봐야 할듯 하네요.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://medium.com/@k3no/ethereum-tokens-smart-contracts-283821fd3410

Congratulations @blueleeky! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @blueleeky! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!