ETH Price: $3,319.99 (+1.85%)
Gas: 3 Gwei

Contract

0xB36d12a83135982FB6e2C276F36c87513c5B0991
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Blacklist176764472023-07-12 8:59:35383 days ago1689152375IN
0xB36d12a8...13c5B0991
0 ETH0.0004938319.68895452
Set Whitelist176764442023-07-12 8:58:47383 days ago1689152327IN
0xB36d12a8...13c5B0991
0 ETH0.0004881617.44637991
Set Blacklist174648122023-06-12 15:18:47413 days ago1686583127IN
0xB36d12a8...13c5B0991
0 ETH0.0016361134.81542016
Set Whitelist174648072023-06-12 15:17:47413 days ago1686583067IN
0xB36d12a8...13c5B0991
0 ETH0.0016831535.83394385
Set Blacklist174647512023-06-12 15:06:11413 days ago1686582371IN
0xB36d12a8...13c5B0991
0 ETH0.0012834347.39054508
Set Blacklist174121932023-06-05 5:15:47420 days ago1685942147IN
0xB36d12a8...13c5B0991
0 ETH0.0005060620.17624887
Set Whitelist174121902023-06-05 5:15:11420 days ago1685942111IN
0xB36d12a8...13c5B0991
0 ETH0.000547819.24491819
Set Whitelist174121742023-06-05 5:11:59420 days ago1685941919IN
0xB36d12a8...13c5B0991
0 ETH0.0005915719.72381328
Set Blacklist174121502023-06-05 5:07:11420 days ago1685941631IN
0xB36d12a8...13c5B0991
0 ETH0.0005637220.80640283
Set Whitelist174121482023-06-05 5:06:47420 days ago1685941607IN
0xB36d12a8...13c5B0991
0 ETH0.000663422.11854153
Set Blacklist174085492023-06-04 16:54:35421 days ago1685897675IN
0xB36d12a8...13c5B0991
0 ETH0.0006694124.70727723
Set Whitelist174085442023-06-04 16:53:35421 days ago1685897615IN
0xB36d12a8...13c5B0991
0 ETH0.0007295424.32373092
Set Blacklist174085012023-06-04 16:44:23421 days ago1685897063IN
0xB36d12a8...13c5B0991
0 ETH0.0007586528.00098452
Set Whitelist174084932023-06-04 16:42:47421 days ago1685896967IN
0xB36d12a8...13c5B0991
0 ETH0.0008767229.23097127
Set Whitelist172854852023-05-18 9:16:23438 days ago1684401383IN
0xB36d12a8...13c5B0991
0 ETH0.0019275241.03647162
Set Whitelist172854632023-05-18 9:11:59438 days ago1684401119IN
0xB36d12a8...13c5B0991
0 ETH0.0009835339.24896528
Set Blacklist172802332023-05-17 15:28:59439 days ago1684337339IN
0xB36d12a8...13c5B0991
0 ETH0.0025021853.24483964
Set Whitelist172802292023-05-17 15:28:11439 days ago1684337291IN
0xB36d12a8...13c5B0991
0 ETH0.0037088353.14047313
0x60806040172292802023-05-10 10:02:11446 days ago1683712931IN
 Create: LosslessControllerV4
0 ETH0.057460374.06988195

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LosslessControllerV4

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


interface ILERC20 {
    function name() external view returns (string memory);
    function admin() external view returns (address);
    function getAdmin() external view returns (address);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address _recipient, uint256 _amount) external returns (bool);
    function allowance(address _owner, address _spender) external view returns (uint256);
    function approve(address _spender, uint256 _amount) external returns (bool);
    function transferFrom(address _sender, address _recipient, uint256 _amount) external returns (bool);
    function increaseAllowance(address _spender, uint256 _addedValue) external returns (bool);
    function decreaseAllowance(address _spender, uint256 _subtractedValue) external returns (bool);
    
    function transferOutBlacklistedFunds(address[] calldata _from) external;
    function setLosslessAdmin(address _newAdmin) external;
    function transferRecoveryAdminOwnership(address _candidate, bytes32 _keyHash) external;
    function acceptRecoveryAdminOwnership(bytes memory _key) external;
    function proposeLosslessTurnOff() external;
    function executeLosslessTurnOff() external;
    function executeLosslessTurnOn() external;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    event NewAdmin(address indexed _newAdmin);
    event NewRecoveryAdminProposal(address indexed _candidate);
    event NewRecoveryAdmin(address indexed _newAdmin);
    event LosslessTurnOffProposal(uint256 _turnOffDate);
    event LosslessOff();
    event LosslessOn();
}

interface ILssController {
    // function getLockedAmount(ILERC20 _token, address _account)  returns (uint256);
    // function getAvailableAmount(ILERC20 _token, address _account) external view returns (uint256 amount);
    function whitelist(address _adr) external view returns (bool);
    function blacklist(address _adr) external view returns (bool);
    function admin() external view returns (address);
    function recoveryAdmin() external view returns (address);

    function setAdmin(address _newAdmin) external;
    function setRecoveryAdmin(address _newRecoveryAdmin) external;

    function setWhitelist(address[] calldata _addrList, bool _value) external;
    function setBlacklist(address[] calldata _addrList, bool _value) external;

    function beforeTransfer(address _sender, address _recipient, uint256 _amount) external;
    function beforeTransferFrom(address _msgSender, address _sender, address _recipient, uint256 _amount) external;
    function beforeApprove(address _sender, address _spender, uint256 _amount) external;
    function beforeIncreaseAllowance(address _msgSender, address _spender, uint256 _addedValue) external;
    function beforeDecreaseAllowance(address _msgSender, address _spender, uint256 _subtractedValue) external;
    function beforeMint(address _to, uint256 _amount) external;
    function beforeBurn(address _account, uint256 _amount) external;
    function afterTransfer(address _sender, address _recipient, uint256 _amount) external;

    event AdminChange(address indexed _newAdmin);
    event RecoveryAdminChange(address indexed _newAdmin);
    event PauseAdminChange(address indexed _newAdmin);
}

/// @title Lossless Controller Contract
/// @notice The controller contract is in charge of the communication and senstive data among all Lossless Environment Smart Contracts
contract LosslessControllerV4 is ILssController, Context {
    // IMPORTANT!: For future reference, when adding new variables for following versions of the controller. 
    // All the previous ones should be kept in place and not change locations, types or names.
    // If thye're modified this would cause issues with the memory slots.

    address override public admin;
    address override public recoveryAdmin;

    // --- V3 VARIABLES ---

    mapping(address => bool) override public whitelist;
    mapping(address => bool) override public blacklist;

    constructor(address _admin, address _recoveryAdmin) {
        admin = _admin;
        recoveryAdmin = _recoveryAdmin;
    }

// --- MODIFIERS ---

    /// @notice Avoids execution from other than the Recovery Admin
    modifier onlyRecoveryAdmin() {
        require(msg.sender == recoveryAdmin, "LSS: Must be recoveryAdmin");
        _;
    }

    /// @notice Avoids execution from other than the Lossless Admin
    modifier onlyAdmin() {
        require(msg.sender == admin, "LSS: Must be admin");
        _;
    }


    // --- ADMINISTRATION ---

    /// @notice This function sets a new admin
    /// @dev Only can be called by the Recovery admin
    /// @param _newAdmin Address corresponding to the new Lossless Admin
    function setAdmin(address _newAdmin) override public onlyRecoveryAdmin {
        require(_newAdmin != address(0), "LERC20: Cannot set same address");
        emit AdminChange(_newAdmin);
        admin = _newAdmin;
    }

    /// @notice This function sets a new recovery admin
    /// @dev Only can be called by the previous Recovery admin
    /// @param _newRecoveryAdmin Address corresponding to the new Lossless Recovery Admin
    function setRecoveryAdmin(address _newRecoveryAdmin) override public onlyRecoveryAdmin {
        require(_newRecoveryAdmin != address(0), "LERC20: Cannot set same address");
        emit RecoveryAdminChange(_newRecoveryAdmin);
        recoveryAdmin = _newRecoveryAdmin;
    }

    // --- V3 SETTERS ---

    /// @notice This function removes or adds an array of addresses from the whitelst
    /// @dev Only can be called by the Lossless Admin, only Lossless addresses 
    /// @param _addrList List of addresses to add or remove
    /// @param _value True if the addresses are being added, false if removed
    function setWhitelist(address[] calldata _addrList, bool _value) override public onlyAdmin {
        for(uint256 i = 0; i < _addrList.length;) {
            address adr = _addrList[i];
            whitelist[adr] = _value;
            unchecked {i++;}
        }
    }

    /// @notice This function removes or adds an array of addresses from the whitelst
    /// @dev Only can be called by the Lossless Admin, only Lossless addresses
    /// @param _addrList List of addresses to add or remove
    /// @param _value True if the addresses are being added, false if removed
    function setBlacklist(address[] calldata _addrList, bool _value) override public onlyAdmin {
        for(uint256 i = 0; i < _addrList.length;) {
            address adr = _addrList[i];
            blacklist[adr] = _value;
            unchecked {i++;}
        }
    }
    // --- BEFORE HOOKS ---

    /// @notice If address is protected, transfer validation rules have to be run inside the strategy.
    /// @dev isTransferAllowed reverts in case transfer can not be done by the defined rules.
    function beforeTransfer(address _sender, address _recipient, uint256 _amount) override external {
        if (!whitelist[_sender]) {
            require(!blacklist[_recipient], "LSS: _recipient is blacklisted");
        } else {
            require(!blacklist[_sender], "LSS: _sender is blacklisted");
        }
    }

    /// @notice If address is protected, transfer validation rules have to be run inside the strategy.
    /// @dev isTransferAllowed reverts in case transfer can not be done by the defined rules.
    function beforeTransferFrom(address _msgSender, address _sender, address _recipient, uint256 _amount) override external {
        if (!whitelist[_msgSender] && !whitelist[_sender]) {
            require(!blacklist[_recipient], "LSS: _recipient is blacklisted");
        }
    }

    // The following before hooks are in place as a placeholder for future products.
    // Also to preserve legacy LERC20 compatibility

    function beforeMint(address _to, uint256 _amount) override external {}

    function beforeBurn(address _account, uint256 _amount) override external {}

    function beforeApprove(address _sender, address _spender, uint256 _amount) override external {}

    function beforeIncreaseAllowance(address _msgSender, address _spender, uint256 _addedValue) override external {}

    function beforeDecreaseAllowance(address _msgSender, address _spender, uint256 _subtractedValue) override external {}


    // --- AFTER HOOKS ---
    // * After hooks are deprecated in LERC20 but we have to keep them
    //   here in order to support legacy LERC20.

    function afterMint(address _to, uint256 _amount) external {}

    function afterApprove(address _sender, address _spender, uint256 _amount) external {}

    function afterBurn(address _account, uint256 _amount) external {}

    function afterTransfer(address _sender, address _recipient, uint256 _amount) override external {}

    function afterTransferFrom(address _msgSender, address _sender, address _recipient, uint256 _amount) external {}

    function afterIncreaseAllowance(address _sender, address _spender, uint256 _addedValue) external {}

    function afterDecreaseAllowance(address _sender, address _spender, uint256 _subtractedValue) external {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_recoveryAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"AdminChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"PauseAdminChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"RecoveryAdminChange","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"afterDecreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"afterIncreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgSender","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beforeApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beforeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgSender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"beforeDecreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgSender","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"beforeIncreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beforeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beforeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgSender","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beforeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoveryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addrList","type":"address[]"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecoveryAdmin","type":"address"}],"name":"setRecoveryAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addrList","type":"address[]"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610d05380380610d0583398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100af565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008f57600080fd5b61009883610060565b91506100a660208401610060565b90509250929050565b610c47806100be6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063704b6c02116100d8578063a56e8adf1161008c578063f49062ca11610066578063f49062ca146101c1578063f851a440146102b1578063f9f92be4146102d157600080fd5b8063a56e8adf1461029d578063cf5961bb146101c1578063ded1f4d0146101c157600080fd5b8063900f66ef116100bd578063900f66ef146101c1578063971c34b4146101875780639b19251a1461026a57600080fd5b8063704b6c02146102575780638a2fa94c1461018757600080fd5b80633c271a051161013a578063568c75a911610114578063568c75a9146101c15780635937f650146101fa5780635f6529a31461020d57600080fd5b80633c271a05146101e757806347abf3be146101c15780634a1fefbd1461018757600080fd5b80631ffb811f1161016b5780631ffb811f146101ae57806334d01aa8146101c1578063379f5c69146101d457600080fd5b80630628a2c0146101875780630e85d1e31461019b575b600080fd5b610199610195366004610a84565b5050565b005b6101996101a9366004610aae565b6102f4565b6101996101bc366004610b39565b610405565b6101996101cf366004610b39565b505050565b6101996101e2366004610b75565b610552565b6101996101f5366004610aae565b610643565b610199610208366004610bc0565b61074f565b60015461022d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610199610265366004610bc0565b6108d5565b61028d610278366004610bc0565b60026020526000908152604090205460ff1681565b604051901515815260200161024e565b6101996102ab366004610b75565b50505050565b60005461022d9073ffffffffffffffffffffffffffffffffffffffff1681565b61028d6102df366004610bc0565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461037a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c53533a204d7573742062652061646d696e000000000000000000000000000060448201526064015b60405180910390fd5b60005b828110156102ab57600084848381811061039957610399610be2565b90506020020160208101906103ae9190610bc0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415151790555060010161037d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090205460ff166104c25773ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16156101cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c53533a205f726563697069656e7420697320626c61636b6c697374656400006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604090205460ff16156101cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4c53533a205f73656e64657220697320626c61636b6c697374656400000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff161580156105ae575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090205460ff16155b156102ab5773ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16156102ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c53533a205f726563697069656e7420697320626c61636b6c697374656400006044820152606401610371565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c53533a204d7573742062652061646d696e00000000000000000000000000006044820152606401610371565b60005b828110156102ab5760008484838181106106e3576106e3610be2565b90506020020160208101906106f89190610bc0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515179055506001016106c7565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c53533a204d757374206265207265636f7665727941646d696e0000000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff811661084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c45524332303a2043616e6e6f74207365742073616d652061646472657373006044820152606401610371565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f0aace6c261e446b4d35ed5adecc1bf2f5b0e638314eaadadb3c6d8d9821d78f790600090a2600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c53533a204d757374206265207265636f7665727941646d696e0000000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff81166109d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c45524332303a2043616e6e6f74207365742073616d652061646472657373006044820152606401610371565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9d265e758c034bca309f830c735a448c07cef1737a6922813e39b50a3827644090600090a2600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a7f57600080fd5b919050565b60008060408385031215610a9757600080fd5b610aa083610a5b565b946020939093013593505050565b600080600060408486031215610ac357600080fd5b833567ffffffffffffffff80821115610adb57600080fd5b818601915086601f830112610aef57600080fd5b813581811115610afe57600080fd5b8760208260051b8501011115610b1357600080fd5b602092830195509350508401358015158114610b2e57600080fd5b809150509250925092565b600080600060608486031215610b4e57600080fd5b610b5784610a5b565b9250610b6560208501610a5b565b9150604084013590509250925092565b60008060008060808587031215610b8b57600080fd5b610b9485610a5b565b9350610ba260208601610a5b565b9250610bb060408601610a5b565b9396929550929360600135925050565b600060208284031215610bd257600080fd5b610bdb82610a5b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220b2259358e22b7fbbdd0cb0347ab1aac2405dec77b532ed8032f2a341b3968fd764736f6c63430008130033000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101825760003560e01c8063704b6c02116100d8578063a56e8adf1161008c578063f49062ca11610066578063f49062ca146101c1578063f851a440146102b1578063f9f92be4146102d157600080fd5b8063a56e8adf1461029d578063cf5961bb146101c1578063ded1f4d0146101c157600080fd5b8063900f66ef116100bd578063900f66ef146101c1578063971c34b4146101875780639b19251a1461026a57600080fd5b8063704b6c02146102575780638a2fa94c1461018757600080fd5b80633c271a051161013a578063568c75a911610114578063568c75a9146101c15780635937f650146101fa5780635f6529a31461020d57600080fd5b80633c271a05146101e757806347abf3be146101c15780634a1fefbd1461018757600080fd5b80631ffb811f1161016b5780631ffb811f146101ae57806334d01aa8146101c1578063379f5c69146101d457600080fd5b80630628a2c0146101875780630e85d1e31461019b575b600080fd5b610199610195366004610a84565b5050565b005b6101996101a9366004610aae565b6102f4565b6101996101bc366004610b39565b610405565b6101996101cf366004610b39565b505050565b6101996101e2366004610b75565b610552565b6101996101f5366004610aae565b610643565b610199610208366004610bc0565b61074f565b60015461022d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610199610265366004610bc0565b6108d5565b61028d610278366004610bc0565b60026020526000908152604090205460ff1681565b604051901515815260200161024e565b6101996102ab366004610b75565b50505050565b60005461022d9073ffffffffffffffffffffffffffffffffffffffff1681565b61028d6102df366004610bc0565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461037a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c53533a204d7573742062652061646d696e000000000000000000000000000060448201526064015b60405180910390fd5b60005b828110156102ab57600084848381811061039957610399610be2565b90506020020160208101906103ae9190610bc0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415151790555060010161037d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090205460ff166104c25773ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16156101cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c53533a205f726563697069656e7420697320626c61636b6c697374656400006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604090205460ff16156101cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4c53533a205f73656e64657220697320626c61636b6c697374656400000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff161580156105ae575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090205460ff16155b156102ab5773ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16156102ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c53533a205f726563697069656e7420697320626c61636b6c697374656400006044820152606401610371565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c53533a204d7573742062652061646d696e00000000000000000000000000006044820152606401610371565b60005b828110156102ab5760008484838181106106e3576106e3610be2565b90506020020160208101906106f89190610bc0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515179055506001016106c7565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c53533a204d757374206265207265636f7665727941646d696e0000000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff811661084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c45524332303a2043616e6e6f74207365742073616d652061646472657373006044820152606401610371565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f0aace6c261e446b4d35ed5adecc1bf2f5b0e638314eaadadb3c6d8d9821d78f790600090a2600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c53533a204d757374206265207265636f7665727941646d696e0000000000006044820152606401610371565b73ffffffffffffffffffffffffffffffffffffffff81166109d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c45524332303a2043616e6e6f74207365742073616d652061646472657373006044820152606401610371565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9d265e758c034bca309f830c735a448c07cef1737a6922813e39b50a3827644090600090a2600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a7f57600080fd5b919050565b60008060408385031215610a9757600080fd5b610aa083610a5b565b946020939093013593505050565b600080600060408486031215610ac357600080fd5b833567ffffffffffffffff80821115610adb57600080fd5b818601915086601f830112610aef57600080fd5b813581811115610afe57600080fd5b8760208260051b8501011115610b1357600080fd5b602092830195509350508401358015158114610b2e57600080fd5b809150509250925092565b600080600060608486031215610b4e57600080fd5b610b5784610a5b565b9250610b6560208501610a5b565b9150604084013590509250925092565b60008060008060808587031215610b8b57600080fd5b610b9485610a5b565b9350610ba260208601610a5b565b9250610bb060408601610a5b565b9396929550929360600135925050565b600060208284031215610bd257600080fd5b610bdb82610a5b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220b2259358e22b7fbbdd0cb0347ab1aac2405dec77b532ed8032f2a341b3968fd764736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8

-----Decoded View---------------
Arg [0] : _admin (address): 0x073a8C4c668c3a42CF5DF61eC84a7E83872902F8
Arg [1] : _recoveryAdmin (address): 0x073a8C4c668c3a42CF5DF61eC84a7E83872902F8

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8
Arg [1] : 000000000000000000000000073a8c4c668c3a42cf5df61ec84a7e83872902f8


Deployed Bytecode Sourcemap

4650:5787:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9101:70;;;;;;:::i;:::-;;;;;;7633:272;;;;;;:::i;:::-;;:::i;8141:323::-;;;;;;:::i;:::-;;:::i;10223:99::-;;;;;;:::i;:::-;8141:323;;;;8671:281;;;;;;:::i;:::-;;:::i;7046:272::-;;;;;;:::i;:::-;;:::i;6422:279::-;;;;;;:::i;:::-;;:::i;5034:37::-;;;;;;;;;;;;2369:42:1;2357:55;;;2339:74;;2327:2;2312:18;5034:37:0;;;;;;;;5979:223;;;;;;:::i;:::-;;:::i;5111:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2589:14:1;;2582:22;2564:41;;2552:2;2537:18;5111:50:0;2424:187:1;10103:112:0;;;;;;:::i;:::-;7735:163:::1;7633:272:::0;;;;4998:29;;;;;;;;;5168:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7633:272;5711:5;;;;5697:10;:19;5689:50;;;;;;;2818:2:1;5689:50:0;;;2800:21:1;2857:2;2837:18;;;2830:30;2896:20;2876:18;;;2869:48;2934:18;;5689:50:0;;;;;;;;;7739:9:::1;7735:163;7754:20:::0;;::::1;7735:163;;;7792:11;7806:9;;7816:1;7806:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7833:14;;;::::0;;;:9:::1;:14;::::0;;;;:23;;;::::1;::::0;::::1;;;::::0;;-1:-1:-1;;7882:3:0::1;7735:163;;8141:323:::0;8253:18;;;;;;;:9;:18;;;;;;;;8248:209;;8297:21;;;;;;;:9;:21;;;;;;;;8296:22;8288:65;;;;;;;3354:2:1;8288:65:0;;;3336:21:1;3393:2;3373:18;;;3366:30;3432:32;3412:18;;;3405:60;3482:18;;8288:65:0;3152:354:1;8248:209:0;8395:18;;;;;;;:9;:18;;;;;;;;8394:19;8386:59;;;;;;;3713:2:1;8386:59:0;;;3695:21:1;3752:2;3732:18;;;3725:30;3791:29;3771:18;;;3764:57;3838:18;;8386:59:0;3511:351:1;8671:281:0;8807:21;;;;;;;:9;:21;;;;;;;;8806:22;:45;;;;-1:-1:-1;8833:18:0;;;;;;;:9;:18;;;;;;;;8832:19;8806:45;8802:143;;;8877:21;;;;;;;:9;:21;;;;;;;;8876:22;8868:65;;;;;;;3354:2:1;8868:65:0;;;3336:21:1;3393:2;3373:18;;;3366:30;3432:32;3412:18;;;3405:60;3482:18;;8868:65:0;3152:354:1;7046:272:0;5711:5;;;;5697:10;:19;5689:50;;;;;;;2818:2:1;5689:50:0;;;2800:21:1;2857:2;2837:18;;;2830:30;2896:20;2876:18;;;2869:48;2934:18;;5689:50:0;2616:342:1;5689:50:0;7152:9:::1;7148:163;7167:20:::0;;::::1;7148:163;;;7205:11;7219:9;;7229:1;7219:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7246:14;;;::::0;;;:9:::1;:14;::::0;;;;:23;;;::::1;::::0;::::1;;;::::0;;-1:-1:-1;;7295:3:0::1;7148:163;;6422:279:::0;5516:13;;;;5502:10;:27;5494:66;;;;;;;4069:2:1;5494:66:0;;;4051:21:1;4108:2;4088:18;;;4081:30;4147:28;4127:18;;;4120:56;4193:18;;5494:66:0;3867:350:1;5494:66:0;6528:31:::1;::::0;::::1;6520:75;;;::::0;::::1;::::0;;4424:2:1;6520:75:0::1;::::0;::::1;4406:21:1::0;4463:2;4443:18;;;4436:30;4502:33;4482:18;;;4475:61;4553:18;;6520:75:0::1;4222:355:1::0;6520:75:0::1;6611:38;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;6660:13;:33:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;6422:279::o;5979:223::-;5516:13;;;;5502:10;:27;5494:66;;;;;;;4069:2:1;5494:66:0;;;4051:21:1;4108:2;4088:18;;;4081:30;4147:28;4127:18;;;4120:56;4193:18;;5494:66:0;3867:350:1;5494:66:0;6069:23:::1;::::0;::::1;6061:67;;;::::0;::::1;::::0;;4424:2:1;6061:67:0::1;::::0;::::1;4406:21:1::0;4463:2;4443:18;;;4436:30;4502:33;4482:18;;;4475:61;4553:18;;6061:67:0::1;4222:355:1::0;6061:67:0::1;6144:22;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;6177:5;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;5979:223::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;474:782::-;566:6;574;582;635:2;623:9;614:7;610:23;606:32;603:52;;;651:1;648;641:12;603:52;691:9;678:23;720:18;761:2;753:6;750:14;747:34;;;777:1;774;767:12;747:34;815:6;804:9;800:22;790:32;;860:7;853:4;849:2;845:13;841:27;831:55;;882:1;879;872:12;831:55;922:2;909:16;948:2;940:6;937:14;934:34;;;964:1;961;954:12;934:34;1019:7;1012:4;1002:6;999:1;995:14;991:2;987:23;983:34;980:47;977:67;;;1040:1;1037;1030:12;977:67;1071:4;1063:13;;;;-1:-1:-1;1095:6:1;-1:-1:-1;;1136:20:1;;1123:34;1193:13;;1186:21;1176:32;;1166:60;;1222:1;1219;1212:12;1166:60;1245:5;1235:15;;;474:782;;;;;:::o;1261:328::-;1338:6;1346;1354;1407:2;1395:9;1386:7;1382:23;1378:32;1375:52;;;1423:1;1420;1413:12;1375:52;1446:29;1465:9;1446:29;:::i;:::-;1436:39;;1494:38;1528:2;1517:9;1513:18;1494:38;:::i;:::-;1484:48;;1579:2;1568:9;1564:18;1551:32;1541:42;;1261:328;;;;;:::o;1594:403::-;1680:6;1688;1696;1704;1757:3;1745:9;1736:7;1732:23;1728:33;1725:53;;;1774:1;1771;1764:12;1725:53;1797:29;1816:9;1797:29;:::i;:::-;1787:39;;1845:38;1879:2;1868:9;1864:18;1845:38;:::i;:::-;1835:48;;1902:38;1936:2;1925:9;1921:18;1902:38;:::i;:::-;1594:403;;;;-1:-1:-1;1892:48:1;;1987:2;1972:18;1959:32;;-1:-1:-1;;1594:403:1:o;2002:186::-;2061:6;2114:2;2102:9;2093:7;2089:23;2085:32;2082:52;;;2130:1;2127;2120:12;2082:52;2153:29;2172:9;2153:29;:::i;:::-;2143:39;2002:186;-1:-1:-1;;;2002:186:1:o;2963:184::-;3015:77;3012:1;3005:88;3112:4;3109:1;3102:15;3136:4;3133:1;3126:15

Swarm Source

ipfs://b2259358e22b7fbbdd0cb0347ab1aac2405dec77b532ed8032f2a341b3968fd7

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.