ETH Price: $2,526.22 (+0.04%)

Contract

0x2CE1F3CD4a38Cf0Bb0da30eFAd612eAf5E1faeC0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6080604094114932020-02-03 19:28:001670 days ago1580758080IN
 Create: TransferRestrictions
0 ETH0.001660732

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransferRestrictions

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

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

// File: contracts/1404/IERC1404.sol

pragma solidity 0.5.8;

interface IERC1404 {
    /// @notice Detects if a transfer will be reverted and if so returns an appropriate reference code
    /// @param from Sending address
    /// @param to Receiving address
    /// @param value Amount of tokens being transferred
    /// @return Code by which to reference message for rejection reasoning
    /// @dev Overwrite with your custom transfer restriction logic
    function detectTransferRestriction (address from, address to, uint256 value) external view returns (uint8);

    /// @notice Detects if a transferFrom will be reverted and if so returns an appropriate reference code
    /// @param sender Transaction sending address
    /// @param from Source of funds address
    /// @param to Receiving address
    /// @param value Amount of tokens being transferred
    /// @return Code by which to reference message for rejection reasoning
    /// @dev Overwrite with your custom transfer restriction logic
    function detectTransferFromRestriction (address sender, address from, address to, uint256 value) external view returns (uint8);

    /// @notice Returns a human-readable message for a given restriction code
    /// @param restrictionCode Identifier for looking up a message
    /// @return Text showing the restriction's reasoning
    /// @dev Overwrite with your custom message and restrictionCode handling
    function messageForTransferRestriction (uint8 restrictionCode) external view returns (string memory);
}

interface IERC1404getSuccessCode {
    /// @notice Return the uint256 that represents the SUCCESS_CODE
    /// @return uint256 SUCCESS_CODE
    function getSuccessCode () external view returns (uint256);
}

/**
 * @title IERC1404Success
 * @dev Combines IERC1404 and IERC1404getSuccessCode interfaces, to be implemented by the TransferRestrictions contract
 */
contract IERC1404Success is IERC1404getSuccessCode, IERC1404 {
}

// File: contracts/1404/IERC1404Validators.sol

pragma solidity 0.5.8;

/**
 * @title IERC1404Validators
 * @dev Interfaces implemented by the token contract to be called by the TransferRestrictions contract
 */
interface IERC1404Validators {
    /// @notice Returns the token balance for an account
    /// @param account The address to get the token balance of
    /// @return uint256 representing the token balance for the account
    function balanceOf (address account) external view returns (uint256);

    /// @notice Returns a boolean indicating the paused state of the contract
    /// @return true if contract is paused, false if unpaused
    function paused () external view returns (bool);

    /// @notice Determine if sender and receiver are whitelisted, return true if both accounts are whitelisted
    /// @param from The address sending tokens.
    /// @param to The address receiving tokens.
    /// @return true if both accounts are whitelisted, false if not
    function checkWhitelists (address from, address to) external view returns (bool);

    /// @notice Determine if a users tokens are locked preventing a transfer
    /// @param _address the address to retrieve the data from
    /// @param amount the amount to send
    /// @param balance the token balance of the sending account
    /// @return true if user has sufficient unlocked token to transfer the requested amount, false if not
    function checkTimelock (address _address, uint256 amount, uint256 balance) external view returns (bool);
}

// File: contracts/restrictions/RestrictionMessages.sol

pragma solidity 0.5.8;

contract RestrictionMessages {
    // ERC1404 Error codes and messages
    uint8 public constant SUCCESS_CODE = 0;
    uint8 public constant FAILURE_NON_WHITELIST = 1;
    uint8 public constant FAILURE_TIMELOCK = 2;
    uint8 public constant FAILURE_CONTRACT_PAUSED = 3;

    string public constant SUCCESS_MESSAGE = "SUCCESS";
    string public constant FAILURE_NON_WHITELIST_MESSAGE = "The transfer was restricted due to white list configuration.";
    string public constant FAILURE_TIMELOCK_MESSAGE = "The transfer was restricted due to timelocked tokens.";
    string public constant FAILURE_CONTRACT_PAUSED_MESSAGE = "The transfer was restricted due to the contract being paused.";
    string public constant UNKNOWN_ERROR = "Unknown Error Code";
}

// File: contracts/restrictions/TransferRestrictions.sol

pragma solidity 0.5.8;





/**
 * @title TransferRestrictions
 * @dev Defines the rules the validate transfers and the error messages
 */
contract TransferRestrictions is IERC1404, RestrictionMessages, IERC1404Success {

    IERC1404Validators validators;

    /**
    Constructor sets the address the validators contract which should be the token contract
    */
    constructor(address _validators) public
    {
        require(_validators != address(0), "0x0 is not a valid _validators address");
        validators = IERC1404Validators(_validators);
    }

    /**
    This function detects whether a transfer should be restricted and not allowed.
    If the function returns SUCCESS_CODE (0) then it should be allowed.
    */
    function detectTransferRestriction (address from, address to, uint256 amount)
        public
        view
        returns (uint8)
    {
        // Confirm that that addresses are whitelisted
        if(!validators.checkWhitelists(from,to)) {
            return FAILURE_NON_WHITELIST;
        }

        // If the from account is locked up, then don't allow the transfer
        if(!validators.checkTimelock(from, amount, validators.balanceOf(from))) {
            return FAILURE_TIMELOCK;
        }

        // If the entire contract is paused, then the transfer should be prevented
        if(validators.paused()) {
            return FAILURE_CONTRACT_PAUSED;
        }

        // If no restrictions were triggered return success
        return SUCCESS_CODE;
    }

    /**
    This function detects whether a transfer should be restricted and not allowed.
    If the function returns SUCCESS_CODE (0) then it should be allowed.
    */
    function detectTransferFromRestriction (address sender, address from, address to, uint256 value)
        public
        view
        returns (uint8)
    {
        // Confirm that that addresses are whitelisted
        if(!validators.checkWhitelists(sender, to)) {
            return FAILURE_NON_WHITELIST;
        }

        // return the result of detectTransferRestriction
        return detectTransferRestriction(from, to, value);
    }

    /**
    This function allows a wallet or other client to get a human readable string to show
    a user if a transfer was restricted.  It should return enough information for the user
    to know why it failed.
    */
    function messageForTransferRestriction (uint8 restrictionCode)
        external
        view
        returns (string memory)
    {
        if (restrictionCode == SUCCESS_CODE) {
            return SUCCESS_MESSAGE;
        }

        if (restrictionCode == FAILURE_NON_WHITELIST) {
            return FAILURE_NON_WHITELIST_MESSAGE;
        }

        if (restrictionCode == FAILURE_TIMELOCK) {
            return FAILURE_TIMELOCK_MESSAGE;
        }

        if (restrictionCode == FAILURE_CONTRACT_PAUSED) {
            return FAILURE_CONTRACT_PAUSED_MESSAGE;
        }

        return UNKNOWN_ERROR;
    }

    function getSuccessCode() external view returns (uint256) {
      return SUCCESS_CODE;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"sender","type":"address"},{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"detectTransferFromRestriction","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SUCCESS_CODE","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_TIMELOCK_MESSAGE","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_NON_WHITELIST","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_TIMELOCK","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSuccessCode","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_CONTRACT_PAUSED_MESSAGE","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"restrictionCode","type":"uint8"}],"name":"messageForTransferRestriction","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_CONTRACT_PAUSED","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNKNOWN_ERROR","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FAILURE_NON_WHITELIST_MESSAGE","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"detectTransferRestriction","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SUCCESS_MESSAGE","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_validators","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

608060405234801561001057600080fd5b50604051602080610ed88339810180604052602081101561003057600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610eb26026913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610d9b806101176000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063777eb99f1161008c57806397af67441161006657806397af6744146103da578063c89344621461045d578063d4ce1415146104e0578063e7984d1714610568576100cf565b8063777eb99f146102895780637f4ab1dd1461030c57806386a299fb146103b6576100cf565b80630754cede146100d45780630e969a051461017c578063191035ab146101a05780631fb45ec0146102235780632ddabee8146102475780635ec647591461026b575b600080fd5b610160600480360360808110156100ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105eb565b604051808260ff1660ff16815260200191505060405180910390f35b61018461071d565b604051808260ff1660ff16815260200191505060405180910390f35b6101a8610722565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e85780820151818401526020810190506101cd565b50505050905090810190601f1680156102155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022b61073e565b604051808260ff1660ff16815260200191505060405180910390f35b61024f610743565b604051808260ff1660ff16815260200191505060405180910390f35b610273610748565b6040518082815260200191505060405180910390f35b610291610753565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d15780820151818401526020810190506102b6565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033b6004803603602081101561032257600080fd5b81019080803560ff16906020019092919050505061076f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037b578082015181840152602081019050610360565b50505050905090810190601f1680156103a85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103be610888565b604051808260ff1660ff16815260200191505060405180910390f35b6103e261088d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610422578082015181840152602081019050610407565b50505050905090810190601f16801561044f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104656108c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a557808201518184015260208101905061048a565b50505050905090810190601f1680156104d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61054c600480360360608110156104f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e2565b604051808260ff1660ff16815260200191505060405180910390f35b610570610c88565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b0578082015181840152602081019050610595565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399da091d86856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156106bf57600080fd5b505afa1580156106d3573d6000803e3d6000fd5b505050506040513d60208110156106e957600080fd5b81019080805190602001909291905050506107075760019050610715565b6107128484846108e2565b90505b949350505050565b600081565b604051806060016040528060358152602001610d3b6035913981565b600181565b600281565b60008060ff16905090565b6040518060600160405280603d8152602001610cc2603d913981565b6060600060ff168260ff1614156107bd576040518060400160405280600781526020017f53554343455353000000000000000000000000000000000000000000000000008152509050610883565b600160ff168260ff1614156107ec576040518060600160405280603c8152602001610cff603c91399050610883565b600260ff168260ff16141561081b57604051806060016040528060358152602001610d3b603591399050610883565b600360ff168260ff16141561084a576040518060600160405280603d8152602001610cc2603d91399050610883565b6040518060400160405280601281526020017f556e6b6e6f776e204572726f7220436f6465000000000000000000000000000081525090505b919050565b600381565b6040518060400160405280601281526020017f556e6b6e6f776e204572726f7220436f6465000000000000000000000000000081525081565b6040518060600160405280603c8152602001610cff603c913981565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399da091d85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b81019080805190602001909291905050506109fe5760019050610c81565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c697e4a385846000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d6020811015610b0557600080fd5b81019080805190602001909291905050506040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060206040518083038186803b158015610b8457600080fd5b505afa158015610b98573d6000803e3d6000fd5b505050506040513d6020811015610bae57600080fd5b8101908080519060200190929190505050610bcc5760029050610c81565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b810190808051906020019092919050505015610c7c5760039050610c81565b600090505b9392505050565b6040518060400160405280600781526020017f53554343455353000000000000000000000000000000000000000000000000008152508156fe546865207472616e736665722077617320726573747269637465642064756520746f2074686520636f6e7472616374206265696e67207061757365642e546865207472616e736665722077617320726573747269637465642064756520746f207768697465206c69737420636f6e66696775726174696f6e2e546865207472616e736665722077617320726573747269637465642064756520746f2074696d656c6f636b656420746f6b656e732ea165627a7a723058205c321370cadb6c435a48bd30476d82cc3f6c95723dad9d3e8f87540c3a7775930029307830206973206e6f7420612076616c6964205f76616c696461746f72732061646472657373000000000000000000000000bbc7f7a6aadac103769c66cbc69ab720f7f9eae3

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063777eb99f1161008c57806397af67441161006657806397af6744146103da578063c89344621461045d578063d4ce1415146104e0578063e7984d1714610568576100cf565b8063777eb99f146102895780637f4ab1dd1461030c57806386a299fb146103b6576100cf565b80630754cede146100d45780630e969a051461017c578063191035ab146101a05780631fb45ec0146102235780632ddabee8146102475780635ec647591461026b575b600080fd5b610160600480360360808110156100ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105eb565b604051808260ff1660ff16815260200191505060405180910390f35b61018461071d565b604051808260ff1660ff16815260200191505060405180910390f35b6101a8610722565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e85780820151818401526020810190506101cd565b50505050905090810190601f1680156102155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022b61073e565b604051808260ff1660ff16815260200191505060405180910390f35b61024f610743565b604051808260ff1660ff16815260200191505060405180910390f35b610273610748565b6040518082815260200191505060405180910390f35b610291610753565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d15780820151818401526020810190506102b6565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033b6004803603602081101561032257600080fd5b81019080803560ff16906020019092919050505061076f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037b578082015181840152602081019050610360565b50505050905090810190601f1680156103a85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103be610888565b604051808260ff1660ff16815260200191505060405180910390f35b6103e261088d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610422578082015181840152602081019050610407565b50505050905090810190601f16801561044f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104656108c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a557808201518184015260208101905061048a565b50505050905090810190601f1680156104d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61054c600480360360608110156104f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e2565b604051808260ff1660ff16815260200191505060405180910390f35b610570610c88565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b0578082015181840152602081019050610595565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399da091d86856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156106bf57600080fd5b505afa1580156106d3573d6000803e3d6000fd5b505050506040513d60208110156106e957600080fd5b81019080805190602001909291905050506107075760019050610715565b6107128484846108e2565b90505b949350505050565b600081565b604051806060016040528060358152602001610d3b6035913981565b600181565b600281565b60008060ff16905090565b6040518060600160405280603d8152602001610cc2603d913981565b6060600060ff168260ff1614156107bd576040518060400160405280600781526020017f53554343455353000000000000000000000000000000000000000000000000008152509050610883565b600160ff168260ff1614156107ec576040518060600160405280603c8152602001610cff603c91399050610883565b600260ff168260ff16141561081b57604051806060016040528060358152602001610d3b603591399050610883565b600360ff168260ff16141561084a576040518060600160405280603d8152602001610cc2603d91399050610883565b6040518060400160405280601281526020017f556e6b6e6f776e204572726f7220436f6465000000000000000000000000000081525090505b919050565b600381565b6040518060400160405280601281526020017f556e6b6e6f776e204572726f7220436f6465000000000000000000000000000081525081565b6040518060600160405280603c8152602001610cff603c913981565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399da091d85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b81019080805190602001909291905050506109fe5760019050610c81565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c697e4a385846000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d6020811015610b0557600080fd5b81019080805190602001909291905050506040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060206040518083038186803b158015610b8457600080fd5b505afa158015610b98573d6000803e3d6000fd5b505050506040513d6020811015610bae57600080fd5b8101908080519060200190929190505050610bcc5760029050610c81565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b810190808051906020019092919050505015610c7c5760039050610c81565b600090505b9392505050565b6040518060400160405280600781526020017f53554343455353000000000000000000000000000000000000000000000000008152508156fe546865207472616e736665722077617320726573747269637465642064756520746f2074686520636f6e7472616374206265696e67207061757365642e546865207472616e736665722077617320726573747269637465642064756520746f207768697465206c69737420636f6e66696775726174696f6e2e546865207472616e736665722077617320726573747269637465642064756520746f2074696d656c6f636b656420746f6b656e732ea165627a7a723058205c321370cadb6c435a48bd30476d82cc3f6c95723dad9d3e8f87540c3a7775930029

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

000000000000000000000000bbc7f7a6aadac103769c66cbc69ab720f7f9eae3

-----Decoded View---------------
Arg [0] : _validators (address): 0xBBC7f7A6AADAc103769C66CBC69AB720f7F9Eae3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bbc7f7a6aadac103769c66cbc69ab720f7f9eae3


Deployed Bytecode Sourcemap

4617:3002:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4617:3002:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:451;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6201:451:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3715:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4102:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4102:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3760:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3814:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7522:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4214:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4214:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6887:627;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6887:627:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6887:627:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4341:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4341:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3978:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3978:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5231:788;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5231:788:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3921:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3921:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:451;6346:5;6429:10;;;;;;;;;;;:26;;;6456:6;6464:2;6429:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6429:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6429:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6429:38:0;;;;;;;;;;;;;;;;6425:99;;3806:1;6484:28;;;;6425:99;6602:42;6628:4;6634:2;6638:5;6602:25;:42::i;:::-;6595:49;;6201:451;;;;;;;:::o;3715:38::-;3752:1;3715:38;:::o;4102:105::-;;;;;;;;;;;;;;;;;;;:::o;3760:47::-;3806:1;3760:47;:::o;3814:42::-;3855:1;3814:42;:::o;7522:94::-;7571:7;3752:1;7589:19;;;;7522:94;:::o;4214:120::-;;;;;;;;;;;;;;;;;;;:::o;6887:627::-;7000:13;3752:1;7035:31;;:15;:31;;;7031:86;;;7090:15;;;;;;;;;;;;;;;;;7083:22;;;;7031:86;3806:1;7133:40;;:15;:40;;;7129:109;;;7197:29;;;;;;;;;;;;;;;;;7190:36;;;;7129:109;3855:1;7254:35;;:15;:35;;;7250:99;;;7313:24;;;;;;;;;;;;;;;;;7306:31;;;;7250:99;3911:1;7365:42;;:15;:42;;;7361:113;;;7431:31;;;;;;;;;;;;;;;;;7424:38;;;;7361:113;7493:13;;;;;;;;;;;;;;;;;7486:20;;6887:627;;;;:::o;3863:49::-;3911:1;3863:49;:::o;4341:59::-;;;;;;;;;;;;;;;;;;;:::o;3978:117::-;;;;;;;;;;;;;;;;;;;:::o;5231:788::-;5357:5;5440:10;;;;;;;;;;;:26;;;5467:4;5472:2;5440:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5440:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5440:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5440:35:0;;;;;;;;;;;;;;;;5436:96;;3806:1;5492:28;;;;5436:96;5624:10;;;;;;;;;;;:24;;;5649:4;5655:6;5663:10;;;;;;;;;;;:20;;;5684:4;5663:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5663:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5663:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5663:26:0;;;;;;;;;;;;;;;;5624:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5624:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5624:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5624:66:0;;;;;;;;;;;;;;;;5620:122;;3855:1;5707:23;;;;5620:122;5841:10;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5841:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5841:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5841:19:0;;;;;;;;;;;;;;;;5838:81;;;3911:1;5877:30;;;;5838:81;3752:1;5992:19;;5231:788;;;;;;:::o;3921:50::-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://5c321370cadb6c435a48bd30476d82cc3f6c95723dad9d3e8f87540c3a777593

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.