ETH Price: $3,048.12 (+3.32%)

Contract

0x13d3045021C19d8e2480be22e4552b2b527C8966
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Whitelist Token ...137728492021-12-09 19:23:431065 days ago1639077823IN
0x13d30450...b527C8966
0 ETH0.0036816860.30799562
Whitelist Token ...137724012021-12-09 17:37:121065 days ago1639071432IN
0x13d30450...b527C8966
0 ETH0.0038584363.20323521
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Set Exchange Ada...137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0015448351.38147746
Whitelist Exchan...137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0050321951.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025512151.88147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Set Exchange Ada...137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0024234551.38147746
Whitelist Exchan...137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0050321951.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Method137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0025266351.38147746
Whitelist Exchan...137722662021-12-09 17:04:381065 days ago1639069478IN
0x13d30450...b527C8966
0 ETH0.0050321951.38147746
Set Exchange Ada...137722642021-12-09 17:04:231065 days ago1639069463IN
0x13d30450...b527C8966
0 ETH0.0024401651.73564512
Set Exchange Ada...116337082021-01-11 12:48:251398 days ago1610369305IN
0x13d30450...b527C8966
0 ETH0.00305148103.2091
Whitelist Method116337032021-01-11 12:46:581398 days ago1610369218IN
0x13d30450...b527C8966
0 ETH0.00479712103
Whitelist Method116336972021-01-11 12:44:531398 days ago1610369093IN
0x13d30450...b527C8966
0 ETH0.00479712103
Whitelist Method116336912021-01-11 12:44:131398 days ago1610369053IN
0x13d30450...b527C8966
0 ETH0.00484369104
Whitelist Method116336872021-01-11 12:43:461398 days ago1610369026IN
0x13d30450...b527C8966
0 ETH0.00479712103.00000145
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
147506972022-05-10 20:38:49913 days ago1652215129
0x13d30450...b527C8966
0 ETH
147506972022-05-10 20:38:49913 days ago1652215129
0x13d30450...b527C8966
0 ETH
147506972022-05-10 20:38:49913 days ago1652215129
0x13d30450...b527C8966
0 ETH
147506972022-05-10 20:38:49913 days ago1652215129
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
147435342022-05-09 16:59:48914 days ago1652115588
0x13d30450...b527C8966
0 ETH
142349822022-02-19 6:36:27994 days ago1645252587
0x13d30450...b527C8966
0 ETH
142349822022-02-19 6:36:27994 days ago1645252587
0x13d30450...b527C8966
0 ETH
142349822022-02-19 6:36:27994 days ago1645252587
0x13d30450...b527C8966
0 ETH
142349822022-02-19 6:36:27994 days ago1645252587
0x13d30450...b527C8966
0 ETH
142328882022-02-18 22:58:53994 days ago1645225133
0x13d30450...b527C8966
0 ETH
142328882022-02-18 22:58:53994 days ago1645225133
0x13d30450...b527C8966
0 ETH
142328882022-02-18 22:58:53994 days ago1645225133
0x13d30450...b527C8966
0 ETH
142328882022-02-18 22:58:53994 days ago1645225133
0x13d30450...b527C8966
0 ETH
142303192022-02-18 13:15:36995 days ago1645190136
0x13d30450...b527C8966
0 ETH
142303192022-02-18 13:15:36995 days ago1645190136
0x13d30450...b527C8966
0 ETH
142303192022-02-18 13:15:36995 days ago1645190136
0x13d30450...b527C8966
0 ETH
142303192022-02-18 13:15:36995 days ago1645190136
0x13d30450...b527C8966
0 ETH
142302702022-02-18 13:08:15995 days ago1645189695
0x13d30450...b527C8966
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ExchangesAuthority

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-04
*/

/*

 Copyright 2018 RigoBlock, Rigo Investment Sagl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity 0.4.25;
pragma experimental "v0.5.0";

contract Owned {

    address public owner;

    event NewOwner(address indexed old, address indexed current);

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    constructor() public {
        owner = msg.sender;
    }

    function setOwner(address _new)
        public
        onlyOwner
    {
        require(_new != address(0));
        owner = _new;
        emit NewOwner(owner, _new);
    }
}

/// @title Exchange Authority Interface - A helper contract for the exchange adapters.
/// @author Gabriele Rigo - <[email protected]>
// solhint-disable-next-line
interface ExchangesAuthorityFace {

    /*
     * EVENTS
     */
    event AuthoritySet(address indexed authority);
    event WhitelisterSet(address indexed whitelister);
    event WhitelistedAsset(address indexed asset, bool approved);
    event WhitelistedExchange(address indexed exchange, bool approved);
    event WhitelistedWrapper(address indexed wrapper, bool approved);
    event WhitelistedProxy(address indexed proxy, bool approved);
    event WhitelistedMethod(bytes4 indexed method, address indexed exchange, bool approved);
    event NewSigVerifier(address indexed sigVerifier);
    event NewExchangeEventful(address indexed exchangeEventful);
    event NewCasper(address indexed casper);

    /*
     * CORE FUNCTIONS
     */
    /// @dev Allows the owner to whitelist an authority
    /// @param _authority Address of the authority
    /// @param _isWhitelisted Bool whitelisted
    function setAuthority(address _authority, bool _isWhitelisted)
        external;

    /// @dev Allows the owner to whitelist a whitelister
    /// @param _whitelister Address of the whitelister
    /// @param _isWhitelisted Bool whitelisted
    function setWhitelister(address _whitelister, bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to whitelist an asset
    /// @param _asset Address of the token
    /// @param _isWhitelisted Bool whitelisted
    function whitelistAsset(address _asset, bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to whitelist an exchange
    /// @param _exchange Address of the target exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistExchange(address _exchange, bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to whitelist an token wrapper
    /// @param _wrapper Address of the target token wrapper
    /// @param _isWhitelisted Bool whitelisted
    function whitelistWrapper(address _wrapper, bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to whitelist a tokenTransferProxy
    /// @param _tokenTransferProxy Address of the proxy
    /// @param _isWhitelisted Bool whitelisted
    function whitelistTokenTransferProxy(
        address _tokenTransferProxy, bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to enable trading on a particular exchange
    /// @param _asset Address of the token
    /// @param _exchange Address of the exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistAssetOnExchange(
        address _asset,
        address _exchange,
        bool _isWhitelisted)
        external;

    /// @dev Allows a whitelister to enable assiciate wrappers to a token
    /// @param _token Address of the token
    /// @param _wrapper Address of the exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistTokenOnWrapper(
        address _token,
        address _wrapper,
        bool _isWhitelisted)
        external;

    /// @dev Allows an admin to whitelist a factory
    /// @param _method Hex of the function ABI
    /// @param _isWhitelisted Bool whitelisted
    function whitelistMethod(
        bytes4 _method,
        address _adapter,
        bool _isWhitelisted)
        external;

    /// @dev Allows the owner to set the signature verifier
    /// @param _sigVerifier Address of the logs contract
    function setSignatureVerifier(address _sigVerifier)
        external;

    /// @dev Allows the owner to set the exchange eventful
    /// @param _exchangeEventful Address of the exchange logs contract
    function setExchangeEventful(address _exchangeEventful)
        external;

    /// @dev Allows the owner to associate an exchange to its adapter
    /// @param _exchange Address of the exchange
    /// @param _adapter Address of the adapter
    function setExchangeAdapter(address _exchange, address _adapter)
        external;

    /// @dev Allows the owner to set the casper contract
    /// @param _casper Address of the casper contract
    function setCasper(address _casper)
        external;

    /*
     * CONSTANT PUBLIC FUNCTIONS
     */
    /// @dev Provides whether an address is an authority
    /// @param _authority Address of the target authority
    /// @return Bool is whitelisted
    function isAuthority(address _authority)
        external view
        returns (bool);

    /// @dev Provides whether an asset is whitelisted
    /// @param _asset Address of the target asset
    /// @return Bool is whitelisted
    function isWhitelistedAsset(address _asset)
        external view
        returns (bool);

    /// @dev Provides whether an exchange is whitelisted
    /// @param _exchange Address of the target exchange
    /// @return Bool is whitelisted
    function isWhitelistedExchange(address _exchange)
        external view
        returns (bool);

    /// @dev Provides whether a token wrapper is whitelisted
    /// @param _wrapper Address of the target exchange
    /// @return Bool is whitelisted
    function isWhitelistedWrapper(address _wrapper)
        external view
        returns (bool);

    /// @dev Provides whether a proxy is whitelisted
    /// @param _tokenTransferProxy Address of the proxy
    /// @return Bool is whitelisted
    function isWhitelistedProxy(address _tokenTransferProxy)
        external view
        returns (bool);

    /// @dev Provides the address of the exchange adapter
    /// @param _exchange Address of the exchange
    /// @return Address of the adapter
    function getExchangeAdapter(address _exchange)
        external view
        returns (address);

    /// @dev Provides the address of the signature verifier
    /// @return Address of the verifier
    function getSigVerifier()
        external view
        returns (address);

    /// @dev Checkes whether a token is allowed on an exchange
    /// @param _token Address of the token
    /// @param _exchange Address of the exchange
    /// @return Bool the token is whitelisted on the exchange
    function canTradeTokenOnExchange(address _token, address _exchange)
        external view
        returns (bool);

    /// @dev Checkes whether a token is allowed on a wrapper
    /// @param _token Address of the token
    /// @return Bool the token is whitelisted on the exchange
    function canWrapTokenOnWrapper(address _token, address _wrapper)
        external view
        returns (bool);

    /// @dev Checkes whether a method is allowed on an exchange
    function isMethodAllowed(bytes4 _method, address _exchange)
        external view
        returns (bool);

    /// @dev Checkes whether casper has been inizialized
    /// @return Bool the casper contract has been initialized
    function isCasperInitialized()
        external view
        returns (bool);

    /// @dev Provides the address of the casper contract
    /// @return Address of the casper contract
    function getCasper()
        external view
        returns (address);
}

/// @title Exchanges Authority - A helper contract for the exchange adapters.
/// @author Gabriele Rigo - <[email protected]>
// solhint-disable-next-line
contract ExchangesAuthority is Owned, ExchangesAuthorityFace {

    BuildingBlocks public blocks;
    Type public types;

    mapping (address => Account) public accounts;

    struct List {
        address target;
    }

    struct Type {
        string types;
        List[] list;
    }

    struct Group {
        bool whitelister;
        bool exchange;
        bool asset;
        bool authority;
        bool wrapper;
        bool proxy;
    }

    struct Account {
        address account;
        bool authorized;
        mapping (bool => Group) groups; //mapping account to bool authorized to bool group
    }

    struct BuildingBlocks {
        address exchangeEventful;
        address sigVerifier;
        address casper;
        mapping (address => bool) initialized;
        mapping (address => address) adapter;
        // Mapping of exchange => method => approved
        mapping (address => mapping (bytes4 => bool)) allowedMethods;
        mapping (address => mapping (address => bool)) allowedTokens;
        mapping (address => mapping (address => bool)) allowedWrappers;
    }

    /*
     * EVENTS
     */
    event AuthoritySet(address indexed authority);
    event WhitelisterSet(address indexed whitelister);
    event WhitelistedAsset(address indexed asset, bool approved);
    event WhitelistedExchange(address indexed exchange, bool approved);
    event WhitelistedWrapper(address indexed wrapper, bool approved);
    event WhitelistedProxy(address indexed proxy, bool approved);
    event WhitelistedMethod(bytes4 indexed method, address indexed adapter, bool approved);
    event NewSigVerifier(address indexed sigVerifier);
    event NewExchangeEventful(address indexed exchangeEventful);
    event NewCasper(address indexed casper);

    /*
     * MODIFIERS
     */
    modifier onlyAdmin {
        require(msg.sender == owner || isWhitelister(msg.sender));
        _;
    }

    modifier onlyWhitelister {
        require(isWhitelister(msg.sender));
        _;
    }

    /*
     * CORE FUNCTIONS
     */
    /// @dev Allows the owner to whitelist an authority
    /// @param _authority Address of the authority
    /// @param _isWhitelisted Bool whitelisted
    function setAuthority(address _authority, bool _isWhitelisted)
        external
        onlyOwner
    {
        setAuthorityInternal(_authority, _isWhitelisted);
    }

    /// @dev Allows the owner to whitelist a whitelister
    /// @param _whitelister Address of the whitelister
    /// @param _isWhitelisted Bool whitelisted
    function setWhitelister(address _whitelister, bool _isWhitelisted)
        external
        onlyOwner
    {
        setWhitelisterInternal(_whitelister, _isWhitelisted);
    }

    /// @dev Allows a whitelister to whitelist an asset
    /// @param _asset Address of the token
    /// @param _isWhitelisted Bool whitelisted
    function whitelistAsset(address _asset, bool _isWhitelisted)
        external
        onlyWhitelister
    {
        accounts[_asset].account = _asset;
        accounts[_asset].authorized = _isWhitelisted;
        accounts[_asset].groups[_isWhitelisted].asset = _isWhitelisted;
        types.list.push(List(_asset));
        emit WhitelistedAsset(_asset, _isWhitelisted);
    }

    /// @dev Allows a whitelister to whitelist an exchange
    /// @param _exchange Address of the target exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistExchange(address _exchange, bool _isWhitelisted)
        external
        onlyWhitelister
    {
        accounts[_exchange].account = _exchange;
        accounts[_exchange].authorized = _isWhitelisted;
        accounts[_exchange].groups[_isWhitelisted].exchange = _isWhitelisted;
        types.list.push(List(_exchange));
        emit WhitelistedExchange(_exchange, _isWhitelisted);
    }

    /// @dev Allows a whitelister to whitelist an token wrapper
    /// @param _wrapper Address of the target token wrapper
    /// @param _isWhitelisted Bool whitelisted
    function whitelistWrapper(address _wrapper, bool _isWhitelisted)
        external
        onlyWhitelister
    {
        accounts[_wrapper].account = _wrapper;
        accounts[_wrapper].authorized = _isWhitelisted;
        accounts[_wrapper].groups[_isWhitelisted].wrapper = _isWhitelisted;
        types.list.push(List(_wrapper));
        emit WhitelistedWrapper(_wrapper, _isWhitelisted);
    }

    /// @dev Allows a whitelister to whitelist a tokenTransferProxy
    /// @param _tokenTransferProxy Address of the proxy
    /// @param _isWhitelisted Bool whitelisted
    function whitelistTokenTransferProxy(
        address _tokenTransferProxy,
        bool _isWhitelisted)
        external
        onlyWhitelister
    {
        accounts[_tokenTransferProxy].account = _tokenTransferProxy;
        accounts[_tokenTransferProxy].authorized = _isWhitelisted;
        accounts[_tokenTransferProxy].groups[_isWhitelisted].proxy = _isWhitelisted;
        types.list.push(List(_tokenTransferProxy));
        emit WhitelistedProxy(_tokenTransferProxy, _isWhitelisted);
    }

    /// @dev Allows a whitelister to enable trading on a particular exchange
    /// @param _asset Address of the token
    /// @param _exchange Address of the exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistAssetOnExchange(
        address _asset,
        address _exchange,
        bool _isWhitelisted)
        external
        onlyAdmin
    {
        blocks.allowedTokens[_exchange][_asset] = _isWhitelisted;
        emit WhitelistedAsset(_asset, _isWhitelisted);
    }

    /// @dev Allows a whitelister to enable assiciate wrappers to a token
    /// @param _token Address of the token
    /// @param _wrapper Address of the exchange
    /// @param _isWhitelisted Bool whitelisted
    function whitelistTokenOnWrapper(address _token, address _wrapper, bool _isWhitelisted)
        external
        onlyAdmin
    {
        blocks.allowedWrappers[_wrapper][_token] = _isWhitelisted;
        emit WhitelistedAsset(_token, _isWhitelisted);
    }

    /// @dev Allows an admin to whitelist a factory
    /// @param _method Hex of the function ABI
    /// @param _isWhitelisted Bool whitelisted
    function whitelistMethod(
        bytes4 _method,
        address _adapter,
        bool _isWhitelisted)
        external
        onlyAdmin
    {
        blocks.allowedMethods[_adapter][_method] = _isWhitelisted;
        emit WhitelistedMethod(_method, _adapter, _isWhitelisted);
    }

    /// @dev Allows the owner to set the signature verifier
    /// @param _sigVerifier Address of the verifier contract
    function setSignatureVerifier(address _sigVerifier)
        external
        onlyOwner
    {
        blocks.sigVerifier = _sigVerifier;
        emit NewSigVerifier(blocks.sigVerifier);
    }

    /// @dev Allows the owner to set the exchange eventful
    /// @param _exchangeEventful Address of the exchange logs contract
    function setExchangeEventful(address _exchangeEventful)
        external
        onlyOwner
    {
        blocks.exchangeEventful = _exchangeEventful;
        emit NewExchangeEventful(blocks.exchangeEventful);
    }

    /// @dev Allows the owner to associate an exchange to its adapter
    /// @param _exchange Address of the exchange
    /// @param _adapter Address of the adapter
    function setExchangeAdapter(address _exchange, address _adapter)
        external
        onlyOwner
    {
        require(_exchange != _adapter);
        blocks.adapter[_exchange] = _adapter;
    }

    /// @dev Allows the owner to set the casper contract
    /// @param _casper Address of the casper contract
    function setCasper(address _casper)
        external
        onlyOwner
    {
        blocks.casper = _casper;
        blocks.initialized[_casper] = true;
        emit NewCasper(blocks.casper);
    }

    /*
     * CONSTANT PUBLIC FUNCTIONS
     */
    /// @dev Provides whether an address is an authority
    /// @param _authority Address of the target authority
    /// @return Bool is whitelisted
    function isAuthority(address _authority)
        external view
        returns (bool)
    {
        return accounts[_authority].groups[true].authority;
    }

    /// @dev Provides whether an asset is whitelisted
    /// @param _asset Address of the target asset
    /// @return Bool is whitelisted
    function isWhitelistedAsset(address _asset)
        external view
        returns (bool)
    {
        return accounts[_asset].groups[true].asset;
    }

    /// @dev Provides whether an exchange is whitelisted
    /// @param _exchange Address of the target exchange
    /// @return Bool is whitelisted
    function isWhitelistedExchange(address _exchange)
        external view
        returns (bool)
    {
        return accounts[_exchange].groups[true].exchange;
    }

    /// @dev Provides whether a token wrapper is whitelisted
    /// @param _wrapper Address of the target exchange
    /// @return Bool is whitelisted
    function isWhitelistedWrapper(address _wrapper)
        external view
        returns (bool)
    {
        return accounts[_wrapper].groups[true].wrapper;
    }

    /// @dev Provides whether a proxy is whitelisted
    /// @param _tokenTransferProxy Address of the proxy
    /// @return Bool is whitelisted
    function isWhitelistedProxy(address _tokenTransferProxy)
        external view
        returns (bool)
    {
        return accounts[_tokenTransferProxy].groups[true].proxy;
    }

    /// @dev Provides the address of the exchange adapter
    /// @param _exchange Address of the exchange
    /// @return Address of the adapter
    function getExchangeAdapter(address _exchange)
        external view
        returns (address)
    {
        return blocks.adapter[_exchange];
    }

    /// @dev Provides the address of the signature verifier
    /// @return Address of the verifier
    function getSigVerifier()
        external view
        returns (address)
    {
        return blocks.sigVerifier;
    }

    /// @dev Checkes whether a token is allowed on an exchange
    /// @param _token Address of the token
    /// @param _exchange Address of the exchange
    /// @return Bool the token is whitelisted on the exchange
    function canTradeTokenOnExchange(address _token, address _exchange)
        external view
        returns (bool)
    {
        return blocks.allowedTokens[_exchange][_token];
    }

    /// @dev Checkes whether a token is allowed on a wrapper
    /// @param _token Address of the token
    /// @param _wrapper Address of the token wrapper
    /// @return Bool the token is whitelisted on the exchange
    function canWrapTokenOnWrapper(address _token, address _wrapper)
        external view
        returns (bool)
    {
        return blocks.allowedWrappers[_wrapper][_token];
    }

    /// @dev Checkes whether a method is allowed on an exchange
    /// @param _method Bytes of the function signature
    /// @param _adapter Address of the exchange
    /// @return Bool the method is allowed
    function isMethodAllowed(bytes4 _method, address _adapter)
        external view
        returns (bool)
    {
        return blocks.allowedMethods[_adapter][_method];
    }

    /// @dev Checkes whether casper has been inizialized
    /// @return Bool the casper contract has been initialized
    function isCasperInitialized()
        external view
        returns (bool)
    {
        address casper = blocks.casper;
        return blocks.initialized[casper];
    }

    /// @dev Provides the address of the casper contract
    /// @return Address of the casper contract
    function getCasper()
        external view
        returns (address)
    {
        return blocks.casper;
    }

    /*
     * INTERNAL FUNCTIONS
     */
    /// @dev Allows to whitelist an authority
    /// @param _authority Address of the authority
    /// @param _isWhitelisted Bool whitelisted
    function setAuthorityInternal(
        address _authority,
        bool _isWhitelisted)
        internal
    {
        accounts[_authority].account = _authority;
        accounts[_authority].authorized = _isWhitelisted;
        accounts[_authority].groups[_isWhitelisted].authority = _isWhitelisted;
        setWhitelisterInternal(_authority, _isWhitelisted);
        types.list.push(List(_authority));
        emit AuthoritySet(_authority);
    }

    /// @dev Allows the owner to whitelist a whitelister
    /// @param _whitelister Address of the whitelister
    /// @param _isWhitelisted Bool whitelisted
    function setWhitelisterInternal(
        address _whitelister,
        bool _isWhitelisted)
        internal
    {
        accounts[_whitelister].account = _whitelister;
        accounts[_whitelister].authorized = _isWhitelisted;
        accounts[_whitelister].groups[_isWhitelisted].whitelister = _isWhitelisted;
        types.list.push(List(_whitelister));
        emit WhitelisterSet(_whitelister);
    }

    /// @dev Provides whether an address is whitelister
    /// @param _whitelister Address of the target whitelister
    /// @return Bool is whitelisted
    function isWhitelister(address _whitelister)
        internal view
        returns (bool)
    {
        return accounts[_whitelister].groups[true].whitelister;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isCasperInitialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCasper","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_authority","type":"address"}],"name":"isAuthority","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wrapper","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistWrapper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_casper","type":"address"}],"name":"setCasper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_wrapper","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistTokenOnWrapper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_exchange","type":"address"}],"name":"getExchangeAdapter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"},{"name":"_wrapper","type":"address"}],"name":"canWrapTokenOnWrapper","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenTransferProxy","type":"address"}],"name":"isWhitelistedProxy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSigVerifier","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accounts","outputs":[{"name":"account","type":"address"},{"name":"authorized","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_method","type":"bytes4"},{"name":"_adapter","type":"address"}],"name":"isMethodAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocks","outputs":[{"name":"exchangeEventful","type":"address"},{"name":"sigVerifier","type":"address"},{"name":"casper","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_exchange","type":"address"}],"name":"isWhitelistedExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_exchange","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_asset","type":"address"}],"name":"isWhitelistedAsset","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_asset","type":"address"},{"name":"_exchange","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistAssetOnExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_exchangeEventful","type":"address"}],"name":"setExchangeEventful","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_authority","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenTransferProxy","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistTokenTransferProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_exchange","type":"address"},{"name":"_adapter","type":"address"}],"name":"setExchangeAdapter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_whitelister","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"setWhitelister","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_asset","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistAsset","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"types","outputs":[{"name":"types","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sigVerifier","type":"address"}],"name":"setSignatureVerifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"},{"name":"_exchange","type":"address"}],"name":"canTradeTokenOnExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_wrapper","type":"address"}],"name":"isWhitelistedWrapper","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_method","type":"bytes4"},{"name":"_adapter","type":"address"},{"name":"_isWhitelisted","type":"bool"}],"name":"whitelistMethod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"AuthoritySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whitelister","type":"address"}],"name":"WhitelisterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"asset","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"WhitelistedAsset","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"exchange","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"WhitelistedExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"wrapper","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"WhitelistedWrapper","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"proxy","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"WhitelistedProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"method","type":"bytes4"},{"indexed":true,"name":"adapter","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"WhitelistedMethod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sigVerifier","type":"address"}],"name":"NewSigVerifier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"exchangeEventful","type":"address"}],"name":"NewExchangeEventful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"casper","type":"address"}],"name":"NewCasper","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}]

608060405260008054600160a060020a03191633179055611333806100256000396000f30060806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146101845780631a68f034146101a75780632314d79c146101d05780632330f247146102015780633bd89497146102225780633f7532e214610248578063418a56e414610269578063485ff697146102955780634da07da3146102b657806358c860f9146102dd5780635b28556d146102fe5780635e5c06e2146103135780637ecf2c2f146103575780638da5cb5b14610385578063967ff23e1461039a5780639aa4d0a0146103da578063a3254102146103fb578063ab1dc42714610421578063abda237114610442578063b191f13b1461046e578063b5f0d35c1461048f578063bdcc542f146104b5578063c4ef5c85146104db578063c91b014914610502578063cba91dd214610528578063ccbff9791461054e578063e08a6605146105d8578063f1915b17146105f9578063f3229cda14610620578063fb34c29014610641575b600080fd5b34801561019057600080fd5b506101a5600160a060020a0360043516610674565b005b3480156101b357600080fd5b506101bc6106ee565b604080519115158252519081900360200190f35b3480156101dc57600080fd5b506101e561070f565b60408051600160a060020a039092168252519081900360200190f35b34801561020d57600080fd5b506101bc600160a060020a036004351661071e565b34801561022e57600080fd5b506101a5600160a060020a03600435166024351515610751565b34801561025457600080fd5b506101a5600160a060020a0360043516610838565b34801561027557600080fd5b506101a5600160a060020a036004358116906024351660443515156108b5565b3480156102a157600080fd5b506101e5600160a060020a036004351661094b565b3480156102c257600080fd5b506101bc600160a060020a0360043581169060243516610969565b3480156102e957600080fd5b506101bc600160a060020a0360043516610998565b34801561030a57600080fd5b506101e56109cd565b34801561031f57600080fd5b50610334600160a060020a03600435166109dc565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561036357600080fd5b506101bc600160e060020a031960043516600160a060020a0360243516610a03565b34801561039157600080fd5b506101e5610a37565b3480156103a657600080fd5b506103af610a46565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b3480156103e657600080fd5b506101bc600160a060020a0360043516610a63565b34801561040757600080fd5b506101a5600160a060020a03600435166024351515610a94565b34801561042d57600080fd5b506101bc600160a060020a0360043516610b75565b34801561044e57600080fd5b506101a5600160a060020a03600435811690602435166044351515610ba7565b34801561047a57600080fd5b506101a5600160a060020a0360043516610c3d565b34801561049b57600080fd5b506101a5600160a060020a03600435166024351515610ca4565b3480156104c157600080fd5b506101a5600160a060020a03600435166024351515610cc9565b3480156104e757600080fd5b506101a5600160a060020a0360043581169060243516610db2565b34801561050e57600080fd5b506101a5600160a060020a03600435166024351515610e10565b34801561053457600080fd5b506101a5600160a060020a03600435166024351515610e31565b34801561055a57600080fd5b50610563610f14565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e457600080fd5b506101a5600160a060020a0360043516610fa6565b34801561060557600080fd5b506101bc600160a060020a036004358116906024351661100d565b34801561062c57600080fd5b506101bc600160a060020a036004351661103c565b34801561064d57600080fd5b506101a5600160e060020a031960043516600160a060020a03602435166044351515611070565b600054600160a060020a0316331461068b57600080fd5b600160a060020a03811615156106a057600080fd5b60008054600160a060020a031916600160a060020a0383811691821780845560405192939116917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a350565b600354600160a060020a031660009081526004602052604090205460ff1690565b600354600160a060020a031690565b600160a060020a03166000908152600b602090815260408083206001808552019091529020546301000000900460ff1690565b61075a3361110e565b151561076557600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a0319938416891716178355808652600192830185528386208054640100000000830264ff000000001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927f7aef30a25ce3716a35bed040cbe56c5c3634c99fd57f50fd37a8b9187af04c9d92918290030190a25050565b600054600160a060020a0316331461084f57600080fd5b60038054600160a060020a031916600160a060020a038381169182178355600091825260046020526040808320805460ff19166001179055925492519216917ff62b7326bb5f6084a70482a099d3ded86de8cfbbfcea28e4f5b04ad693bf55ce9190a250565b600054600160a060020a03163314806108d257506108d23361110e565b15156108dd57600080fd5b600160a060020a03828116600090815260086020908152604080832093871680845293825291829020805460ff1916851515908117909155825190815291517fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb19281900390910190a2505050565b600160a060020a039081166000908152600560205260409020541690565b600160a060020a0380821660009081526008602090815260408083209386168352929052205460ff1692915050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205465010000000000900460ff1690565b600254600160a060020a031690565b600b60205260009081526040902054600160a060020a0381169060a060020a900460ff1682565b600160a060020a03166000908152600660209081526040808320600160e060020a0319949094168352929052205460ff1690565b600054600160a060020a031681565b600154600254600354600160a060020a0392831692918216911683565b600160a060020a03166000908152600b60209081526040808320600180855201909152902054610100900460ff1690565b610a9d3361110e565b1515610aa857600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a0319938416891716178355808652600192830185528386208054610100830261ff001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927fb541b66aaab15841e9f8a3a40fc50b777ddd85dc6378cfc6389a973d2117c7d592918290030190a25050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205462010000900460ff1690565b600054600160a060020a0316331480610bc45750610bc43361110e565b1515610bcf57600080fd5b600160a060020a03828116600090815260076020908152604080832093871680845293825291829020805460ff1916851515908117909155825190815291517fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb19281900390910190a2505050565b600054600160a060020a03163314610c5457600080fd5b60018054600160a060020a031916600160a060020a0383811691909117918290556040519116907f357d1ba45e9ef3fb937f4b33a26a6efed1b2f40114460d16fbfce82aca41575590600090a250565b600054600160a060020a03163314610cbb57600080fd5b610cc5828261113a565b5050565b610cd23361110e565b1515610cdd57600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805465010000000000830265ff00000000001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927f3f3eed7eaae83dc29780651cd8137dff8325c81eea4c1091ac034a5572e1e2ef92918290030190a25050565b600054600160a060020a03163314610dc957600080fd5b600160a060020a038281169082161415610de257600080fd5b600160a060020a0391821660009081526005602052604090208054600160a060020a03191691909216179055565b600054600160a060020a03163314610e2757600080fd5b610cc58282611229565b610e3a3361110e565b1515610e4557600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805462010000830262ff00001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb192918290030190a25050565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152918391830182828015610f9c5780601f10610f7157610100808354040283529160200191610f9c565b820191906000526020600020905b815481529060010190602001808311610f7f57829003601f168201915b5050505050905081565b600054600160a060020a03163314610fbd57600080fd5b60028054600160a060020a031916600160a060020a0383811691909117918290556040519116907f95dcb20e52ed37833185c8b850bf9fa7990bdb0f232209c82b0a97a0a3a602e190600090a250565b600160a060020a0380821660009081526007602090815260408083209386168352929052205460ff1692915050565b600160a060020a03166000908152600b60209081526040808320600180855201909152902054640100000000900460ff1690565b600054600160a060020a031633148061108d575061108d3361110e565b151561109857600080fd5b600160a060020a0382166000818152600660209081526040808320600160e060020a0319881680855290835292819020805460ff1916861515908117909155815190815290517f3f8a1234a535cf651c4bcc3d4c56b68d7ff3264d0c4c8a3675245853f7851a11929181900390910190a3505050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205460ff1690565b600160a060020a0382166000818152600b602090815260408083208054600160a060020a03191690941760a060020a60ff02191660a060020a86151590810291909117855580845260019094019091529020805463ff000000191663010000009092029190911790556111ad8282611229565b60408051602081018252600160a060020a03848116808352600a8054600181018255600091825293516000805160206112e88339815191529094018054600160a060020a031916949093169390931790915591517f17898fd7375ca5152626d6fdd4ceb2bce6cc033c9b61e254dd0087d5f8b474309190a25050565b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805460ff1916909117905582519384018352858452600a80549283018155855292516000805160206112e8833981519152909101805491909616921691909117909355915190917f0a9327c1e2b316c1e4412bc43a5bc2b0c629ecde4f1c9e21911d02ac8b3ad42d91a250505600c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a165627a7a7230582005185ae2992b3230b315d11c246dfd7ff1447467fe0a9d7f0b49ddc7c947282f0029

Deployed Bytecode

0x60806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146101845780631a68f034146101a75780632314d79c146101d05780632330f247146102015780633bd89497146102225780633f7532e214610248578063418a56e414610269578063485ff697146102955780634da07da3146102b657806358c860f9146102dd5780635b28556d146102fe5780635e5c06e2146103135780637ecf2c2f146103575780638da5cb5b14610385578063967ff23e1461039a5780639aa4d0a0146103da578063a3254102146103fb578063ab1dc42714610421578063abda237114610442578063b191f13b1461046e578063b5f0d35c1461048f578063bdcc542f146104b5578063c4ef5c85146104db578063c91b014914610502578063cba91dd214610528578063ccbff9791461054e578063e08a6605146105d8578063f1915b17146105f9578063f3229cda14610620578063fb34c29014610641575b600080fd5b34801561019057600080fd5b506101a5600160a060020a0360043516610674565b005b3480156101b357600080fd5b506101bc6106ee565b604080519115158252519081900360200190f35b3480156101dc57600080fd5b506101e561070f565b60408051600160a060020a039092168252519081900360200190f35b34801561020d57600080fd5b506101bc600160a060020a036004351661071e565b34801561022e57600080fd5b506101a5600160a060020a03600435166024351515610751565b34801561025457600080fd5b506101a5600160a060020a0360043516610838565b34801561027557600080fd5b506101a5600160a060020a036004358116906024351660443515156108b5565b3480156102a157600080fd5b506101e5600160a060020a036004351661094b565b3480156102c257600080fd5b506101bc600160a060020a0360043581169060243516610969565b3480156102e957600080fd5b506101bc600160a060020a0360043516610998565b34801561030a57600080fd5b506101e56109cd565b34801561031f57600080fd5b50610334600160a060020a03600435166109dc565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561036357600080fd5b506101bc600160e060020a031960043516600160a060020a0360243516610a03565b34801561039157600080fd5b506101e5610a37565b3480156103a657600080fd5b506103af610a46565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b3480156103e657600080fd5b506101bc600160a060020a0360043516610a63565b34801561040757600080fd5b506101a5600160a060020a03600435166024351515610a94565b34801561042d57600080fd5b506101bc600160a060020a0360043516610b75565b34801561044e57600080fd5b506101a5600160a060020a03600435811690602435166044351515610ba7565b34801561047a57600080fd5b506101a5600160a060020a0360043516610c3d565b34801561049b57600080fd5b506101a5600160a060020a03600435166024351515610ca4565b3480156104c157600080fd5b506101a5600160a060020a03600435166024351515610cc9565b3480156104e757600080fd5b506101a5600160a060020a0360043581169060243516610db2565b34801561050e57600080fd5b506101a5600160a060020a03600435166024351515610e10565b34801561053457600080fd5b506101a5600160a060020a03600435166024351515610e31565b34801561055a57600080fd5b50610563610f14565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e457600080fd5b506101a5600160a060020a0360043516610fa6565b34801561060557600080fd5b506101bc600160a060020a036004358116906024351661100d565b34801561062c57600080fd5b506101bc600160a060020a036004351661103c565b34801561064d57600080fd5b506101a5600160e060020a031960043516600160a060020a03602435166044351515611070565b600054600160a060020a0316331461068b57600080fd5b600160a060020a03811615156106a057600080fd5b60008054600160a060020a031916600160a060020a0383811691821780845560405192939116917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a350565b600354600160a060020a031660009081526004602052604090205460ff1690565b600354600160a060020a031690565b600160a060020a03166000908152600b602090815260408083206001808552019091529020546301000000900460ff1690565b61075a3361110e565b151561076557600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a0319938416891716178355808652600192830185528386208054640100000000830264ff000000001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927f7aef30a25ce3716a35bed040cbe56c5c3634c99fd57f50fd37a8b9187af04c9d92918290030190a25050565b600054600160a060020a0316331461084f57600080fd5b60038054600160a060020a031916600160a060020a038381169182178355600091825260046020526040808320805460ff19166001179055925492519216917ff62b7326bb5f6084a70482a099d3ded86de8cfbbfcea28e4f5b04ad693bf55ce9190a250565b600054600160a060020a03163314806108d257506108d23361110e565b15156108dd57600080fd5b600160a060020a03828116600090815260086020908152604080832093871680845293825291829020805460ff1916851515908117909155825190815291517fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb19281900390910190a2505050565b600160a060020a039081166000908152600560205260409020541690565b600160a060020a0380821660009081526008602090815260408083209386168352929052205460ff1692915050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205465010000000000900460ff1690565b600254600160a060020a031690565b600b60205260009081526040902054600160a060020a0381169060a060020a900460ff1682565b600160a060020a03166000908152600660209081526040808320600160e060020a0319949094168352929052205460ff1690565b600054600160a060020a031681565b600154600254600354600160a060020a0392831692918216911683565b600160a060020a03166000908152600b60209081526040808320600180855201909152902054610100900460ff1690565b610a9d3361110e565b1515610aa857600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a0319938416891716178355808652600192830185528386208054610100830261ff001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927fb541b66aaab15841e9f8a3a40fc50b777ddd85dc6378cfc6389a973d2117c7d592918290030190a25050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205462010000900460ff1690565b600054600160a060020a0316331480610bc45750610bc43361110e565b1515610bcf57600080fd5b600160a060020a03828116600090815260076020908152604080832093871680845293825291829020805460ff1916851515908117909155825190815291517fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb19281900390910190a2505050565b600054600160a060020a03163314610c5457600080fd5b60018054600160a060020a031916600160a060020a0383811691909117918290556040519116907f357d1ba45e9ef3fb937f4b33a26a6efed1b2f40114460d16fbfce82aca41575590600090a250565b600054600160a060020a03163314610cbb57600080fd5b610cc5828261113a565b5050565b610cd23361110e565b1515610cdd57600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805465010000000000830265ff00000000001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927f3f3eed7eaae83dc29780651cd8137dff8325c81eea4c1091ac034a5572e1e2ef92918290030190a25050565b600054600160a060020a03163314610dc957600080fd5b600160a060020a038281169082161415610de257600080fd5b600160a060020a0391821660009081526005602052604090208054600160a060020a03191691909216179055565b600054600160a060020a03163314610e2757600080fd5b610cc58282611229565b610e3a3361110e565b1515610e4557600080fd5b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805462010000830262ff00001990911617905583518086018552878152600a8054948501815590965294516000805160206112e88339815191529092018054929097169116179094558351918252925191927fb4e51190ac09d88100031de9d538eda33e031ff4ea0598f973dcb1531ce12eb192918290030190a25050565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152918391830182828015610f9c5780601f10610f7157610100808354040283529160200191610f9c565b820191906000526020600020905b815481529060010190602001808311610f7f57829003601f168201915b5050505050905081565b600054600160a060020a03163314610fbd57600080fd5b60028054600160a060020a031916600160a060020a0383811691909117918290556040519116907f95dcb20e52ed37833185c8b850bf9fa7990bdb0f232209c82b0a97a0a3a602e190600090a250565b600160a060020a0380821660009081526007602090815260408083209386168352929052205460ff1692915050565b600160a060020a03166000908152600b60209081526040808320600180855201909152902054640100000000900460ff1690565b600054600160a060020a031633148061108d575061108d3361110e565b151561109857600080fd5b600160a060020a0382166000818152600660209081526040808320600160e060020a0319881680855290835292819020805460ff1916861515908117909155815190815290517f3f8a1234a535cf651c4bcc3d4c56b68d7ff3264d0c4c8a3675245853f7851a11929181900390910190a3505050565b600160a060020a03166000908152600b6020908152604080832060018085520190915290205460ff1690565b600160a060020a0382166000818152600b602090815260408083208054600160a060020a03191690941760a060020a60ff02191660a060020a86151590810291909117855580845260019094019091529020805463ff000000191663010000009092029190911790556111ad8282611229565b60408051602081018252600160a060020a03848116808352600a8054600181018255600091825293516000805160206112e88339815191529094018054600160a060020a031916949093169390931790915591517f17898fd7375ca5152626d6fdd4ceb2bce6cc033c9b61e254dd0087d5f8b474309190a25050565b600160a060020a038083166000818152600b60209081526040808320805487151560a060020a810260a060020a60ff0219600160a060020a031993841689171617835580865260019283018552838620805460ff1916909117905582519384018352858452600a80549283018155855292516000805160206112e8833981519152909101805491909616921691909117909355915190917f0a9327c1e2b316c1e4412bc43a5bc2b0c629ecde4f1c9e21911d02ac8b3ad42d91a250505600c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a165627a7a7230582005185ae2992b3230b315d11c246dfd7ff1447467fe0a9d7f0b49ddc7c947282f0029

Deployed Bytecode Sourcemap

8586:13618:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;942:178:0;-1:-1:-1;;;;;942:178:0;;;;;;;20217:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20217:176:0;;;;;;;;;;;;;;;;;;;;;;20507:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20507:115:0;;;;;;;;-1:-1:-1;;;;;20507:115:0;;;;;;;;;;;;;;16850:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16850:162:0;-1:-1:-1;;;;;16850:162:0;;;;;12693:405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12693:405:0;-1:-1:-1;;;;;12693:405:0;;;;;;;;;16432:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16432:205:0;-1:-1:-1;;;;;16432:205:0;;;;;14531:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14531:262:0;-1:-1:-1;;;;;14531:262:0;;;;;;;;;;;;;;18473:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18473:153:0;-1:-1:-1;;;;;18473:153:0;;;;;19506:183;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19506:183:0;-1:-1:-1;;;;;19506:183:0;;;;;;;;;;18133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18133:183:0;-1:-1:-1;;;;;18133:183:0;;;;;18736:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18736:125:0;;;;8717:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8717:44:0;-1:-1:-1;;;;;8717:44:0;;;;;;;;;-1:-1:-1;;;;;8717:44:0;;;;;;;;;;;;;;;;;;;;;19911:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19911:177:0;-1:-1:-1;;;;;;19911:177:0;;;-1:-1:-1;;;;;19911:177:0;;;;;692:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:20:0;;;;8656:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8656:28:0;;;;;;;;-1:-1:-1;;;;;8656:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17480:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17480:169:0;-1:-1:-1;;;;;17480:169:0;;;;;12096:415;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12096:415:0;-1:-1:-1;;;;;12096:415:0;;;;;;;;;17163:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17163:157:0;-1:-1:-1;;;;;17163:157:0;;;;;14016:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14016:291:0;-1:-1:-1;;;;;14016:291:0;;;;;;;;;;;;;;15711:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15711:220:0;-1:-1:-1;;;;;15711:220:0;;;;;10859:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10859:172:0;-1:-1:-1;;;;;10859:172:0;;;;;;;;;13280:508;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13280:508:0;-1:-1:-1;;;;;13280:508:0;;;;;;;;;16108:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16108:203:0;-1:-1:-1;;;;;16108:203:0;;;;;;;;;;11201:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11201:180:0;-1:-1:-1;;;;;11201:180:0;;;;;;;;;11538:385;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11538:385:0;-1:-1:-1;;;;;11538:385:0;;;;;;;;;8691:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8691:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8691:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15375:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15375:196:0;-1:-1:-1;;;;;15375:196:0;;;;;19090:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19090:185:0;-1:-1:-1;;;;;19090:185:0;;;;;;;;;;17812:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17812:165:0;-1:-1:-1;;;;;17812:165:0;;;;;14950:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14950:294:0;-1:-1:-1;;;;;;14950:294:0;;;-1:-1:-1;;;;;14950:294:0;;;;;;;;;942:178;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;-1:-1:-1;;;;;1033:18:0;;;;1025:27;;;;;;1063:5;:12;;-1:-1:-1;;;;;;1063:12:0;-1:-1:-1;;;;;1063:12:0;;;;;;;;;1091:21;;1063:12;;1100:5;;;1091:21;;1063:5;1091:21;942:178;:::o;20217:176::-;20328:13;;-1:-1:-1;;;;;20328:13:0;20289:4;20359:26;;;:18;:26;;;;;;;;;20217:176::o;20507:115::-;20601:13;;-1:-1:-1;;;;;20601:13:0;20507:115;:::o;16850:162::-;-1:-1:-1;;;;;16961:20:0;16932:4;16961:20;;;:8;:20;;;;;;;;:27;:33;;;:27;:33;;;;;:43;;;;;;;16850:162::o;12693:405::-;10608:25;10622:10;10608:13;:25::i;:::-;10600:34;;;;;;;;-1:-1:-1;;;;;12817:18:0;;;;;;;:8;:18;;;;;;;;:37;;12865:46;;;-1:-1:-1;;;12865:46:0;;-1:-1:-1;;;;;;;;;;;;12817:37:0;;;;;12865:46;;;;12922:41;;;12817:37;12922:25;;;:41;;;;;:66;;;;;-1:-1:-1;;12922:66:0;;;;;;13015:14;;;;;;;;;;12999:10;27::-1;;23:18;;;45:23;;12999:31:0;;;;;-1:-1:-1;;;;;;;;;;;12999:31:0;;;;;;;;;;;;;;;13046:44;;;;;;;12817:18;;13046:44;;;;;;;;;12693:405;;:::o;16432:205::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;16521:13;:23;;-1:-1:-1;;;;;;16521:23:0;-1:-1:-1;;;;;16521:23:0;;;;;;;;-1:-1:-1;16555:27:0;;;:18;:27;;;;;;:34;;-1:-1:-1;;16555:34:0;-1:-1:-1;16555:34:0;;;16615:13;;16605:24;;16615:13;;;16605:24;;-1:-1:-1;16605:24:0;16432:205;:::o;14531:262::-;10501:5;;-1:-1:-1;;;;;10501:5:0;10487:10;:19;;:48;;;10510:25;10524:10;10510:13;:25::i;:::-;10479:57;;;;;;;;-1:-1:-1;;;;;14672:32:0;;;;;;;:22;:32;;;;;;;;:40;;;;;;;;;;;;;:57;;-1:-1:-1;;14672:57:0;;;;;;;;;;14745:40;;;;;;;;;;;;;;;;;14531:262;;;:::o;18473:153::-;-1:-1:-1;;;;;18593:25:0;;;18561:7;18593:25;;;:14;:25;;;;;;;;18473:153::o;19506:183::-;-1:-1:-1;;;;;19641:32:0;;;19612:4;19641:32;;;:22;:32;;;;;;;;:40;;;;;;;;;;;;19506:183;;;;:::o;18133:::-;-1:-1:-1;;;;;18260:29:0;18231:4;18260:29;;;:8;:29;;;;;;;;:36;:42;;;:36;:42;;;;;:48;;;;;;;18133:183::o;18736:125::-;18835:18;;-1:-1:-1;;;;;18835:18:0;18736:125;:::o;8717:44::-;;;;;;;;;;;;-1:-1:-1;;;;;8717:44:0;;;-1:-1:-1;;;8717:44:0;;;;;:::o;19911:177::-;-1:-1:-1;;;;;20040:31:0;20011:4;20040:31;;;:21;:31;;;;;;;;-1:-1:-1;;;;;;20040:40:0;;;;;;;;;;;;;;19911:177::o;692:20::-;;;-1:-1:-1;;;;;692:20:0;;:::o;8656:28::-;;;;;;;-1:-1:-1;;;;;8656:28:0;;;;;;;;;;:::o;17480:169::-;-1:-1:-1;;;;;17600:19:0;17571:4;17600:19;;;:8;:19;;;;;;;;:26;:32;;;:26;:32;;;;;:41;;;;;;;17480:169::o;12096:415::-;10608:25;10622:10;10608:13;:25::i;:::-;10600:34;;;;;;;;-1:-1:-1;;;;;12222:19:0;;;;;;;:8;:19;;;;;;;;:39;;12272:47;;;-1:-1:-1;;;12272:47:0;;-1:-1:-1;;;;;;;;;;;;12222:39:0;;;;;12272:47;;;;12330:42;;;12222:39;12330:26;;;:42;;;;;:68;;12222:39;12330:68;;-1:-1:-1;;12330:68:0;;;;;;12425:15;;;;;;;;;;12409:10;27::-1;;23:18;;;45:23;;12409:32:0;;;;;-1:-1:-1;;;;;;;;;;;12409:32:0;;;;;;;;;;;;;;;12457:46;;;;;;;12222:19;;12457:46;;;;;;;;;12096:415;;:::o;17163:157::-;-1:-1:-1;;;;;17277:16:0;17248:4;17277:16;;;:8;:16;;;;;;;;:23;:29;;;:23;:29;;;;;:35;;;;;;;17163:157::o;14016:291::-;10501:5;;-1:-1:-1;;;;;10501:5:0;10487:10;:19;;:48;;;10510:25;10524:10;10510:13;:25::i;:::-;10479:57;;;;;;;;-1:-1:-1;;;;;14187:31:0;;;;;;;:20;:31;;;;;;;;:39;;;;;;;;;;;;;:56;;-1:-1:-1;;14187:56:0;;;;;;;;;;14259:40;;;;;;;;;;;;;;;;;14016:291;;;:::o;15711:220::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;15820:6;:43;;-1:-1:-1;;;;;;15820:43:0;-1:-1:-1;;;;;15820:43:0;;;;;;;;;;;15879:44;;15899:23;;;15879:44;;-1:-1:-1;;15879:44:0;15711:220;:::o;10859:172::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;10975:48;10996:10;11008:14;10975:20;:48::i;:::-;10859:172;;:::o;13280:508::-;10608:25;10622:10;10608:13;:25::i;:::-;10600:34;;;;;;;;-1:-1:-1;;;;;13445:29:0;;;;;;;:8;:29;;;;;;;;:59;;13515:57;;;-1:-1:-1;;;13515:57:0;;-1:-1:-1;;;;;;;;;;;;13445:59:0;;;;;13515:57;;;;13583:52;;;13445:59;13583:36;;;:52;;;;;:75;;;;;-1:-1:-1;;13583:75:0;;;;;;13685:25;;;;;;;;;;13669:10;27::-1;;23:18;;;45:23;;13669:42:0;;;;;-1:-1:-1;;;;;;;;;;;13669:42:0;;;;;;;;;;;;;;;13727:53;;;;;;;13445:29;;13727:53;;;;;;;;;13280:508;;:::o;16108:203::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;-1:-1:-1;;;;;16234:21:0;;;;;;;;16226:30;;;;;;-1:-1:-1;;;;;16267:25:0;;;;;;;:14;:25;;;;;:36;;-1:-1:-1;;;;;;16267:36:0;;;;;;;;16108:203::o;11201:180::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;11321:52;11344:12;11358:14;11321:22;:52::i;11538:385::-;10608:25;10622:10;10608:13;:25::i;:::-;10600:34;;;;;;;;-1:-1:-1;;;;;11658:16:0;;;;;;;:8;:16;;;;;;;;:33;;11702:44;;;-1:-1:-1;;;11702:44:0;;-1:-1:-1;;;;;;;;;;;;11658:33:0;;;;;11702:44;;;;11757:39;;;11658:33;11757:23;;;:39;;;;;:62;;;;;-1:-1:-1;;11757:62:0;;;;;;11846:12;;;;;;;;;;11830:10;27::-1;;23:18;;;45:23;;11830:29:0;;;;;-1:-1:-1;;;;;;;;;;;11830:29:0;;;;;;;;;;;;;;;11875:40;;;;;;;11658:16;;11875:40;;;;;;;;;11538:385;;:::o;8691:17::-;;;;;;;;;;-1:-1:-1;;8691:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15375:196::-;842:5;;-1:-1:-1;;;;;842:5:0;828:10;:19;820:28;;;;;;15480:18;:33;;-1:-1:-1;;;;;;15480:33:0;-1:-1:-1;;;;;15480:33:0;;;;;;;;;;;15529:34;;15544:18;;;15529:34;;-1:-1:-1;;15529:34:0;15375:196;:::o;19090:185::-;-1:-1:-1;;;;;19228:31:0;;;19199:4;19228:31;;;:20;:31;;;;;;;;:39;;;;;;;;;;;;19090:185;;;;:::o;17812:165::-;-1:-1:-1;;;;;17930:18:0;17901:4;17930:18;;;:8;:18;;;;;;;;:25;:31;;;:25;:31;;;;;:39;;;;;;;17812:165::o;14950:294::-;10501:5;;-1:-1:-1;;;;;10501:5:0;10487:10;:19;;:48;;;10510:25;10524:10;10510:13;:25::i;:::-;10479:57;;;;;;;;-1:-1:-1;;;;;15111:31:0;;;;;;:21;:31;;;;;;;;-1:-1:-1;;;;;;15111:40:0;;;;;;;;;;;;:57;;-1:-1:-1;;15111:57:0;;;;;;;;;;15184:52;;;;;;;;;;;;;;;;;;14950:294;;;:::o;22031:170::-;-1:-1:-1;;;;;22146:22:0;22117:4;22146:22;;;:8;:22;;;;;;;;:29;:35;;;:29;:35;;;;;:47;;;;22031:170::o;20821:458::-;-1:-1:-1;;;;;20945:20:0;;;;;;:8;:20;;;;;;;;:41;;-1:-1:-1;;;;;;20945:41:0;;;;-1:-1:-1;;;;;;20997:48:0;-1:-1:-1;;;20997:48:0;;;;;;;;;;;;21056:43;;;-1:-1:-1;21056:27:0;;;:43;;;;;:70;;-1:-1:-1;;21056:70:0;;;;;;;;;;;21137:50;20945:20;20997:48;21137:22;:50::i;:::-;21214:16;;;;;;;;-1:-1:-1;;;;;21214:16:0;;;;;;21198:10;27::-1;;21198::0;23:18:-1;;45:23;;-1:-1;21198:33:0;;;;;-1:-1:-1;;;;;;;;;;;21198:33:0;;;;;-1:-1:-1;;;;;;21198:33:0;;;;;;;;;;;;21247:24;;;;-1:-1:-1;21247:24:0;20821:458;;:::o;21449:417::-;-1:-1:-1;;;;;21577:22:0;;;;;;;:8;:22;;;;;;;;:45;;21633:50;;;-1:-1:-1;;;21633:50:0;;-1:-1:-1;;;;;;;;;;;;21577:45:0;;;;;21633:50;;;;21694:45;;;21577;21694:29;;;:45;;;;;:74;;-1:-1:-1;;21694:74:0;;;;;;21795:18;;;;;;;;;;21779:10;27::-1;;23:18;;;45:23;;21779:35:0;;;;-1:-1:-1;;;;;;;;;;;21779:35:0;;;;;;;;;;;;;;;;;;21830:28;;21577:22;;21830:28;;;21449:417;;:::o

Swarm Source

bzzr://05185ae2992b3230b315d11c246dfd7ff1447467fe0a9d7f0b49ddc7c947282f

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.