ETH Price: $1,974.46 (+0.69%)
 

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
Set Oracles86917372019-10-07 0:16:352330 days ago1570407395IN
Atomic Loans: Medianizer
0 ETH0.0031138210

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Poke95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Poke95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
Peek95212052020-02-20 16:29:442193 days ago1582216184
Atomic Loans: Medianizer
0 ETH
View All Internal Transactions
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:
Medianizer

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-10-07
*/

pragma solidity ^0.4.26;


contract ERC20Basic {
  uint256 public totalSupply;
  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);
}

contract DSMath {
    
    

    function add(uint256 x, uint256 y) pure internal returns (uint256 z) {
        assert((z = x + y) >= x);
    }

    function sub(uint256 x, uint256 y) pure internal returns (uint256 z) {
        assert((z = x - y) <= x);
    }

    function mul(uint256 x, uint256 y) pure internal returns (uint256 z) {
        assert((z = x * y) >= x);
    }
    
    function div(uint256 x, uint256 y) pure internal returns (uint256 z) {
        require(y > 0);
        z = x / y;
    }
    
    function min(uint256 x, uint256 y) pure internal returns (uint256 z) {
        return x <= y ? x : y;
    }
    function max(uint256 x, uint256 y) pure internal returns (uint256 z) {
        return x >= y ? x : y;
    }

    


    function hadd(uint128 x, uint128 y) pure internal returns (uint128 z) {
        assert((z = x + y) >= x);
    }

    function hsub(uint128 x, uint128 y) pure internal returns (uint128 z) {
        assert((z = x - y) <= x);
    }

    function hmul(uint128 x, uint128 y) pure internal returns (uint128 z) {
        assert((z = x * y) >= x);
    }

    function hdiv(uint128 x, uint128 y) pure internal returns (uint128 z) {
        assert(y > 0);
        z = x / y;
    }

    function hmin(uint128 x, uint128 y) pure internal returns (uint128 z) {
        return x <= y ? x : y;
    }
    function hmax(uint128 x, uint128 y) pure internal returns (uint128 z) {
        return x >= y ? x : y;
    }


    

    function imin(int256 x, int256 y) pure internal returns (int256 z) {
        return x <= y ? x : y;
    }
    function imax(int256 x, int256 y) pure internal returns (int256 z) {
        return x >= y ? x : y;
    }

    

    uint128 constant WAD = 10 ** 18;

    function wadd(uint128 x, uint128 y) pure internal returns (uint128) {
        return hadd(x, y);
    }

    function wsub(uint128 x, uint128 y) pure internal returns (uint128) {
        return hsub(x, y);
    }

    function wmul(uint128 x, uint128 y) view internal returns (uint128 z) {
        z = cast((uint256(x) * y + WAD / 2) / WAD);
    }

    function wdiv(uint128 x, uint128 y) view internal returns (uint128 z) {
        z = cast((uint256(x) * WAD + y / 2) / y);
    }

    function wmin(uint128 x, uint128 y) pure internal returns (uint128) {
        return hmin(x, y);
    }
    function wmax(uint128 x, uint128 y) pure internal returns (uint128) {
        return hmax(x, y);
    }

    

    uint128 constant RAY = 10 ** 27;

    function radd(uint128 x, uint128 y) pure internal returns (uint128) {
        return hadd(x, y);
    }

    function rsub(uint128 x, uint128 y) pure internal returns (uint128) {
        return hsub(x, y);
    }

    function rmul(uint128 x, uint128 y) view internal returns (uint128 z) {
        z = cast((uint256(x) * y + RAY / 2) / RAY);
    }

    function rdiv(uint128 x, uint128 y) view internal returns (uint128 z) {
        z = cast((uint256(x) * RAY + y / 2) / y);
    }

    function rpow(uint128 x, uint64 n) view internal returns (uint128 z) {
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }

    function rmin(uint128 x, uint128 y) pure internal returns (uint128) {
        return hmin(x, y);
    }
    function rmax(uint128 x, uint128 y) pure internal returns (uint128) {
        return hmax(x, y);
    }

    function cast(uint256 x) pure internal returns (uint128 z) {
        assert((z = uint128(x)) == x);
    }

}

contract MedianizerInterface {
    function peek() public view returns (bytes32, bool);
    function read() public returns (bytes32);
    function poke() public;
    function poke(bytes32) public;
    function fund (uint256 amount, ERC20 token) public;
}

contract Oracle is DSMath {
    uint32  constant public DELAY = 900; 
    uint128 constant public prem = 1100000000000000000; 
    uint128 constant public turn = 1010000000000000000; 

    MedianizerInterface med;

    uint32 public expiry;
    uint32 public timeout;
    uint128 assetPrice;                     
    uint128 public paymentTokenPrice;
    uint256 rewardAmount;

    mapping(bytes32 => AsyncRequest) asyncRequests;

    struct AsyncRequest {
        address rewardee;
        uint128 payment;
        uint128 disbursement;
        ERC20 token;
        bool assetPriceSet;
        bool paymentTokenPriceSet;
    }

    function peek() public view
        returns (bytes32,bool)
    {
        return (bytes32(uint(assetPrice)), now < expiry);
    }

    function read() public view
        returns (bytes32)
    {
        assert(now < expiry);
        return bytes32(uint(assetPrice));
    }
    
    function setAssetPrice(bytes32 queryId, uint128 assetPrice_, uint32 expiry_) internal
    {
        asyncRequests[queryId].disbursement = 0;
        if (assetPrice_ >= wmul(assetPrice, turn) || assetPrice_ <= wdiv(assetPrice, turn)) { asyncRequests[queryId].disbursement = asyncRequests[queryId].payment; }
        assetPrice = assetPrice_;
        expiry = expiry_;
        med.poke();
        asyncRequests[queryId].assetPriceSet = true;
        if (asyncRequests[queryId].paymentTokenPriceSet) { reward(queryId); }
    }

    function setPaymentTokenPrice(bytes32 queryId, uint128 paymentTokenPrice_) internal {
        paymentTokenPrice = paymentTokenPrice_;
        asyncRequests[queryId].paymentTokenPriceSet = true;
        if (asyncRequests[queryId].assetPriceSet) { reward(queryId); }
    }

    function reward(bytes32 queryId) internal { 
        rewardAmount = wmul(wmul(paymentTokenPrice, asyncRequests[queryId].disbursement), prem);
        if (asyncRequests[queryId].token.balanceOf(address(this)) >= rewardAmount && asyncRequests[queryId].disbursement > 0) {
            require(asyncRequests[queryId].token.transfer(asyncRequests[queryId].rewardee, rewardAmount));
        }
        delete(asyncRequests[queryId]);
    }

    function setMaxReward(uint256 maxReward_) public;
}

contract Medianizer is DSMath {
    bool    hasPrice;
    bytes32 assetPrice;
    uint256 public minOraclesRequired = 5;
    bool on;
    address deployer;

    Oracle[] public oracles;

    constructor() {
    	deployer = msg.sender;
    }

    function setOracles(address[10] addrs) {
    	require(!on);
        require(msg.sender == deployer);
        oracles.push(Oracle(addrs[0]));
        oracles.push(Oracle(addrs[1]));
        oracles.push(Oracle(addrs[2]));
        oracles.push(Oracle(addrs[3]));
        oracles.push(Oracle(addrs[4]));
        oracles.push(Oracle(addrs[5]));
        oracles.push(Oracle(addrs[6]));
        oracles.push(Oracle(addrs[7]));
        oracles.push(Oracle(addrs[8]));
        oracles.push(Oracle(addrs[9]));
    	on = true;
    }

    function setMaxReward(uint256 maxReward_) {
    	require(on);
    	require(msg.sender == deployer);
        oracles[0].setMaxReward(maxReward_);
        oracles[1].setMaxReward(maxReward_);
        oracles[2].setMaxReward(maxReward_);
        oracles[3].setMaxReward(maxReward_);
        oracles[4].setMaxReward(maxReward_);
        oracles[5].setMaxReward(maxReward_);
        oracles[6].setMaxReward(maxReward_);
        oracles[7].setMaxReward(maxReward_);
        oracles[8].setMaxReward(maxReward_);
        oracles[9].setMaxReward(maxReward_);
    }

    function peek() public view returns (bytes32, bool) {
        return (assetPrice,hasPrice);
    }

    function read() public returns (bytes32) {
        var (assetPrice, hasPrice) = peek();
        assert(hasPrice);
        return assetPrice;
    }

    function fund (uint256 amount, ERC20 token) public {
      for (uint256 i = 0; i < oracles.length; i++) {
        require(token.transferFrom(msg.sender, address(oracles[i]), uint(div(uint128(amount), uint128(oracles.length)))));
      }
    }

    function poke() public {
        poke(0);
    }

    function poke(bytes32) public {
        (assetPrice, hasPrice) = compute();
    }

    function compute() public returns (bytes32, bool) {
        bytes32[] memory wuts = new bytes32[](oracles.length);
        uint256 ctr = 0;
        for (uint256 i = 0; i < oracles.length; i++) {
            if (address(oracles[i]) != 0) {
                var (wut, wuz) = oracles[i].peek();
                if (wuz) {
                    if (ctr == 0 || wut >= wuts[ctr - 1]) {
                        wuts[ctr] = wut;
                    } else {
                        uint256 j = 0;
                        while (wut >= wuts[j]) {
                            j++;
                        }
                        for (uint256 k = ctr; k > j; k--) {
                            wuts[k] = wuts[k - 1];
                        }
                        wuts[j] = wut;
                    }
                    ctr++;
                }
            }
        }

        if (ctr < minOraclesRequired) return (assetPrice, false);

        bytes32 value;
        if (ctr % 2 == 0) {
            uint128 val1 = uint128(wuts[(ctr / 2) - 1]);
            uint128 val2 = uint128(wuts[ctr / 2]);
            value = bytes32((val1 + val2) / 2);
        } else {
            value = wuts[(ctr - 1) / 2];
        }

        return (value, true);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"","type":"bytes32"}],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"compute","outputs":[{"name":"","type":"bytes32"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"maxReward_","type":"uint256"}],"name":"setMaxReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"read","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"name":"","type":"bytes32"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"oracles","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minOraclesRequired","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"token","type":"address"}],"name":"fund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[10]"}],"name":"setOracles","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

6080604052600560025534801561001557600080fd5b506003805461010060a860020a0319163361010002179055610d2a8061003c6000396000f30060806040526004361061008a5763ffffffff60e060020a6000350416631504460f811461008f57806318178358146100a95780631a43c338146100be57806325c33e13146100ec57806357de26a41461010457806359e02dd71461012b5780635b69a7d814610140578063e35d106d14610174578063eee9239514610189578063f6061c08146101ad575b600080fd5b34801561009b57600080fd5b506100a76004356101f2565b005b3480156100b557600080fd5b506100a7610211565b3480156100ca57600080fd5b506100d361021d565b6040805192835290151560208301528051918290030190f35b3480156100f857600080fd5b506100a76004356104fe565b34801561011057600080fd5b506101196109f0565b60408051918252519081900360200190f35b34801561013757600080fd5b506100d3610a10565b34801561014c57600080fd5b50610158600435610a1d565b60408051600160a060020a039092168252519081900360200190f35b34801561018057600080fd5b50610119610a45565b34801561019557600080fd5b506100a7600435600160a060020a0360243516610a4b565b3480156101b957600080fd5b50604080516101408181019092526100a791369160049161014491908390600a90839083908082843750939650610b4995505050505050565b6101fa61021d565b6000805460ff191691151591909117905560015550565b61021b60006101f2565b565b6000806060600080600080600080600080600060048054905060405190808252806020026020018201604052801561025f578160200160208202803883390190505b50995060009850600097505b60045488101561043357600480548990811061028357fe5b600091825260209091200154600160a060020a0316156104285760048054899081106102ab57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a03166359e02dd76040518163ffffffff1660e060020a0281526004016040805180830381600087803b15801561030557600080fd5b505af1158015610319573d6000803e3d6000fd5b505050506040513d604081101561032f57600080fd5b508051602090910151909750955085156104285788158061036a57508960018a0381518110151561035c57fe5b602090810290910101518710155b1561038d57868a8a81518110151561037e57fe5b60209081029091010152610421565b600094505b89858151811015156103a057fe5b6020908102909101015187106103bb57600190940193610392565b8893505b848411156104075789600185038151811015156103d857fe5b906020019060200201518a858151811015156103f057fe5b6020908102909101015260001993909301926103bf565b868a8681518110151561041657fe5b602090810290910101525b6001909801975b60019097019661026b565b60025489101561044b5760015460009b509b506104f0565b6002890615156104c65789600160028b040381518110151561046957fe5b6020908102909101015191508960028a0481518110151561048657fe5b60209081029091010151905060026fffffffffffffffffffffffffffffffff83830116046fffffffffffffffffffffffffffffffff1660010292506104e8565b8960026000198b01048151811015156104db57fe5b9060200190602002015192505b8260019b509b505b505050505050505050509091565b60035460ff16151561050f57600080fd5b6003546101009004600160a060020a0316331461052b57600080fd5b60048054600090811061053a57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561058c57600080fd5b505af11580156105a0573d6000803e3d6000fd5b50505050600460018154811015156105b457fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561060657600080fd5b505af115801561061a573d6000803e3d6000fd5b505050506004600281548110151561062e57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561068057600080fd5b505af1158015610694573d6000803e3d6000fd5b50505050600460038154811015156106a857fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505060048081548110151561072157fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506004600581548110151561079b57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b505050506004600681548110151561081557fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506004600781548110151561088f57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050506004600881548110151561090957fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561095b57600080fd5b505af115801561096f573d6000803e3d6000fd5b505050506004600981548110151561098357fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b5050505050565b60008060006109fd610a10565b91509150801515610a0a57fe5b50919050565b60015460005460ff169091565b6004805482908110610a2b57fe5b600091825260209091200154600160a060020a0316905081565b60025481565b60005b600454811015610b445781600160a060020a03166323b872dd33600484815481101515610a7757fe5b600091825260209091200154600454600160a060020a0390911690610ab1906fffffffffffffffffffffffffffffffff808a169116610cdd565b6040805160e060020a63ffffffff8716028152600160a060020a0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b158015610b0557600080fd5b505af1158015610b19573d6000803e3d6000fd5b505050506040513d6020811015610b2f57600080fd5b50511515610b3c57600080fd5b600101610a4e565b505050565b60035460ff1615610b5957600080fd5b6003546101009004600160a060020a03163314610b7557600080fd5b8051600480546001808201835560008390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b918201805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039687161790915560208601518454808401865584018054831691871691909117905560408601518454808401865584018054831691871691909117905560608601518454808401865584018054831691871691909117905560808601518454808401865584018054831691871691909117905560a08601518454808401865584018054831691871691909117905560c08601518454808401865584018054831691871691909117905560e0860151845480840186558401805483169187169190911790556101008601518454808401865584018054831691871691909117905561012090950151835480830190945592909101805490941691909216179091556003805460ff19169091179055565b6000808211610ceb57600080fd5b8183811515610cf657fe5b0493925050505600a165627a7a7230582072f72d40e3e1ef8c1c0f8771429d7c48dc5f94b23eb3430bf71c863c63a731cb0029

Deployed Bytecode

0x60806040526004361061008a5763ffffffff60e060020a6000350416631504460f811461008f57806318178358146100a95780631a43c338146100be57806325c33e13146100ec57806357de26a41461010457806359e02dd71461012b5780635b69a7d814610140578063e35d106d14610174578063eee9239514610189578063f6061c08146101ad575b600080fd5b34801561009b57600080fd5b506100a76004356101f2565b005b3480156100b557600080fd5b506100a7610211565b3480156100ca57600080fd5b506100d361021d565b6040805192835290151560208301528051918290030190f35b3480156100f857600080fd5b506100a76004356104fe565b34801561011057600080fd5b506101196109f0565b60408051918252519081900360200190f35b34801561013757600080fd5b506100d3610a10565b34801561014c57600080fd5b50610158600435610a1d565b60408051600160a060020a039092168252519081900360200190f35b34801561018057600080fd5b50610119610a45565b34801561019557600080fd5b506100a7600435600160a060020a0360243516610a4b565b3480156101b957600080fd5b50604080516101408181019092526100a791369160049161014491908390600a90839083908082843750939650610b4995505050505050565b6101fa61021d565b6000805460ff191691151591909117905560015550565b61021b60006101f2565b565b6000806060600080600080600080600080600060048054905060405190808252806020026020018201604052801561025f578160200160208202803883390190505b50995060009850600097505b60045488101561043357600480548990811061028357fe5b600091825260209091200154600160a060020a0316156104285760048054899081106102ab57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a03166359e02dd76040518163ffffffff1660e060020a0281526004016040805180830381600087803b15801561030557600080fd5b505af1158015610319573d6000803e3d6000fd5b505050506040513d604081101561032f57600080fd5b508051602090910151909750955085156104285788158061036a57508960018a0381518110151561035c57fe5b602090810290910101518710155b1561038d57868a8a81518110151561037e57fe5b60209081029091010152610421565b600094505b89858151811015156103a057fe5b6020908102909101015187106103bb57600190940193610392565b8893505b848411156104075789600185038151811015156103d857fe5b906020019060200201518a858151811015156103f057fe5b6020908102909101015260001993909301926103bf565b868a8681518110151561041657fe5b602090810290910101525b6001909801975b60019097019661026b565b60025489101561044b5760015460009b509b506104f0565b6002890615156104c65789600160028b040381518110151561046957fe5b6020908102909101015191508960028a0481518110151561048657fe5b60209081029091010151905060026fffffffffffffffffffffffffffffffff83830116046fffffffffffffffffffffffffffffffff1660010292506104e8565b8960026000198b01048151811015156104db57fe5b9060200190602002015192505b8260019b509b505b505050505050505050509091565b60035460ff16151561050f57600080fd5b6003546101009004600160a060020a0316331461052b57600080fd5b60048054600090811061053a57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561058c57600080fd5b505af11580156105a0573d6000803e3d6000fd5b50505050600460018154811015156105b457fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561060657600080fd5b505af115801561061a573d6000803e3d6000fd5b505050506004600281548110151561062e57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561068057600080fd5b505af1158015610694573d6000803e3d6000fd5b50505050600460038154811015156106a857fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505060048081548110151561072157fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506004600581548110151561079b57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b505050506004600681548110151561081557fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506004600781548110151561088f57fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050506004600881548110151561090957fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b15801561095b57600080fd5b505af115801561096f573d6000803e3d6000fd5b505050506004600981548110151561098357fe5b60009182526020822001546040805160e060020a6325c33e13028152600481018590529051600160a060020a03909216926325c33e139260248084019382900301818387803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b5050505050565b60008060006109fd610a10565b91509150801515610a0a57fe5b50919050565b60015460005460ff169091565b6004805482908110610a2b57fe5b600091825260209091200154600160a060020a0316905081565b60025481565b60005b600454811015610b445781600160a060020a03166323b872dd33600484815481101515610a7757fe5b600091825260209091200154600454600160a060020a0390911690610ab1906fffffffffffffffffffffffffffffffff808a169116610cdd565b6040805160e060020a63ffffffff8716028152600160a060020a0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b158015610b0557600080fd5b505af1158015610b19573d6000803e3d6000fd5b505050506040513d6020811015610b2f57600080fd5b50511515610b3c57600080fd5b600101610a4e565b505050565b60035460ff1615610b5957600080fd5b6003546101009004600160a060020a03163314610b7557600080fd5b8051600480546001808201835560008390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b918201805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039687161790915560208601518454808401865584018054831691871691909117905560408601518454808401865584018054831691871691909117905560608601518454808401865584018054831691871691909117905560808601518454808401865584018054831691871691909117905560a08601518454808401865584018054831691871691909117905560c08601518454808401865584018054831691871691909117905560e0860151845480840186558401805483169187169190911790556101008601518454808401865584018054831691871691909117905561012090950151835480830190945592909101805490941691909216179091556003805460ff19169091179055565b6000808211610ceb57600080fd5b8183811515610cf657fe5b0493925050505600a165627a7a7230582072f72d40e3e1ef8c1c0f8771429d7c48dc5f94b23eb3430bf71c863c63a731cb0029

Swarm Source

bzzr://72f72d40e3e1ef8c1c0f8771429d7c48dc5f94b23eb3430bf71c863c63a731cb

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.