ETH Price: $3,290.80 (-5.00%)

Contract

0xdddf6B2C719d04f5F87230dD02C12EA062799b29
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set White List F...121027462021-03-24 16:47:221343 days ago1616604442IN
0xdddf6B2C...062799b29
0 ETH0.0185394185
Set White List F...121027362021-03-24 16:45:391343 days ago1616604339IN
0xdddf6B2C...062799b29
0 ETH0.0206997210
Set White List F...121027182021-03-24 16:42:541343 days ago1616604174IN
0xdddf6B2C...062799b29
0 ETH0.02191733223
Set White List F...121027032021-03-24 16:40:031343 days ago1616604003IN
0xdddf6B2C...062799b29
0 ETH0.0251312223
Set Market121026102021-03-24 16:21:001343 days ago1616602860IN
0xdddf6B2C...062799b29
0 ETH0.00942016216.7
0x60806040121023002021-03-24 15:11:471343 days ago1616598707IN
 Create: MarketRegulator
0 ETH0.1606268185

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MarketRegulator

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-24
*/

// File: contracts/interface/IERC20.sol

pragma solidity >=0.6.0 <0.8.0;

interface IERC20 {
    function symbol() external returns (string memory _symbol);
}

// File: contracts/interface/MarketInterfaces.sol

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

contract ShardsMarketAdminStorage {
    /**
     * @notice Administrator for this contract
     */
    address public admin;
    /**
     * @notice Governance for this contract which has the right to adjust the parameters of market
     */
    address public governance;

    /**
     * @notice Active brains of ShardsMarket
     */
    address public implementation;
}

contract IShardsMarketStorge is ShardsMarketAdminStorage {
    address public shardsFactory;

    address public factory;

    address public router;

    address public dev;

    address public platformFund;

    address public shardsFarm;

    address public buyoutProposals;

    address public regulator;

    address public shardAdditionProposal;

    address public WETH;
    //The totalSupply of shard in the market
    uint256 public totalSupply = 10000000000000000000000;
    //Stake Time limit: 60*60*24*5
    uint256 public deadlineForStake = 432000;
    //Redeem Time limit:60*60*24*7
    uint256 public deadlineForRedeem = 604800;
    //The Proportion of the shardsCreator's shards
    uint256 public shardsCreatorProportion = 5;
    //The Proportion of the platform's shards
    uint256 public platformProportion = 5;
    //The Proportion for dev of the market profit,the rest of profit is given to platformFund
    uint256 public profitProportionForDev = 20;
    //max
    uint256 internal constant max = 100;
    //shardPool count
    uint256 public shardPoolIdCount;
    // all of the shardpoolId
    uint256[] internal allPools;
    // Info of each pool.
    mapping(uint256 => shardPool) public poolInfo;
    //shardPool struct
    struct shardPool {
        address creator; //shard  creator
        ShardsState state; //shard state
        uint256 createTime;
        uint256 deadlineForStake;
        uint256 deadlineForRedeem;
        uint256 balanceOfWantToken; // all the stake amount of the wantToken in this pool
        uint256 minWantTokenAmount; //Minimum subscription required by the creator
        bool isCreatorWithDraw; //Does the creator withdraw wantToken
        address wantToken; // token address Requested by the creator for others to stake
        uint256 openingPrice;
    }
    //shard of each pool
    mapping(uint256 => shard) public shardInfo;
    //shard struct
    struct shard {
        string shardName;
        string shardSymbol;
        address shardToken;
        uint256 totalShardSupply;
        uint256 shardForCreator;
        uint256 shardForPlatform;
        uint256 shardForStakers;
        uint256 burnAmount;
    }
    //user info of each pool
    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    struct UserInfo {
        uint256 amount;
        bool isWithdrawShard;
    }

    enum ShardsState {
        Live,
        Listed,
        ApplyForBuyout,
        Buyout,
        SubscriptionFailed,
        Pending,
        AuditFailed,
        ApplyForAddition
    }

    struct Token721 {
        address contractAddress;
        uint256 tokenId;
    }
    struct Token1155 {
        address contractAddress;
        uint256 tokenId;
        uint256 amount;
    }
    //nfts of shard creator stakes in each pool
    mapping(uint256 => Token721[]) internal Token721s;
    mapping(uint256 => Token1155[]) internal Token1155s;
}

abstract contract IShardsMarket is IShardsMarketStorge {
    event ShardCreated(
        uint256 shardPoolId,
        address indexed creator,
        string shardName,
        string shardSymbol,
        uint256 minWantTokenAmount,
        uint256 createTime,
        uint256 totalSupply,
        address wantToken
    );
    event Stake(address indexed sender, uint256 shardPoolId, uint256 amount);
    event Redeem(address indexed sender, uint256 shardPoolId, uint256 amount);
    event SettleSuccess(
        uint256 indexed shardPoolId,
        uint256 platformAmount,
        uint256 shardForStakers,
        uint256 balanceOfWantToken,
        uint256 fee,
        address shardToken
    );
    event SettleFail(uint256 indexed shardPoolId);
    event ApplyForBuyout(
        address indexed sender,
        uint256 indexed proposalId,
        uint256 indexed _shardPoolId,
        uint256 shardAmount,
        uint256 wantTokenAmount,
        uint256 voteDeadline,
        uint256 buyoutTimes,
        uint256 price,
        uint256 blockHeight
    );
    event Vote(
        address indexed sender,
        uint256 indexed proposalId,
        uint256 indexed _shardPoolId,
        bool isAgree,
        uint256 voteAmount
    );
    event VoteResultConfirm(
        uint256 indexed proposalId,
        uint256 indexed _shardPoolId,
        bool isPassed
    );

    // user operation
    function createShard(
        Token721[] calldata Token721s,
        Token1155[] calldata Token1155s,
        string memory shardName,
        string memory shardSymbol,
        uint256 minWantTokenAmount,
        address wantToken
    ) external virtual returns (uint256 shardPoolId);

    function stakeETH(uint256 _shardPoolId) external payable virtual;

    function stake(uint256 _shardPoolId, uint256 amount) external virtual;

    function redeem(uint256 _shardPoolId, uint256 amount) external virtual;

    function redeemETH(uint256 _shardPoolId, uint256 amount) external virtual;

    function settle(uint256 _shardPoolId) external virtual;

    function redeemInSubscriptionFailed(uint256 _shardPoolId) external virtual;

    function usersWithdrawShardToken(uint256 _shardPoolId) external virtual;

    function creatorWithdrawWantToken(uint256 _shardPoolId) external virtual;

    function applyForBuyout(uint256 _shardPoolId, uint256 wantTokenAmount)
        external
        virtual
        returns (uint256 proposalId);

    function applyForBuyoutETH(uint256 _shardPoolId)
        external
        payable
        virtual
        returns (uint256 proposalId);

    function vote(uint256 _shardPoolId, bool isAgree) external virtual;

    function voteResultConfirm(uint256 _shardPoolId)
        external
        virtual
        returns (bool result);

    function exchangeForWantToken(uint256 _shardPoolId, uint256 shardAmount)
        external
        virtual
        returns (uint256 wantTokenAmount);

    function redeemForBuyoutFailed(uint256 _proposalId)
        external
        virtual
        returns (uint256 shardTokenAmount, uint256 wantTokenAmount);

    //governance operation
    function setShardsCreatorProportion(uint256 _shardsCreatorProportion)
        external
        virtual;

    function setPlatformProportion(uint256 _platformProportion)
        external
        virtual;

    function setTotalSupply(uint256 _totalSupply) external virtual;

    function setDeadlineForRedeem(uint256 _deadlineForRedeem) external virtual;

    function setDeadlineForStake(uint256 _deadlineForStake) external virtual;

    function setProfitProportionForDev(uint256 _profitProportionForDev)
        external
        virtual;

    function setShardsFarm(address _shardsFarm) external virtual;

    function setRegulator(address _regulator) external virtual;

    function setFactory(address _factory) external virtual;

    function setShardsFactory(address _shardsFactory) external virtual;

    function setRouter(address _router) external virtual;

    //admin operation
    function setPlatformFund(address _platformFund) external virtual;

    function setDev(address _dev) external virtual;

    //function shardAudit(uint256 _shardPoolId, bool isPassed) external virtual;

    //view function
    function getPrice(uint256 _shardPoolId)
        public
        view
        virtual
        returns (uint256 currentPrice);

    function getAllPools()
        external
        view
        virtual
        returns (uint256[] memory _pools);

    function getTokens(uint256 shardPoolId)
        external
        view
        virtual
        returns (Token721[] memory _token721s, Token1155[] memory _token1155s);
}

// File: contracts/MarketRegulator.sol

pragma solidity 0.6.12;



contract MarketRegulator {
    constructor() public {
        admin = msg.sender;
    }

    event BlacklistAdd(uint256 indexed _shardPoolId);
    event BlacklistRemove(uint256 indexed _shardPoolId);

    address public admin;
    address public market;

    mapping(address => uint256) internal whiteListIndexForWantToken; // savedIndex = realIndex + 1
    struct whiteListToken {
        address token;
        string symbol;
    }
    whiteListToken[] internal wantTokenWhiteList;

    mapping(uint256 => uint256) internal blacklistIndexForShardPool;
    uint256[] internal shardPoolBlacklist;

    function setWhiteListForWantToken(address wantToken, bool isListed)
        external
    {
        require(msg.sender == admin, "UNAUTHORIZED");
        require(wantToken != address(0), "INVALID INPUT");
        uint256 index = whiteListIndexForWantToken[wantToken];
        require(
            (index > 0 && !isListed) || (index == 0 && isListed),
            "AlREADY SET"
        );

        if (index > 0 && !isListed) {
            if (index < wantTokenWhiteList.length) {
                whiteListIndexForWantToken[
                    wantTokenWhiteList[wantTokenWhiteList.length - 1].token
                ] = index;
                wantTokenWhiteList[index - 1] = wantTokenWhiteList[
                    wantTokenWhiteList.length - 1
                ];
            }
            whiteListIndexForWantToken[wantToken] = 0;
            wantTokenWhiteList.pop();
        }
        if (index == 0 && isListed) {
            string memory tokenSymbol = IERC20(wantToken).symbol();
            wantTokenWhiteList.push(
                whiteListToken({token: wantToken, symbol: tokenSymbol})
            );
            whiteListIndexForWantToken[wantToken] = wantTokenWhiteList.length;
        }
    }

    function setBlacklistForShardPool(uint256 _shardPoolId, bool isListed)
        external
    {
        require(msg.sender == admin, "UNAUTHORIZED");
        require(
            _shardPoolId <= IShardsMarket(market).shardPoolIdCount(),
            "NOT EXIST"
        );

        uint256 index = blacklistIndexForShardPool[_shardPoolId];
        require(
            (index > 0 && !isListed) || (index == 0 && isListed),
            "AlREADY SET"
        );

        if (index > 0 && !isListed) {
            if (index < shardPoolBlacklist.length) {
                blacklistIndexForShardPool[
                    shardPoolBlacklist[shardPoolBlacklist.length - 1]
                ] = index;
                shardPoolBlacklist[index - 1] = shardPoolBlacklist[
                    shardPoolBlacklist.length - 1
                ];
            }
            blacklistIndexForShardPool[_shardPoolId] = 0;
            shardPoolBlacklist.pop();
            emit BlacklistRemove(_shardPoolId);
        }
        if (index == 0 && isListed) {
            shardPoolBlacklist.push(_shardPoolId);
            blacklistIndexForShardPool[_shardPoolId] = shardPoolBlacklist
                .length;
            emit BlacklistAdd(_shardPoolId);
        }
    }

    function setAdmin(address _admin) external {
        require(msg.sender == admin, "UNAUTHORIZED");
        admin = _admin;
    }

    function getWantTokenWhiteList()
        external
        view
        returns (whiteListToken[] memory _wantTokenWhiteList)
    {
        _wantTokenWhiteList = wantTokenWhiteList;
    }

    function getBlacklistPools()
        external
        view
        returns (uint256[] memory _blacklistPools)
    {
        _blacklistPools = shardPoolBlacklist;
    }

    function IsInWhiteList(address wantToken)
        external
        view
        returns (bool inTheList)
    {
        uint256 index = whiteListIndexForWantToken[wantToken];
        if (index == 0) inTheList = false;
        else inTheList = true;
    }

    function IsInBlackList(uint256 _shardPoolId)
        external
        view
        returns (bool inTheList)
    {
        uint256 index = blacklistIndexForShardPool[_shardPoolId];
        if (index == 0) inTheList = false;
        else inTheList = true;
    }

    function setMarket(address _market) external {
        require(msg.sender == admin, "UNAUTHORIZED");
        market = _market;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_shardPoolId","type":"uint256"}],"name":"BlacklistAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_shardPoolId","type":"uint256"}],"name":"BlacklistRemove","type":"event"},{"inputs":[{"internalType":"uint256","name":"_shardPoolId","type":"uint256"}],"name":"IsInBlackList","outputs":[{"internalType":"bool","name":"inTheList","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wantToken","type":"address"}],"name":"IsInWhiteList","outputs":[{"internalType":"bool","name":"inTheList","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlacklistPools","outputs":[{"internalType":"uint256[]","name":"_blacklistPools","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWantTokenWhiteList","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct MarketRegulator.whiteListToken[]","name":"_wantTokenWhiteList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"market","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shardPoolId","type":"uint256"},{"internalType":"bool","name":"isListed","type":"bool"}],"name":"setBlacklistForShardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"}],"name":"setMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wantToken","type":"address"},{"internalType":"bool","name":"isListed","type":"bool"}],"name":"setWhiteListForWantToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610e5d806100326000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806380f556051161006657806380f556051461010f578063c63516e414610124578063ecbdefec14610144578063f378ffe514610159578063f851a4401461016c5761009e565b806315195493146100a35780636dcea85f146100b8578063703706aa146100cb578063704b6c02146100de57806370ac2fd9146100f1575b600080fd5b6100b66100b1366004610c2f565b610174565b005b6100b66100c6366004610b07565b610400565b6100b66100d9366004610b29565b61044c565b6100b66100ec366004610b07565b610789565b6100f96107d5565b6040516101069190610c6b565b60405180910390f35b6101176108d6565b6040516101069190610c57565b610137610132366004610b07565b6108e5565b6040516101069190610d42565b61014c610917565b6040516101069190610cfe565b610137610167366004610bff565b61096f565b61011761098c565b6000546001600160a01b031633146101a75760405162461bcd60e51b815260040161019e90610d74565b60405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663173c5df56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f557600080fd5b505afa158015610209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022d9190610c17565b82111561024c5760405162461bcd60e51b815260040161019e90610d9a565b6000828152600460205260409020548015801590610268575081155b806102795750801580156102795750815b6102955760405162461bcd60e51b815260040161019e90610dbd565b6000811180156102a3575081155b15610380576005548110156103225780600460006005600160058054905003815481106102cc57fe5b600091825260208083209091015483528201929092526040019020556005805460001981019081106102fa57fe5b90600052602060002001546005600183038154811061031557fe5b6000918252602090912001555b600083815260046020526040812055600580548061033c57fe5b60019003818190600052602060002001600090559055827f8969860a7a7884833b7f0694af7cc0730ad22405f126b34050f37de0df28c35260405160405180910390a25b8015801561038b5750815b156103fb57600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018490555460008481526004602052604080822092909255905184917f7b864e6683b98812a740d62c5322570c214517da7a4dd1d0ba04fd41f2a1a9e391a25b505050565b6000546001600160a01b0316331461042a5760405162461bcd60e51b815260040161019e90610d74565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104765760405162461bcd60e51b815260040161019e90610d74565b6001600160a01b03821661049c5760405162461bcd60e51b815260040161019e90610d4d565b6001600160a01b03821660009081526002602052604090205480158015906104c2575081155b806104d35750801580156104d35750815b6104ef5760405162461bcd60e51b815260040161019e90610dbd565b6000811180156104fd575081155b15610633576003548110156105d957806002600060036001600380549050038154811061052657fe5b600091825260208083206002909202909101546001600160a01b0316835282019290925260400190205560038054600019810190811061056257fe5b90600052602060002090600202016003600183038154811061058057fe5b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001808401805492936105d59383860193600019908216156101000201160461099b565b5050505b6001600160a01b03831660009081526002602052604081205560038054806105fd57fe5b60008281526020812060026000199093019283020180546001600160a01b03191681559061062e6001830182610a20565b505090555b8015801561063e5750815b156103fb576060836001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068057600080fd5b505af1158015610694573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106bc9190810190610b64565b604080518082019091526001600160a01b03868116825260208083018481526003805460018101825560009190915284517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600290920291820180546001600160a01b031916919095161784559051805195965093949293610764937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909201920190610a67565b50506003546001600160a01b0386166000908152600260205260409020555050505050565b6000546001600160a01b031633146107b35760405162461bcd60e51b815260040161019e90610d74565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60606003805480602002602001604051908101604052809291908181526020016000905b828210156108cd576000848152602090819020604080518082018252600286810290930180546001600160a01b031682526001808201805485516101009382161593909302600019011695909504601f8101879004870282018701909452838152919490938582019390918301828280156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b505050505081525050815260200190600101906107f9565b50505050905090565b6001546001600160a01b031681565b6001600160a01b0381166000908152600260205260408120548061090c5760009150610911565b600191505b50919050565b6060600580548060200260200160405190810160405280929190818152602001828054801561096557602002820191906000526020600020905b815481526020019060010190808311610951575b5050505050905090565b6000818152600460205260408120548061090c5760009150610911565b6000546001600160a01b031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109d45780548555610a10565b82800160010185558215610a1057600052602060002091601f016020900482015b82811115610a105782548255916001019190600101906109f5565b50610a1c929150610ad5565b5090565b50805460018160011615610100020316600290046000825580601f10610a465750610a64565b601f016020900490600052602060002090810190610a649190610ad5565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610aa857805160ff1916838001178555610a10565b82800160010185558215610a10579182015b82811115610a10578251825591602001919060010190610aba565b5b80821115610a1c5760008155600101610ad6565b80356001600160a01b0381168114610b0157600080fd5b92915050565b600060208284031215610b18578081fd5b610b228383610aea565b9392505050565b60008060408385031215610b3b578081fd5b610b458484610aea565b915060208301358015158114610b59578182fd5b809150509250929050565b600060208284031215610b75578081fd5b815167ffffffffffffffff80821115610b8c578283fd5b818401915084601f830112610b9f578283fd5b815181811115610bad578384fd5b604051601f8201601f191681016020018381118282101715610bcd578586fd5b604052818152838201602001871015610be4578485fd5b610bf5826020830160208701610df7565b9695505050505050565b600060208284031215610c10578081fd5b5035919050565b600060208284031215610c28578081fd5b5051919050565b60008060408385031215610c41578182fd5b8235915060208301358015158114610b59578182fd5b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015610cf057603f198984030185528151610cac8151610deb565b84528701518784018790528051610cc581898701610de2565b610cd282828c8601610df7565b96890196601f91909101601f19160193505090860190600101610c8f565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610d3657835183529284019291840191600101610d1a565b50909695505050505050565b901515815260200190565b6020808252600d908201526c12539590531251081253941555609a1b604082015260600190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252600990820152681393d50811561254d560ba1b604082015260600190565b6020808252600b908201526a105b14915051164814d15560aa1b604082015260600190565b90815260200190565b6001600160a01b031690565b60005b83811015610e12578181015183820152602001610dfa565b83811115610e21576000848401525b5050505056fea2646970667358221220251503bcebb133e6e027679c68221c4445ec1a84a58eb9d7351788f09955a96064736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806380f556051161006657806380f556051461010f578063c63516e414610124578063ecbdefec14610144578063f378ffe514610159578063f851a4401461016c5761009e565b806315195493146100a35780636dcea85f146100b8578063703706aa146100cb578063704b6c02146100de57806370ac2fd9146100f1575b600080fd5b6100b66100b1366004610c2f565b610174565b005b6100b66100c6366004610b07565b610400565b6100b66100d9366004610b29565b61044c565b6100b66100ec366004610b07565b610789565b6100f96107d5565b6040516101069190610c6b565b60405180910390f35b6101176108d6565b6040516101069190610c57565b610137610132366004610b07565b6108e5565b6040516101069190610d42565b61014c610917565b6040516101069190610cfe565b610137610167366004610bff565b61096f565b61011761098c565b6000546001600160a01b031633146101a75760405162461bcd60e51b815260040161019e90610d74565b60405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663173c5df56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f557600080fd5b505afa158015610209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022d9190610c17565b82111561024c5760405162461bcd60e51b815260040161019e90610d9a565b6000828152600460205260409020548015801590610268575081155b806102795750801580156102795750815b6102955760405162461bcd60e51b815260040161019e90610dbd565b6000811180156102a3575081155b15610380576005548110156103225780600460006005600160058054905003815481106102cc57fe5b600091825260208083209091015483528201929092526040019020556005805460001981019081106102fa57fe5b90600052602060002001546005600183038154811061031557fe5b6000918252602090912001555b600083815260046020526040812055600580548061033c57fe5b60019003818190600052602060002001600090559055827f8969860a7a7884833b7f0694af7cc0730ad22405f126b34050f37de0df28c35260405160405180910390a25b8015801561038b5750815b156103fb57600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018490555460008481526004602052604080822092909255905184917f7b864e6683b98812a740d62c5322570c214517da7a4dd1d0ba04fd41f2a1a9e391a25b505050565b6000546001600160a01b0316331461042a5760405162461bcd60e51b815260040161019e90610d74565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104765760405162461bcd60e51b815260040161019e90610d74565b6001600160a01b03821661049c5760405162461bcd60e51b815260040161019e90610d4d565b6001600160a01b03821660009081526002602052604090205480158015906104c2575081155b806104d35750801580156104d35750815b6104ef5760405162461bcd60e51b815260040161019e90610dbd565b6000811180156104fd575081155b15610633576003548110156105d957806002600060036001600380549050038154811061052657fe5b600091825260208083206002909202909101546001600160a01b0316835282019290925260400190205560038054600019810190811061056257fe5b90600052602060002090600202016003600183038154811061058057fe5b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001808401805492936105d59383860193600019908216156101000201160461099b565b5050505b6001600160a01b03831660009081526002602052604081205560038054806105fd57fe5b60008281526020812060026000199093019283020180546001600160a01b03191681559061062e6001830182610a20565b505090555b8015801561063e5750815b156103fb576060836001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068057600080fd5b505af1158015610694573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106bc9190810190610b64565b604080518082019091526001600160a01b03868116825260208083018481526003805460018101825560009190915284517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600290920291820180546001600160a01b031916919095161784559051805195965093949293610764937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909201920190610a67565b50506003546001600160a01b0386166000908152600260205260409020555050505050565b6000546001600160a01b031633146107b35760405162461bcd60e51b815260040161019e90610d74565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60606003805480602002602001604051908101604052809291908181526020016000905b828210156108cd576000848152602090819020604080518082018252600286810290930180546001600160a01b031682526001808201805485516101009382161593909302600019011695909504601f8101879004870282018701909452838152919490938582019390918301828280156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b505050505081525050815260200190600101906107f9565b50505050905090565b6001546001600160a01b031681565b6001600160a01b0381166000908152600260205260408120548061090c5760009150610911565b600191505b50919050565b6060600580548060200260200160405190810160405280929190818152602001828054801561096557602002820191906000526020600020905b815481526020019060010190808311610951575b5050505050905090565b6000818152600460205260408120548061090c5760009150610911565b6000546001600160a01b031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109d45780548555610a10565b82800160010185558215610a1057600052602060002091601f016020900482015b82811115610a105782548255916001019190600101906109f5565b50610a1c929150610ad5565b5090565b50805460018160011615610100020316600290046000825580601f10610a465750610a64565b601f016020900490600052602060002090810190610a649190610ad5565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610aa857805160ff1916838001178555610a10565b82800160010185558215610a10579182015b82811115610a10578251825591602001919060010190610aba565b5b80821115610a1c5760008155600101610ad6565b80356001600160a01b0381168114610b0157600080fd5b92915050565b600060208284031215610b18578081fd5b610b228383610aea565b9392505050565b60008060408385031215610b3b578081fd5b610b458484610aea565b915060208301358015158114610b59578182fd5b809150509250929050565b600060208284031215610b75578081fd5b815167ffffffffffffffff80821115610b8c578283fd5b818401915084601f830112610b9f578283fd5b815181811115610bad578384fd5b604051601f8201601f191681016020018381118282101715610bcd578586fd5b604052818152838201602001871015610be4578485fd5b610bf5826020830160208701610df7565b9695505050505050565b600060208284031215610c10578081fd5b5035919050565b600060208284031215610c28578081fd5b5051919050565b60008060408385031215610c41578182fd5b8235915060208301358015158114610b59578182fd5b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015610cf057603f198984030185528151610cac8151610deb565b84528701518784018790528051610cc581898701610de2565b610cd282828c8601610df7565b96890196601f91909101601f19160193505090860190600101610c8f565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610d3657835183529284019291840191600101610d1a565b50909695505050505050565b901515815260200190565b6020808252600d908201526c12539590531251081253941555609a1b604082015260600190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252600990820152681393d50811561254d560ba1b604082015260600190565b6020808252600b908201526a105b14915051164814d15560aa1b604082015260600190565b90815260200190565b6001600160a01b031690565b60005b83811015610e12578181015183820152602001610dfa565b83811115610e21576000848401525b5050505056fea2646970667358221220251503bcebb133e6e027679c68221c4445ec1a84a58eb9d7351788f09955a96064736f6c634300060c0033

Deployed Bytecode Sourcemap

8551:4352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10416:1277;;;;;;:::i;:::-;;:::i;:::-;;12765:135;;;;;;:::i;:::-;;:::i;9174:1234::-;;;;;;:::i;:::-;;:::i;11701:131::-;;;;;;:::i;:::-;;:::i;11840:192::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8791:21;;;:::i;:::-;;;;;;;:::i;12221:261::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12040:173::-;;;:::i;:::-;;;;;;;:::i;12490:267::-;;;;;;:::i;:::-;;:::i;8764:20::-;;;:::i;10416:1277::-;10543:5;;-1:-1:-1;;;;;10543:5:0;10529:10;:19;10521:44;;;;-1:-1:-1;;;10521:44:0;;;;;;;:::i;:::-;;;;;;;;;10628:6;;;;;;;;;-1:-1:-1;;;;;10628:6:0;-1:-1:-1;;;;;10614:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10598:12;:56;;10576:115;;;;-1:-1:-1;;;10576:115:0;;;;;;;:::i;:::-;10704:13;10720:40;;;:26;:40;;;;;;10794:9;;;;;:22;;;10808:8;10807:9;10794:22;10793:52;;;-1:-1:-1;10822:10:0;;:22;;;;;10836:8;10822:22;10771:113;;;;-1:-1:-1;;;10771:113:0;;;;;;;:::i;:::-;10909:1;10901:5;:9;:22;;;;;10915:8;10914:9;10901:22;10897:540;;;10952:18;:25;10944:33;;10940:339;;;11118:5;10998:26;:117;11047:18;11094:1;11066:18;:25;;;;:29;11047:49;;;;;;;;;;;;;;;;;;;;10998:117;;;;;;;;;;;;:125;11174:18;11215:25;;-1:-1:-1;;11215:29:0;;;11174:89;;;;;;;;;;;;;;11142:18;11169:1;11161:5;:9;11142:29;;;;;;;;;;;;;;;;;:121;10940:339;11336:1;11293:40;;;:26;:40;;;;;:44;11352:18;:24;;;;;;;;;;;;;;;;;;;;;;;;11412:12;11396:29;;;;;;;;;;10897:540;11451:10;;:22;;;;;11465:8;11451:22;11447:239;;;11490:18;:37;;;;;;;;;;;;11585:43;-1:-1:-1;11542:40:0;;;:26;11490:37;11542:40;;;;;:86;;;;11648:26;;11514:12;;11648:26;;;11447:239;10416:1277;;;:::o;12765:135::-;12843:5;;-1:-1:-1;;;;;12843:5:0;12829:10;:19;12821:44;;;;-1:-1:-1;;;12821:44:0;;;;;;;:::i;:::-;12876:6;:16;;-1:-1:-1;;;;;;12876:16:0;-1:-1:-1;;;;;12876:16:0;;;;;;;;;;12765:135::o;9174:1234::-;9298:5;;-1:-1:-1;;;;;9298:5:0;9284:10;:19;9276:44;;;;-1:-1:-1;;;9276:44:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9339:23:0;;9331:49;;;;-1:-1:-1;;;9331:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9407:37:0;;9391:13;9407:37;;;:26;:37;;;;;;9478:9;;;;;:22;;;9492:8;9491:9;9478:22;9477:52;;;-1:-1:-1;9506:10:0;;:22;;;;;9520:8;9506:22;9455:113;;;;-1:-1:-1;;;9455:113:0;;;;;;;:::i;:::-;9593:1;9585:5;:9;:22;;;;;9599:8;9598:9;9585:22;9581:494;;;9636:18;:25;9628:33;;9624:345;;;9808:5;9682:26;:123;9731:18;9778:1;9750:18;:25;;;;:29;9731:49;;;;;;;;;;;;;;;;;;;;;;;:55;-1:-1:-1;;;;;9731:55:0;9682:123;;;;;;;;;;;;:131;9864:18;9905:25;;-1:-1:-1;;9905:29:0;;;9864:89;;;;;;;;;;;;;;;;9832:18;9859:1;9851:5;:9;9832:29;;;;;;;;;;;;;;;;:121;;:29;;;;;;;:121;;-1:-1:-1;;;;;;9832:121:0;-1:-1:-1;;;;;9832:121:0;;;;;;;;;;;;;;;:29;;:121;;;;;;-1:-1:-1;;9832:121:0;;;;;;;;;;:::i;:::-;-1:-1:-1;;;9624:345:0;-1:-1:-1;;;;;9983:37:0;;10023:1;9983:37;;;:26;:37;;;;;:41;10039:18;:24;;;;;;;;;;;;;;;-1:-1:-1;;10039:24:0;;;;;;;;;-1:-1:-1;;;;;;10039:24:0;;;;;;;;;;:::i;:::-;;;;;9581:494;10089:10;;:22;;;;;10103:8;10089:22;10085:316;;;10128:25;10163:9;-1:-1:-1;;;;;10156:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10156:26:0;;;;;;;;;;;;:::i;:::-;10239:55;;;;;;;;;-1:-1:-1;;;;;10239:55:0;;;;;;;;;;;;10197:18;:112;;;;;;;-1:-1:-1;10197:112:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10197:112:0;;;;;;;;;;;;10239:55;;-1:-1:-1;10239:55:0;;10197:112;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10364:18:0;:25;-1:-1:-1;;;;;10324:37:0;;;;;;:26;:37;;;;;:65;-1:-1:-1;;9174:1234:0;;;:::o;11701:131::-;11777:5;;-1:-1:-1;;;;;11777:5:0;11763:10;:19;11755:44;;;;-1:-1:-1;;;11755:44:0;;;;;;;:::i;:::-;11810:5;:14;;-1:-1:-1;;;;;;11810:14:0;-1:-1:-1;;;;;11810:14:0;;;;;;;;;;11701:131::o;11840:192::-;11923:43;12006:18;11984:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11984:40:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11984:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11840:192;:::o;8791:21::-;;;-1:-1:-1;;;;;8791:21:0;;:::o;12221:261::-;-1:-1:-1;;;;;12361:37:0;;12313:14;12361:37;;;:26;:37;;;;;;12413:10;12409:65;;12437:5;12425:17;;12409:65;;;12470:4;12458:16;;12409:65;12221:261;;;;:::o;12040:173::-;12119:32;12187:18;12169:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:173;:::o;12490:267::-;12585:14;12633:40;;;:26;:40;;;;;;12688:10;12684:65;;12712:5;12700:17;;12684:65;;8764:20;;;-1:-1:-1;;;;;8764:20:0;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:130;72:20;;-1:-1;;;;;13653:54;;14239:35;;14229:2;;14288:1;;14278:12;14229:2;57:78;;;;:::o;1004:241::-;;1108:2;1096:9;1087:7;1083:23;1079:32;1076:2;;;-1:-1;;1114:12;1076:2;1176:53;1221:7;1197:22;1176:53;:::i;:::-;1166:63;1070:175;-1:-1;;;1070:175::o;1252:360::-;;;1370:2;1358:9;1349:7;1345:23;1341:32;1338:2;;;-1:-1;;1376:12;1338:2;1438:53;1483:7;1459:22;1438:53;:::i;:::-;1428:63;;1528:2;1568:9;1564:22;206:20;14385:5;13565:13;13558:21;14363:5;14360:32;14350:2;;-1:-1;;14396:12;14350:2;1536:60;;;;1332:280;;;;;:::o;1619:362::-;;1744:2;1732:9;1723:7;1719:23;1715:32;1712:2;;;-1:-1;;1750:12;1712:2;1801:17;1795:24;1839:18;;1831:6;1828:30;1825:2;;;-1:-1;;1861:12;1825:2;1948:6;1937:9;1933:22;;;387:3;380:4;372:6;368:17;364:27;354:2;;-1:-1;;395:12;354:2;435:6;429:13;1839:18;11413:6;11410:30;11407:2;;;-1:-1;;11443:12;11407:2;11076;11070:9;11516;11497:17;;-1:-1;;11493:33;11102:17;;1744:2;11102:17;11162:34;;;11198:22;;;11159:62;11156:2;;;-1:-1;;11224:12;11156:2;11076;11243:22;528:21;;;628:16;;;1744:2;628:16;625:25;-1:-1;622:2;;;-1:-1;;653:12;622:2;673:39;705:6;1744:2;604:5;600:16;1744:2;570:6;566:17;673:39;:::i;:::-;1881:84;1706:275;-1:-1;;;;;;1706:275::o;1988:241::-;;2092:2;2080:9;2071:7;2067:23;2063:32;2060:2;;;-1:-1;;2098:12;2060:2;-1:-1;793:20;;2054:175;-1:-1;2054:175::o;2236:263::-;;2351:2;2339:9;2330:7;2326:23;2322:32;2319:2;;;-1:-1;;2357:12;2319:2;-1:-1;941:13;;2313:186;-1:-1;2313:186::o;2506:360::-;;;2624:2;2612:9;2603:7;2599:23;2595:32;2592:2;;;-1:-1;;2630:12;2592:2;806:6;793:20;2682:63;;2782:2;2822:9;2818:22;206:20;14385:5;13565:13;13558:21;14363:5;14360:32;14350:2;;-1:-1;;14396:12;7998:222;-1:-1;;;;;13653:54;;;;3402:37;;8125:2;8110:18;;8096:124::o;8227:494::-;8466:2;8480:47;;;12087:12;;8451:18;;;12812:19;;;8227:494;;8466:2;12852:14;;;;;;4137:17;;;4128:27;;;;11752:14;;;8227:494;4296:423;4321:6;4318:1;4315:13;4296:423;;;4373:20;;8455:9;4377:4;4373:20;;4368:3;4361:33;4428:6;4422:13;13463:24;7531:16;7525:23;13463:24;:::i;:::-;3402:37;;7687:16;;7681:23;7724:14;;;7717:38;;;12087:12;;5759:61;12087:12;7449:14;;;5759:61;:::i;:::-;5825:52;5870:6;5865:3;8466:2;5851:5;5847:16;5825:52;:::i;:::-;4698:14;;;;11516:9;14143:14;;;;-1:-1;;14139:28;5889:39;;-1:-1;;12521:14;;;;4343:1;4336:9;4296:423;;;-1:-1;8533:178;;8437:284;-1:-1;;;;;;;;8437:284::o;8728:370::-;8905:2;8919:47;;;12087:12;;8890:18;;;12812:19;;;8728:370;;8905:2;11752:14;;;;12852;;;;8728:370;5205:260;5230:6;5227:1;5224:13;5205:260;;;5291:13;;7949:37;;12521:14;;;;3313;;;;5252:1;5245:9;5205:260;;;-1:-1;8972:116;;8876:222;-1:-1;;;;;;8876:222::o;9105:210::-;13565:13;;13558:21;5560:34;;9226:2;9211:18;;9197:118::o;9322:416::-;9522:2;9536:47;;;6165:2;9507:18;;;12812:19;-1:-1;;;12852:14;;;6181:36;6236:12;;;9493:245::o;9745:416::-;9945:2;9959:47;;;6487:2;9930:18;;;12812:19;-1:-1;;;12852:14;;;6503:35;6557:12;;;9916:245::o;10168:416::-;10368:2;10382:47;;;6808:1;10353:18;;;12812:19;-1:-1;;;12852:14;;;6823:32;6874:12;;;10339:245::o;10591:416::-;10791:2;10805:47;;;7125:2;10776:18;;;12812:19;-1:-1;;;12852:14;;;7141:34;7194:12;;;10762:245::o;12663:209::-;12812:19;;;12861:4;12852:14;;12805:67::o;13591:121::-;-1:-1;;;;;13653:54;;13636:76::o;13799:268::-;13864:1;13871:101;13885:6;13882:1;13879:13;13871:101;;;13952:11;;;13946:18;13933:11;;;13926:39;13907:2;13900:10;13871:101;;;13987:6;13984:1;13981:13;13978:2;;;13864:1;14043:6;14038:3;14034:16;14027:27;13978:2;;13848:219;;;:::o

Swarm Source

ipfs://251503bcebb133e6e027679c68221c4445ec1a84a58eb9d7351788f09955a960

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.