Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *Submitted for verification at Etherscan.io on 2019-04-01
- */
- pragma solidity ^0.4.24;
- /**
- * Libraries
- */
- library SafeMath {
- /**
- * @dev Multiplies two numbers, throws on overflow.
- */
- function mul(uint256 a, uint256 b) internal pure returns (uint256) {
- if (a == 0) {
- return 0;
- }
- uint256 c = a * b;
- assert(c / a == b);
- return c;
- }
- /**
- * @dev Integer division of two numbers, truncating the quotient.
- */
- function div(uint256 a, uint256 b) internal pure returns (uint256) {
- // assert(b > 0); // Solidity automatically throws when dividing by 0
- uint256 c = a / b;
- // assert(a == b * c + a % b); // There is no case in which this doesn't hold
- return c;
- }
- /**
- * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
- */
- function sub(uint256 a, uint256 b) internal pure returns (uint256) {
- assert(b <= a);
- return a - b;
- }
- /**
- * @dev Adds two numbers, throws on overflow.
- */
- function add(uint256 a, uint256 b) internal pure returns (uint256) {
- uint256 c = a + b;
- assert(c >= a);
- return c;
- }
- }
- /**
- * Helper contracts
- */
- contract Ownable {
- address public owner;
- event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
- /**
- * @dev The Ownable constructor sets the original `owner` of the contract to the sender
- * account.
- */
- constructor() public {
- owner = msg.sender;
- }
- /**
- * @dev Throws if called by any account other than the owner.
- */
- modifier onlyOwner() {
- require(msg.sender == owner);
- _;
- }
- /**
- * @dev Allows the current owner to transfer control of the contract to a newOwner.
- * @param newOwner The address to transfer ownership to.
- */
- function transferOwnership(address newOwner) public onlyOwner {
- require(newOwner != address(0));
- emit OwnershipTransferred(owner, newOwner);
- owner = newOwner;
- }
- }
- contract Pausable is Ownable {
- event Pause();
- event Unpause();
- bool public paused = false;
- /**
- * @dev Modifier to make a function callable only when the contract is not paused.
- */
- modifier whenNotPaused() {
- require(!paused);
- _;
- }
- /**
- * @dev Modifier to make a function callable only when the contract is paused.
- */
- modifier whenPaused() {
- require(paused);
- _;
- }
- /**
- * @dev called by the owner to pause, triggers stopped state
- */
- function pause() onlyOwner whenNotPaused public {
- paused = true;
- emit Pause();
- }
- /**
- * @dev called by the owner to unpause, returns to normal state
- */
- function unpause() onlyOwner whenPaused public {
- paused = false;
- emit Unpause();
- }
- }
- contract ERC20Basic {
- function totalSupply() public view returns (uint256);
- function balanceOf(address who) public view returns (uint256);
- function transfer(address to, uint256 value) public returns (bool);
- event Transfer(address indexed from, address indexed to, uint256 value);
- }
- contract ERC20 is ERC20Basic {
- function allowance(address owner, address spender) public view returns (uint256);
- function transferFrom(address from, address to, uint256 value) public returns (bool);
- function approve(address spender, uint256 value) public returns (bool);
- event Approval(address indexed owner, address indexed spender, uint256 value);
- }
- contract HUBRISTOKEN is ERC20 {
- string public name;
- string public symbol;
- uint8 public decimals;
- constructor(string _name, string _symbol, uint8 _decimals) public {
- name = _name;
- symbol = _symbol;
- decimals = _decimals;
- }
- }
- contract BasicToken is ERC20Basic {
- using SafeMath for uint256;
- mapping(address => uint256) balances;
- uint256 totalSupply_;
- /**
- * @dev total number of tokens in existence
- */
- function totalSupply() public view returns (uint256) {
- return totalSupply_;
- }
- /**
- * @dev transfer token for a specified address
- * @param _to The address to transfer to.
- * @param _value The amount to be transferred.
- */
- function transfer(address _to, uint256 _value) public returns (bool) {
- require(_to != address(0));
- require(_value <= balances[msg.sender]);
- // SafeMath.sub will throw if there is not enough balance.
- balances[msg.sender] = balances[msg.sender].sub(_value);
- balances[_to] = balances[_to].add(_value);
- emit Transfer(msg.sender, _to, _value);
- return true;
- }
- /**
- * @dev Gets the balance of the specified address.
- * @param _owner The address to query the the balance of.
- * @return An uint256 representing the amount owned by the passed address.
- */
- function balanceOf(address _owner) public view returns (uint256 balance) {
- return balances[_owner];
- }
- }
- contract Standard is ERC20, BasicToken {
- mapping (address => mapping (address => uint256)) internal allowed;
- function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
- require(_to != address(0));
- require(_value <= balances[_from]);
- require(_value <= allowed[_from][msg.sender]);
- balances[_from] = balances[_from].sub(_value);
- balances[_to] = balances[_to].add(_value);
- allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
- emit Transfer(_from, _to, _value);
- return true;
- }
- function approve(address _spender, uint256 _value) public returns (bool) {
- allowed[msg.sender][_spender] = _value;
- emit Approval(msg.sender, _spender, _value);
- return true;
- }
- function allowance(address _owner, address _spender) public view returns (uint256) {
- return allowed[_owner][_spender];
- }
- function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
- allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
- emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
- return true;
- }
- function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
- uint oldValue = allowed[msg.sender][_spender];
- if (_subtractedValue > oldValue) {
- allowed[msg.sender][_spender] = 0;
- } else {
- allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
- }
- emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
- return true;
- }
- }
- contract BurnableToken is BasicToken {
- event Burn(address indexed burner, uint256 value);
- /**
- * @dev Burns a specific amount of tokens.
- * @param _value The amount of token to be burned.
- */
- function burn(uint256 _value) public {
- _burn(msg.sender, _value);
- }
- function _burn(address _who, uint256 _value) internal {
- require(_value <= balances[_who]);
- // no need to require value <= totalSupply, since that would imply the
- // sender's balance is greater than the totalSupply, which *should* be an assertion failure
- balances[_who] = balances[_who].sub(_value);
- totalSupply_ = totalSupply_.sub(_value);
- emit Burn(_who, _value);
- emit Transfer(_who, address(0), _value);
- }
- }
- /**
- * HUBRIS Token
- */
- contract HUBRIS is Ownable, Pausable, Standard, BurnableToken, HUBRISTOKEN {
- using SafeMath for uint256;
- string name = "HUBRIS";
- string symbol = "HBRS";
- uint8 decimals = 18;
- //token allocation addresses
- address TOKEN_SALE = 0xdff99ef7ed50f9EB06183d0DfeD9CD5DB051878B;
- address EQUITY_SHARE = 0xb2aA0f5c0e2e7f94A26022C076240509C85eDab1;
- address TEAM = 0x922E97d03bEeA115Ab95CC638765d2BebEb04f20;
- address ADVISORS = 0x6FB54a06f94591EAF330c4BdD644c4Ab753eb105;
- address CUSTOMERS = 0x382C33946B73A3B8B7F3E70A553b6965d6F28a48;
- address BOUNTY = 0x1d1390c9d5e08aCEC31991EA7Be7443ad2EEA6e6;
- address RESERVE = 0x79641ae5D204C45038a9cF07c32E39d2EeC23C5c;
- address LEGAL = 0xe49941b4B66D61d98d4766c8EEB3004c0961075B;
- bool tokensAllocated = false;
- constructor() HUBRISTOKEN(name, symbol, decimals) public {
- totalSupply_ = 1000000000E18;
- balances[this] = totalSupply_;
- }
- function envokeTokenAllocation() public onlyOwner {
- require(!tokensAllocated);
- tokensAllocated = true;
- this.transfer(TOKEN_SALE, 300000000E18); //30% of totalSupply_
- this.transfer(EQUITY_SHARE, 300000000E18); //30% of totalSupply_
- this.transfer(TEAM, 150000000E18); //15% of totalSupply_
- this.transfer(ADVISORS, 30000000E18); //3% of totalSupply_
- this.transfer(CUSTOMERS, 100000000E18); //10% of totalSupply_
- this.transfer(msg.sender, 50000000E18); //5% of totalSupply_
- this.transfer(BOUNTY, 40000000E18); //4% of totalSupply_
- this.transfer(RESERVE, 20000000E18); //2% of totalSupply_
- this.transfer(LEGAL, 10000000E18); //1% of totalSupply_
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement