Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.18;
- library SafeMath {
- function add(uint a, uint b) internal pure returns (uint c) {
- c = a + b;
- require(c >= a);
- }
- function sub(uint a, uint b) internal pure returns (uint c) {
- require(b <= a);
- c = a - b;
- }
- function mul(uint a, uint b) internal pure returns (uint c) {
- c = a * b;
- require(a == 0 || c / a == b);
- }
- function div(uint a, uint b) internal pure returns (uint c) {
- require(b > 0);
- c = a / b;
- }
- }
- 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);
- event Transfer(address indexed from, address indexed to, uint tokens);
- }
- contract Owned {
- address public owner;
- constructor() public {
- owner = msg.sender;
- }
- modifier onlyOwner {
- require(msg.sender == owner);
- _;
- }
- function transferOwnership(address _newOwner) public onlyOwner {
- owner = _newOwner;
- }
- }
- contract ImperialToken is ERC20Interface, Owned {
- using SafeMath for uint;
- string public symbol;
- string public name;
- uint8 public decimals;
- uint _totalSupply;
- mapping(address => uint) balances;
- constructor() public {
- symbol = "IMP";
- name = "IMPERIAL";
- decimals = 18;
- _totalSupply = 1000000000000 * 10**uint(decimals);
- balances[owner] = _totalSupply;
- emit Transfer(address(0), owner, _totalSupply);
- }
- function totalSupply() public view returns (uint) {
- return _totalSupply.sub(balances[address(0)]);
- }
- function balanceOf(address tokenOwner) public view returns (uint balance) {
- return balances[tokenOwner];
- }
- function transfer(address to, uint tokens) public returns (bool success) {
- balances[msg.sender] = balances[msg.sender].sub(tokens);
- balances[to] = balances[to].add(tokens);
- emit Transfer(msg.sender, to, tokens);
- return true;
- }
- }
Add Comment
Please, Sign In to add comment