류기혁님의 자료를 바탕으로 코인을 만들어 보았습니다.
참조: https://m.facebook.com/groups/1501772833176951?view=permalink&id=1942319695788927
그리고 계약코드를 간단하게 분석해보았습니다.
(휴가중이라, 수기로....)
최종 코인을 만드는데 사용된(상속된) 컨트렉트는 총 4가지 입니다.
기본적으로 4가지 상위 토큰은 모두 표준 토큰(Standard token)이라는 계약을 상속합니다.
해당 계약은 결국 ERC20의 기능을 모두 구현한 토큰이고, ERC20의 내용은 기본적으로
아래의 위키에 정리되어 있습니다.
contract ERC20Interface {
function totalSupply() public constant returns (uint);
function balanceOf(address tokenOwner) public constant returns (uint balance);
function transfer(address to, uint tokens) public returns (bool success);
function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
function approve(address spender, uint tokens) public returns (bool success);
function transferFrom(address from, address to, uint tokens) public returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens); }
ERC20은 총 6개의 함수와 2개의 이벤트로 구성되어 있는데, 위키상에 골렘토큰의 경우는 총량을 확인하고, 잔고를 확인하여 전송하는 부분만 구현하고 있다고 합니다. 제가 사용한 계약코드상에서는 ERC20basic에 해당하는 내용이니, 골렘이 이계약 코드를 참조했다고 가정하면 basic token을 상속했을 것입니다.
사실 basic부분의 동작은 워낙 명확해서 논란의 여지가 별로 없지만, 나머지 부분의 함수들의 동작은 약간이 약간 헷갈리더라구요 . allowance, approve, transferFrom의 그것인데요, 위키에 약간에 설명을 참조하자면
저는 이것을 보고 딱 "마통"을 생각했습니다. 대출을 받고 허가받은 량만큼 필요할때 빼가는 형태를 구현할수 있겠다고 말이죠. 만약 이렇게 권한을 위임해놓지 않으면, 대출을 해주는 사람 입장에서는 나의 잔고를 컨트렉트 계정에 위탁하거나(왜 내돈을..), 상대가 요청할때 마다 transfer호출을 위해 online상태여야 하는데 이건 돈빌려주고 역으로 빚쟁이한테 쫒기는 느낌일테니 영 스마트하지 않겠네요.
이렇게 누구나 쉽게 코인을 만들어 테스트 해볼수 있도록 좋은 자료들이 여기저기서 나온다는건 정말 좋은 현상인것 같습니다.
*저는 테스트넷서만 확인했습니다