Latest 16 txns

TxHash Age From To Value [TxFee]
0x876eb48447b8d0cfe3db98ea1f181d12cdc97eaadc0a868d258fb601f90193d018 hrs 30 mins ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046302
0xb99c77924ffd5d91537ed83df3621d0737ae6c2b239b1a95d3dcbed5d637fcde1 day 13 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046366
0x96d94bf2fd64fc8917c32fd572f28d6646797ef55841d91fb449d23290d762ed1 day 13 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000015386
0x8bc8004641ae4416d978bc303c5b13b074ab3f6c29eb229aaf41f0cb2cd1dc7a1 day 13 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046302
0x7ed697e4f5cbfa806212011a06beccf82828119d2da458d839412305da20543b1 day 13 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000015386
0xd81d1f96df3e335a655e72a490ce25d4b8c107bf30054e88b2549fa9020266267 days 16 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000024004
0xda3e07cb4aaa5c687f81423241302cc146440cfc461d9e95005a8449db9577ab8 days 5 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046622
0xfc1d40518d1e7129207a4407f2a29098111640c8cdf67fdedc4b325d93103cc28 days 5 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000015386
0x273a8553bd94e54694487c3941b48087b9283c567983f75b303ae42f475e925e8 days 19 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000024004
0xf9a97727428ff3b91c9e407c06c9debc42d72ee320b2af7666a8beda21d752f18 days 19 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000024004
0x7e7cdeb4e2f2effdd8cb75d373c910ba2572196a8e40d0dd745936a77d3aa1e48 days 19 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000024068
0x7d1db90fab9b1fcc0d6272aab41c5398e52edd476777eaea771a57f7cd40a06a9 days 15 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046302
0x8c7b94a8c99c0cbf2f38362ca71d412804fa98cbacf998924b5666007f0edcc110 days 13 hrs ago0xe8575e787e28bcb0ee3046605f795bf883e82e84  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.000046366
0xd7b8efe6d5a6e21bb6e41d1bd0229fba45c1e414534bf7bef53e9adef518f02211 days 45 mins ago0x3caac75eaf3860ed355ca260b01b396985a40a70  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.0244764
0x7441d917d5393727c4b8f5dd0cb3ce618ca9b783eb77ec92e20cca3370e9b18b11 days 46 mins ago0x3caac75eaf3860ed355ca260b01b396985a40a70  IN   0xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether0.0231672
0x9e1f8f6fea84dc3d4613a34250057e9e2f6cecb107114c875404c686ffe4ba9711 days 47 mins ago0x3caac75eaf3860ed355ca260b01b396985a40a70  IN    Contract Creation0 Ether0.1956289
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xe25cd817449f513667c0adc4439623c0cb6e2eaac215cfb245d412ef74821e39487295718 hrs 29 mins ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xc77416fb36a458f31b35625ec395437105830f1cf6cc5cac30d9e486c1650042487295218 hrs 30 mins ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x9c3f95014219a6285806dc441978f707e6a32bd200a1883df28b9f3063f66e3f48679221 day 13 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x09078d37986d0648ed498acedba0cbff3869c21832d73cb34c0178bdf96336ca48679001 day 13 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x6ba00d7a61bb43fc749ac254a23c59a2f805bc344f909dc70e112b0eecf33ae348678861 day 13 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x4aaa0d84d2d7a4acc1202678c92db8aaa27ba0eee04bb72d1bdab91b35078cd548677061 day 14 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x2a304355dcd8d0ccb69ba7eb2f540113eaf51532e21d55ca3644e462dfbf566148677051 day 14 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x9f5357d2e4d2a7b0a476d0bfb660346e30124406dbaea31a2e8929ec26b70ec648672131 day 16 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x93847b2981e65e3da3750eb9ebd1adcfe0b04c3132096400d0a4176ec365bd8c48671911 day 16 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x958ed5c76a2cb68487a990f6b04bbccba4612986102177b4233d9c82f4e41b8248671901 day 16 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x17d9b84c1904a507541d23af4dd51c641c2fc07836ba896bbb41387e89e6e93a48665921 day 19 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xe8de527613c9333306b85e3ae41f289c536eb8b268b90f86b228f1e6b37cedba48665911 day 19 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xaadd41c8f46e0e3d66b19ad48e39f6c5caf89ddf5f3040f28bad0e02c26367f648308027 days 16 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x2e67b434ef720054c186fc478afe2fe05f2953fae99b82c5f209f5f696927eed48284688 days 4 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xacccb53b2cd36513ad2dd751cabf5e262036350f32290cf6c6c5e20f58e999ce48284398 days 5 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xd6c7b1a9d00ab2e7bf3e9d3f524941deb2ce1452a07d85f11f6e110295ce8db448284298 days 5 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xf4edb77e27c12d2ca9151ae0a6f5043f93f9913beee861c7a488acc13e8b79d448246648 days 19 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xa6bc578b805b79ae9ce88b784db5ea04eb97f218cf0b976e565340b25b3dd18b48206719 days 15 hrs ago0xc0f0c495e0d919007d7893af5be613be461939d30xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x6ed885191071198960c7c9d70f6aa211ece8d0c076d0c80edff9d844918d7f8d48206189 days 16 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0x91353e8212b8711aed19510894c1f375e903d254ea1b097425adec6676d2e3cd481315510 days 13 hrs ago0xed74b22fc99a4be0d2dfeff2b15c2409d56678f50xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xc8ee7831e092acf5bef09af01c8fbbe3203711710f78ec768c1e1ab0ab0c6433481305410 days 13 hrs ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xcdcd71f6895058d0195d51c67ff5c1bd850908f2eb7e9d79452b8909e56f5675481004311 days 44 mins ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xcdcd71f6895058d0195d51c67ff5c1bd850908f2eb7e9d79452b8909e56f5675481004311 days 44 mins ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xcdcd71f6895058d0195d51c67ff5c1bd850908f2eb7e9d79452b8909e56f5675481004311 days 44 mins ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
0xcdcd71f6895058d0195d51c67ff5c1bd850908f2eb7e9d79452b8909e56f5675481004311 days 44 mins ago0x05a9ffb5657f8dc5a718485324d17b16fd52a6190xde34dacbc68155187cc83f0bdc8d9ff528ad8c100 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact Match)
Contract Name: NahmiiToken
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  0



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.13;

library Roles {
  struct Role {
    mapping (address => bool) bearer;
  }

  /**
   * @dev give an account access to this role
   */
  function add(Role storage role, address account) internal {
    require(account != address(0));
    require(!has(role, account));

    role.bearer[account] = true;
  }

  /**
   * @dev remove an account's access to this role
   */
  function remove(Role storage role, address account) internal {
    require(account != address(0));
    require(has(role, account));

    role.bearer[account] = false;
  }

  /**
   * @dev check if an account has this role
   * @return bool
   */
  function has(Role storage role, address account)
    internal
    view
    returns (bool)
  {
    require(account != address(0));
    return role.bearer[account];
  }
}

contract MinterRole {
  using Roles for Roles.Role;

  event MinterAdded(address indexed account);
  event MinterRemoved(address indexed account);

  Roles.Role private minters;

  constructor() internal {
    _addMinter(msg.sender);
  }

  modifier onlyMinter() {
    require(isMinter(msg.sender));
    _;
  }

  function isMinter(address account) public view returns (bool) {
    return minters.has(account);
  }

  function addMinter(address account) public onlyMinter {
    _addMinter(account);
  }

  function renounceMinter() public {
    _removeMinter(msg.sender);
  }

  function _addMinter(address account) internal {
    minters.add(account);
    emit MinterAdded(account);
  }

  function _removeMinter(address account) internal {
    minters.remove(account);
    emit MinterRemoved(account);
  }
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract ERC20 is IERC20 {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

  mapping (address => mapping (address => uint256)) private _allowed;

  uint256 private _totalSupply;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return _totalSupply;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param owner The address to query the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address owner) public view returns (uint256) {
    return _balances[owner];
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param owner address The address which owns the funds.
   * @param spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address owner,
    address spender
   )
    public
    view
    returns (uint256)
  {
    return _allowed[owner][spender];
  }

  /**
  * @dev Transfer token for a specified address
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function transfer(address to, uint256 value) public returns (bool) {
    _transfer(msg.sender, to, value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param spender The address which will spend the funds.
   * @param value The amount of tokens to be spent.
   */
  function approve(address spender, uint256 value) public returns (bool) {
    require(spender != address(0));

    _allowed[msg.sender][spender] = value;
    emit Approval(msg.sender, spender, value);
    return true;
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param from address The address which you want to send tokens from
   * @param to address The address which you want to transfer to
   * @param value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address from,
    address to,
    uint256 value
  )
    public
    returns (bool)
  {
    require(value <= _allowed[from][msg.sender]);

    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
    _transfer(from, to, value);
    return true;
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed_[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param spender The address which will spend the funds.
   * @param addedValue The amount of tokens to increase the allowance by.
   */
  function increaseAllowance(
    address spender,
    uint256 addedValue
  )
    public
    returns (bool)
  {
    require(spender != address(0));

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].add(addedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed_[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param spender The address which will spend the funds.
   * @param subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseAllowance(
    address spender,
    uint256 subtractedValue
  )
    public
    returns (bool)
  {
    require(spender != address(0));

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].sub(subtractedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
  * @dev Transfer token for a specified addresses
  * @param from The address to transfer from.
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function _transfer(address from, address to, uint256 value) internal {
    require(value <= _balances[from]);
    require(to != address(0));

    _balances[from] = _balances[from].sub(value);
    _balances[to] = _balances[to].add(value);
    emit Transfer(from, to, value);
  }

  /**
   * @dev Internal function that mints an amount of the token and assigns it to
   * an account. This encapsulates the modification of balances such that the
   * proper events are emitted.
   * @param account The account that will receive the created tokens.
   * @param value The amount that will be created.
   */
  function _mint(address account, uint256 value) internal {
    require(account != 0);
    _totalSupply = _totalSupply.add(value);
    _balances[account] = _balances[account].add(value);
    emit Transfer(address(0), account, value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burn(address account, uint256 value) internal {
    require(account != 0);
    require(value <= _balances[account]);

    _totalSupply = _totalSupply.sub(value);
    _balances[account] = _balances[account].sub(value);
    emit Transfer(account, address(0), value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account, deducting from the sender's allowance for said account. Uses the
   * internal burn function.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burnFrom(address account, uint256 value) internal {
    require(value <= _allowed[account][msg.sender]);

    // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
    // this function needs to emit an event with the updated approval.
    _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(
      value);
    _burn(account, value);
  }
}

contract ERC20Mintable is ERC20, MinterRole {
  /**
   * @dev Function to mint tokens
   * @param to The address that will receive the minted tokens.
   * @param value The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(
    address to,
    uint256 value
  )
    public
    onlyMinter
    returns (bool)
  {
    _mint(to, value);
    return true;
  }
}

contract RevenueToken is ERC20Mintable {
    using SafeMath for uint256;

    bool public mintingDisabled;

    address[] public holders;

    mapping(address => bool) public holdersMap;

    mapping(address => uint256[]) public balances;

    mapping(address => uint256[]) public balanceBlocks;

    mapping(address => uint256[]) public balanceBlockNumbers;

    event DisableMinting();

    /**
     * @notice Disable further minting
     * @dev This operation can not be undone
     */
    function disableMinting()
    public
    onlyMinter
    {
        mintingDisabled = true;

        emit DisableMinting();
    }

    /**
     * @notice Mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value)
    public
    onlyMinter
    returns (bool)
    {
        require(!mintingDisabled);

        // Call super's mint, including event emission
        bool minted = super.mint(to, value);

        if (minted) {
            // Adjust balance blocks
            addBalanceBlocks(to);

            // Add to the token holders list
            if (!holdersMap[to]) {
                holdersMap[to] = true;
                holders.push(to);
            }
        }

        return minted;
    }

    /**
     * @notice Transfer token for a specified address
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     * @return A boolean that indicates if the operation was successful.
     */
    function transfer(address to, uint256 value)
    public
    returns (bool)
    {
        // Call super's transfer, including event emission
        bool transferred = super.transfer(to, value);

        if (transferred) {
            // Adjust balance blocks
            addBalanceBlocks(msg.sender);
            addBalanceBlocks(to);

            // Add to the token holders list
            if (!holdersMap[to]) {
                holdersMap[to] = true;
                holders.push(to);
            }
        }

        return transferred;
    }

    /**
     * @notice Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @dev Beware that to change the approve amount you first have to reduce the addresses'
     * allowance to zero by calling `approve(spender, 0)` if it is not already 0 to mitigate the race
     * condition described here:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value)
    public
    returns (bool)
    {
        // Prevent the update of non-zero allowance
        require(0 == value || 0 == allowance(msg.sender, spender));

        // Call super's approve, including event emission
        return super.approve(spender, value);
    }

    /**
     * @dev Transfer tokens from one address to another
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     * @return A boolean that indicates if the operation was successful.
     */
    function transferFrom(address from, address to, uint256 value)
    public
    returns (bool)
    {
        // Call super's transferFrom, including event emission
        bool transferred = super.transferFrom(from, to, value);

        if (transferred) {
            // Adjust balance blocks
            addBalanceBlocks(from);
            addBalanceBlocks(to);

            // Add to the token holders list
            if (!holdersMap[to]) {
                holdersMap[to] = true;
                holders.push(to);
            }
        }

        return transferred;
    }

    /**
     * @notice Calculate the amount of balance blocks, i.e. the area under the curve (AUC) of
     * balance as function of block number
     * @dev The AUC is used as weight for the share of revenue that a token holder may claim
     * @param account The account address for which calculation is done
     * @param startBlock The start block number considered
     * @param endBlock The end block number considered
     * @return The calculated AUC
     */
    function balanceBlocksIn(address account, uint256 startBlock, uint256 endBlock)
    public
    view
    returns (uint256)
    {
        require(startBlock < endBlock);
        require(account != address(0));

        if (balanceBlockNumbers[account].length == 0 || endBlock < balanceBlockNumbers[account][0])
            return 0;

        uint256 i = 0;
        while (i < balanceBlockNumbers[account].length && balanceBlockNumbers[account][i] < startBlock)
            i++;

        uint256 r;
        if (i >= balanceBlockNumbers[account].length)
            r = balances[account][balanceBlockNumbers[account].length - 1].mul(endBlock.sub(startBlock));

        else {
            uint256 l = (i == 0) ? startBlock : balanceBlockNumbers[account][i - 1];

            uint256 h = balanceBlockNumbers[account][i];
            if (h > endBlock)
                h = endBlock;

            h = h.sub(startBlock);
            r = (h == 0) ? 0 : balanceBlocks[account][i].mul(h).div(balanceBlockNumbers[account][i].sub(l));
            i++;

            while (i < balanceBlockNumbers[account].length && balanceBlockNumbers[account][i] < endBlock) {
                r = r.add(balanceBlocks[account][i]);
                i++;
            }

            if (i >= balanceBlockNumbers[account].length)
                r = r.add(
                    balances[account][balanceBlockNumbers[account].length - 1].mul(
                        endBlock.sub(balanceBlockNumbers[account][balanceBlockNumbers[account].length - 1])
                    )
                );

            else if (balanceBlockNumbers[account][i - 1] < endBlock)
                r = r.add(
                    balanceBlocks[account][i].mul(
                        endBlock.sub(balanceBlockNumbers[account][i - 1])
                    ).div(
                        balanceBlockNumbers[account][i].sub(balanceBlockNumbers[account][i - 1])
                    )
                );
        }

        return r;
    }

    /**
     * @notice Get the count of balance updates for the given account
     * @return The count of balance updates
     */
    function balanceUpdatesCount(address account)
    public
    view
    returns (uint256)
    {
        return balanceBlocks[account].length;
    }

    /**
     * @notice Get the count of holders
     * @return The count of holders
     */
    function holdersCount()
    public
    view
    returns (uint256)
    {
        return holders.length;
    }

    /**
     * @notice Get the subset of holders (optionally with positive balance only) in the given 0 based index range
     * @param low The lower inclusive index
     * @param up The upper inclusive index
     * @param posOnly List only positive balance holders
     * @return The subset of positive balance registered holders in the given range
     */
    function holdersByIndices(uint256 low, uint256 up, bool posOnly)
    public
    view
    returns (address[])
    {
        require(low <= up);

        up = up > holders.length - 1 ? holders.length - 1 : up;

        uint256 length = 0;
        if (posOnly) {
            for (uint256 i = low; i <= up; i++)
                if (0 < balanceOf(holders[i]))
                    length++;
        } else
            length = up - low + 1;

        address[] memory _holders = new address[](length);

        uint256 j = 0;
        for (i = low; i <= up; i++)
            if (!posOnly || 0 < balanceOf(holders[i]))
                _holders[j++] = holders[i];

        return _holders;
    }

    function addBalanceBlocks(address account)
    private
    {
        uint256 length = balanceBlockNumbers[account].length;
        balances[account].push(balanceOf(account));
        if (0 < length)
            balanceBlocks[account].push(
                balances[account][length - 1].mul(
                    block.number.sub(balanceBlockNumbers[account][length - 1])
                )
            );
        else
            balanceBlocks[account].push(0);
        balanceBlockNumbers[account].push(block.number);
    }
}

contract NahmiiToken is RevenueToken {

    string public name = "Nahmii";

    string public symbol = "NII";

    uint8 public constant decimals = 15;

    event SetName(string name);

    event SetSymbol(string symbol);

    /**
     * @dev Set the name of the token
     * @param _name The new token name
     */
    function setName(string _name)
    public
    onlyMinter
    {
        name = _name;
        emit SetName(name);
    }

    /**
     * @dev Set the symbol of the token
     * @param _symbol The new token symbol
     */
    function setSymbol(string _symbol)
    public
    onlyMinter
    {
        symbol = _symbol;
        emit SetSymbol(_symbol);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"holdersMap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"balanceBlockNumbers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingDisabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"holders","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"holdersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"balanceBlocks","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"startBlock","type":"uint256"},{"name":"endBlock","type":"uint256"}],"name":"balanceBlocksIn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceUpdatesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"low","type":"uint256"},{"name":"up","type":"uint256"},{"name":"posOnly","type":"bool"}],"name":"holdersByIndices","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"symbol","type":"string"}],"name":"SetSymbol","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableMinting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","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"}]

  Contract Creation Code Switch To Opcodes View
60c0604052600660808190527f4e61686d6969000000000000000000000000000000000000000000000000000060a09081526200004091600a919062000187565b506040805180820190915260038082527f4e4949000000000000000000000000000000000000000000000000000000000060209092019182526200008791600b9162000187565b506200009c33640100000000620000a2810204565b6200022c565b620000bd600382640100000000620018cc620000f482021704565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b600160a060020a03811615156200010a57600080fd5b6200011f82826401000000006200014f810204565b156200012a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200016757600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ca57805160ff1916838001178555620001fa565b82800160010185558215620001fa579182015b82811115620001fa578251825591602001919060010190620001dd565b50620002089291506200020c565b5090565b6200022991905b8082111562000208576000815560010162000213565b90565b611a8a806200023c6000396000f3006080604052600436106101505763ffffffff60e060020a60003504166306fdde038114610155578063095ea7b3146101df5780630e5cb57c14610217578063133a49001461023857806318160ddd1461026e57806321afb5ee1461028357806323b872dd146102985780632a11ced0146102c2578063313ce567146102f6578063395093511461032157806340c10f19146103455780636b4ed21b1461036957806370a082311461037e57806378c27d7e1461039f5780637e5cd5c1146103c357806395d89b41146103da578063983b2d56146103ef5780639865027514610410578063a457c2d714610425578063a52079ea14610449578063a9059cbb14610470578063aa271e1a14610494578063b46801c2146104b5578063b84c8246146104d6578063c47f00271461052f578063cb99045714610588578063cbf1304d146105f8578063dd62ed3e1461061c575b600080fd5b34801561016157600080fd5b5061016a610643565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a457818101518382015260200161018c565b50505050905090810190601f1680156101d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101eb57600080fd5b50610203600160a060020a03600435166024356106d1565b604080519115158252519081900360200190f35b34801561022357600080fd5b50610203600160a060020a0360043516610703565b34801561024457600080fd5b5061025c600160a060020a0360043516602435610718565b60408051918252519081900360200190f35b34801561027a57600080fd5b5061025c610748565b34801561028f57600080fd5b5061020361074f565b3480156102a457600080fd5b50610203600160a060020a0360043581169060243516604435610758565b3480156102ce57600080fd5b506102da6004356107fe565b60408051600160a060020a039092168252519081900360200190f35b34801561030257600080fd5b5061030b610826565b6040805160ff9092168252519081900360200190f35b34801561032d57600080fd5b50610203600160a060020a036004351660243561082b565b34801561035157600080fd5b50610203600160a060020a03600435166024356108c9565b34801561037557600080fd5b5061025c61098c565b34801561038a57600080fd5b5061025c600160a060020a0360043516610992565b3480156103ab57600080fd5b5061025c600160a060020a03600435166024356109ad565b3480156103cf57600080fd5b506103d86109c8565b005b3480156103e657600080fd5b5061016a610a14565b3480156103fb57600080fd5b506103d8600160a060020a0360043516610a6f565b34801561041c57600080fd5b506103d8610a8f565b34801561043157600080fd5b50610203600160a060020a0360043516602435610a9a565b34801561045557600080fd5b5061025c600160a060020a0360043516602435604435610ae5565b34801561047c57600080fd5b50610203600160a060020a0360043516602435611002565b3480156104a057600080fd5b50610203600160a060020a0360043516611029565b3480156104c157600080fd5b5061025c600160a060020a0360043516611042565b3480156104e257600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103d894369492936024939284019190819084018382808284375094975061105d9650505050505050565b34801561053b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103d89436949293602493928401919081908401838280828437509497506111219650505050505050565b34801561059457600080fd5b506105a860043560243560443515156111f9565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105e45781810151838201526020016105cc565b505050509050019250505060405180910390f35b34801561060457600080fd5b5061025c600160a060020a0360043516602435611357565b34801561062857600080fd5b5061025c600160a060020a0360043581169060243516611372565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106c95780601f1061069e576101008083540402835291602001916106c9565b820191906000526020600020905b8154815290600101906020018083116106ac57829003601f168201915b505050505081565b60008115806106e757506106e53384611372565b155b15156106f257600080fd5b6106fc838361139d565b9392505050565b60066020526000908152604090205460ff1681565b60096020528160005260406000208181548110151561073357fe5b90600052602060002001600091509150505481565b6002545b90565b60045460ff1681565b600080610766858585611409565b905080156107f657610777856114a6565b610780846114a6565b600160a060020a03841660009081526006602052604090205460ff1615156107f657600160a060020a0384166000818152600660205260408120805460ff191660019081179091556005805491820181559091526000805160206119ff833981519152018054600160a060020a03191690911790555b949350505050565b600580548290811061080c57fe5b600091825260209091200154600160a060020a0316905081565b600f81565b6000600160a060020a038316151561084257600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610876908363ffffffff6115dd16565b336000818152600160209081526040808320600160a060020a038916808552908352928190208590558051948552519193600080516020611a3f833981519152929081900390910190a350600192915050565b6000806108d533611029565b15156108e057600080fd5b60045460ff16156108f057600080fd5b6108fa84846115ef565b905080156109815761090b846114a6565b600160a060020a03841660009081526006602052604090205460ff16151561098157600160a060020a0384166000818152600660205260408120805460ff191660019081179091556005805491820181559091526000805160206119ff833981519152018054600160a060020a03191690911790555b8091505b5092915050565b60055490565b600160a060020a031660009081526020819052604090205490565b60086020528160005260406000208181548110151561073357fe5b6109d133611029565b15156109dc57600080fd5b6004805460ff191660011790556040517f2d86df2e5d84b22790939c34e14094e95a52090fbf291a1fa69b9b4e837c635390600090a1565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106c95780601f1061069e576101008083540402835291602001916106c9565b610a7833611029565b1515610a8357600080fd5b610a8c81611618565b50565b610a9833611660565b565b6000600160a060020a0383161515610ab157600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610876908363ffffffff6116a816565b600080808080858710610af757600080fd5b600160a060020a0388161515610b0c57600080fd5b600160a060020a0388166000908152600960205260409020541580610b5f5750600160a060020a038816600090815260096020526040812080549091908110610b5157fe5b906000526020600020015486105b15610b6d5760009450610ff7565b600093505b600160a060020a03881660009081526009602052604090205484108015610bc85750600160a060020a0388166000908152600960205260409020805488919086908110610bbb57fe5b9060005260206000200154105b15610bd857600190930192610b72565b600160a060020a0388166000908152600960205260409020548410610c5f57610c58610c0a878963ffffffff6116a816565b600160a060020a038a1660009081526007602090815260408083206009909252909120548154600019909101908110610c3f57fe5b90600052602060002001546116bf90919063ffffffff16565b9250610ff3565b8315610c9d57600160a060020a038816600090815260096020526040902080546000198601908110610c8d57fe5b9060005260206000200154610c9f565b865b600160a060020a038916600090815260096020526040902080549193509085908110610cc757fe5b9060005260206000200154905085811115610cdf5750845b610cef818863ffffffff6116a816565b90508015610d7a57600160a060020a03881660009081526009602052604090208054610d7591610d3f9185919088908110610d2657fe5b90600052602060002001546116a890919063ffffffff16565b600160a060020a038a1660009081526008602052604090208054610d6991859189908110610c3f57fe5b9063ffffffff6116ed16565b610d7d565b60005b60019094019392505b600160a060020a03881660009081526009602052604090205484108015610ddc5750600160a060020a0388166000908152600960205260409020805487919086908110610dcf57fe5b9060005260206000200154105b15610e3157600160a060020a03881660009081526008602052604090208054610e24919086908110610e0a57fe5b9060005260206000200154846115dd90919063ffffffff16565b6001909401939250610d86565b600160a060020a0388166000908152600960205260409020548410610ee157600160a060020a03881660009081526009602052604090208054610c5891610ed491610e9f91906000198101908110610e8557fe5b9060005260206000200154896116a890919063ffffffff16565b600160a060020a038b1660009081526007602090815260408083206009909252909120548154600019909101908110610c3f57fe5b849063ffffffff6115dd16565b600160a060020a038816600090815260096020526040902080548791906000198701908110610f0c57fe5b90600052602060002001541015610ff357600160a060020a03881660009081526009602052604090208054610ff091610ed491610f8291906000198901908110610f5257fe5b6000918252602080832090910154600160a060020a038e16835260099091526040909120805489908110610d2657fe5b600160a060020a038b1660009081526009602052604090208054610d6991610fcc916000198b01908110610fb257fe5b90600052602060002001548b6116a890919063ffffffff16565b600160a060020a038d16600090815260086020526040902080548a908110610c3f57fe5b92505b8294505b505050509392505050565b60008061100f8484611710565b9050801561098157611020336114a6565b61090b846114a6565b600061103c60038363ffffffff61171d16565b92915050565b600160a060020a031660009081526008602052604090205490565b61106633611029565b151561107157600080fd5b805161108490600b906020840190611966565b507fadf3ae8bd543b3007d464f15cb8ea1db3f44e84d41d203164f40b95e27558ac6816040518080602001828103825283818151815260200191508051906020019080838360005b838110156110e45781810151838201526020016110cc565b50505050905090810190601f1680156111115780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b61112a33611029565b151561113557600080fd5b805161114890600a906020840190611966565b50604080516020808252600a8054600260001961010060018416150201909116049183018290527f4df9dcd34ae35f40f2c756fd8ac83210ed0b76d065543ee73d868aec7c7fcf02939092918291820190849080156111e85780601f106111bd576101008083540402835291602001916111e8565b820191906000526020600020905b8154815290600101906020018083116111cb57829003601f168201915b50509250505060405180910390a150565b606060008082818688111561120d57600080fd5b6005546000190187116112205786611228565b600554600019015b965060009350851561128a578792505b8683116112855761126b60058481548110151561125157fe5b600091825260209091200154600160a060020a0316610992565b6000101561127a576001909301925b600190920191611238565b611293565b87870360010193505b836040519080825280602002602001820160405280156112bd578160200160208202803883390190505b509150600090508792505b86831161134c578515806112ed57506112e960058481548110151561125157fe5b6000105b1561134157600580548490811061130057fe5b60009182526020909120015482516001830192600160a060020a03909216918491811061132957fe5b600160a060020a039092166020928302909101909101525b6001909201916112c8565b509695505050505050565b60076020528160005260406000208181548110151561073357fe5b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156113b457600080fd5b336000818152600160209081526040808320600160a060020a0388168085529083529281902086905580518681529051929392600080516020611a3f833981519152929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561143957600080fd5b600160a060020a038416600090815260016020908152604080832033845290915290205461146d908363ffffffff6116a816565b600160a060020a038516600090815260016020908152604080832033845290915290205561149c848484611754565b5060019392505050565b600160a060020a03811660009081526009602090815260408083205460079092529091206114d383610992565b8154600181018355600092835260208320015581111561158557600160a060020a03821660009081526008602090815260408083206009909252909120805461156a9161154291600019860190811061152857fe5b9060005260206000200154436116a890919063ffffffff16565b600160a060020a038516600090815260076020526040902080546000198601908110610c3f57fe5b815460018101835560009283526020909220909101556115b0565b600160a060020a03821660009081526008602090815260408220805460018101825590835290822001555b50600160a060020a0316600090815260096020908152604082208054600181018255908352912043910155565b60008282018381101561098157600080fd5b60006115fa33611029565b151561160557600080fd5b61160f8383611834565b50600192915050565b61162960038263ffffffff6118cc16565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61167160038263ffffffff61191a16565b604051600160a060020a038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600080838311156116b857600080fd5b5050900390565b6000808315156116d25760009150610985565b508282028284828115156116e257fe5b041461098157600080fd5b6000808083116116fc57600080fd5b828481151561170757fe5b04949350505050565b600061160f338484611754565b6000600160a060020a038216151561173457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b600160a060020a03831660009081526020819052604090205481111561177957600080fd5b600160a060020a038216151561178e57600080fd5b600160a060020a0383166000908152602081905260409020546117b7908263ffffffff6116a816565b600160a060020a0380851660009081526020819052604080822093909355908416815220546117ec908263ffffffff6115dd16565b600160a060020a03808416600081815260208181526040918290209490945580518581529051919392871692600080516020611a1f83398151915292918290030190a3505050565b600160a060020a038216151561184957600080fd5b60025461185c908263ffffffff6115dd16565b600255600160a060020a038216600090815260208190526040902054611888908263ffffffff6115dd16565b600160a060020a038316600081815260208181526040808320949094558351858152935192939192600080516020611a1f8339815191529281900390910190a35050565b600160a060020a03811615156118e157600080fd5b6118eb828261171d565b156118f557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561192f57600080fd5b611939828261171d565b151561194457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106119a757805160ff19168380011785556119d4565b828001600101855582156119d4579182015b828111156119d45782518255916020019190600101906119b9565b506119e09291506119e4565b5090565b61074c91905b808211156119e057600081556001016119ea5600036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a165627a7a72305820d9dece16f7671ee86de5dcf8b6601d0c181a569ac594d228eaa803f8582ac3230029

   Swarm Source:
bzzr://d9dece16f7671ee86de5dcf8b6601d0c181a569ac594d228eaa803f8582ac323

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward