ETH Price: $1,975.45 (-5.21%)

Contract

0xeE87996440515154fb913Fada7aBB4F2Caecb14f
 

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
Qualify Balancer...108946882020-09-19 19:52:291994 days ago1600545149IN
0xeE879964...2Caecb14f
0 ETH0.01291176227
Qualify Balancer...108946812020-09-19 19:50:351994 days ago1600545035IN
0xeE879964...2Caecb14f
0 ETH0.01575576277

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

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-09-19
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.6;




pragma solidity >=0.5.0;

interface IQualifyLP {
    function qualified(address lpToken) external view returns(uint256);
    function qualifyUniswapLP(address lpToken, address token0, address token1) external returns (bool);
    function qualifyBalancerLP(address lpToken) external returns (bool);
}

pragma solidity ^0.6.6;

interface BFactory {

    function isBPool(address b) external view returns (bool);
    function newBPool() external returns (BPool);
    
}

interface BPool {

    function isPublicSwap() external view returns (bool);
    function isFinalized() external view returns (bool);
    function isBound(address t) external view returns (bool);
    function getNumTokens() external view returns (uint);
    function getCurrentTokens() external view returns (address[] memory tokens);
    function getFinalTokens() external view returns (address[] memory tokens);
    function getDenormalizedWeight(address token) external view returns (uint);
    function getTotalDenormalizedWeight() external view returns (uint);
    function getNormalizedWeight(address token) external view returns (uint);
    function getBalance(address token) external view returns (uint);
    function getSwapFee() external view returns (uint);
    function getController() external view returns (address);
    
    function setSwapFee(uint swapFee) external;
    function setController(address manager) external;
    function setPublicSwap(bool external_) external;
    function finalize() external;
    function bind(address token, uint balance, uint denorm) external;
    function rebind(address token, uint balance, uint denorm) external;
    function unbind(address token) external;
    function gulp(address token) external;

    function getSpotPrice(address tokenIn, address tokenOut) external view returns (uint spotPrice);
    function getSpotPriceSansFee(address tokenIn, address tokenOut) external view returns (uint spotPrice);

    function joinPool(uint poolAmountOut, uint[] calldata maxAmountsIn) external;   
    function exitPool(uint poolAmountIn, uint[] calldata minAmountsOut) external;

    function swapExactAmountIn(
        address tokenIn,
        uint tokenAmountIn,
        address tokenOut,
        uint minAmountOut,
        uint maxPrice
    ) external returns (uint tokenAmountOut, uint spotPriceAfter);
    
    function swapExactAmountOut(
        address tokenIn,
        uint maxAmountIn,
        address tokenOut,
        uint tokenAmountOut,
        uint maxPrice
    ) external returns (uint tokenAmountIn, uint spotPriceAfter);

    function joinswapExternAmountIn(
        address tokenIn,
        uint tokenAmountIn,
        uint minPoolAmountOut
    ) external returns (uint poolAmountOut);

    function joinswapPoolAmountOut(
        address tokenIn,
        uint poolAmountOut,
        uint maxAmountIn
    ) external returns (uint tokenAmountIn);
    
    function exitswapPoolAmountIn(
        address tokenOut,
        uint poolAmountIn,
        uint minAmountOut
    ) external returns (uint tokenAmountOut);

    function exitswapExternAmountOut(
        address tokenOut,
        uint tokenAmountOut,
        uint maxPoolAmountIn
    ) external returns (uint poolAmountIn);
    
    function totalSupply() external view returns (uint);
    function balanceOf(address whom) external view returns (uint);
    function allowance(address src, address dst) external view returns (uint);

    function approve(address dst, uint amt) external returns (bool);
    function transfer(address dst, uint amt) external returns (bool);
    function transferFrom(
        address src, address dst, uint amt
    ) external returns (bool);
    
    function calcSpotPrice(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint swapFee
    ) external pure returns (uint spotPrice);
    
    function calcOutGivenIn(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint tokenAmountIn,
        uint swapFee
    ) external pure returns (uint tokenAmountOut);
    
    function calcInGivenOut(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint tokenAmountOut,
        uint swapFee
    ) external pure returns (uint tokenAmountIn);
    
    function calcPoolOutGivenSingleIn(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint poolSupply,
        uint totalWeight,
        uint tokenAmountIn,
        uint swapFee
    ) external pure returns (uint poolAmountOut);
    
    function calcSingleInGivenPoolOut(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint poolSupply,
        uint totalWeight,
        uint poolAmountOut,
        uint swapFee
    ) external pure returns (uint tokenAmountIn);
    
    function calcSingleOutGivenPoolIn(
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint poolSupply,
        uint totalWeight,
        uint poolAmountIn,
        uint swapFee
    ) external pure returns (uint tokenAmountOut);
    
    function calcPoolInGivenSingleOut(
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint poolSupply,
        uint totalWeight,
        uint tokenAmountOut,
        uint swapFee
    ) external pure returns (uint poolAmountIn);

}

pragma experimental ABIEncoderV2;

interface BExchangeProxy {

    struct Swap {
        address pool;
        uint    tokenInParam; // tokenInAmount / maxAmountIn / limitAmountIn
        uint    tokenOutParam; // minAmountOut / tokenAmountOut / limitAmountOut
        uint    maxPrice;
    }

    function batchSwapExactIn(
        Swap[] memory swaps,
        address tokenIn,
        address tokenOut,
        uint totalAmountIn,
        uint minTotalAmountOut
    ) external returns (uint totalAmountOut);
    
    function batchSwapExactOut(
        Swap[] memory swaps,
        address tokenIn,
        address tokenOut,
        uint maxTotalAmountIn
    ) external returns (uint totalAmountIn);
    
    function batchEthInSwapExactIn(
        Swap[] memory swaps,
        address tokenOut,
        uint minTotalAmountOut
    ) external payable returns (uint totalAmountOut);
    
    function batchEthOutSwapExactIn(
        Swap[] memory swaps,
        address tokenIn,
        uint totalAmountIn,
        uint minTotalAmountOut
    ) external returns (uint totalAmountOut);
    
    function batchEthInSwapExactOut(
        Swap[] memory swaps,
        address tokenOut
    ) external payable returns (uint totalAmountIn);
    
    function batchEthOutSwapExactOut(
        Swap[] memory swaps,
        address tokenIn,
        uint maxTotalAmountIn
    ) external returns (uint totalAmountIn);
    
}

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}
contract QualifyLP is IQualifyLP {
    mapping(address => uint256) private lps;
    uint256 constant LP_UNISWAP = 1;
    uint256 constant LP_BALANCER = 2;

    constructor() public {
    }

    function qualified(address lpToken) external override view returns(uint256) {
        return lps[lpToken];
    }

    function qualifyUniswapLP(address lpToken, address token0, address token1) external override returns (bool) {
        IUniswapV2Pair pair = IUniswapV2Pair(lpToken);

	require(pair.decimals() == 18);
	require(pair.totalSupply() > 0);
	require(token0 != token1);
	require(pair.token0() == token0 || pair.token1() == token0);
	require(pair.token0() == token1 || pair.token1() == token1);

	(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) =
	    pair.getReserves();
	require(reserve0 > 0);
	require(reserve1 > 0);
        require(blockTimestampLast > 0);

	lps[lpToken] = LP_UNISWAP;

	return true;
    }

    function qualifyBalancerLP(address lpToken) external override returns (bool) {
	BPool bpool = BPool(lpToken);

	require(bpool.totalSupply() > 0);
	require(bpool.isPublicSwap() == true);
	require(bpool.isFinalized() == true);
	require(bpool.getNumTokens() >= 2);
	require(bpool.getSwapFee() > 0);

	lps[lpToken] = LP_BALANCER;

	return true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"}],"name":"qualified","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"}],"name":"qualifyBalancerLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"qualifyUniswapLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50610939806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630187a340146100465780633628cc741461006f578063b06411311461008f575b600080fd5b610059610054366004610797565b6100a2565b60405161006691906108c2565b60405180910390f35b61008261007d366004610797565b610340565b60405161006691906108cd565b61005961009d3660046107d6565b61035b565b6000808290506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b9190610889565b1161012557600080fd5b806001600160a01b031663fde924f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561015e57600080fd5b505afa158015610172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101969190610820565b15156001146101a457600080fd5b806001600160a01b0316638d4e40836040518163ffffffff1660e01b815260040160206040518083038186803b1580156101dd57600080fd5b505afa1580156101f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102159190610820565b151560011461022357600080fd5b6002816001600160a01b031663cd2ed8fb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025e57600080fd5b505afa158015610272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102969190610889565b10156102a157600080fd5b6000816001600160a01b031663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190610889565b1161031e57600080fd5b50506001600160a01b0316600090815260208190526040902060029055600190565b6001600160a01b031660009081526020819052604090205490565b600080849050806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d291906108a1565b60ff166012146103e157600080fd5b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104549190610889565b1161045e57600080fd5b826001600160a01b0316846001600160a01b0316141561047d57600080fd5b836001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906107ba565b6001600160a01b0316148061058e5750836001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058391906107ba565b6001600160a01b0316145b61059757600080fd5b826001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061291906107ba565b6001600160a01b031614806106a85750826001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561066557600080fd5b505afa158015610679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069d91906107ba565b6001600160a01b0316145b6106b157600080fd5b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156106ef57600080fd5b505afa158015610703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107279190610840565b9250925092506000836001600160701b03161161074357600080fd5b6000826001600160701b03161161075957600080fd5b60008163ffffffff161161076c57600080fd5b5050506001600160a01b03851660009081526020819052604090206001908190559150509392505050565b6000602082840312156107a8578081fd5b81356107b3816108d6565b9392505050565b6000602082840312156107cb578081fd5b81516107b3816108d6565b6000806000606084860312156107ea578182fd5b83356107f5816108d6565b92506020840135610805816108d6565b91506040840135610815816108d6565b809150509250925092565b600060208284031215610831578081fd5b815180151581146107b3578182fd5b600080600060608486031215610854578283fd5b835161085f816108ee565b6020850151909350610870816108ee565b604085015190925063ffffffff81168114610815578182fd5b60006020828403121561089a578081fd5b5051919050565b6000602082840312156108b2578081fd5b815160ff811681146107b3578182fd5b901515815260200190565b90815260200190565b6001600160a01b03811681146108eb57600080fd5b50565b6001600160701b03811681146108eb57600080fdfea264697066735822122021e0c698b187ca921cf7f663e996502cc778bfd5cacdb8d0572b219a8c776bc564736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630187a340146100465780633628cc741461006f578063b06411311461008f575b600080fd5b610059610054366004610797565b6100a2565b60405161006691906108c2565b60405180910390f35b61008261007d366004610797565b610340565b60405161006691906108cd565b61005961009d3660046107d6565b61035b565b6000808290506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b9190610889565b1161012557600080fd5b806001600160a01b031663fde924f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561015e57600080fd5b505afa158015610172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101969190610820565b15156001146101a457600080fd5b806001600160a01b0316638d4e40836040518163ffffffff1660e01b815260040160206040518083038186803b1580156101dd57600080fd5b505afa1580156101f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102159190610820565b151560011461022357600080fd5b6002816001600160a01b031663cd2ed8fb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025e57600080fd5b505afa158015610272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102969190610889565b10156102a157600080fd5b6000816001600160a01b031663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190610889565b1161031e57600080fd5b50506001600160a01b0316600090815260208190526040902060029055600190565b6001600160a01b031660009081526020819052604090205490565b600080849050806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d291906108a1565b60ff166012146103e157600080fd5b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104549190610889565b1161045e57600080fd5b826001600160a01b0316846001600160a01b0316141561047d57600080fd5b836001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906107ba565b6001600160a01b0316148061058e5750836001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058391906107ba565b6001600160a01b0316145b61059757600080fd5b826001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061291906107ba565b6001600160a01b031614806106a85750826001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561066557600080fd5b505afa158015610679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069d91906107ba565b6001600160a01b0316145b6106b157600080fd5b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156106ef57600080fd5b505afa158015610703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107279190610840565b9250925092506000836001600160701b03161161074357600080fd5b6000826001600160701b03161161075957600080fd5b60008163ffffffff161161076c57600080fd5b5050506001600160a01b03851660009081526020819052604090206001908190559150509392505050565b6000602082840312156107a8578081fd5b81356107b3816108d6565b9392505050565b6000602082840312156107cb578081fd5b81516107b3816108d6565b6000806000606084860312156107ea578182fd5b83356107f5816108d6565b92506020840135610805816108d6565b91506040840135610815816108d6565b809150509250925092565b600060208284031215610831578081fd5b815180151581146107b3578182fd5b600080600060608486031215610854578283fd5b835161085f816108ee565b6020850151909350610870816108ee565b604085015190925063ffffffff81168114610815578182fd5b60006020828403121561089a578081fd5b5051919050565b6000602082840312156108b2578081fd5b815160ff811681146107b3578182fd5b901515815260200190565b90815260200190565b6001600160a01b03811681146108eb57600080fd5b50565b6001600160701b03811681146108eb57600080fdfea264697066735822122021e0c698b187ca921cf7f663e996502cc778bfd5cacdb8d0572b219a8c776bc564736f6c634300060c0033

Deployed Bytecode Sourcemap

9566:1327:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10532:358;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9768:114;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9890:634::-;;;;;;:::i;:::-;;:::i;10532:358::-;10603:4;10613:11;10633:7;10613:28;;10677:1;10655:5;-1:-1:-1;;;;;10655:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;10647:32;;;;;;10691:5;-1:-1:-1;;;;;10691:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;;10715:4;10691:28;10683:37;;;;;;10732:5;-1:-1:-1;;;;;10732:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;;10755:4;10732:27;10724:36;;;;;;10796:1;10772:5;-1:-1:-1;;;;;10772:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:25;;10764:34;;;;;;10831:1;10810:5;-1:-1:-1;;;;;10810:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;10802:31;;;;;;-1:-1:-1;;;;;;;10839:12:0;:3;:12;;;;;;;;;;9721:1;10839:26;;10878:4;;10532:358::o;9768:114::-;-1:-1:-1;;;;;9862:12:0;9835:7;9862:12;;;;;;;;;;;;9768:114::o;9890:634::-;9992:4;10009:19;10046:7;10009:45;;10068:4;-1:-1:-1;;;;;10068:13:0;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21;;10087:2;10068:21;10060:30;;;;;;10123:1;10102:4;-1:-1:-1;;;;;10102:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;10094:31;;;;;;10147:6;-1:-1:-1;;;;;10137:16:0;:6;-1:-1:-1;;;;;10137:16:0;;;10129:25;;;;;;10183:6;-1:-1:-1;;;;;10166:23:0;:4;-1:-1:-1;;;;;10166:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10166:23:0;;:50;;;;10210:6;-1:-1:-1;;;;;10193:23:0;:4;-1:-1:-1;;;;;10193:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10193:23:0;;10166:50;10158:59;;;;;;10246:6;-1:-1:-1;;;;;10229:23:0;:4;-1:-1:-1;;;;;10229:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10229:23:0;;:50;;;;10273:6;-1:-1:-1;;;;;10256:23:0;:4;-1:-1:-1;;;;;10256:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10256:23:0;;10229:50;10221:59;;;;;;10287:16;10305;10323:25;10358:4;-1:-1:-1;;;;;10358:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10286:90;;;;;;10399:1;10388:8;-1:-1:-1;;;;;10388:12:0;;10380:21;;;;;;10424:1;10413:8;-1:-1:-1;;;;;10413:12:0;;10405:21;;;;;;10466:1;10445:18;:22;;;10437:31;;;;;;-1:-1:-1;;;;;;;;10474:12:0;;:3;:12;;;;;;;;;;9682:1;10474:25;;;;9682:1;-1:-1:-1;;9890:634:0;;;;;:::o;976:241:-1:-;;1080:2;1068:9;1059:7;1055:23;1051:32;1048:2;;;-1:-1;;1086:12;1048:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1138:63;1042:175;-1:-1;;;1042:175::o;1224:263::-;;1339:2;1327:9;1318:7;1314:23;1310:32;1307:2;;;-1:-1;;1345:12;1307:2;226:6;220:13;238:33;265:5;238:33;:::i;1494:491::-;;;;1632:2;1620:9;1611:7;1607:23;1603:32;1600:2;;;-1:-1;;1638:12;1600:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1690:63;-1:-1;1790:2;1829:22;;72:20;97:33;72:20;97:33;:::i;:::-;1798:63;-1:-1;1898:2;1937:22;;72:20;97:33;72:20;97:33;:::i;:::-;1906:63;;;;1594:391;;;;;:::o;1992:257::-;;2104:2;2092:9;2083:7;2079:23;2075:32;2072:2;;;-1:-1;;2110:12;2072:2;364:6;358:13;4910:5;4173:13;4166:21;4888:5;4885:32;4875:2;;-1:-1;;4921:12;2256:533;;;;2404:2;2392:9;2383:7;2379:23;2375:32;2372:2;;;-1:-1;;2410:12;2372:2;502:6;496:13;514:33;541:5;514:33;:::i;:::-;2573:2;2623:22;;496:13;2462:74;;-1:-1;514:33;496:13;514:33;:::i;:::-;2692:2;2741:22;;777:13;2581:74;;-1:-1;4594:10;4583:22;;5253:34;;5243:2;;-1:-1;;5291:12;2796:263;;2911:2;2899:9;2890:7;2886:23;2882:32;2879:2;;;-1:-1;;2917:12;2879:2;-1:-1;637:13;;2873:186;-1:-1;2873:186::o;3066:259::-;;3179:2;3167:9;3158:7;3154:23;3150:32;3147:2;;;-1:-1;;3185:12;3147:2;921:6;915:13;4688:4;5400:5;4677:16;5377:5;5374:33;5364:2;;-1:-1;;5411:12;3563:210;4173:13;;4166:21;3397:34;;3684:2;3669:18;;3655:118::o;3780:222::-;3514:37;;;3907:2;3892:18;;3878:124::o;4705:117::-;-1:-1;;;;;4377:54;;4764:35;;4754:2;;4813:1;;4803:12;4754:2;4748:74;:::o;4947:117::-;-1:-1;;;;;5034:5;4261:42;5009:5;5006:35;4996:2;;5055:1;;5045:12

Swarm Source

ipfs://21e0c698b187ca921cf7f663e996502cc778bfd5cacdb8d0572b219a8c776bc5

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.