Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.0;
- import "./ERC20interface.sol";
- contract FixedSupplyToken is ERC20Interface {
- string public constant symbol = "FIXED";
- string public constant name = "EXE token";
- uint8 public constant decimals = 18;
- uint constant MAX_UINT = 2**256 - 1;
- uint256 _totalSupply = MAX_UINT;
- // Owner of this contract
- address public owner;
- // Balances for each account
- mapping(address => uint256) balances;
- // Owner of account approves the transfer of an amount to another account
- mapping(address => mapping (address => uint256)) allowed;
- // Functions with this modifier can only be executed by the owner
- modifier onlyOwner() {
- // if (msg.sender != owner) {
- // revert(); ony available in 4.x version truffle
- // }
- if (msg.sender != owner) throw;
- _;
- }
- // Constructor
- function FixedSupplyToken() public {
- owner = msg.sender;
- balances[owner] = _totalSupply;
- }
- function totalSupply() public constant returns (uint256 totalSupplyReturn) {
- totalSupplyReturn = _totalSupply;
- }
- // What is the balance of a particular account?
- function balanceOf(address _owner) public constant returns (uint256 balance) {
- return balances[_owner];
- }
- // Transfer the balance from owner's account to another account
- function transfer(address _to, uint256 _amount) public returns (bool success) {
- if (balances[msg.sender] >= _amount
- && _amount > 0
- && balances[_to] + _amount > balances[_to]) {
- balances[msg.sender] -= _amount;
- balances[_to] += _amount;
- Transfer(msg.sender, _to, _amount);
- return true;
- } else {
- return false;
- }
- }
- // Send _value amount of tokens from address _from to address _to
- // The transferFrom method is used for a withdraw workflow, allowing contracts to send
- // tokens on your behalf, for example to "deposit" to a contract address and/or to charge
- // fees in sub-currencies; the command should fail unless the _from account has
- // deliberately authorized the sender of the message via some mechanism; we propose
- // these standardized APIs for approval:
- function transferFrom(
- address _from,
- address _to,
- uint256 _amount
- ) public onlyOwner returns (bool success) { //&& allowed[_from][msg.sender] >= _amount. And without onlyOwner
- if (balances[_from] >= _amount
- && _amount > 0
- && balances[_to] + _amount > balances[_to]) {
- balances[_from] -= _amount;
- // allowed[_from][msg.sender] -= _amount;
- balances[_to] += _amount;
- Transfer(_from, _to, _amount);
- return true;
- } else {
- return false;
- }
- }
- // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
- // If this function is called again it overwrites the current allowance with _value.
- function approve(address _spender, uint256 _amount) public returns (bool success) {
- allowed[msg.sender][_spender] = _amount;
- Approval(msg.sender, _spender, _amount);
- return true;
- }
- function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
- return allowed[_owner][_spender];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement