ETH Price: $3,497.05 (+1.21%)

Contract

0xf04a8ac553FceDB5BA99A64799155826C136b0Be
 
Transaction Hash
Method
Block
From
To
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385012024-12-05 19:52:1119 days ago1733428331IN
Flixx Token
0 ETH0.0012585131.93804166
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.0012994132.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.001299832.98581726
Transfer213385002024-12-05 19:51:5919 days ago1733428319IN
Flixx Token
0 ETH0.0013356633.89581726
Transfer213384992024-12-05 19:51:4719 days ago1733428307IN
Flixx Token
0 ETH0.0013641534.6188512
Transfer213384992024-12-05 19:51:4719 days ago1733428307IN
Flixx Token
0 ETH0.0013641534.6188512
Transfer213384992024-12-05 19:51:4719 days ago1733428307IN
Flixx Token
0 ETH0.0013641534.6188512
Approve212734832024-11-26 17:41:3528 days ago1732642895IN
Flixx Token
0 ETH0.0005998312.92888888
Transfer212462292024-11-22 22:23:1131 days ago1732314191IN
Flixx Token
0 ETH0.0006339318.3
Transfer212188002024-11-19 2:30:3535 days ago1731983435IN
Flixx Token
0 ETH0.000508289.82369312
Approve212056422024-11-17 6:29:3537 days ago1731824975IN
Flixx Token
0 ETH0.000404828.71666159
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x9A2Ba0CA...0dC628F40
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ProjectToken

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-10-23
*/

/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint public totalSupply; // Number of tokens in circulation
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);

  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}


/**
 * Math operations with safety checks
 * Reference: https://github.com/OpenZeppelin/zeppelin-solidity/commit/353285e5d96477b4abb86f7cde9187e84ed251ac
 */
contract SafeMath {
  function safeMul(uint a, uint b) internal constant returns (uint) {
    uint c = a * b;

    assert(a == 0 || c / a == b);

    return c;
  }

  function safeDiv(uint a, uint b) internal constant returns (uint) {    
    uint c = a / b;

    return c;
  }

  function safeSub(uint a, uint b) internal constant returns (uint) {
    require(b <= a);

    return a - b;
  }

  function safeAdd(uint a, uint b) internal constant returns (uint) {
    uint c = a + b;

    assert(c>=a && c>=b);

    return c;
  }
}


/*
 * Standard ERC20 token
 *
 * https://github.com/ethereum/EIPs/issues/20
 */
contract Token is ERC20, SafeMath {

  mapping(address => uint) balances;
  mapping (address => mapping (address => uint)) allowed;

  function transfer(address _to, uint _value) returns (bool success) {

    return doTransfer(msg.sender, _to, _value);
  }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {
    var _allowance = allowed[_from][msg.sender];

    allowed[_from][msg.sender] = safeSub(_allowance, _value);

    return doTransfer(_from, _to, _value);
  }

  /// @notice You must set the allowance to zero before changing to a non-zero value
  function approve(address _spender, uint _value) public returns (bool success) {
    require(allowed[msg.sender][_spender] == 0 || _value == 0);

    allowed[msg.sender][_spender] = _value;

    Approval(msg.sender, _spender, _value);

    return true;
  }

  function doTransfer(address _from, address _to, uint _value) private returns (bool success) {
    balances[_from] = safeSub(balances[_from], _value);
    balances[_to] = safeAdd(balances[_to], _value);

    Transfer(_from, _to, _value);

    return true;
  }

  function balanceOf(address _owner) public constant returns (uint balance) {
    return balances[_owner];
  }

  function allowance(address _owner, address _spender) public constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }
}

contract MintInterface {
  function mint(address recipient, uint amount) returns (bool success);
}


/*
 * Manages the ownership of a contract
 */
contract Owned {
    address public owner; // owner of the contract. By default, the creator of the contract

    modifier onlyOwner() {
      require(msg.sender == owner);

        _;
    }

    function Owned() {
        owner = msg.sender;
    }

    // Changes the owner of the contract to "newOwner"
    // Only executed by "owner"
    // If you want to completely remove the ownership of a contract, just change it to "0x0"
    function changeOwner(address newOwner) public onlyOwner {
      owner = newOwner;
    }
}

/*
 * Manage the minters of a token
 */
contract Minted is MintInterface, Owned {
  uint public numMinters; // Number of minters of the token.
  bool public open; // If is possible to add new minters or not. True by default.
  mapping (address => bool) public minters; // if an address is a minter of the token or not

  // Log of the minters added
  event NewMinter(address who);

  modifier onlyMinters() {
    require(minters[msg.sender]);

    _;
  }

  modifier onlyIfOpen() {
    require(open);

    _;
  }

  function Minted() {
    open = true;
  }

  // Adds a new minter to the token
  // _minter: address of the new minter
  // Only executed by "Owner" (see "Owned" contract)
  // Only executed if the function "endMinting" has not been executed
  function addMinter(address _minter) public onlyOwner onlyIfOpen {
    if(!minters[_minter]) {
      minters[_minter] = true;
      numMinters++;

      NewMinter(_minter);
    }
  }

  // Removes a minter of the token
  // _minter: address of the minter to be removed
  // Only executed by "Owner" (see "Owned" contract)
  function removeMinter(address _minter) public onlyOwner {
    if(minters[_minter]) {
      minters[_minter] = false;
      numMinters--;
    }
  }

  // Blocks the possibility to add new minters
  // This function is irreversible
  // Only executed by "Owner" (see "Owned" contract)
  function endMinting() public onlyOwner {
    open = false;
  }
}

/*
 * Allows an address to set a block from when a token won't be tradeable
 */
contract Pausable is Owned {
  // block from when the token won't be tradeable
  // Default to 0 = no restriction
  uint public endBlock;

  modifier validUntil() {
    require(block.number <= endBlock || endBlock == 0);

    _;
  }

  // Set a block from when a token won't be tradeable
  // There is no limit in the number of executions to avoid irreversible mistakes.
  // Only executed by "Owner" (see "Owned" contract)
  function setEndBlock(uint block) public onlyOwner {
    endBlock = block;
  }
}


/*
 * Token contract
 */
contract ProjectToken is Token, Minted, Pausable {
  string public name; // name of the token
  string public symbol; // acronim of the token
  uint public decimals; // number of decimals of the token

  uint public transferableBlock; // block from which the token can de transfered

  modifier lockUpPeriod() {
    require(block.number >= transferableBlock);

    _;
  }

  function ProjectToken(
    string _name,
    string _symbol,
    uint _decimals,
    uint _transferableBlock
  ) {
    name = _name;
    symbol = _symbol;
    decimals = _decimals;
    transferableBlock = _transferableBlock;
  }

  // Creates "amount" tokens and send them to "recipient" address
  // Only executed by authorized minters (see "Minted" contract)
  function mint(address recipient, uint amount)
    public
    onlyMinters
    returns (bool success)
  {
    totalSupply = safeAdd(totalSupply, amount);
    balances[recipient] = safeAdd(balances[recipient], amount);

    Transfer(0x0, recipient, amount);

    return true;
  }

  // Aproves "_spender" to spend "_value" tokens and executes its "receiveApproval" function
  function approveAndCall(address _spender, uint256 _value)
    public
    returns (bool success)
  {
    if(super.approve(_spender, _value)){
      if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address)"))), msg.sender, _value, this))
        revert();

      return true;
    }
  }

  // Transfers "value" tokens to "to" address
  // Only executed adter "transferableBlock"
  // Only executed before "endBlock" (see "Expiration" contract)
  // Only executed if there are enough funds and don't overflow
  function transfer(address to, uint value)
    public
    lockUpPeriod
    validUntil
    returns (bool success)
  {
    if(super.transfer(to, value))
      return true;

    return false;
  }

  // Transfers "value" tokens to "to" address from "from"
  // Only executed adter "transferableBlock"
  // Only executed before "endBlock" (see "Expiration" contract)
  // Only executed if there are enough funds available and approved, and don't overflow
  function transferFrom(address from, address to, uint value)
    public
    lockUpPeriod
    validUntil
    returns (bool success)
  {
    if(super.transferFrom(from, to, value))
      return true;

    return false;
  }

  function refundTokens(address _token, address _refund, uint _value) onlyOwner {

    Token(_token).transfer(_refund, _value);
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"transferableBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_refund","type":"address"},{"name":"_value","type":"uint256"}],"name":"refundTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_minter","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"block","type":"uint256"}],"name":"setEndBlock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numMinters","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"endMinting","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"minters","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"open","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"},{"name":"_transferableBlock","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"who","type":"address"}],"name":"NewMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

Deployed Bytecode

0x606060405236156101175763ffffffff60e060020a60003504166306fdde03811461011c578063083c6323146101a7578063095ea7b3146101cc57806318160ddd1461020257806323b872dd146102275780633092afd514610263578063313ce567146102845780633177029f146102a957806340c10f19146102df5780635531680c1461031557806370a082311461033a57806389519c501461036b5780638da5cb5b1461039557806395d89b41146103c4578063983b2d561461044f578063a6f9dae114610470578063a9059cbb14610491578063c713aa94146104c7578063dd62ed3e146104df578063e6f6266a14610516578063ef70aebf1461053b578063f46eccc414610550578063fcfff16f14610583575b600080fd5b341561012757600080fd5b61012f6105aa565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016c5780820151818401525b602001610153565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101b257600080fd5b6101ba610648565b60405190815260200160405180910390f35b34156101d757600080fd5b6101ee600160a060020a036004351660243561064e565b604051901515815260200160405180910390f35b341561020d57600080fd5b6101ba6106f5565b60405190815260200160405180910390f35b341561023257600080fd5b6101ee600160a060020a03600435811690602435166044356106fb565b604051901515815260200160405180910390f35b341561026e57600080fd5b610282600160a060020a036004351661074e565b005b341561028f57600080fd5b6101ba6107ba565b60405190815260200160405180910390f35b34156102b457600080fd5b6101ee600160a060020a03600435166024356107c0565b604051901515815260200160405180910390f35b34156102ea57600080fd5b6101ee600160a060020a03600435166024356108a1565b604051901515815260200160405180910390f35b341561032057600080fd5b6101ba610956565b60405190815260200160405180910390f35b341561034557600080fd5b6101ba600160a060020a036004351661095c565b60405190815260200160405180910390f35b341561037657600080fd5b610282600160a060020a036004358116906024351660443561097b565b005b34156103a057600080fd5b6103a8610a15565b604051600160a060020a03909116815260200160405180910390f35b34156103cf57600080fd5b61012f610a24565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016c5780820151818401525b602001610153565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045a57600080fd5b610282600160a060020a0360043516610ac2565b005b341561047b57600080fd5b610282600160a060020a0360043516610b85565b005b341561049c57600080fd5b6101ee600160a060020a0360043516602435610bcd565b604051901515815260200160405180910390f35b34156104d257600080fd5b610282600435610c1e565b005b34156104ea57600080fd5b6101ba600160a060020a0360043581169060243516610c43565b60405190815260200160405180910390f35b341561052157600080fd5b6101ba610c70565b60405190815260200160405180910390f35b341561054657600080fd5b610282610c76565b005b341561055b57600080fd5b6101ee600160a060020a0360043516610c9f565b604051901515815260200160405180910390f35b341561058e57600080fd5b6101ee610cb4565b604051901515815260200160405180910390f35b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106405780601f1061061557610100808354040283529160200191610640565b820191906000526020600020905b81548152906001019060200180831161062357829003601f168201915b505050505081565b60075481565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120541580610680575081155b151561068b57600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600b5460009043101561070d57600080fd5b6007544311158061071e5750600754155b151561072957600080fd5b610734848484610cbd565b1561074157506001610745565b5060005b5b5b9392505050565b60035433600160a060020a0390811691161461076957600080fd5b600160a060020a03811660009081526006602052604090205460ff16156107b557600160a060020a0381166000908152600660205260409020805460ff19169055600480546000190190555b5b5b50565b600a5481565b60006107cc838361064e565b156106ef5782600160a060020a03166040517f72656365697665417070726f76616c28616464726573732c75696e743235362c81527f61646472657373290000000000000000000000000000000000000000000000006020820152602801604051809103902060e060020a900433843060405160e060020a63ffffffff8616028152600160a060020a0393841660048201526024810192909252909116604482015260640160006040518083038160008761646e5a03f192505050151561089257600080fd5b5060016106ef565b5b92915050565b600160a060020a03331660009081526006602052604081205460ff1615156108c857600080fd5b6108d460005483610d2d565b6000908155600160a060020a0384168152600160205260409020546108f99083610d2d565b600160a060020a0384166000818152600160205260408082209390935590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b5b92915050565b600b5481565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461099657600080fd5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109f357600080fd5b6102c65a03f11515610a0457600080fd5b505050604051805150505b5b505050565b600354600160a060020a031681565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106405780601f1061061557610100808354040283529160200191610640565b820191906000526020600020905b81548152906001019060200180831161062357829003601f168201915b505050505081565b60035433600160a060020a03908116911614610add57600080fd5b60055460ff161515610aee57600080fd5b600160a060020a03811660009081526006602052604090205460ff1615156107b557600160a060020a03811660009081526006602052604090819020805460ff191660019081179091556004805490910190557f6adffd5c93085d835dac6f3b40adf7c242ca4b3284048d20c3d8a501748dc97390829051600160a060020a03909116815260200160405180910390a15b5b5b5b50565b60035433600160a060020a03908116911614610ba057600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600b54600090431015610bdf57600080fd5b60075443111580610bf05750600754155b1515610bfb57600080fd5b610c058383610d55565b15610c12575060016106ef565b5060005b5b5b92915050565b60035433600160a060020a03908116911614610c3957600080fd5b60078190555b5b50565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60045481565b60035433600160a060020a03908116911614610c9157600080fd5b6005805460ff191690555b5b565b60066020526000908152604090205460ff1681565b60055460ff1681565b600160a060020a03808416600090815260026020908152604080832033909416835292905290812054610cf08184610d6b565b600160a060020a0380871660009081526002602090815260408083203390941683529290522055610d22858585610d85565b91505b509392505050565b6000828201838110801590610d425750828110155b1515610d4a57fe5b8091505b5092915050565b6000610d62338484610d85565b90505b92915050565b600082821115610d7a57600080fd5b508082035b92915050565b600160a060020a038316600090815260016020526040812054610da89083610d6b565b600160a060020a038086166000908152600160205260408082209390935590851681522054610dd79083610d2d565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b93925050505600a165627a7a72305820bb1d31dbe59c951afed7e6a5def379a6dcf96ba5ce934dba364d9aa662b46c110029

Swarm Source

bzzr://bb1d31dbe59c951afed7e6a5def379a6dcf96ba5ce934dba364d9aa662b46c11

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.