REF: 20분만에 토큰배포 영문사이트
truffle환경에서 zeppelin을 이용해 토큰을 생성하는 방법 및 예제.
<Zeppelin>
Zeppelin기반으로 Token을 만들고 싶다면..
1. npm방식으로 zeppelin을 설치하는 방법과
2. ethpm방식으로 zeppelin을 설치하는 방법이 있는데..
1.1 $ npm install zepplin-solidity
혹은 package.json 이용 추천:
=> node_modules/zepplin-solidity 폴더 생성됨.
아래처럼 package.json을 만들고.. $ npm intall로 설치함.
{ "name": "truffle", "version": "0.1.0", "private": true, "dependencies": { "zeppelin-solidity": "1.9.0" }, "devDependencies": {}, "scripts": {}
}
|
==> 2. Token생성.으로 이동.
1-2.ethpm방식 (현재 비추)
딱 필요한 것만 받는 ethpm방식이 더 좋을 수도 있는데
현재 1.9.0을 못 받고, 1.3.0을 받아오는 문제가 있다.. (일단 pass)
아래와 같이 ethpm.json파일을 만들고
ethpm.json 파일
{ | | "package_name": "zeppelin", | | "version": "1.9.0", | | "description": "Secure Smart Contract library for Solidity", | | "authors": [ | | "Manuel Araoz <manuelaraoz@gmail.com>" | | ], | | "keywords": [ | | "solidity", | | "ethereum", | | "smart", | | "contracts", | | "security", | | "zeppelin" | | ], | | "license": "MIT" | | } |
|
$truffle install zeppelin 하면 intalled_contracts밑에 패키지가 설치가 된다.. REF
토큰관련 코딩후에는 그냥
$truffle compile -> $truffle migrate 로 다른 일반 contracts와 함께 개발/배포 함.
($truffle publish는 아직은 필요없는거 같은데.. 이건 ROPSTEN용도이려나? .... 아직 미 test중)
2. 그 후 Token solidity생성.
|
pragma solidity ^0.4.23;
import "../node_modules/zeppelin-solidity/contracts/token/StandardToken.sol";
contract ATZToken is StandardToken{
uint public INITIAL_SUPPLY = 10000000; //100만개 나누기 decimals(10**decimals)으로 표시됨. string public name = 'Test ATZ Token'; string public symbol = 'ATZ'; uint8 public decimals = 1; //토큰을 얼마나 잘게 나눌수 있느냐. 10**X address owner;
bool public released = false;
function ATZToken(){ totalSupply_ = INITIAL_SUPPLY * 10 ** uint(decimals); balances[msg.sender] = INITIAL_SUPPLY; //각 계정별 잔액 저장. 상속받아 자동생성 owner = msg.sender; }
function transfer(address to, uint256 value) public returns (bool) { super.transfer(to, value); } function allowance(address owner, address spender) public view returns (uint256) { super.allowance(owner, spender); } function transferFrom(address from, address to, uint256 value) public returns (bool) { super.transferFrom(from, to, value); } function approve(address spender, uint256 value) public returns (bool) { super.approve(spender, value); }
}
그 후에, truffle/migrations 폴더 밑에 2. _deploy_contracts.js에 ATZToken을 추가하고
$ truffle compile $ truffle migrate (--reset) 하면 ganache등에 배포가 된다. |
|
| | |
|
3. 회원가입등의 process가 발생할 때마다, 특정 회원에게 Token을 보내기..작성예정. REF