Created
March 3, 2018 20:24
-
-
Save bwheeler96/b6d1b7f054687aef9f12872c55e49108 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.18; | |
contract Token { | |
uint256 constant private MAX_UINT256 = 2**256 - 1; | |
mapping(address => uint) public balances; | |
mapping(address => mapping(address => uint)) public allowed; | |
uint8 public decimals = 18; // Don't set this to anything other than 18, please | |
string public name = "Dapper Network Token"; | |
string public symbol = "DPR"; | |
uint public totalSupply = 0; // actual current supply | |
uint maximumSupply = 100000000 ether; // maximum supply | |
uint cost = 100; | |
address public creator; | |
event Transfer(address indexed _from, address indexed _to, uint256 _value); | |
event Approval(address indexed _owner, address indexed _spender, uint256 _value); | |
function Token() public | |
{ | |
balances[msg.sender] = totalSupply; | |
creator = msg.sender; | |
} | |
// Don't let people randomly send ETH to contract | |
function() public payable { | |
revert(); | |
} | |
function buy() public payable { | |
// Each ETH is worth 100 tokens | |
uint amount = msg.value * cost; | |
balances[msg.sender] += amount; | |
totalSupply += amount; | |
require(totalSupply < maximumSupply); | |
} | |
function transfer(address _to, uint256 _value) public returns (bool success) { | |
require(balances[msg.sender] >= _value); | |
balances[msg.sender] -= _value; | |
balances[_to] += _value; | |
Transfer(msg.sender, _to, _value); | |
return true; | |
} | |
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { | |
uint256 allowance = allowed[_from][msg.sender]; | |
require(balances[_from] >= _value && allowance >= _value); | |
balances[_to] += _value; | |
balances[_from] -= _value; | |
if (allowance < MAX_UINT256) { | |
allowed[_from][msg.sender] -= _value; | |
} | |
Transfer(_from, _to, _value); | |
return true; | |
} | |
function balanceOf(address _owner) public view returns (uint256 balance) { | |
return balances[_owner]; | |
} | |
function approve(address _spender, uint256 _value) public returns (bool success) { | |
allowed[msg.sender][_spender] = _value; | |
Approval(msg.sender, _spender, _value); | |
return true; | |
} | |
function allowance(address _owner, address _spender) public view returns (uint256 remaining) { | |
return allowed[_owner][_spender]; | |
} | |
function withdraw(address to) { | |
require(msg.sender == creator); | |
to.send(this.balance); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment