: 초기 수량 1,000,000 개의 토큰을 생상한다.
pragma solidity ^0.5.4;
contract ERC20_JIN {
string public name;
string public symbol;
uint8 public decimals = 8;
uint256 public totalSupply;
mapping (address => uint256) public balanceOf;
mapping (address => mapping(address=>uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed _owner, address indexed _spender, uint256 value);
event Burn(address indexed from, uint256 value);
uint256 initialSupply = 1000000;
string tokenName = 'ERCJINToken';
string tokenSymbol = 'JINTK';
constructor() public {
totalSupply = initialSupply*10**uint256(decimals);
balanceOf[msg.sender] = totalSupply;
name = tokenName;
symbol = tokenSymbol;
}
function _transfer(address _from, address _to, uint _value) internal {
require(_to != address(0));
require(balanceOf[_from] >= _value);
require(balanceOf[_to] + _value >= balanceOf[_to]);
uint priviousBalances = balanceOf[_from] + balanceOf[_to];
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
emit Transfer(_from, _to, _value);
assert(balanceOf[_from] + balanceOf[_to] == priviousBalances);
}
function transfer(address _to, uint256 _value) public returns (bool success) {
_transfer(msg.sender, _to, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(_value <= allowance[_from][msg.sender]);
//추가
allowance[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public returns(bool success) {
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function burn(uint _value) public returns (bool sucess) {
require(balanceOf[msg.sender] >= _value);
balanceOf[msg.sender] -= _value;
totalSupply -= _value;
emit Burn(msg.sender, _value);
return true;
}
function burnFrom(address _from, uint256 _value) public returns (bool success) {
require(balanceOf[_from] >= _value);
require(_value <= allowance[_from][msg.sender]);
balanceOf[_from] -= _value;
allowance[_from][msg.sender] -= _value;
totalSupply -= _value;
emit Burn(_from, _value);
return true;
}
}
: 어떤 Contract 를 올릴것인지를 선택… 이전 Contract는 올릴필요 없으니. 일단 주석~
//var Election = artifacts.require("./Election.sol");
var ERC20_JIN = artifacts.require("./ERC20_JIN.sol");
module.exports = function(deployer) {
//deployer.deploy(Election);
deployer.deploy(ERC20_JIN);
};
→ tronbox compile –compile-all
→ tronbox migrate –reset –network shasta
마지막 생성된 Contract 주소는 어디에 필기해놓아야한다. 앱 연동시에 해당 contract 주소를 보고 찾아들어가기 때문이다.