ETH Price: $2,092.01 (+1.55%)
 

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 Governance109252292020-09-24 12:09:281963 days ago1600949368IN
0x3Ce448Ee...eCe69014a
0 ETH0.0020001370.4
Set Governance109249482020-09-24 11:09:471963 days ago1600945787IN
0x3Ce448Ee...eCe69014a
0 ETH0.0025314289.1000016
Set Cream Y109249422020-09-24 11:07:481963 days ago1600945668IN
0x3Ce448Ee...eCe69014a
0 ETH0.00659528152

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

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: normalizer.sol
pragma solidity 0.5.17;

import './safeMath.sol';

interface Curve {
    function get_virtual_price() external view returns (uint);
}

interface Yearn {
    function getPricePerFullShare() external view returns (uint);
    function token() external view returns (address);
}

interface UnderlyingToken {
    function decimals() external view returns (uint8);
}

interface Compound {
    function exchangeRateStored() external view returns (uint);
    function underlying() external view returns (address);
}

interface Cream {
    function exchangeRateStored() external view returns (uint);
    function underlying() external view returns (address);
}

contract Normalizer {
    using SafeMath for uint;

    address public governance;
    address public creamY;
    mapping(address => bool) public native;
    mapping(address => bool) public yearn;
    mapping(address => bool) public curve;
    mapping(address => address) public curveSwap;
    mapping(address => bool) public vaults;
    mapping(address => bool) public compound;
    mapping(address => bool) public cream;
    mapping(address => uint) public underlyingDecimals;

    constructor() public {
        governance = msg.sender;

        native[0xdAC17F958D2ee523a2206206994597C13D831ec7] = true; // USDT
        native[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48] = true; // USDC
        native[0x4Fabb145d64652a948d72533023f6E7A623C7C53] = true; // BUSD
        native[0x0000000000085d4780B73119b644AE5ecd22b376] = true; // TUSD

        yearn[0xACd43E627e64355f1861cEC6d3a6688B31a6F952] = true; // vault yDAI
        yearn[0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a] = true; // vault yTUSD
        yearn[0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e] = true; // vault yUSDC
        yearn[0x2f08119C6f07c006695E079AAFc638b8789FAf18] = true; // vault yUSDT
        yearn[0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c] = true; // vault yCRV

        yearn[0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01] = true; // yDAI
        yearn[0xd6aD7a6750A7593E092a9B218d66C0A814a3436e] = true; // yUSDC
        yearn[0x83f798e925BcD4017Eb265844FDDAbb448f1707D] = true; // yUSDT
        yearn[0x73a052500105205d34Daf004eAb301916DA8190f] = true; // yTUSD
        yearn[0xF61718057901F84C4eEC4339EF8f0D86D2B45600] = true; // ySUSD

        yearn[0xC2cB1040220768554cf699b0d863A3cd4324ce32] = true; // bDAI
        yearn[0x26EA744E5B887E5205727f55dFBE8685e3b21951] = true; // bUSDC
        yearn[0xE6354ed5bC4b393a5Aad09f21c46E101e692d447] = true; // bUSDT
        yearn[0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE] = true; // bBUSD

        curve[0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2] = true; // cCompound
        curveSwap[0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2] = 0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56;
        curve[0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8] = true; // cYearn
        curveSwap[0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8] = 0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51;
        curve[0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B] = true; // cBUSD
        curveSwap[0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B] = 0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27;
        curve[0xC25a3A3b969415c80451098fa907EC722572917F] = true; // cSUSD
        curveSwap[0xC25a3A3b969415c80451098fa907EC722572917F] = 0xA5407eAE9Ba41422680e2e00537571bcC53efBfD;
        curve[0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8] = true; // cPAX
        curveSwap[0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8] = 0x06364f10B501e868329afBc005b3492902d6C763;

        compound[0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643] = true; // cDAI
        underlyingDecimals[0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643] = 1e18;
        compound[0x39AA39c021dfbaE8faC545936693aC917d5E7563] = true; // cUSDC
        underlyingDecimals[0x39AA39c021dfbaE8faC545936693aC917d5E7563] = 1e6;
        compound[0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9] = true; // cUSDT
        underlyingDecimals[0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9] = 1e6;

        cream[0x44fbeBd2F576670a6C33f6Fc0B00aA8c5753b322] = true; // crUSDC
        underlyingDecimals[0x44fbeBd2F576670a6C33f6Fc0B00aA8c5753b322] = 1e6;
        cream[0x797AAB1ce7c01eB727ab980762bA88e7133d2157] = true; // crUSDT
        underlyingDecimals[0x797AAB1ce7c01eB727ab980762bA88e7133d2157] = 1e6;
        cream[0x1FF8CDB51219a8838b52E9cAc09b71e591BC998e] = true; // crBUSD
        underlyingDecimals[0x1FF8CDB51219a8838b52E9cAc09b71e591BC998e] = 1e18;
    }

    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }

    function setCreamY(address _creamY) external {
        require(msg.sender == governance, "!governance");
        creamY = _creamY;
    }

    function getPrice(address token) external view returns (uint) {
        if (native[token] || token == creamY) {
            return 1e18;
        } else if (yearn[token]) {
            uint price = Yearn(token).getPricePerFullShare();
            // underlying of vault yCRV (yyCRV) is yCRV. Need to consider the price of yCRV
            if (token == 0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c) {
                 address udnerlying = Yearn(token).token();
                 uint underlyingPrice = Curve(curveSwap[udnerlying]).get_virtual_price();
                 price = price.mul(underlyingPrice).div(1e18);
            }
            return price;
        } else if (curve[token]) {
            return Curve(curveSwap[token]).get_virtual_price();
        } else if (compound[token]) {
            return getCompoundPrice(token);
        } else if (cream[token]) {
            return getCreamPrice(token);
        } else {
            return uint(0);
        }
    }

    function getCompoundPrice(address token) public view returns (uint) {
        address underlying = Compound(token).underlying();
        uint8 decimals = UnderlyingToken(underlying).decimals();
        return Compound(token).exchangeRateStored().mul(1e8).div(uint(10) ** decimals);
    }

    function getCreamPrice(address token) public view returns (uint) {
        address underlying = Cream(token).underlying();
        uint8 decimals = UnderlyingToken(underlying).decimals();
        return Cream(token).exchangeRateStored().mul(1e8).div(uint(10) ** decimals);
    }
}

File 2 of 2: safeMath.sol
pragma solidity 0.5.17;

library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0);
        uint256 c = a / b;
        if(a % b != 0)
            c = c + 1;
        return c;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cream","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creamY","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"curve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"curveSwap","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getCompoundPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getCreamPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"native","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_creamY","type":"address"}],"name":"setCreamY","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"underlyingDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vaults","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"yearn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50600080546001600160a01b0319908116331782557ff4f699a1ef35e64890828cc562d137cceeab28af8455567ef14b6ec385c8e441805460ff1990811660019081179092557fb7598821b71eb990d952f174dec3507a6d48dc93be8e23cae785c98ca310bfbb80548216831790557f09bc20e983ac290d985fc9a3e723c4a2cc4ff2de9aa4f853fdbd964cb792c1f680548216831790557f169a875b857ac28eb58f4e7cfffb50b5b96177c694f61f42f8b29eecd0bfee6880548216831790557f519ceb6c0c2ed0a5976fdac5fae5ea8c5f3df4086431cf6b1f5d5206d931692980548216831790557f5ecd83b074bae713f7377ef4c310a261ffc4a90549505a3b66925cf7d335333680548216831790557f7dd5d179f4ce125e927b1fca647d96717a542aa16af267fef0ca4f58e009cdce80548216831790557fd4b25891c330bb2c958c5cfee200a346ef1cf096724665f3c62bd0963792f2d080548216831790557f460a67a6717ba12851de2f7400d56bf2918f911cc8730938fac5715c6a8a235e80548216831790557fbaca8432cfc60e461be196fc3bd0da5e6d1660daa28a3a644df4241eb0852b1e80548216831790557f8a53ab9d5379dcd139c005c8c5e9180d3e51e40207886aca046d618f8be3b9c880548216831790557f6bb03eb6adc715926fe14593673bb894c388a1d9c7241e7da979bc792fad42ad80548216831790557f4e40e91bd9c6e34d95b2206c52d9a497d0c833f556ee9fb0c1774bccb0be45d080548216831790557fc8ff442ae1123071fe59bca77d82100f1a3e4cd7a8917e118987de0c901a9e9a80548216831790557fd2df2b0249c8885bb92068d61249094f9bac6f3e1baf75ab2c2b6c05802fee6880548216831790557faec146e5e1227c1fd28f89fa168173193ab5c4acb04c4a39c26551b6b83fef1880548216831790557fd29e47473ad4cd367a1af7c16bcdb8645c11a0235e1555bcd6f3319faadff3a680548216831790557f31789f65e2d738ca889a0671305f1abefddbdaa58ef2103fc4171101807a756e80548216831790557f2e35651a9981b84d3382e162960e5873da4f64086a28e4c79125631f04b7b9ce80548216831790557f13023624f9d5ee38af4d786449d9cb13205f9c96f0f0a100d08c6e8bac46542d8054841673a2b47e3d5c44877cca798226b7b8118f9bfb7a561790557fdb0d3319e3aa65f55fe423a9dae5b99f192ba351d568d48d402ccf1ab347382e80548216831790557fa9f20595ec86fea0d46d4432c970c4e54ca31ad9095efd7afe1d3b07ffd0ad9f805484167345f783cce6b7ff23b2ab2d70e416cdb7d6055f511790557f1e3eed9690704035a04eacaceca34e96bce22d281827df84322a115037131b9380548216831790557fcdff4c2f98e0579fc409cc8da960760fb089bb4f6ca92016f0771e595d4c55b4805484167379a8c46dea5ada233abaffd40f3a0a2b1e5a4f271790557f2cc523539df09bf8fc58b1b7e1f57626a99580a48ba00cdb6d01b87326a37f5a80548216831790557f4baac6fd997a9e26ebb81b7386f8f698fe295374d3940222e69e6e7337aafa3e8054841673a5407eae9ba41422680e2e00537571bcc53efbfd1790557fadde5cad457c16f458b7572238487440577e8b2ab975f9b364f826f258a787f980548216831790557fb13d1c11db515a4d6202c163adda00720b16a3f2ef9292feeac2820f1cbb740e80549093167306364f10b501e868329afbc005b3492902d6c763179092557f57d2f12ab94cd750d83294676c296e9ab4ccfa80086297e063de98f14554b51a8054831682179055670de0b6b3a76400007f4c8571269d605467d44763c73e8fa19be535e4e50ea0ba639c10705cb1c835598190557fa10975ac63473f4436b9928fc51aef783a6bcf7e1e8e10340b39cce66a17c73d8054841683179055620f42407fbccdc544072f1d154275788f84bcf1a9429a7563287106936a820738716d6e848190557f5577acca8c45166da5d0474d64afba9de10451e361afc35aa3a8b50d0efde83080548516841790557f27748cc516f06e168d2c78c65f3a9e991d4f090c5221adc3adf56ee1eb4838fb8190557f080495109d031c2758f1a52dec095d7c81db39ba4d38f15e1496076ddaa1a2dc80548516841790557ff46dc0fa7bfa630133c0853067950ae5255fb16598610441e8b831fc4e942b228190557fe6f51ce7410aa34bb4dcab439985110ef5ff6d91284f42a4129240d91799b72e80548516841790557feb8ad0f142a0378be91b72648db03b58b826fa45cd3725f7b7ee48506eaccbd455731ff8cdb51219a8838b52e9cac09b71e591bc998e9093527f5d73c783de0deb9caba000412d8444002d98a6918f4736f31ab0e3c8c31c9eb9805490921617905560096020527f6ada9550c2a0864b6ee7fa2bc8528d08919a5fae146037830d7957e0353f61d655610ae0806107126000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80635aa6e675116100975780639bb0fb4f116100665780639bb0fb4f1461027e578063a622ee7c146102a4578063ab033ea9146102ca578063dfc71be9146102f0576100f5565b80635aa6e6751461024657806367e67e331461024e5780637ec21cd914610276578063974c647214610220576100f5565b806321c0dcc4116100d357806321c0dcc4146101ae578063284dac23146101d457806341976e09146101fa5780635499d02614610220576100f5565b806306d8d7db146100fa57806308390a9d146101345780631b1c4f231461016c575b600080fd5b6101206004803603602081101561011057600080fd5b50356001600160a01b0316610316565b604080519115158252519081900360200190f35b61015a6004803603602081101561014a57600080fd5b50356001600160a01b031661032b565b60408051918252519081900360200190f35b6101926004803603602081101561018257600080fd5b50356001600160a01b031661033d565b604080516001600160a01b039092168252519081900360200190f35b610120600480360360208110156101c457600080fd5b50356001600160a01b0316610358565b610120600480360360208110156101ea57600080fd5b50356001600160a01b031661036d565b61015a6004803603602081101561021057600080fd5b50356001600160a01b0316610382565b61015a6004803603602081101561023657600080fd5b50356001600160a01b031661069a565b61019261080e565b6102746004803603602081101561026457600080fd5b50356001600160a01b031661081d565b005b61019261088c565b6101206004803603602081101561029457600080fd5b50356001600160a01b031661089b565b610120600480360360208110156102ba57600080fd5b50356001600160a01b03166108b0565b610274600480360360208110156102e057600080fd5b50356001600160a01b03166108c5565b6101206004803603602081101561030657600080fd5b50356001600160a01b0316610934565b60046020526000908152604090205460ff1681565b60096020526000908152604090205481565b6005602052600090815260409020546001600160a01b031681565b60086020526000908152604090205460ff1681565b60076020526000908152604090205460ff1681565b6001600160a01b03811660009081526002602052604081205460ff16806103b657506001546001600160a01b038381169116145b156103ca5750670de0b6b3a7640000610695565b6001600160a01b03821660009081526003602052604090205460ff1615610598576000826001600160a01b03166377c7b8fc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042657600080fd5b505afa15801561043a573d6000803e3d6000fd5b505050506040513d602081101561045057600080fd5b50519050735dbcf33d8c2e976c6b560249878e6f1491bca25c6001600160a01b0384161415610591576000836001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b457600080fd5b505afa1580156104c8573d6000803e3d6000fd5b505050506040513d60208110156104de57600080fd5b50516001600160a01b038082166000908152600560209081526040808320548151630176f71760e71b815291519596509294929093169263bb7b8b809260048083019392829003018186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b5051905061058c670de0b6b3a7640000610580858463ffffffff61094916565b9063ffffffff6109ab16565b925050505b9050610695565b6001600160a01b03821660009081526004602052604090205460ff161561063d576001600160a01b03808316600090815260056020908152604091829020548251630176f71760e71b8152925193169263bb7b8b80926004808201939291829003018186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d602081101561063457600080fd5b50519050610695565b6001600160a01b03821660009081526007602052604090205460ff1615610667576105918261069a565b6001600160a01b03821660009081526008602052604090205460ff1615610691576105918261069a565b5060005b919050565b600080826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa1580156106ea573d6000803e3d6000fd5b505050506040513d602081101561070057600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d602081101561077257600080fd5b50516040805163182df0f560e01b815290519192506108069160ff8416600a0a91610580916305f5e100916001600160a01b038a169163182df0f591600480820192602092909190829003018186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b50519063ffffffff61094916565b949350505050565b6000546001600160a01b031681565b6000546001600160a01b0316331461086a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60026020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b6000546001600160a01b03163314610912576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60036020526000908152604090205460ff1681565b600082610958575060006109a5565b8282028284828161096557fe5b04146109a25760405162461bcd60e51b8152600401808060200182810382526021815260200180610a8b6021913960400191505060405180910390fd5b90505b92915050565b60006109a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610a745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a39578181015183820152602001610a21565b50505050905090810190601f168015610a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a8057fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582028c03e6c95061da135b862f229246ff5b147f1f259ccac86d3ea89f0353f12b064736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80635aa6e675116100975780639bb0fb4f116100665780639bb0fb4f1461027e578063a622ee7c146102a4578063ab033ea9146102ca578063dfc71be9146102f0576100f5565b80635aa6e6751461024657806367e67e331461024e5780637ec21cd914610276578063974c647214610220576100f5565b806321c0dcc4116100d357806321c0dcc4146101ae578063284dac23146101d457806341976e09146101fa5780635499d02614610220576100f5565b806306d8d7db146100fa57806308390a9d146101345780631b1c4f231461016c575b600080fd5b6101206004803603602081101561011057600080fd5b50356001600160a01b0316610316565b604080519115158252519081900360200190f35b61015a6004803603602081101561014a57600080fd5b50356001600160a01b031661032b565b60408051918252519081900360200190f35b6101926004803603602081101561018257600080fd5b50356001600160a01b031661033d565b604080516001600160a01b039092168252519081900360200190f35b610120600480360360208110156101c457600080fd5b50356001600160a01b0316610358565b610120600480360360208110156101ea57600080fd5b50356001600160a01b031661036d565b61015a6004803603602081101561021057600080fd5b50356001600160a01b0316610382565b61015a6004803603602081101561023657600080fd5b50356001600160a01b031661069a565b61019261080e565b6102746004803603602081101561026457600080fd5b50356001600160a01b031661081d565b005b61019261088c565b6101206004803603602081101561029457600080fd5b50356001600160a01b031661089b565b610120600480360360208110156102ba57600080fd5b50356001600160a01b03166108b0565b610274600480360360208110156102e057600080fd5b50356001600160a01b03166108c5565b6101206004803603602081101561030657600080fd5b50356001600160a01b0316610934565b60046020526000908152604090205460ff1681565b60096020526000908152604090205481565b6005602052600090815260409020546001600160a01b031681565b60086020526000908152604090205460ff1681565b60076020526000908152604090205460ff1681565b6001600160a01b03811660009081526002602052604081205460ff16806103b657506001546001600160a01b038381169116145b156103ca5750670de0b6b3a7640000610695565b6001600160a01b03821660009081526003602052604090205460ff1615610598576000826001600160a01b03166377c7b8fc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042657600080fd5b505afa15801561043a573d6000803e3d6000fd5b505050506040513d602081101561045057600080fd5b50519050735dbcf33d8c2e976c6b560249878e6f1491bca25c6001600160a01b0384161415610591576000836001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b457600080fd5b505afa1580156104c8573d6000803e3d6000fd5b505050506040513d60208110156104de57600080fd5b50516001600160a01b038082166000908152600560209081526040808320548151630176f71760e71b815291519596509294929093169263bb7b8b809260048083019392829003018186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b5051905061058c670de0b6b3a7640000610580858463ffffffff61094916565b9063ffffffff6109ab16565b925050505b9050610695565b6001600160a01b03821660009081526004602052604090205460ff161561063d576001600160a01b03808316600090815260056020908152604091829020548251630176f71760e71b8152925193169263bb7b8b80926004808201939291829003018186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d602081101561063457600080fd5b50519050610695565b6001600160a01b03821660009081526007602052604090205460ff1615610667576105918261069a565b6001600160a01b03821660009081526008602052604090205460ff1615610691576105918261069a565b5060005b919050565b600080826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa1580156106ea573d6000803e3d6000fd5b505050506040513d602081101561070057600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d602081101561077257600080fd5b50516040805163182df0f560e01b815290519192506108069160ff8416600a0a91610580916305f5e100916001600160a01b038a169163182df0f591600480820192602092909190829003018186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b50519063ffffffff61094916565b949350505050565b6000546001600160a01b031681565b6000546001600160a01b0316331461086a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60026020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b6000546001600160a01b03163314610912576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60036020526000908152604090205460ff1681565b600082610958575060006109a5565b8282028284828161096557fe5b04146109a25760405162461bcd60e51b8152600401808060200182810382526021815260200180610a8b6021913960400191505060405180910390fd5b90505b92915050565b60006109a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610a745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a39578181015183820152602001610a21565b50505050905090810190601f168015610a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a8057fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582028c03e6c95061da135b862f229246ff5b147f1f259ccac86d3ea89f0353f12b064736f6c63430005110032

Deployed Bytecode Sourcemap

653:5630:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;653:5630:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;854:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;854:37:0;-1:-1:-1;;;;;854:37:0;;:::i;:::-;;;;;;;;;;;;;;;;;;1080:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1080:50:0;-1:-1:-1;;;;;1080:50:0;;:::i;:::-;;;;;;;;;;;;;;;;897:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;897:44:0;-1:-1:-1;;;;;897:44:0;;:::i;:::-;;;;-1:-1:-1;;;;;897:44:0;;;;;;;;;;;;;;1037:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1037:37:0;-1:-1:-1;;;;;1037:37:0;;:::i;991:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;991:40:0;-1:-1:-1;;;;;991:40:0;;:::i;4737:967::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4737:967:0;-1:-1:-1;;;;;4737:967:0;;:::i;6003:278::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6003:278:0;-1:-1:-1;;;;;6003:278:0;;:::i;709:25::-;;;:::i;4595:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4595:136:0;-1:-1:-1;;;;;4595:136:0;;:::i;:::-;;740:21;;;:::i;767:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;767:38:0;-1:-1:-1;;;;;767:38:0;;:::i;947:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;947:38:0;-1:-1:-1;;;;;947:38:0;;:::i;4437:152::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4437:152:0;-1:-1:-1;;;;;4437:152:0;;:::i;811:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;811:37:0;-1:-1:-1;;;;;811:37:0;;:::i;854:::-;;;;;;;;;;;;;;;:::o;1080:50::-;;;;;;;;;;;;;:::o;897:44::-;;;;;;;;;;;;-1:-1:-1;;;;;897:44:0;;:::o;1037:37::-;;;;;;;;;;;;;;;:::o;991:40::-;;;;;;;;;;;;;;;:::o;4737:967::-;-1:-1:-1;;;;;4813:13:0;;4793:4;4813:13;;;:6;:13;;;;;;;;;:32;;-1:-1:-1;4839:6:0;;-1:-1:-1;;;;;4830:15:0;;;4839:6;;4830:15;4813:32;4809:889;;;-1:-1:-1;4868:4:0;4861:11;;4809:889;-1:-1:-1;;;;;4893:12:0;;;;;;:5;:12;;;;;;;;4889:809;;;4921:10;4940:5;-1:-1:-1;;;;;4934:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4934:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4934:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4934:35:0;;-1:-1:-1;5088:42:0;-1:-1:-1;;;;;5079:51:0;;;5075:285;;;5151:18;5178:5;-1:-1:-1;;;;;5172:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5172:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5172:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5172:20:0;-1:-1:-1;;;;;5240:21:0;;;5211:20;5240:21;;;:9;5172:20;5240:21;;;;;;;;5234:48;;-1:-1:-1;;;5234:48:0;;;;5172:20;;-1:-1:-1;5211:20:0;;5240:21;;;;;5234:46;;:48;;;;;5172:20;5234:48;;;;;5240:21;5234:48;;;5:2:-1;;;;30:1;27;20:12;5:2;5234:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5234:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5234:48:0;;-1:-1:-1;5309:36:0;5340:4;5309:26;:5;5234:48;5309:26;:9;:26;:::i;:::-;:30;:36;:30;:36;:::i;:::-;5301:44;;5075:285;;;5380:5;-1:-1:-1;5373:12:0;;4889:809;-1:-1:-1;;;;;5406:12:0;;;;;;:5;:12;;;;;;;;5402:296;;;-1:-1:-1;;;;;5447:16:0;;;;;;;:9;:16;;;;;;;;;;5441:43;;-1:-1:-1;;;5441:43:0;;;;5447:16;;;5441:41;;:43;;;;;5447:16;5441:43;;;;;;5447:16;5441:43;;;5:2:-1;;;;30:1;27;20:12;5:2;5441:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5441:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5441:43:0;;-1:-1:-1;5434:50:0;;5402:296;-1:-1:-1;;;;;5505:15:0;;;;;;:8;:15;;;;;;;;5501:197;;;5543:23;5560:5;5543:16;:23::i;5501:197::-;-1:-1:-1;;;;;5587:12:0;;;;;;:5;:12;;;;;;;;5583:115;;;5622:20;5636:5;5622:13;:20::i;5583:115::-;-1:-1:-1;5685:1:0;5583:115;4737:967;;;:::o;6003:278::-;6062:4;6078:18;6105:5;-1:-1:-1;;;;;6099:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6099:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6099:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6099:25:0;6151:38;;;-1:-1:-1;;;6151:38:0;;;;6099:25;;-1:-1:-1;6134:14:0;;-1:-1:-1;;;;;6151:36:0;;;;;:38;;;;;6099:25;;6151:38;;;;;;;:36;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;6151:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6151:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6151:38:0;6206:33;;;-1:-1:-1;;;6206:33:0;;;;6151:38;;-1:-1:-1;6206:68:0;;6253:20;;;6258:2;6253:20;;6206:42;;6244:3;;-1:-1:-1;;;;;6206:31:0;;;;;:33;;;;;6151:38;;6206:33;;;;;;;;:31;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;6206:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6206:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6206:33:0;;:42;:37;:42;:::i;:68::-;6199:75;6003:278;-1:-1:-1;;;;6003:278:0:o;709:25::-;;;-1:-1:-1;;;;;709:25:0;;:::o;4595:136::-;4672:10;;-1:-1:-1;;;;;4672:10:0;4658;:24;4650:48;;;;;-1:-1:-1;;;4650:48:0;;;;;;;;;;;;-1:-1:-1;;;4650:48:0;;;;;;;;;;;;;;;4708:6;:16;;-1:-1:-1;;;;;;4708:16:0;-1:-1:-1;;;;;4708:16:0;;;;;;;;;;4595:136::o;740:21::-;;;-1:-1:-1;;;;;740:21:0;;:::o;767:38::-;;;;;;;;;;;;;;;:::o;947:::-;;;;;;;;;;;;;;;:::o;4437:152::-;4522:10;;-1:-1:-1;;;;;4522:10:0;4508;:24;4500:48;;;;;-1:-1:-1;;;4500:48:0;;;;;;;;;;;;-1:-1:-1;;;4500:48:0;;;;;;;;;;;;;;;4558:10;:24;;-1:-1:-1;;;;;;4558:24:0;-1:-1:-1;;;;;4558:24:0;;;;;;;;;;4437:152::o;811:37::-;;;;;;;;;;;;;;;:::o;527:229:1:-;579:4;599:6;595:45;;-1:-1:-1;628:1:1;621:8;;595:45;659:5;;;663:1;659;:5;:1;682:5;;;;;:10;674:56;;;;-1:-1:-1;;;674:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;748:1;-1:-1:-1;527:229:1;;;;;:::o;761:121::-;813:4;836:39;840:1;843;836:39;;;;;;;;;;;;;;;;;967:4;1064:12;1057:5;1049:28;;;;-1:-1:-1;;;1049:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1049:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1087:6;1100:1;1096;:5;;;;;;;887:240;-1:-1:-1;;;;;887:240:1:o

Swarm Source

bzzr://28c03e6c95061da135b862f229246ff5b147f1f259ccac86d3ea89f0353f12b0

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.