Sonic Blaze Testnet

Contract

0x72817E3d882B952b9bF04636Ba0e83F6477e5DA6

Overview

S Balance

Sonic Blaze LogoSonic Blaze LogoSonic Blaze Logo0 S

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Swapx Multis...50595582024-12-18 12:28:553 days ago1734524935IN
0x72817E3d...6477e5DA6
0 S0.000031111.1
Set Role For50595062024-12-18 12:28:363 days ago1734524916IN
0x72817E3d...6477e5DA6
0 S0.000137061.1
Set Role For31663982024-12-11 12:19:3610 days ago1733919576IN
0x72817E3d...6477e5DA6
0 S0.000118261.1
Set Role For31663842024-12-11 12:19:3210 days ago1733919572IN
0x72817E3d...6477e5DA6
0 S0.000137071.1
Set Role For7900022024-12-03 10:22:2018 days ago1733221340IN
0x72817E3d...6477e5DA6
0 S0.000137061.1
Set Role For7899982024-12-03 10:22:1918 days ago1733221339IN
0x72817E3d...6477e5DA6
0 S0.000118261.1
Set Role For7899942024-12-03 10:22:1818 days ago1733221338IN
0x72817E3d...6477e5DA6
0 S0.000120141.1
Set Role For7899912024-12-03 10:22:1718 days ago1733221337IN
0x72817E3d...6477e5DA6
0 S0.000137071.1
Set Role For7869542024-12-03 10:07:1718 days ago1733220437IN
0x72817E3d...6477e5DA6
0 S0.000137071.1
Set Role For7869422024-12-03 10:07:1318 days ago1733220433IN
0x72817E3d...6477e5DA6
0 S0.000155881.1
Set Role For7869022024-12-03 10:07:0118 days ago1733220421IN
0x72817E3d...6477e5DA6
0 S0.000155881.1

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
50673132024-12-18 13:13:423 days ago1734527622
0x72817E3d...6477e5DA6
0 S
50673132024-12-18 13:13:423 days ago1734527622
0x72817E3d...6477e5DA6
0 S
50673132024-12-18 13:13:423 days ago1734527622
0x72817E3d...6477e5DA6
0 S
50464552024-12-18 11:16:293 days ago1734520589
0x72817E3d...6477e5DA6
0 S
50464552024-12-18 11:16:293 days ago1734520589
0x72817E3d...6477e5DA6
0 S
50464552024-12-18 11:16:293 days ago1734520589
0x72817E3d...6477e5DA6
0 S
48017812024-12-17 12:19:394 days ago1734437979
0x72817E3d...6477e5DA6
0 S
47995492024-12-17 12:08:104 days ago1734437290
0x72817E3d...6477e5DA6
0 S
47987552024-12-17 12:03:564 days ago1734437036
0x72817E3d...6477e5DA6
0 S
47987552024-12-17 12:03:564 days ago1734437036
0x72817E3d...6477e5DA6
0 S
47987552024-12-17 12:03:564 days ago1734437036
0x72817E3d...6477e5DA6
0 S
47983932024-12-17 12:02:004 days ago1734436920
0x72817E3d...6477e5DA6
0 S
47983932024-12-17 12:02:004 days ago1734436920
0x72817E3d...6477e5DA6
0 S
47983932024-12-17 12:02:004 days ago1734436920
0x72817E3d...6477e5DA6
0 S
47981642024-12-17 12:00:434 days ago1734436843
0x72817E3d...6477e5DA6
0 S
47981492024-12-17 12:00:394 days ago1734436839
0x72817E3d...6477e5DA6
0 S
31475292024-12-11 10:48:4810 days ago1733914128
0x72817E3d...6477e5DA6
0 S
31475292024-12-11 10:48:4810 days ago1733914128
0x72817E3d...6477e5DA6
0 S
31475292024-12-11 10:48:4810 days ago1733914128
0x72817E3d...6477e5DA6
0 S
10830982024-12-04 10:40:5217 days ago1733308852
0x72817E3d...6477e5DA6
0 S
10830982024-12-04 10:40:5217 days ago1733308852
0x72817E3d...6477e5DA6
0 S
10830982024-12-04 10:40:5217 days ago1733308852
0x72817E3d...6477e5DA6
0 S
10825772024-12-04 10:38:1617 days ago1733308696
0x72817E3d...6477e5DA6
0 S
10825772024-12-04 10:38:1617 days ago1733308696
0x72817E3d...6477e5DA6
0 S
10825772024-12-04 10:38:1617 days ago1733308696
0x72817E3d...6477e5DA6
0 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PermissionsRegistry

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : PermissionsRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

/*
    This contract handles the accesses to the various SwapX contracts.
*/

contract PermissionsRegistry {

    /// @notice Control this contract. This is the main multisig 4/6
    address public swpxMultisig;

    /// @notice This is the swpx team multisig 2/2
    address public swpxTeamMultisig;

    /// @notice Control emergency functions (set to multisig)
    address public emergencyCouncil;

    /// @notice Check if caller has a role active   (role -> caller -> true/false)
    mapping(bytes => mapping(address => bool)) public hasRole;
    mapping(bytes => bool) internal _checkRole;

    mapping(bytes => address[]) internal _roleToAddresses;
    mapping(address => bytes[]) internal _addressToRoles;

    /// @notice Roles array
    bytes[] internal _roles;

    event RoleAdded(bytes role);
    event RoleRemoved(bytes role);
    event RoleSetFor(address indexed user, bytes indexed role);
    event RoleRemovedFor(address indexed user, bytes indexed role);
    event SetEmergencyCouncil(address indexed council);
    event SetSwapxTeamMultisig(address indexed multisig);
    event SetSwapxMultisig(address indexed multisig);



    constructor() {
        swpxTeamMultisig = msg.sender;
        swpxMultisig = msg.sender;
        emergencyCouncil = msg.sender;


        _roles.push(bytes("GOVERNANCE"));
        _checkRole[(bytes("GOVERNANCE"))] = true;

        _roles.push(bytes("VOTER_ADMIN"));
        _checkRole[(bytes("VOTER_ADMIN"))] = true;

        _roles.push(bytes("GAUGE_ADMIN"));
        _checkRole[(bytes("GAUGE_ADMIN"))] = true;

        _roles.push(bytes("BRIBE_ADMIN"));
        _checkRole[(bytes("BRIBE_ADMIN"))] = true;

        _roles.push(bytes("FEE_MANAGER"));
        _checkRole[(bytes("FEE_MANAGER"))] = true;

        _roles.push(bytes("CL_FEES_VAULT_ADMIN"));
        _checkRole[(bytes("CL_FEES_VAULT_ADMIN"))] = true;

    }

    modifier onlySwapxMultisig() {
        require(msg.sender == swpxMultisig, "!swpxMultisig");
        _;
    }

    /* -----------------------------------------------------------------------------
    --------------------------------------------------------------------------------
                                    ROLES SETTINGS
    --------------------------------------------------------------------------------
    ----------------------------------------------------------------------------- */

    /// @notice add a new role
    /// @param  role    new role's string (eg role = "GAUGE_ADMIN")
    function addRole(string memory role) external onlySwapxMultisig {
        bytes memory _role = bytes(role);
        require(!_checkRole[_role], 'is a role');
        _checkRole[_role] = true;
        _roles.push(_role);
        emit RoleAdded(_role);
    }

    /// @notice Remove a role
    /// @dev    set last one to i_th position then .pop()
    function removeRole(string memory role) external onlySwapxMultisig {
        bytes memory _role = bytes(role);
        require(_checkRole[_role], 'not a role');

        for(uint i = 0; i < _roles.length; i++){
            if(keccak256(_roles[i]) == keccak256(_role)){
                _roles[i] = _roles[_roles.length -1];
                _roles.pop();
                _checkRole[_role] = false;
                emit RoleRemoved(_role);
                break;
            }
        }

        address[] memory rta = _roleToAddresses[bytes(role)];
        for(uint i = 0; i < rta.length; i++){
            hasRole[bytes(role)][rta[i]] = false;
            bytes[] memory __roles = _addressToRoles[rta[i]];
            for(uint k = 0; k < __roles.length; k++){
                if(keccak256(__roles[k]) == keccak256(bytes(role))){
                    _addressToRoles[rta[i]][k] = _roles[_roles.length -1];
                    _addressToRoles[rta[i]].pop();
                }
            }
        }

    }



    /// @notice Set a role for an address
    function setRoleFor(address c, string memory role) external onlySwapxMultisig {
        bytes memory _role = bytes(role);
        require(_checkRole[_role], 'not a role');
        require(!hasRole[_role][c], 'assigned');

        hasRole[_role][c] = true;

        _roleToAddresses[_role].push(c);
        _addressToRoles[c].push(_role);

        emit RoleSetFor(c, _role);

    }


    /// @notice remove a role from an address
    function removeRoleFrom(address c, string memory role) external onlySwapxMultisig {
        bytes memory _role = bytes(role);
        require(_checkRole[_role], 'not a role');
        require(hasRole[_role][c], 'not assigned');

        hasRole[_role][c] = false;

        address[] storage rta = _roleToAddresses[_role];
        for(uint i = 0; i < rta.length; i++){
            if(rta[i] == c){
                rta[i] = rta[rta.length -1];
                rta.pop();
            }
        }

        bytes[] storage atr = _addressToRoles[c];
        for(uint i = 0; i < atr.length; i++){
            if(keccak256(atr[i]) == keccak256(_role)){
                atr[i] = atr[atr.length -1];
                atr.pop();
            }
        }

        emit RoleRemovedFor(c, _role);

    }





    /************************************************************
                                VIEW
    *************************************************************/

    /// @notice Read roles and return strings
    function rolesToString() external view returns(string[] memory __roles){
        __roles = new string[](_roles.length);
        for(uint i = 0; i < _roles.length; i++){
            __roles[i] = string(_roles[i]);
        }
    }


    /// @notice Read roles array and return bytes
    function roles() external view returns(bytes[] memory){
        return _roles;
    }

    /// @notice Read roles length
    function rolesLength() external view returns(uint){
        return _roles.length;
    }

     /// @notice Return addresses for a given role
    function roleToAddresses(string memory role) external view returns(address[] memory _addresses){
        return _roleToAddresses[bytes(role)];
    }

    /// @notice Return roles for a given address
    function addressToRole(address _user) external view returns(string[] memory){
        string[] memory _temp = new string[](_addressToRoles[_user].length);
        uint i = 0;
        for(i; i < _temp.length; i++){
            _temp[i] = string(_addressToRoles[_user][i]);
        }
        return _temp;
    }


    /************************************************************
                                HELPERS
    *************************************************************/

    /// @notice Helper function to get bytes from a string
    function helper_stringToBytes(string memory _input) public pure returns(bytes memory){
        return bytes(_input);
    }

    /// @notice Helper function to get string from bytes
    function helper_bytesToString(bytes memory _input) public pure returns(string memory){
        return string(_input);
    }



    /* -----------------------------------------------------------------------------
    --------------------------------------------------------------------------------
                                EMERGENCY AND MULTISIG
    --------------------------------------------------------------------------------
    ----------------------------------------------------------------------------- */


    /// @notice set emergency counsil
    /// @param _new new address
    function setEmergencyCouncil(address _new) external {
        require(msg.sender == emergencyCouncil || msg.sender == swpxMultisig, "not allowed");
        require(_new != address(0), "addr0");
        require(_new != emergencyCouncil, "same emergencyCouncil");
        emergencyCouncil = _new;

        emit SetEmergencyCouncil(_new);
    }


    /// @notice set SwapX team multisig
    /// @param _new new address
    function setSwapxTeamMultisig(address _new) external {
        require(msg.sender == swpxTeamMultisig, "not allowed");
        require(_new != address(0), "addr 0");
        require(_new != swpxTeamMultisig, "same multisig");
        swpxTeamMultisig = _new;

        emit SetSwapxTeamMultisig(_new);
    }

    /// @notice set SwapX multisig
    /// @param _new new address
    function setSwapxMultisig(address _new) external {
        require(msg.sender == swpxMultisig, "not allowed");
        require(_new != address(0), "addr0");
        require(_new != swpxMultisig, "same multisig");
        swpxMultisig = _new;

        emit SetSwapxMultisig(_new);
    }



}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleRemovedFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleSetFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"council","type":"address"}],"name":"SetEmergencyCouncil","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"multisig","type":"address"}],"name":"SetSwapxMultisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"multisig","type":"address"}],"name":"SetSwapxTeamMultisig","type":"event"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"addRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addressToRole","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyCouncil","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_input","type":"bytes"}],"name":"helper_bytesToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_input","type":"string"}],"name":"helper_stringToBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"string","name":"role","type":"string"}],"name":"removeRoleFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"roleToAddresses","outputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roles","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rolesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rolesToString","outputs":[{"internalType":"string[]","name":"__roles","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setEmergencyCouncil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"string","name":"role","type":"string"}],"name":"setRoleFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setSwapxMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setSwapxTeamMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swpxMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swpxTeamMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060018054336001600160a01b031991821681178355600080548316821781556002805490931690911790915560408051808201909152600a815269474f5645524e414e434560b01b60208201908152600780549485018155909252516200008c92600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600a815260200169474f5645524e414e434560b01b815250604051620000c39190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a2b27aa22a92fa0a226a4a760a91b9082019081526007805460018101825560009190915291516200013292600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a2b27aa22a92fa0a226a4a760a91b8152506040516200016a9190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a23a0aaa3a2afa0a226a4a760a91b908201908152600780546001810182556000919091529151620001d992600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a23a0aaa3a2afa0a226a4a760a91b815250604051620002119190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a212924a122afa0a226a4a760a91b9082019081526007805460018101825560009190915291516200028092600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a212924a122afa0a226a4a760a91b815250604051620002b89190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a2322a2afa6a0a720a3a2a960a91b9082019081526007805460018101825560009190915291516200032792600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a2322a2afa6a0a720a3a2a960a91b8152506040516200035f9190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052601382527221a62fa322a2a9afab20aaa62a2fa0a226a4a760691b908201908152600780546001810182556000919091529151620003d692600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280601381526020017221a62fa322a2a9afab20aaa62a2fa0a226a4a760691b815250604051620004169190620004e2565b908152604051908190036020019020805491151560ff199092169190911790556200055c565b8280546200044a9062000520565b90600052602060002090601f0160209004810192826200046e5760008555620004b9565b82601f106200048957805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b95782518255916020019190600101906200049c565b50620004c7929150620004cb565b5090565b5b80821115620004c75760008155600101620004cc565b6000825160005b81811015620005055760208186018101518583015201620004e9565b8181111562000515576000828501525b509190910192915050565b600181811c908216806200053557607f821691505b6020821081036200055657634e487b7160e01b600052602260045260246000fd5b50919050565b611c6c806200056c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063818bedf1116100a25780639dce27ae116100715780639dce27ae1461026c578063adb0630a1461027d578063c193dbb214610290578063ddc48952146102a3578063e586875f146102c357600080fd5b8063818bedf114610228578063829797c514610246578063909102bf146102285780639c0589641461025957600080fd5b80634bf6c0cf116100e95780634bf6c0cf146101af5780636755d7b1146101c257806368aa9d1a146101ed5780637778960e1461020d5780637b59f03c1461022057600080fd5b80630d31e2ea1461011b578063392f5f64146101305780633e96e8681461014e5780634448e1eb14610161575b600080fd5b61012e6101293660046117f9565b6102d6565b005b61013861067b565b604051610145919061189f565b60405180910390f35b61012e61015c366004611901565b610754565b61019f61016f36600461193e565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b6040519015158152602001610145565b61012e6101bd36600461198c565b61088e565b6001546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6102006101fb36600461198c565b61098c565b60405161014591906119ae565b6002546101d5906001600160a01b031681565b610200610af7565b610239610236366004611901565b90565b6040516101459190611a03565b61012e610254366004611901565b610c32565b61012e6102673660046117f9565b61116c565b600754604051908152602001610145565b6000546101d5906001600160a01b031681565b61012e61029e36600461198c565b611355565b6102b66102b1366004611901565b611456565b6040516101459190611a16565b61012e6102d136600461198c565b6114d0565b6000546001600160a01b031633146103095760405162461bcd60e51b815260040161030090611a63565b60405180910390fd5b604051819060049061031c908390611a8a565b9081526040519081900360200190205460ff1661034b5760405162461bcd60e51b815260040161030090611aa6565b60038160405161035b9190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff166103be5760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08185cdcda59db995960a21b6044820152606401610300565b60006003826040516103d09190611a8a565b90815260408051602092819003830181206001600160a01b03881660009081529352908220805460ff19169315159390931790925590600590610414908490611a8a565b9081526020016040518091039020905060005b815481101561052957846001600160a01b031682828154811061044c5761044c611aca565b6000918252602090912001546001600160a01b031603610517578154829061047690600190611af6565b8154811061048657610486611aca565b9060005260206000200160009054906101000a90046001600160a01b03168282815481106104b6576104b6611aca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806104f4576104f4611b0d565b600082815260209020810160001990810180546001600160a01b03191690550190555b8061052181611b23565b915050610427565b506001600160a01b0384166000908152600660205260408120905b815481101561062a57838051906020012082828154811061056757610567611aca565b9060005260206000200160405161057e9190611b76565b604051809103902003610618578154829061059b90600190611af6565b815481106105ab576105ab611aca565b906000526020600020018282815481106105c7576105c7611aca565b906000526020600020019080546105dd90611b3c565b6105e89291906115ed565b50818054806105f9576105f9611b0d565b6001900381819060005260206000200160006106159190611674565b90555b8061062281611b23565b915050610544565b50826040516106399190611a8a565b604051908190038120906001600160a01b038716907fa4ee8ba3d4fa99564490ccc0d24115c129e1d527ce326e2693fbc6066a42378790600090a35050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561074b5783829060005260206000200180546106be90611b3c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611b3c565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b50505050508152602001906001019061069f565b50505050905090565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610791908390611a8a565b9081526040519081900360200190205460ff16156107dd5760405162461bcd60e51b81526020600482015260096024820152686973206120726f6c6560b81b6044820152606401610300565b60016004826040516107ef9190611a8a565b90815260405160209181900382019020805460ff191692151592909217909155600780546001810182556000919091528251610852927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688909201918401906116b1565b507f653c7fd6974afa5afbb64671ae46627f13633272e5fb2bd632ecf49713ebfe63816040516108829190611a03565b60405180910390a15050565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166108f65760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6000546001600160a01b03908116908216036109445760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fc033e3bf37d7ae29d78fb5f4480cf0a5664ad9e9ccdf1622be5967c3f579a8e191a250565b6001600160a01b0381166000908152600660205260408120546060919067ffffffffffffffff8111156109c1576109c1611756565b6040519080825280602002602001820160405280156109f457816020015b60608152602001906001900390816109df5790505b50905060005b8151811015610af0576001600160a01b0384166000908152600660205260409020805482908110610a2d57610a2d611aca565b906000526020600020018054610a4290611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611b3c565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050828281518110610ad257610ad2611aca565b60200260200101819052508080610ae890611b23565b9150506109fa565b5092915050565b60075460609067ffffffffffffffff811115610b1557610b15611756565b604051908082528060200260200182016040528015610b4857816020015b6060815260200190600190039081610b335790505b50905060005b600754811015610c2e5760078181548110610b6b57610b6b611aca565b906000526020600020018054610b8090611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90611b3c565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050828281518110610c1057610c10611aca565b60200260200101819052508080610c2690611b23565b915050610b4e565b5090565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610c6f908390611a8a565b9081526040519081900360200190205460ff16610c9e5760405162461bcd60e51b815260040161030090611aa6565b60005b600754811015610df757818051906020012060078281548110610cc657610cc6611aca565b90600052602060002001604051610cdd9190611b76565b604051809103902003610de55760078054610cfa90600190611af6565b81548110610d0a57610d0a611aca565b9060005260206000200160078281548110610d2757610d27611aca565b90600052602060002001908054610d3d90611b3c565b610d489291906115ed565b506007805480610d5a57610d5a611b0d565b600190038181906000526020600020016000610d769190611674565b90556000600483604051610d8a9190611a8a565b908152604051908190036020018120805492151560ff19909316929092179091557f2c48f81b3be6f2583bd7766be9bead1529f9759f846e854d191bcd3924673d7290610dd8908490611a03565b60405180910390a1610df7565b80610def81611b23565b915050610ca1565b506000600583604051610e0a9190611a8a565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905060005b8151811015611166576000600385604051610e8b9190611a8a565b90815260200160405180910390206000848481518110610ead57610ead611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600060066000848481518110610f0457610f04611aca565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ff8578382906000526020600020018054610f6b90611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9790611b3c565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b505050505081526020019060010190610f4c565b50505050905060005b815181101561115157858051906020012082828151811061102457611024611aca565b6020026020010151805190602001200361113f576007805461104890600190611af6565b8154811061105857611058611aca565b906000526020600020016006600086868151811061107857611078611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002082815481106110b1576110b1611aca565b906000526020600020019080546110c790611b3c565b6110d29291906115ed565b50600660008585815181106110e9576110e9611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080548061112057611120611b0d565b60019003818190600052602060002001600061113c9190611674565b90555b8061114981611b23565b915050611001565b5050808061115e90611b23565b915050610e70565b50505050565b6000546001600160a01b031633146111965760405162461bcd60e51b815260040161030090611a63565b60405181906004906111a9908390611a8a565b9081526040519081900360200190205460ff166111d85760405162461bcd60e51b815260040161030090611aa6565b6003816040516111e89190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff16156112485760405162461bcd60e51b8152602060048201526008602482015267185cdcda59db995960c21b6044820152606401610300565b600160038260405161125a9190611a8a565b90815260408051602092819003830181206001600160a01b038816600090815293529120805460ff19169215159290921790915560059061129c908390611a8a565b9081526040805160209281900383019020805460018082018355600092835284832090910180546001600160a01b0319166001600160a01b0389169081179091558252600684529181208054928301815581528290208351611306939190920191908401906116b1565b50806040516113159190611a8a565b604051908190038120906001600160a01b038516907f22efbd5010fe3ab1daad601999aba290f97caf7856c253f4f8ec551873be6dee90600090a3505050565b6001546001600160a01b0316331461137f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166113be5760405162461bcd60e51b815260206004820152600660248201526506164647220360d41b6044820152606401610300565b6001546001600160a01b039081169082160361140c5760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f266c9c09b9b435932992b96d7c3c05c61c93621e28994f6089020488e3b7d0ba90600090a250565b60606005826040516114689190611a8a565b90815260408051918290036020908101832080548083028501830190935282845291908301828280156114c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114a6575b50505050509050919050565b6002546001600160a01b03163314806114f357506000546001600160a01b031633145b61150f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b03811661154d5760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6002546001600160a01b03908116908216036115a35760405162461bcd60e51b81526020600482015260156024820152741cd85b5948195b595c99d95b98de50dbdd5b98da5b605a1b6044820152606401610300565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f6eba45b867b647f00a6a295ba1fdfc5929f1b38a68a3beda302d7eab77b9029a90600090a250565b8280546115f990611b3c565b90600052602060002090601f01602090048101928261161b5760008555611668565b82601f1061162c5780548555611668565b8280016001018555821561166857600052602060002091601f016020900482015b8281111561166857825482559160010191906001019061164d565b50610c2e929150611725565b50805461168090611b3c565b6000825580601f10611690575050565b601f0160209004906000526020600020908101906116ae9190611725565b50565b8280546116bd90611b3c565b90600052602060002090601f0160209004810192826116df5760008555611668565b82601f106116f857805160ff1916838001178555611668565b82800160010185558215611668579182015b8281111561166857825182559160200191906001019061170a565b5b80821115610c2e5760008155600101611726565b80356001600160a01b038116811461175157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177d57600080fd5b813567ffffffffffffffff8082111561179857611798611756565b604051601f8301601f19908116603f011681019082821181831017156117c0576117c0611756565b816040528381528660208588010111156117d957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561180c57600080fd5b6118158361173a565b9150602083013567ffffffffffffffff81111561183157600080fd5b61183d8582860161176c565b9150509250929050565b60005b8381101561186257818101518382015260200161184a565b838111156111665750506000910152565b6000815180845261188b816020860160208601611847565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526118e2858351611873565b945092850192908501906001016118c6565b5092979650505050505050565b60006020828403121561191357600080fd5b813567ffffffffffffffff81111561192a57600080fd5b6119368482850161176c565b949350505050565b6000806040838503121561195157600080fd5b823567ffffffffffffffff81111561196857600080fd5b6119748582860161176c565b9250506119836020840161173a565b90509250929050565b60006020828403121561199e57600080fd5b6119a78261173a565b9392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526119f1858351611873565b945092850192908501906001016119d5565b6020815260006119a76020830184611873565b6020808252825182820181905260009190848201906040850190845b81811015611a575783516001600160a01b031683529284019291840191600101611a32565b50909695505050505050565b6020808252600d908201526c21737770784d756c746973696760981b604082015260600190565b60008251611a9c818460208701611847565b9190910192915050565b6020808252600a90820152696e6f74206120726f6c6560b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611b0857611b08611ae0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201611b3557611b35611ae0565b5060010190565b600181811c90821680611b5057607f821691505b602082108103611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680611b9257607f831692505b60208084108203611bb157634e487b7160e01b86526022600452602486fd5b818015611bc55760018114611bd657611c03565b60ff19861689528489019650611c03565b60008a81526020902060005b86811015611bfb5781548b820152908501908301611be2565b505084890196505b509498975050505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b60408201526060019056fea264697066735822122025fa50a828b0753bdc0ae4486e67aa97aaf7fdde31220a564f6073ac8936c70264736f6c634300080d0033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063818bedf1116100a25780639dce27ae116100715780639dce27ae1461026c578063adb0630a1461027d578063c193dbb214610290578063ddc48952146102a3578063e586875f146102c357600080fd5b8063818bedf114610228578063829797c514610246578063909102bf146102285780639c0589641461025957600080fd5b80634bf6c0cf116100e95780634bf6c0cf146101af5780636755d7b1146101c257806368aa9d1a146101ed5780637778960e1461020d5780637b59f03c1461022057600080fd5b80630d31e2ea1461011b578063392f5f64146101305780633e96e8681461014e5780634448e1eb14610161575b600080fd5b61012e6101293660046117f9565b6102d6565b005b61013861067b565b604051610145919061189f565b60405180910390f35b61012e61015c366004611901565b610754565b61019f61016f36600461193e565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b6040519015158152602001610145565b61012e6101bd36600461198c565b61088e565b6001546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6102006101fb36600461198c565b61098c565b60405161014591906119ae565b6002546101d5906001600160a01b031681565b610200610af7565b610239610236366004611901565b90565b6040516101459190611a03565b61012e610254366004611901565b610c32565b61012e6102673660046117f9565b61116c565b600754604051908152602001610145565b6000546101d5906001600160a01b031681565b61012e61029e36600461198c565b611355565b6102b66102b1366004611901565b611456565b6040516101459190611a16565b61012e6102d136600461198c565b6114d0565b6000546001600160a01b031633146103095760405162461bcd60e51b815260040161030090611a63565b60405180910390fd5b604051819060049061031c908390611a8a565b9081526040519081900360200190205460ff1661034b5760405162461bcd60e51b815260040161030090611aa6565b60038160405161035b9190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff166103be5760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08185cdcda59db995960a21b6044820152606401610300565b60006003826040516103d09190611a8a565b90815260408051602092819003830181206001600160a01b03881660009081529352908220805460ff19169315159390931790925590600590610414908490611a8a565b9081526020016040518091039020905060005b815481101561052957846001600160a01b031682828154811061044c5761044c611aca565b6000918252602090912001546001600160a01b031603610517578154829061047690600190611af6565b8154811061048657610486611aca565b9060005260206000200160009054906101000a90046001600160a01b03168282815481106104b6576104b6611aca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806104f4576104f4611b0d565b600082815260209020810160001990810180546001600160a01b03191690550190555b8061052181611b23565b915050610427565b506001600160a01b0384166000908152600660205260408120905b815481101561062a57838051906020012082828154811061056757610567611aca565b9060005260206000200160405161057e9190611b76565b604051809103902003610618578154829061059b90600190611af6565b815481106105ab576105ab611aca565b906000526020600020018282815481106105c7576105c7611aca565b906000526020600020019080546105dd90611b3c565b6105e89291906115ed565b50818054806105f9576105f9611b0d565b6001900381819060005260206000200160006106159190611674565b90555b8061062281611b23565b915050610544565b50826040516106399190611a8a565b604051908190038120906001600160a01b038716907fa4ee8ba3d4fa99564490ccc0d24115c129e1d527ce326e2693fbc6066a42378790600090a35050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561074b5783829060005260206000200180546106be90611b3c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611b3c565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b50505050508152602001906001019061069f565b50505050905090565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610791908390611a8a565b9081526040519081900360200190205460ff16156107dd5760405162461bcd60e51b81526020600482015260096024820152686973206120726f6c6560b81b6044820152606401610300565b60016004826040516107ef9190611a8a565b90815260405160209181900382019020805460ff191692151592909217909155600780546001810182556000919091528251610852927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688909201918401906116b1565b507f653c7fd6974afa5afbb64671ae46627f13633272e5fb2bd632ecf49713ebfe63816040516108829190611a03565b60405180910390a15050565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166108f65760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6000546001600160a01b03908116908216036109445760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fc033e3bf37d7ae29d78fb5f4480cf0a5664ad9e9ccdf1622be5967c3f579a8e191a250565b6001600160a01b0381166000908152600660205260408120546060919067ffffffffffffffff8111156109c1576109c1611756565b6040519080825280602002602001820160405280156109f457816020015b60608152602001906001900390816109df5790505b50905060005b8151811015610af0576001600160a01b0384166000908152600660205260409020805482908110610a2d57610a2d611aca565b906000526020600020018054610a4290611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611b3c565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050828281518110610ad257610ad2611aca565b60200260200101819052508080610ae890611b23565b9150506109fa565b5092915050565b60075460609067ffffffffffffffff811115610b1557610b15611756565b604051908082528060200260200182016040528015610b4857816020015b6060815260200190600190039081610b335790505b50905060005b600754811015610c2e5760078181548110610b6b57610b6b611aca565b906000526020600020018054610b8090611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90611b3c565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050828281518110610c1057610c10611aca565b60200260200101819052508080610c2690611b23565b915050610b4e565b5090565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610c6f908390611a8a565b9081526040519081900360200190205460ff16610c9e5760405162461bcd60e51b815260040161030090611aa6565b60005b600754811015610df757818051906020012060078281548110610cc657610cc6611aca565b90600052602060002001604051610cdd9190611b76565b604051809103902003610de55760078054610cfa90600190611af6565b81548110610d0a57610d0a611aca565b9060005260206000200160078281548110610d2757610d27611aca565b90600052602060002001908054610d3d90611b3c565b610d489291906115ed565b506007805480610d5a57610d5a611b0d565b600190038181906000526020600020016000610d769190611674565b90556000600483604051610d8a9190611a8a565b908152604051908190036020018120805492151560ff19909316929092179091557f2c48f81b3be6f2583bd7766be9bead1529f9759f846e854d191bcd3924673d7290610dd8908490611a03565b60405180910390a1610df7565b80610def81611b23565b915050610ca1565b506000600583604051610e0a9190611a8a565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905060005b8151811015611166576000600385604051610e8b9190611a8a565b90815260200160405180910390206000848481518110610ead57610ead611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600060066000848481518110610f0457610f04611aca565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ff8578382906000526020600020018054610f6b90611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9790611b3c565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b505050505081526020019060010190610f4c565b50505050905060005b815181101561115157858051906020012082828151811061102457611024611aca565b6020026020010151805190602001200361113f576007805461104890600190611af6565b8154811061105857611058611aca565b906000526020600020016006600086868151811061107857611078611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002082815481106110b1576110b1611aca565b906000526020600020019080546110c790611b3c565b6110d29291906115ed565b50600660008585815181106110e9576110e9611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080548061112057611120611b0d565b60019003818190600052602060002001600061113c9190611674565b90555b8061114981611b23565b915050611001565b5050808061115e90611b23565b915050610e70565b50505050565b6000546001600160a01b031633146111965760405162461bcd60e51b815260040161030090611a63565b60405181906004906111a9908390611a8a565b9081526040519081900360200190205460ff166111d85760405162461bcd60e51b815260040161030090611aa6565b6003816040516111e89190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff16156112485760405162461bcd60e51b8152602060048201526008602482015267185cdcda59db995960c21b6044820152606401610300565b600160038260405161125a9190611a8a565b90815260408051602092819003830181206001600160a01b038816600090815293529120805460ff19169215159290921790915560059061129c908390611a8a565b9081526040805160209281900383019020805460018082018355600092835284832090910180546001600160a01b0319166001600160a01b0389169081179091558252600684529181208054928301815581528290208351611306939190920191908401906116b1565b50806040516113159190611a8a565b604051908190038120906001600160a01b038516907f22efbd5010fe3ab1daad601999aba290f97caf7856c253f4f8ec551873be6dee90600090a3505050565b6001546001600160a01b0316331461137f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166113be5760405162461bcd60e51b815260206004820152600660248201526506164647220360d41b6044820152606401610300565b6001546001600160a01b039081169082160361140c5760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f266c9c09b9b435932992b96d7c3c05c61c93621e28994f6089020488e3b7d0ba90600090a250565b60606005826040516114689190611a8a565b90815260408051918290036020908101832080548083028501830190935282845291908301828280156114c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114a6575b50505050509050919050565b6002546001600160a01b03163314806114f357506000546001600160a01b031633145b61150f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b03811661154d5760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6002546001600160a01b03908116908216036115a35760405162461bcd60e51b81526020600482015260156024820152741cd85b5948195b595c99d95b98de50dbdd5b98da5b605a1b6044820152606401610300565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f6eba45b867b647f00a6a295ba1fdfc5929f1b38a68a3beda302d7eab77b9029a90600090a250565b8280546115f990611b3c565b90600052602060002090601f01602090048101928261161b5760008555611668565b82601f1061162c5780548555611668565b8280016001018555821561166857600052602060002091601f016020900482015b8281111561166857825482559160010191906001019061164d565b50610c2e929150611725565b50805461168090611b3c565b6000825580601f10611690575050565b601f0160209004906000526020600020908101906116ae9190611725565b50565b8280546116bd90611b3c565b90600052602060002090601f0160209004810192826116df5760008555611668565b82601f106116f857805160ff1916838001178555611668565b82800160010185558215611668579182015b8281111561166857825182559160200191906001019061170a565b5b80821115610c2e5760008155600101611726565b80356001600160a01b038116811461175157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177d57600080fd5b813567ffffffffffffffff8082111561179857611798611756565b604051601f8301601f19908116603f011681019082821181831017156117c0576117c0611756565b816040528381528660208588010111156117d957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561180c57600080fd5b6118158361173a565b9150602083013567ffffffffffffffff81111561183157600080fd5b61183d8582860161176c565b9150509250929050565b60005b8381101561186257818101518382015260200161184a565b838111156111665750506000910152565b6000815180845261188b816020860160208601611847565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526118e2858351611873565b945092850192908501906001016118c6565b5092979650505050505050565b60006020828403121561191357600080fd5b813567ffffffffffffffff81111561192a57600080fd5b6119368482850161176c565b949350505050565b6000806040838503121561195157600080fd5b823567ffffffffffffffff81111561196857600080fd5b6119748582860161176c565b9250506119836020840161173a565b90509250929050565b60006020828403121561199e57600080fd5b6119a78261173a565b9392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526119f1858351611873565b945092850192908501906001016119d5565b6020815260006119a76020830184611873565b6020808252825182820181905260009190848201906040850190845b81811015611a575783516001600160a01b031683529284019291840191600101611a32565b50909695505050505050565b6020808252600d908201526c21737770784d756c746973696760981b604082015260600190565b60008251611a9c818460208701611847565b9190910192915050565b6020808252600a90820152696e6f74206120726f6c6560b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611b0857611b08611ae0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201611b3557611b35611ae0565b5060010190565b600181811c90821680611b5057607f821691505b602082108103611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680611b9257607f831692505b60208084108203611bb157634e487b7160e01b86526022600452602486fd5b818015611bc55760018114611bd657611c03565b60ff19861689528489019650611c03565b60008a81526020902060005b86811015611bfb5781548b820152908501908301611be2565b505084890196505b509498975050505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b60408201526060019056fea264697066735822122025fa50a828b0753bdc0ae4486e67aa97aaf7fdde31220a564f6073ac8936c70264736f6c634300080d0033

Block Transaction 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
[ Download: CSV Export  ]
[ 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.