Created
February 12, 2018 22:14
-
-
Save kingassune/5dec8fd41dc4f948a4c5a568ed2751fa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.6; | |
// Written By Dontrail Cotlage | |
// | |
contract SafeMath{ | |
function safeMul(uint a, uint b) internal returns (uint) { | |
uint c = a * b; | |
assert(a == 0 || c / a == b); | |
return c; | |
} | |
function safeDiv(uint a, uint b) internal returns (uint) { | |
assert(b > 0); | |
uint c = a / b; | |
assert(a == b * c + a % b); | |
return c; | |
} | |
function safeSub(uint a, uint b) internal returns (uint) { | |
assert(b <= a); | |
return a - b; | |
} | |
function safeAdd(uint a, uint b) internal returns (uint) { | |
uint c = a + b; | |
assert(c >= a); | |
return c; | |
} | |
function assert(bool assertion) internal { | |
if (!assertion) { | |
throw; | |
} | |
} | |
} | |
contract ERC20Basic { | |
//uint256 public totalSupply; | |
function balanceOf(address who) constant returns (uint256); | |
function transfer(address to, uint256 value) returns (bool); | |
event Transfer(address indexed from, address indexed to, uint256 value); | |
} | |
contract ERC20 is ERC20Basic { | |
function totalSupply() constant returns (uint256 totalSupply) {} | |
function balanceOf(address _owner) constant returns (uint256 balance) {} | |
function transfer(address _recipient, uint256 _value) returns (bool success) {} | |
function transferFrom(address _from, address _recipient, uint256 _value) returns (bool success) {} | |
function approve(address _spender, uint256 _value) returns (bool success) {} | |
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {} | |
event Transfer(address indexed _from, address indexed _recipient, uint256 _value); | |
event Approval(address indexed _owner, address indexed _spender, uint256 _value); | |
} | |
contract EtherHoustonICO is ERC20, SafeMath{ | |
mapping(address => uint256) balances; | |
uint256 public totalSupply; | |
function balanceOf(address _owner) constant returns (uint256 balance) { | |
return balances[_owner]; | |
} | |
function transfer(address _to, uint256 _value) returns (bool success){ | |
balances[msg.sender] = safeSub(balances[msg.sender], _value); | |
balances[_to] = safeAdd(balances[_to], _value); | |
Transfer(msg.sender, _to, _value); | |
return true; | |
} | |
mapping (address => mapping (address => uint256)) allowed; | |
function transferFrom(address _from, address _to, uint256 _value) returns (bool success){ | |
var _allowance = allowed[_from][msg.sender]; | |
balances[_to] = safeAdd(balances[_to], _value); | |
balances[_from] = safeSub(balances[_from], _value); | |
allowed[_from][msg.sender] = safeSub(_allowance, _value); | |
Transfer(_from, _to, _value); | |
return true; | |
} | |
function approve(address _spender, uint256 _value) returns (bool success) { | |
allowed[msg.sender][_spender] = _value; | |
Approval(msg.sender, _spender, _value); | |
return true; | |
} | |
function allowance(address _owner, address _spender) constant returns (uint256 remaining) { | |
return allowed[_owner][_spender]; | |
} | |
uint256 public endTime; | |
modifier during_offering_time(){ | |
if (now >= endTime){ | |
throw; | |
}else{ | |
_; | |
} | |
} | |
function () payable during_offering_time { | |
createTokens(msg.sender); | |
} | |
function createTokens(address recipient) payable { | |
if (msg.value == 0) { | |
throw; | |
} | |
uint tokens = safeDiv(safeMul(msg.value, price), 1 ether); | |
totalSupply = safeAdd(totalSupply, tokens); | |
balances[recipient] = safeAdd(balances[recipient], tokens); | |
if (!owner.send(msg.value)) { | |
throw; | |
} | |
} | |
string public name = "EtherHouston"; | |
string public symbol = "HOU"; | |
uint public decimals = 2; | |
uint256 public INITIAL_SUPPLY = 5000000; | |
uint256 public price; | |
address public owner; | |
function EtherHoustonICO() { | |
totalSupply = INITIAL_SUPPLY; | |
balances[msg.sender] = INITIAL_SUPPLY; // Give all of the initial tokens to the contract deployer. | |
endTime = now + 1 weeks; | |
owner = msg.sender; | |
price = 50000; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment