ETH Price: $2,052.65 (-4.54%)
 

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
Add Deployer64585542018-10-05 14:47:072735 days ago1538750827IN
0xaE269BE1...c56f06053
0 ETH0.000324066
Add Deployer64585172018-10-05 14:38:582735 days ago1538750338IN
0xaE269BE1...c56f06053
0 ETH0.000414066

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:
MultiTokenNetwork

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-10-05
*/

pragma solidity ^0.4.24;

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
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);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
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
  );
}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
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;
  }
}

// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyOwner whenPaused {
    paused = false;
    emit Unpause();
  }
}

// File: contracts/network/AbstractDeployer.sol

contract AbstractDeployer is Ownable {
    function title() public view returns(string);

    function deploy(bytes data)
        external onlyOwner returns(address result)
    {
        // solium-disable-next-line security/no-low-level-calls
        require(address(this).call(data), "Arbitrary call failed");
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            returndatacopy(0, 0, 32)
            result := mload(0)
        }
    }
}

// File: contracts/interface/IBasicMultiToken.sol

contract IBasicMultiToken is ERC20 {
    event Bundle(address indexed who, address indexed beneficiary, uint256 value);
    event Unbundle(address indexed who, address indexed beneficiary, uint256 value);

    function tokensCount() public view returns(uint256);
    function tokens(uint i) public view returns(ERC20);
    
    function bundleFirstTokens(address _beneficiary, uint256 _amount, uint256[] _tokenAmounts) public;
    function bundle(address _beneficiary, uint256 _amount) public;

    function unbundle(address _beneficiary, uint256 _value) public;
    function unbundleSome(address _beneficiary, uint256 _value, ERC20[] _tokens) public;

    function disableBundling() public;
    function enableBundling() public;
}

// File: contracts/interface/IMultiToken.sol

contract IMultiToken is IBasicMultiToken {
    event Update();
    event Change(address indexed _fromToken, address indexed _toToken, address indexed _changer, uint256 _amount, uint256 _return);

    function weights(address _token) public view returns(uint256);

    function getReturn(address _fromToken, address _toToken, uint256 _amount) public view returns (uint256 returnAmount);
    function change(address _fromToken, address _toToken, uint256 _amount, uint256 _minReturn) public returns (uint256 returnAmount);

    function disableChanges() public;
}

// File: contracts/network/MultiTokenNetwork.sol

contract MultiTokenNetwork is Pausable {
    address[] private _multitokens;
    AbstractDeployer[] private _deployers;

    event NewMultitoken(address indexed mtkn);
    event NewDeployer(uint256 indexed index, address indexed oldDeployer, address indexed newDeployer);

    function multitokensCount() public view returns(uint256) {
        return _multitokens.length;
    }

    function multitokens(uint i) public view returns(address) {
        return _multitokens[i];
    }

    function allMultitokens() public view returns(address[]) {
        return _multitokens;
    }

    function deployersCount() public view returns(uint256) {
        return _deployers.length;
    }

    function deployers(uint i) public view returns(AbstractDeployer) {
        return _deployers[i];
    }

    function allWalletBalances(address wallet) public view returns(uint256[]) {
        uint256[] memory balances = new uint256[](_multitokens.length);
        for (uint i = 0; i < _multitokens.length; i++) {
            balances[i] = ERC20(_multitokens[i]).balanceOf(wallet);
        }
        return balances;
    }

    function deleteMultitoken(uint index) public onlyOwner {
        require(index < _multitokens.length, "deleteMultitoken: index out of range");
        if (index != _multitokens.length - 1) {
            _multitokens[index] = _multitokens[_multitokens.length - 1];
        }
        _multitokens.length -= 1;
    }

    function deleteDeployer(uint index) public onlyOwner {
        require(index < _deployers.length, "deleteDeployer: index out of range");
        if (index != _deployers.length - 1) {
            _deployers[index] = _deployers[_deployers.length - 1];
        }
        _deployers.length -= 1;
    }

    function disableBundlingMultitoken(uint index) public onlyOwner {
        IBasicMultiToken(_multitokens[index]).disableBundling();
    }

    function enableBundlingMultitoken(uint index) public onlyOwner {
        IBasicMultiToken(_multitokens[index]).enableBundling();
    }

    function disableChangesMultitoken(uint index) public onlyOwner {
        IMultiToken(_multitokens[index]).disableChanges();
    }

    function addDeployer(AbstractDeployer deployer) public onlyOwner whenNotPaused {
        require(deployer.owner() == address(this), "addDeployer: first set MultiTokenNetwork as owner");
        emit NewDeployer(_deployers.length, address(0), deployer);
        _deployers.push(deployer);
    }

    function setDeployer(uint256 index, AbstractDeployer deployer) public onlyOwner whenNotPaused {
        require(deployer.owner() == address(this), "setDeployer: first set MultiTokenNetwork as owner");
        emit NewDeployer(index, _deployers[index], deployer);
        _deployers[index] = deployer;
    }

    function deploy(uint256 index, bytes data) public whenNotPaused {
        address mtkn = _deployers[index].deploy(data);
        _multitokens.push(mtkn);
        emit NewMultitoken(mtkn);
    }

    function makeCall(address target, uint256 value, bytes data) public onlyOwner {
        // solium-disable-next-line security/no-call-value
        require(target.call.value(value)(data), "Arbitrary call failed");
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"wallet","type":"address"}],"name":"allWalletBalances","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"disableBundlingMultitoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"data","type":"bytes"}],"name":"deploy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"multitokensCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"disableChangesMultitoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"makeCall","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"deployer","type":"address"}],"name":"addDeployer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"deployers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"deleteDeployer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"enableBundlingMultitoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deployersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"multitokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allMultitokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"deleteMultitoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"deployer","type":"address"}],"name":"setDeployer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"mtkn","type":"address"}],"name":"NewMultitoken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"oldDeployer","type":"address"},{"indexed":true,"name":"newDeployer","type":"address"}],"name":"NewDeployer","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","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"}]

608060405260008054600160a860020a03191633179055611281806100256000396000f3006080604052600436106101035763ffffffff60e060020a6000350416630d0cd4f4811461010857806313f9cf76146101795780633f4ba83a146101935780635c975abb146101a857806361ff715f146101d15780636c69ab241461022f578063715018a614610256578063817725aa1461026b5780638456cb59146102835780638482167e14610298578063880f4039146103015780638da5cb5b146103225780638faa77b2146103535780639a8414131461036b578063a36b15d014610383578063a9b69e7c1461039b578063aa974eff146103b0578063c30b06e8146103c8578063e770390d146103dd578063eec786a6146103f5578063f2fde38b14610419575b600080fd5b34801561011457600080fd5b50610129600160a060020a036004351661043a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561016557818101518382015260200161014d565b505050509050019250505060405180910390f35b34801561018557600080fd5b50610191600435610553565b005b34801561019f57600080fd5b506101916105f4565b3480156101b457600080fd5b506101bd61066a565b604080519115158252519081900360200190f35b3480156101dd57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261019195833595369560449491939091019190819084018382808284375094975061067a9650505050505050565b34801561023b57600080fd5b50610244610824565b60408051918252519081900360200190f35b34801561026257600080fd5b5061019161082b565b34801561027757600080fd5b50610191600435610897565b34801561028f57600080fd5b5061019161091d565b3480156102a457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610191948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506109989650505050505050565b34801561030d57600080fd5b50610191600160a060020a0360043516610a82565b34801561032e57600080fd5b50610337610c40565b60408051600160a060020a039092168252519081900360200190f35b34801561035f57600080fd5b50610337600435610c4f565b34801561037757600080fd5b50610191600435610c7b565b34801561038f57600080fd5b50610191600435610d9c565b3480156103a757600080fd5b50610244610e22565b3480156103bc57600080fd5b50610337600435610e28565b3480156103d457600080fd5b50610129610e39565b3480156103e957600080fd5b50610191600435610e9b565b34801561040157600080fd5b50610191600435600160a060020a0360243516610fb7565b34801561042557600080fd5b50610191600160a060020a0360043516611178565b606080600060018054905060405190808252806020026020018201604052801561046e578160200160208202803883390190505b509150600090505b60015481101561054c57600180548290811061048e57fe5b6000918252602080832090910154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152915191909216936370a0823193602480850194919392918390030190829087803b15801561050057600080fd5b505af1158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b5051825183908390811061053a57fe5b60209081029091010152600101610476565b5092915050565b600054600160a060020a0316331461056a57600080fd5b600180548290811061057857fe5b6000918252602082200154604080517f30e26cb80000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926330e26cb89260048084019382900301818387803b1580156105d957600080fd5b505af11580156105ed573d6000803e3d6000fd5b5050505050565b600054600160a060020a0316331461060b57600080fd5b60005460a060020a900460ff16151561062357600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b60005460a060020a900460ff1681565b6000805460a060020a900460ff161561069257600080fd5b60028054849081106106a057fe5b60009182526020808320909101546040517e77436000000000000000000000000000000000000000000000000000000000815260048101838152865160248301528651600160a060020a03909316946277436094889492938493604490910192918601918190849084905b8381101561072357818101518382015260200161070b565b50505050905090810190601f1680156107505780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b505050506040513d602081101561079957600080fd5b505160018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416908117909155604051929350917fd903a822601c41fd626c692dbb615e3b4ace9ebe82a9da25f26f4f656df014959190a2505050565b6001545b90565b600054600160a060020a0316331461084257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146108ae57600080fd5b60018054829081106108bc57fe5b6000918252602082200154604080517fc5e2f4180000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263c5e2f4189260048084019382900301818387803b1580156105d957600080fd5b600054600160a060020a0316331461093457600080fd5b60005460a060020a900460ff161561094b57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600054600160a060020a031633146109af57600080fd5b82600160a060020a0316828260405180828051906020019080838360005b838110156109e55781810151838201526020016109cd565b50505050905090810190601f168015610a125780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610a7d576040805160e560020a62461bcd02815260206004820152601560248201527f4172626974726172792063616c6c206661696c65640000000000000000000000604482015290519081900360640190fd5b505050565b600054600160a060020a03163314610a9957600080fd5b60005460a060020a900460ff1615610ab057600080fd5b30600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600160a060020a031614610ba8576040805160e560020a62461bcd02815260206004820152603160248201527f6164644465706c6f7965723a20666972737420736574204d756c7469546f6b6560448201527f6e4e6574776f726b206173206f776e6572000000000000000000000000000000606482015290519081900360840190fd5b600254604051600160a060020a038316916000917ff353db33002786ddb63310214b9c47747dd55610bd96dc7ab366fd8d545d4bd5908390a4600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b6000600282815481101515610c6057fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a03163314610c9257600080fd5b6002548110610d11576040805160e560020a62461bcd02815260206004820152602260248201527f64656c6574654465706c6f7965723a20696e646578206f7574206f662072616e60448201527f6765000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600019018114610d8557600280546000198101908110610d3057fe5b60009182526020909120015460028054600160a060020a039092169183908110610d5657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600280546000190190610d989082611218565b5050565b600054600160a060020a03163314610db357600080fd5b6001805482908110610dc157fe5b6000918252602082200154604080517feec034440000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263eec034449260048084019382900301818387803b1580156105d957600080fd5b60025490565b6000600182815481101515610c6057fe5b60606001805480602002602001604051908101604052809291908181526020018280548015610e9157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e73575b5050505050905090565b600054600160a060020a03163314610eb257600080fd5b6001548110610f30576040805160e560020a62461bcd028152602060048201526024808201527f64656c6574654d756c7469746f6b656e3a20696e646578206f7574206f66207260448201527f616e676500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154600019018114610fa457600180546000198101908110610f4f57fe5b60009182526020909120015460018054600160a060020a039092169183908110610f7557fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600180546000190190610d989082611218565b600054600160a060020a03163314610fce57600080fd5b60005460a060020a900460ff1615610fe557600080fd5b30600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050506040513d602081101561105757600080fd5b5051600160a060020a0316146110dd576040805160e560020a62461bcd02815260206004820152603160248201527f7365744465706c6f7965723a20666972737420736574204d756c7469546f6b6560448201527f6e4e6574776f726b206173206f776e6572000000000000000000000000000000606482015290519081900360840190fd5b80600160a060020a03166002838154811015156110f657fe5b6000918252602082200154604051600160a060020a039091169185917ff353db33002786ddb63310214b9c47747dd55610bd96dc7ab366fd8d545d4bd59190a48060028381548110151561114657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505050565b600054600160a060020a0316331461118f57600080fd5b6111988161119b565b50565b600160a060020a03811615156111b057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b815481835581811115610a7d57600083815260209020610a7d91810190830161082891905b80821115611251576000815560010161123d565b50905600a165627a7a7230582092e0cbf4f20473d2badcec5fef9085359eea756c037359e29e35eccc9fcdad800029

Deployed Bytecode

0x6080604052600436106101035763ffffffff60e060020a6000350416630d0cd4f4811461010857806313f9cf76146101795780633f4ba83a146101935780635c975abb146101a857806361ff715f146101d15780636c69ab241461022f578063715018a614610256578063817725aa1461026b5780638456cb59146102835780638482167e14610298578063880f4039146103015780638da5cb5b146103225780638faa77b2146103535780639a8414131461036b578063a36b15d014610383578063a9b69e7c1461039b578063aa974eff146103b0578063c30b06e8146103c8578063e770390d146103dd578063eec786a6146103f5578063f2fde38b14610419575b600080fd5b34801561011457600080fd5b50610129600160a060020a036004351661043a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561016557818101518382015260200161014d565b505050509050019250505060405180910390f35b34801561018557600080fd5b50610191600435610553565b005b34801561019f57600080fd5b506101916105f4565b3480156101b457600080fd5b506101bd61066a565b604080519115158252519081900360200190f35b3480156101dd57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261019195833595369560449491939091019190819084018382808284375094975061067a9650505050505050565b34801561023b57600080fd5b50610244610824565b60408051918252519081900360200190f35b34801561026257600080fd5b5061019161082b565b34801561027757600080fd5b50610191600435610897565b34801561028f57600080fd5b5061019161091d565b3480156102a457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610191948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506109989650505050505050565b34801561030d57600080fd5b50610191600160a060020a0360043516610a82565b34801561032e57600080fd5b50610337610c40565b60408051600160a060020a039092168252519081900360200190f35b34801561035f57600080fd5b50610337600435610c4f565b34801561037757600080fd5b50610191600435610c7b565b34801561038f57600080fd5b50610191600435610d9c565b3480156103a757600080fd5b50610244610e22565b3480156103bc57600080fd5b50610337600435610e28565b3480156103d457600080fd5b50610129610e39565b3480156103e957600080fd5b50610191600435610e9b565b34801561040157600080fd5b50610191600435600160a060020a0360243516610fb7565b34801561042557600080fd5b50610191600160a060020a0360043516611178565b606080600060018054905060405190808252806020026020018201604052801561046e578160200160208202803883390190505b509150600090505b60015481101561054c57600180548290811061048e57fe5b6000918252602080832090910154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152915191909216936370a0823193602480850194919392918390030190829087803b15801561050057600080fd5b505af1158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b5051825183908390811061053a57fe5b60209081029091010152600101610476565b5092915050565b600054600160a060020a0316331461056a57600080fd5b600180548290811061057857fe5b6000918252602082200154604080517f30e26cb80000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926330e26cb89260048084019382900301818387803b1580156105d957600080fd5b505af11580156105ed573d6000803e3d6000fd5b5050505050565b600054600160a060020a0316331461060b57600080fd5b60005460a060020a900460ff16151561062357600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b60005460a060020a900460ff1681565b6000805460a060020a900460ff161561069257600080fd5b60028054849081106106a057fe5b60009182526020808320909101546040517e77436000000000000000000000000000000000000000000000000000000000815260048101838152865160248301528651600160a060020a03909316946277436094889492938493604490910192918601918190849084905b8381101561072357818101518382015260200161070b565b50505050905090810190601f1680156107505780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b505050506040513d602081101561079957600080fd5b505160018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416908117909155604051929350917fd903a822601c41fd626c692dbb615e3b4ace9ebe82a9da25f26f4f656df014959190a2505050565b6001545b90565b600054600160a060020a0316331461084257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146108ae57600080fd5b60018054829081106108bc57fe5b6000918252602082200154604080517fc5e2f4180000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263c5e2f4189260048084019382900301818387803b1580156105d957600080fd5b600054600160a060020a0316331461093457600080fd5b60005460a060020a900460ff161561094b57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600054600160a060020a031633146109af57600080fd5b82600160a060020a0316828260405180828051906020019080838360005b838110156109e55781810151838201526020016109cd565b50505050905090810190601f168015610a125780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610a7d576040805160e560020a62461bcd02815260206004820152601560248201527f4172626974726172792063616c6c206661696c65640000000000000000000000604482015290519081900360640190fd5b505050565b600054600160a060020a03163314610a9957600080fd5b60005460a060020a900460ff1615610ab057600080fd5b30600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600160a060020a031614610ba8576040805160e560020a62461bcd02815260206004820152603160248201527f6164644465706c6f7965723a20666972737420736574204d756c7469546f6b6560448201527f6e4e6574776f726b206173206f776e6572000000000000000000000000000000606482015290519081900360840190fd5b600254604051600160a060020a038316916000917ff353db33002786ddb63310214b9c47747dd55610bd96dc7ab366fd8d545d4bd5908390a4600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b6000600282815481101515610c6057fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a03163314610c9257600080fd5b6002548110610d11576040805160e560020a62461bcd02815260206004820152602260248201527f64656c6574654465706c6f7965723a20696e646578206f7574206f662072616e60448201527f6765000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600019018114610d8557600280546000198101908110610d3057fe5b60009182526020909120015460028054600160a060020a039092169183908110610d5657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600280546000190190610d989082611218565b5050565b600054600160a060020a03163314610db357600080fd5b6001805482908110610dc157fe5b6000918252602082200154604080517feec034440000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263eec034449260048084019382900301818387803b1580156105d957600080fd5b60025490565b6000600182815481101515610c6057fe5b60606001805480602002602001604051908101604052809291908181526020018280548015610e9157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e73575b5050505050905090565b600054600160a060020a03163314610eb257600080fd5b6001548110610f30576040805160e560020a62461bcd028152602060048201526024808201527f64656c6574654d756c7469746f6b656e3a20696e646578206f7574206f66207260448201527f616e676500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154600019018114610fa457600180546000198101908110610f4f57fe5b60009182526020909120015460018054600160a060020a039092169183908110610f7557fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600180546000190190610d989082611218565b600054600160a060020a03163314610fce57600080fd5b60005460a060020a900460ff1615610fe557600080fd5b30600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050506040513d602081101561105757600080fd5b5051600160a060020a0316146110dd576040805160e560020a62461bcd02815260206004820152603160248201527f7365744465706c6f7965723a20666972737420736574204d756c7469546f6b6560448201527f6e4e6574776f726b206173206f776e6572000000000000000000000000000000606482015290519081900360840190fd5b80600160a060020a03166002838154811015156110f657fe5b6000918252602082200154604051600160a060020a039091169185917ff353db33002786ddb63310214b9c47747dd55610bd96dc7ab366fd8d545d4bd59190a48060028381548110151561114657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505050565b600054600160a060020a0316331461118f57600080fd5b6111988161119b565b50565b600160a060020a03811615156111b057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b815481835581811115610a7d57600083815260209020610a7d91810190830161082891905b80821115611251576000815560010161123d565b50905600a165627a7a7230582092e0cbf4f20473d2badcec5fef9085359eea756c037359e29e35eccc9fcdad800029

Swarm Source

bzzr://92e0cbf4f20473d2badcec5fef9085359eea756c037359e29e35eccc9fcdad80

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.