Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@bwheeler96
Created March 3, 2018 20:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bwheeler96/b6d1b7f054687aef9f12872c55e49108 to your computer and use it in GitHub Desktop.
Save bwheeler96/b6d1b7f054687aef9f12872c55e49108 to your computer and use it in GitHub Desktop.
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