ETH Price: $2,034.37 (-2.35%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Manager62348572018-08-29 13:22:322738 days ago1535548952IN
0xC7c79F7d...532eabe99
0 ETH0.000087383
Transfer Ownersh...62348502018-08-29 13:21:012738 days ago1535548861IN
0xC7c79F7d...532eabe99
0 ETH0.000093363

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-08-29
*/

pragma solidity ^0.4.23;


contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
        public view returns (uint256);

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

    function approve(address spender, uint256 value) public returns (bool);
    event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
    );
}


library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}


contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
  
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

}



contract DefaultToken is BasicToken {

  string public name;
  string public symbol;
  uint8 public decimals;

  constructor(string _name, string _symbol, uint8 _decimals) public {
    name = _name;
    symbol = _symbol;
    decimals = _decimals;
  }
}



// Wings Controller Interface
contract IWingsController {
  uint256 public ethRewardPart;
  uint256 public tokenRewardPart;

  function fitCollectedValueIntoRange(uint256 _totalCollected) public view returns (uint256);
}


contract HasManager {
  address public manager;

  modifier onlyManager {
    require(msg.sender == manager);
    _;
  }

  function transferManager(address _newManager) public onlyManager() {
    require(_newManager != address(0));
    manager = _newManager;
  }
}

contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}


// Crowdsale contracts interface
contract ICrowdsaleProcessor is Ownable, HasManager {
  modifier whenCrowdsaleAlive() {
    require(isActive());
    _;
  }

  modifier whenCrowdsaleFailed() {
    require(isFailed());
    _;
  }

  modifier whenCrowdsaleSuccessful() {
    require(isSuccessful());
    _;
  }

  modifier hasntStopped() {
    require(!stopped);
    _;
  }

  modifier hasBeenStopped() {
    require(stopped);
    _;
  }

  modifier hasntStarted() {
    require(!started);
    _;
  }

  modifier hasBeenStarted() {
    require(started);
    _;
  }

  // Minimal acceptable hard cap
  uint256 constant public MIN_HARD_CAP = 1 ether;

  // Minimal acceptable duration of crowdsale
  uint256 constant public MIN_CROWDSALE_TIME = 3 days;

  // Maximal acceptable duration of crowdsale
  uint256 constant public MAX_CROWDSALE_TIME = 50 days;

  // Becomes true when timeframe is assigned
  bool public started;

  // Becomes true if cancelled by owner
  bool public stopped;

  // Total collected forecast question currency
  uint256 public totalCollected;

  // Total collected Ether
  uint256 public totalCollectedETH;

  // Total amount of project's token sold: must be updated every time tokens has been sold
  uint256 public totalSold;

  // Crowdsale minimal goal, must be greater or equal to Forecasting min amount
  uint256 public minimalGoal;

  // Crowdsale hard cap, must be less or equal to Forecasting max amount
  uint256 public hardCap;

  // Crowdsale duration in seconds.
  // Accepted range is MIN_CROWDSALE_TIME..MAX_CROWDSALE_TIME.
  uint256 public duration;

  // Start timestamp of crowdsale, absolute UTC time
  uint256 public startTimestamp;

  // End timestamp of crowdsale, absolute UTC time
  uint256 public endTimestamp;

  // Allows to transfer some ETH into the contract without selling tokens
  function deposit() public payable {}

  // Returns address of crowdsale token, must be ERC20 compilant
  function getToken() public returns(address);

  // Transfers ETH rewards amount (if ETH rewards is configured) to Forecasting contract
  function mintETHRewards(address _contract, uint256 _amount) public onlyManager();

  // Mints token Rewards to Forecasting contract
  function mintTokenRewards(address _contract, uint256 _amount) public onlyManager();

  // Releases tokens (transfers crowdsale token from mintable to transferrable state)
  function releaseTokens() public onlyManager() hasntStopped() whenCrowdsaleSuccessful();

  // Stops crowdsale. Called by CrowdsaleController, the latter is called by owner.
  // Crowdsale may be stopped any time before it finishes.
  function stop() public onlyManager() hasntStopped();

  // Validates parameters and starts crowdsale
  function start(uint256 _startTimestamp, uint256 _endTimestamp, address _fundingAddress)
    public onlyManager() hasntStarted() hasntStopped();

  // Is crowdsale failed (completed, but minimal goal wasn't reached)
  function isFailed() public constant returns (bool);

  // Is crowdsale active (i.e. the token can be sold)
  function isActive() public constant returns (bool);

  // Is crowdsale completed successfully
  function isSuccessful() public constant returns (bool);
}


// Basic crowdsale implementation both for regualt and 3rdparty Crowdsale contracts
contract BasicCrowdsale is ICrowdsaleProcessor {
  event CROWDSALE_START(uint256 startTimestamp, uint256 endTimestamp, address fundingAddress);

  // Where to transfer collected ETH
  address public fundingAddress;

  // Ctor.
  function BasicCrowdsale(
    address _owner,
    address _manager
  )
    public
  {
    owner = _owner;
    manager = _manager;
  }

  // called by CrowdsaleController to transfer reward part of ETH
  // collected by successful crowdsale to Forecasting contract.
  // This call is made upon closing successful crowdfunding process
  // iff agreed ETH reward part is not zero
  function mintETHRewards(
    address _contract,  // Forecasting contract
    uint256 _amount     // agreed part of totalCollected which is intended for rewards
  )
    public
    onlyManager() // manager is CrowdsaleController instance
  {
    require(_contract.call.value(_amount)());
  }

  // cancels crowdsale
  function stop() public onlyManager() hasntStopped()  {
    // we can stop only not started and not completed crowdsale
    if (started) {
      require(!isFailed());
      require(!isSuccessful());
    }
    stopped = true;
  }

  // called by CrowdsaleController to setup start and end time of crowdfunding process
  // as well as funding address (where to transfer ETH upon successful crowdsale)
  function start(
    uint256 _startTimestamp,
    uint256 _endTimestamp,
    address _fundingAddress
  )
    public
    onlyManager()   // manager is CrowdsaleController instance
    hasntStarted()  // not yet started
    hasntStopped()  // crowdsale wasn't cancelled
  {
    require(_fundingAddress != address(0));

    // start time must not be earlier than current time
    require(_startTimestamp >= block.timestamp);

    // range must be sane
    require(_endTimestamp > _startTimestamp);
    duration = _endTimestamp - _startTimestamp;

    // duration must fit constraints
    require(duration >= MIN_CROWDSALE_TIME && duration <= MAX_CROWDSALE_TIME);

    startTimestamp = _startTimestamp;
    endTimestamp = _endTimestamp;
    fundingAddress = _fundingAddress;

    // now crowdsale is considered started, even if the current time is before startTimestamp
    started = true;

    CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
  }

  // must return true if crowdsale is over, but it failed
  function isFailed()
    public
    constant
    returns(bool)
  {
    return (
      // it was started
      started &&

      // crowdsale period has finished
      block.timestamp >= endTimestamp &&

      // but collected ETH is below the required minimum
      totalCollected < minimalGoal
    );
  }

  // must return true if crowdsale is active (i.e. the token can be bought)
  function isActive()
    public
    constant
    returns(bool)
  {
    return (
      // it was started
      started &&

      // hard cap wasn't reached yet
      totalCollected < hardCap &&

      // and current time is within the crowdfunding period
      block.timestamp >= startTimestamp &&
      block.timestamp < endTimestamp
    );
  }

  // must return true if crowdsale completed successfully
  function isSuccessful()
    public
    constant
    returns(bool)
  {
    return (
      // either the hard cap is collected
      totalCollected >= hardCap ||

      // ...or the crowdfunding period is over, but the minimum has been reached
      (block.timestamp >= endTimestamp && totalCollected >= minimalGoal)
    );
  }
}


/*
  Standalone Bridge
*/
contract Bridge is BasicCrowdsale {

  using SafeMath for uint256;

  event CUSTOM_CROWDSALE_TOKEN_ADDED(address token, uint8 decimals);
  event CUSTOM_CROWDSALE_FINISH();

  // Crowdsale token must be ERC20-compliant
  DefaultToken token;

  // Crowdsale state
  bool completed;

  // Constructor
  constructor(
    //uint256 _minimalGoal,
    //uint256 _hardCap,
    //address _token
  ) public
    BasicCrowdsale(msg.sender, msg.sender) // owner, manager
  {
    minimalGoal = 1;
    hardCap = 1;
    token = DefaultToken(0x9998Db897783603c9344ED2678AB1B5D73d0f7C3);
  }

  /*
     Here goes ICrowdsaleProcessor methods implementation
  */

  // Returns address of crowdsale token
  function getToken()
    public
    returns (address)
  {
    return address(token);
  }

  // Mints token Rewards to Forecasting contract
  // called by CrowdsaleController
  function mintTokenRewards(
    address _contract,
    uint256 _amount    // agreed part of totalSold which is intended for rewards
  )
    public
    onlyManager()
  {
    // in our example we are transferring tokens instead of minting them
    token.transfer(_contract, _amount);
  }

  function releaseTokens() public onlyManager() hasntStopped() whenCrowdsaleSuccessful() {
  }

  /*
     Crowdsale methods implementation
  */

  // Fallback payable function
  function() public payable {
  }

  // Update information about collected ETH and sold tokens amount
  function notifySale(uint256 _amount, uint256 _ethAmount, uint256 _tokensAmount)
    public
    hasBeenStarted()
    hasntStopped()
    whenCrowdsaleAlive()
    onlyOwner()
  {
    totalCollected = totalCollected.add(_amount);
    totalCollectedETH = totalCollectedETH.add(_ethAmount);
    totalSold = totalSold.add(_tokensAmount);
  }

  // Validates parameters and starts crowdsale
  // called by CrowdsaleController
  function start(
    uint256 _startTimestamp,
    uint256 _endTimestamp,
    address _fundingAddress
  )
    public
    hasntStarted()
    hasntStopped()
    onlyManager()
  {
    started = true;

    emit CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
  }

  // Finish crowdsale
  function finish()
    public
    hasntStopped()
    hasBeenStarted()
    whenCrowdsaleAlive()
    onlyOwner()
  {
    completed = true;

    emit CUSTOM_CROWDSALE_FINISH();
  }

  function isFailed()
    public
    view
    returns (bool)
  {
    return (false);
  }

  function isActive()
    public
    view
    returns (bool)
  {
    return (started && !completed);
  }

  function isSuccessful()
    public
    view
    returns (bool)
  {
    return (completed);
  }

  // Find out the amount of rewards in ETH and tokens
  function calculateRewards() public view returns (uint256, uint256) {
    uint256 tokenRewardPart = IWingsController(manager).tokenRewardPart();
    uint256 ethRewardPart = IWingsController(manager).ethRewardPart();
    uint256 ethReward;
    bool hasEthReward = (ethRewardPart != 0);

    uint256 tokenReward = totalSold.mul(tokenRewardPart) / 1000000;

    if (totalCollectedETH != 0) {
      totalCollected = totalCollectedETH;
    }

    totalCollected = IWingsController(manager).fitCollectedValueIntoRange(totalCollected);

    if (hasEthReward) {
      ethReward = totalCollected.mul(ethRewardPart) / 1000000;
    }

    return (ethReward, tokenReward);
  }

  // Change token address (in case you've used the dafault token address during bridge deployment)
  function changeToken(address _newToken) public onlyOwner() {
    token = DefaultToken(_newToken);

    emit CUSTOM_CROWDSALE_TOKEN_ADDED(address(token), uint8(token.decimals()));
  }

  // Gives owner ability to withdraw eth and wings from Bridge contract balance in case if some error during reward calculation occured
  function withdraw() public onlyOwner() {
    uint256 ethBalance = address(this).balance;
    uint256 tokenBalance = token.balanceOf(address(this));

    if (ethBalance > 0) {
      require(msg.sender.send(ethBalance));
    }

    if (tokenBalance > 0) {
      require(token.transfer(msg.sender, tokenBalance));
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintETHRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"calculateRewards","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCollectedETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimalGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newToken","type":"address"}],"name":"changeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_ethAmount","type":"uint256"},{"name":"_tokensAmount","type":"uint256"}],"name":"notifySale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startTimestamp","type":"uint256"},{"name":"_endTimestamp","type":"uint256"},{"name":"_fundingAddress","type":"address"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintTokenRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"fundingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"decimals","type":"uint8"}],"name":"CUSTOM_CROWDSALE_TOKEN_ADDED","type":"event"},{"anonymous":false,"inputs":[],"name":"CUSTOM_CROWDSALE_FINISH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"},{"indexed":false,"name":"fundingAddress","type":"address"}],"name":"CROWDSALE_START","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b5060008054600160a060020a03199081163390811782168117835560018054831690911781556005819055600655600b8054909116739998db897783603c9344ed2678ab1b5d73d0f7c317905561107c90819061006d90396000f3006080604052600436106101ab5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307da68f581146101ad5780630fb5a6b4146101c25780631510ca79146101e957806318c9ef97146101fe5780631f2698ab1461022257806321df0da71461024b57806322f3e2d41461027c5780633ccfd60b146102915780633e50de30146102a6578063481c6a75146102d45780635d202249146102e95780636385cbbe146102fe57806366829b1614610313578063715018a6146103345780637234ba0c1461034957806375f12b211461035e57806376ddfc39146103735780638da5cb5b146103885780639106d7ba1461039d57806393f33b88146103b2578063a51fe113146103d0578063a85adeab146103f7578063a96f86681461040c578063b23c1f1914610421578063ba0e930a14610445578063d0e30db014610466578063d3b7bfb41461046e578063d56b288914610483578063e29eb83614610498578063e6fd48bc146104ad578063ec4cd0cf146104c2578063f2fde38b146104d7578063f4163340146104f8578063fb86a4041461050d575b005b3480156101b957600080fd5b506101ab610522565b3480156101ce57600080fd5b506101d76105ad565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101d76105b3565b34801561020a57600080fd5b506101ab600160a060020a03600435166024356105ba565b34801561022e57600080fd5b506102376105fd565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061026061060d565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b5061023761061c565b34801561029d57600080fd5b506101ab610647565b3480156102b257600080fd5b506102bb6107d7565b6040805192835260208301919091528051918290030190f35b3480156102e057600080fd5b50610260610a17565b3480156102f557600080fd5b506101d7610a26565b34801561030a57600080fd5b506101d7610a2c565b34801561031f57600080fd5b506101ab600160a060020a0360043516610a32565b34801561034057600080fd5b506101ab610b42565b34801561035557600080fd5b506101d7610bae565b34801561036a57600080fd5b50610237610bb5565b34801561037f57600080fd5b506101d7610bc5565b34801561039457600080fd5b50610260610bd1565b3480156103a957600080fd5b506101d7610be0565b3480156103be57600080fd5b506101ab600435602435604435610be6565b3480156103dc57600080fd5b506101ab600435602435600160a060020a0360443516610c86565b34801561040357600080fd5b506101d7610d3c565b34801561041857600080fd5b506101ab610d42565b34801561042d57600080fd5b506101ab600160a060020a0360043516602435610d85565b34801561045157600080fd5b506101ab600160a060020a0360043516610e3b565b6101ab610d83565b34801561047a57600080fd5b50610260610e96565b34801561048f57600080fd5b506101ab610ea5565b3480156104a457600080fd5b506101d7610f4d565b3480156104b957600080fd5b506101d7610f53565b3480156104ce57600080fd5b50610237610f59565b3480156104e357600080fd5b506101ab600160a060020a0360043516610f69565b34801561050457600080fd5b50610237610f8c565b34801561051957600080fd5b506101d7610f91565b600154600160a060020a0316331461053957600080fd5b60015460a860020a900460ff161561055057600080fd5b60015460a060020a900460ff16156105865761056a610f8c565b1561057457600080fd5b61057c610f59565b1561058657600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60075481565b6241eb0081565b600154600160a060020a031633146105d157600080fd5b604051600160a060020a038316908290600081818185875af19250505015156105f957600080fd5b5050565b60015460a060020a900460ff1681565b600b54600160a060020a031690565b60015460009060a060020a900460ff1680156106425750600b5460a060020a900460ff16155b905090565b600080548190600160a060020a0316331461066157600080fd5b600b54604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201819052915191319450600160a060020a03909216916370a082319160248083019260209291908290030181600087803b1580156106cc57600080fd5b505af11580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b50519050600082111561072a57604051339083156108fc029084906000818181858888f19350505050151561072a57600080fd5b60008111156105f957600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b505115156105f957600080fd5b6000806000806000806000600160009054906101000a9004600160a060020a0316600160a060020a031663a823cfaf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b505050506040513d602081101561087857600080fd5b5051600154604080517f80fa81b10000000000000000000000000000000000000000000000000000000081529051929750600160a060020a03909116916380fa81b1916004808201926020929091908290030181600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d602081101561090757600080fd5b50516004549094508415159250620f424090610929908763ffffffff610f9716565b81151561093257fe5b600354919004915015610946576003546002555b600154600254604080517f3350ae36000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921691633350ae36916024808201926020929091908290030181600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50516002558115610a0a57600254620f4240906109fd908663ffffffff610f9716565b811515610a0657fe5b0492505b9196919550909350505050565b600154600160a060020a031681565b60035481565b60055481565b600054600160a060020a03163314610a4957600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055604080517f313ce56700000000000000000000000000000000000000000000000000000000815290517fed6f18557b7914dbfc23d546be65de82017608e11b87429e06c0b88b55f0b6c39390921691829163313ce5679160048083019260209291908290030181600087803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b505050506040513d6020811015610b1957600080fd5b505160408051600160a060020a03909316835260ff90911660208301528051918290030190a150565b600054600160a060020a03163314610b5957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600054600160a060020a031681565b60045481565b60015460a060020a900460ff161515610bfe57600080fd5b60015460a860020a900460ff1615610c1557600080fd5b610c1d61061c565b1515610c2857600080fd5b600054600160a060020a03163314610c3f57600080fd5b600254610c52908463ffffffff610fc616565b600255600354610c68908363ffffffff610fc616565b600355600454610c7e908263ffffffff610fc616565b600455505050565b60015460a060020a900460ff1615610c9d57600080fd5b60015460a860020a900460ff1615610cb457600080fd5b600154600160a060020a03163314610ccb57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040805184815260208101849052600160a060020a0383168183015290517ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80729181900360600190a1505050565b60095481565b600154600160a060020a03163314610d5957600080fd5b60015460a860020a900460ff1615610d7057600080fd5b610d78610f59565b1515610d8357600080fd5b565b600154600160a060020a03163314610d9c57600080fd5b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b505050506040513d6020811015610e3557600080fd5b50505050565b600154600160a060020a03163314610e5257600080fd5b600160a060020a0381161515610e6757600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015460a860020a900460ff1615610ebc57600080fd5b60015460a060020a900460ff161515610ed457600080fd5b610edc61061c565b1515610ee757600080fd5b600054600160a060020a03163314610efe57600080fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f256531276449280f5a3022f3024cb03968cf6ab90d6d067e9bc10768bcbcb08090600090a1565b60025481565b60085481565b600b5460a060020a900460ff1690565b600054600160a060020a03163314610f8057600080fd5b610f8981610fd3565b50565b600090565b60065481565b6000821515610fa857506000610fc0565b50818102818382811515610fb857fe5b0414610fc057fe5b92915050565b81810182811015610fc057fe5b600160a060020a0381161515610fe857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b50029

Deployed Bytecode

0x6080604052600436106101ab5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307da68f581146101ad5780630fb5a6b4146101c25780631510ca79146101e957806318c9ef97146101fe5780631f2698ab1461022257806321df0da71461024b57806322f3e2d41461027c5780633ccfd60b146102915780633e50de30146102a6578063481c6a75146102d45780635d202249146102e95780636385cbbe146102fe57806366829b1614610313578063715018a6146103345780637234ba0c1461034957806375f12b211461035e57806376ddfc39146103735780638da5cb5b146103885780639106d7ba1461039d57806393f33b88146103b2578063a51fe113146103d0578063a85adeab146103f7578063a96f86681461040c578063b23c1f1914610421578063ba0e930a14610445578063d0e30db014610466578063d3b7bfb41461046e578063d56b288914610483578063e29eb83614610498578063e6fd48bc146104ad578063ec4cd0cf146104c2578063f2fde38b146104d7578063f4163340146104f8578063fb86a4041461050d575b005b3480156101b957600080fd5b506101ab610522565b3480156101ce57600080fd5b506101d76105ad565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101d76105b3565b34801561020a57600080fd5b506101ab600160a060020a03600435166024356105ba565b34801561022e57600080fd5b506102376105fd565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061026061060d565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b5061023761061c565b34801561029d57600080fd5b506101ab610647565b3480156102b257600080fd5b506102bb6107d7565b6040805192835260208301919091528051918290030190f35b3480156102e057600080fd5b50610260610a17565b3480156102f557600080fd5b506101d7610a26565b34801561030a57600080fd5b506101d7610a2c565b34801561031f57600080fd5b506101ab600160a060020a0360043516610a32565b34801561034057600080fd5b506101ab610b42565b34801561035557600080fd5b506101d7610bae565b34801561036a57600080fd5b50610237610bb5565b34801561037f57600080fd5b506101d7610bc5565b34801561039457600080fd5b50610260610bd1565b3480156103a957600080fd5b506101d7610be0565b3480156103be57600080fd5b506101ab600435602435604435610be6565b3480156103dc57600080fd5b506101ab600435602435600160a060020a0360443516610c86565b34801561040357600080fd5b506101d7610d3c565b34801561041857600080fd5b506101ab610d42565b34801561042d57600080fd5b506101ab600160a060020a0360043516602435610d85565b34801561045157600080fd5b506101ab600160a060020a0360043516610e3b565b6101ab610d83565b34801561047a57600080fd5b50610260610e96565b34801561048f57600080fd5b506101ab610ea5565b3480156104a457600080fd5b506101d7610f4d565b3480156104b957600080fd5b506101d7610f53565b3480156104ce57600080fd5b50610237610f59565b3480156104e357600080fd5b506101ab600160a060020a0360043516610f69565b34801561050457600080fd5b50610237610f8c565b34801561051957600080fd5b506101d7610f91565b600154600160a060020a0316331461053957600080fd5b60015460a860020a900460ff161561055057600080fd5b60015460a060020a900460ff16156105865761056a610f8c565b1561057457600080fd5b61057c610f59565b1561058657600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60075481565b6241eb0081565b600154600160a060020a031633146105d157600080fd5b604051600160a060020a038316908290600081818185875af19250505015156105f957600080fd5b5050565b60015460a060020a900460ff1681565b600b54600160a060020a031690565b60015460009060a060020a900460ff1680156106425750600b5460a060020a900460ff16155b905090565b600080548190600160a060020a0316331461066157600080fd5b600b54604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201819052915191319450600160a060020a03909216916370a082319160248083019260209291908290030181600087803b1580156106cc57600080fd5b505af11580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b50519050600082111561072a57604051339083156108fc029084906000818181858888f19350505050151561072a57600080fd5b60008111156105f957600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b505115156105f957600080fd5b6000806000806000806000600160009054906101000a9004600160a060020a0316600160a060020a031663a823cfaf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b505050506040513d602081101561087857600080fd5b5051600154604080517f80fa81b10000000000000000000000000000000000000000000000000000000081529051929750600160a060020a03909116916380fa81b1916004808201926020929091908290030181600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d602081101561090757600080fd5b50516004549094508415159250620f424090610929908763ffffffff610f9716565b81151561093257fe5b600354919004915015610946576003546002555b600154600254604080517f3350ae36000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921691633350ae36916024808201926020929091908290030181600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50516002558115610a0a57600254620f4240906109fd908663ffffffff610f9716565b811515610a0657fe5b0492505b9196919550909350505050565b600154600160a060020a031681565b60035481565b60055481565b600054600160a060020a03163314610a4957600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055604080517f313ce56700000000000000000000000000000000000000000000000000000000815290517fed6f18557b7914dbfc23d546be65de82017608e11b87429e06c0b88b55f0b6c39390921691829163313ce5679160048083019260209291908290030181600087803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b505050506040513d6020811015610b1957600080fd5b505160408051600160a060020a03909316835260ff90911660208301528051918290030190a150565b600054600160a060020a03163314610b5957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600054600160a060020a031681565b60045481565b60015460a060020a900460ff161515610bfe57600080fd5b60015460a860020a900460ff1615610c1557600080fd5b610c1d61061c565b1515610c2857600080fd5b600054600160a060020a03163314610c3f57600080fd5b600254610c52908463ffffffff610fc616565b600255600354610c68908363ffffffff610fc616565b600355600454610c7e908263ffffffff610fc616565b600455505050565b60015460a060020a900460ff1615610c9d57600080fd5b60015460a860020a900460ff1615610cb457600080fd5b600154600160a060020a03163314610ccb57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040805184815260208101849052600160a060020a0383168183015290517ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80729181900360600190a1505050565b60095481565b600154600160a060020a03163314610d5957600080fd5b60015460a860020a900460ff1615610d7057600080fd5b610d78610f59565b1515610d8357600080fd5b565b600154600160a060020a03163314610d9c57600080fd5b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b505050506040513d6020811015610e3557600080fd5b50505050565b600154600160a060020a03163314610e5257600080fd5b600160a060020a0381161515610e6757600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015460a860020a900460ff1615610ebc57600080fd5b60015460a060020a900460ff161515610ed457600080fd5b610edc61061c565b1515610ee757600080fd5b600054600160a060020a03163314610efe57600080fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f256531276449280f5a3022f3024cb03968cf6ab90d6d067e9bc10768bcbcb08090600090a1565b60025481565b60085481565b600b5460a060020a900460ff1690565b600054600160a060020a03163314610f8057600080fd5b610f8981610fd3565b50565b600090565b60065481565b6000821515610fa857506000610fc0565b50818102818382811515610fb857fe5b0414610fc057fe5b92915050565b81810182811015610fc057fe5b600160a060020a0381161515610fe857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b50029

Swarm Source

bzzr://8871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b5

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.