Hoodi Testnet

Contract

0x9CCe5BfAcDcf80DAd2287106b57197284DacaE3F

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Has Permission3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Get Permission M...3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Get Permission M...3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Validate DG Prop...3503312025-05-08 13:48:486 days ago1746712128
0x9CCe5BfA...84DacaE3F
0 ETH
Proxy_get Admin3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Role3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Get Permission M...3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
Has Permission3502912025-05-08 13:40:246 days ago1746711624
0x9CCe5BfA...84DacaE3F
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DGLaunchRolesValidatorHoodi

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

import {LidoAddressesHoodi} from "./LidoAddressesHoodi.sol";
import {RolesValidatorBase} from "../RolesValidatorBase.sol";

import {IRolesValidator} from "../interfaces/IRolesValidator.sol";
import {IWithdrawalVaultProxy} from "../interfaces/IWithdrawalVaultProxy.sol";

import {AragonRoles} from "../libraries/AragonRoles.sol";
import {OZRoles} from "../libraries/OZRoles.sol";

contract DGLaunchRolesValidatorHoodi is RolesValidatorBase, LidoAddressesHoodi, IRolesValidator {
    using OZRoles for OZRoles.Context;
    using AragonRoles for AragonRoles.Context;

    error InvalidWithdrawalsVaultProxyAdmin(address actual, address expected);

    address public immutable ADMIN_EXECUTOR;
    address public immutable RESEAL_MANAGER;

    constructor(address adminExecutor, address resealManager) RolesValidatorBase(ACL) {
        ADMIN_EXECUTOR = adminExecutor;
        RESEAL_MANAGER = resealManager;
    }

    function validateVotingLaunchPhase() external {
        // Lido
        _validate(LIDO, "STAKING_CONTROL_ROLE", AragonRoles.manager(AGENT).revoked(VOTING).granted(UNLIMITED_STAKE));
        _validate(LIDO, "RESUME_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));
        _validate(LIDO, "PAUSE_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));
        _validate(LIDO, "UNSAFE_CHANGE_DEPOSITED_VALIDATORS_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));
        _validate(LIDO, "STAKING_PAUSE_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));

        // DAOKernel
        _validate(KERNEL, "APP_MANAGER_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));

        // Voting
        _validate(VOTING, "UNSAFELY_MODIFY_VOTE_TIME_ROLE", AragonRoles.manager(VOTING).granted(VOTING));

        // TokenManager
        _validate(TOKEN_MANAGER, "MINT_ROLE", AragonRoles.manager(VOTING).granted(VOTING));
        _validate(TOKEN_MANAGER, "REVOKE_VESTINGS_ROLE", AragonRoles.manager(VOTING).granted(VOTING));
        _validate(TOKEN_MANAGER, "BURN_ROLE", AragonRoles.manager(VOTING).granted(VOTING));
        _validate(TOKEN_MANAGER, "ISSUE_ROLE", AragonRoles.manager(VOTING).granted(VOTING));

        // Finance
        _validate(FINANCE, "CHANGE_PERIOD_ROLE", AragonRoles.manager(VOTING).granted(VOTING));
        _validate(FINANCE, "CHANGE_BUDGETS_ROLE", AragonRoles.manager(VOTING).granted(VOTING));

        // Aragon EVMScriptRegistry
        _validate(EVM_SCRIPT_REGISTRY, "REGISTRY_MANAGER_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));
        _validate(EVM_SCRIPT_REGISTRY, "REGISTRY_ADD_EXECUTOR_ROLE", AragonRoles.manager(AGENT).revoked(VOTING));

        // CuratedModule
        _validate(
            CURATED_MODULE,
            "STAKING_ROUTER_ROLE",
            AragonRoles.manager(AGENT).granted(STAKING_ROUTER).granted(DEV_EOA_1).granted(DEV_EOA_2)
        );
        _validate(
            CURATED_MODULE,
            "MANAGE_NODE_OPERATOR_ROLE",
            AragonRoles.manager(AGENT).granted(AGENT).granted(DEV_EOA_1).granted(DEV_EOA_2)
        );
        _validate(
            CURATED_MODULE,
            "SET_NODE_OPERATOR_LIMIT_ROLE",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(DEV_EOA_1).granted(DEV_EOA_2).granted(
                EVM_SCRIPT_EXECUTOR
            )
        );
        _validate(
            CURATED_MODULE,
            "MANAGE_SIGNING_KEYS",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(DEV_EOA_1).granted(DEV_EOA_2)
        );

        // SDVTModule
        _validate(
            SDVT_MODULE,
            "STAKING_ROUTER_ROLE",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(STAKING_ROUTER).granted(AGENT).granted(DEV_EOA_2).granted(
                DEV_EOA_1
            ).granted(EVM_SCRIPT_EXECUTOR)
        );
        _validate(
            SDVT_MODULE,
            "MANAGE_NODE_OPERATOR_ROLE",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(DEV_EOA_2).granted(DEV_EOA_1).granted(
                EVM_SCRIPT_EXECUTOR
            )
        );
        _validate(
            SDVT_MODULE,
            "SET_NODE_OPERATOR_LIMIT_ROLE",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(EVM_SCRIPT_EXECUTOR).granted(DEV_EOA_1).granted(
                DEV_EOA_2
            )
        );

        // ACL
        _validate(ACL, "CREATE_PERMISSIONS_ROLE", AragonRoles.manager(AGENT).revoked(VOTING).granted(AGENT));

        // Agent

        // The `revoked(VOTING)` check is intentionally replaced with `granted(VOTING) in the checks below.
        // At the time of vote execution, this permission is still granted to Voting and is intended to be revoked
        // via a DualGovernance proposal. The corresponding validation is performed in `validateDGProposalLaunchPhase()`
        // as the final step of the Dual Governance launch process.
        _validate(
            AGENT,
            "RUN_SCRIPT_ROLE",
            AragonRoles.manager(AGENT).granted(VOTING).granted(ADMIN_EXECUTOR).granted(AGENT_MANAGER)
        );
        _validate(AGENT, "EXECUTE_ROLE", AragonRoles.manager(AGENT).granted(VOTING).granted(ADMIN_EXECUTOR));

        // WithdrawalQueue
        _validate(WITHDRAWAL_QUEUE, "PAUSE_ROLE", OZRoles.granted(RESEAL_MANAGER).granted(ORACLES_GATE_SEAL));
        _validate(WITHDRAWAL_QUEUE, "RESUME_ROLE", OZRoles.granted(RESEAL_MANAGER).granted(AGENT));

        // VEBO
        _validate(VEBO, "PAUSE_ROLE", OZRoles.granted(RESEAL_MANAGER).granted(ORACLES_GATE_SEAL));
        _validate(VEBO, "RESUME_ROLE", OZRoles.granted(RESEAL_MANAGER).granted(AGENT));

        // AllowedTokensRegistry
        _validate(ALLOWED_TOKENS_REGISTRY, "DEFAULT_ADMIN_ROLE", OZRoles.revoked(AGENT).granted(VOTING));
        _validate(ALLOWED_TOKENS_REGISTRY, "ADD_TOKEN_TO_ALLOWED_LIST_ROLE", OZRoles.revoked(AGENT));
        _validate(ALLOWED_TOKENS_REGISTRY, "REMOVE_TOKEN_FROM_ALLOWED_LIST_ROLE", OZRoles.revoked(AGENT));

        // WithdrawalVault
        address withdrawalVaultProxyAdmin = IWithdrawalVaultProxy(WITHDRAWAL_VAULT).proxy_getAdmin();
        if (withdrawalVaultProxyAdmin != AGENT) {
            revert InvalidWithdrawalsVaultProxyAdmin(withdrawalVaultProxyAdmin, AGENT);
        }
    }

    function validateDGProposalLaunchPhase() external {
        // Agent
        _validate(
            AGENT,
            "RUN_SCRIPT_ROLE",
            AragonRoles.manager(AGENT).revoked(VOTING).granted(ADMIN_EXECUTOR).granted(AGENT_MANAGER)
        );
        _validate(AGENT, "EXECUTE_ROLE", AragonRoles.manager(AGENT).revoked(VOTING).granted(ADMIN_EXECUTOR));
    }
}

File 2 of 10 : LidoAddressesHoodi.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

contract LidoAddressesHoodi {
    address public constant ACL = 0x78780e70Eae33e2935814a327f7dB6c01136cc62;
    address public constant LIDO = 0x3508A952176b3c15387C97BE809eaffB1982176a;
    address public constant KERNEL = 0xA48DF029Fd2e5FCECB3886c5c2F60e3625A1E87d;
    address public constant VOTING = 0x49B3512c44891bef83F8967d075121Bd1b07a01B;
    address public constant TOKEN_MANAGER = 0x8ab4a56721Ad8e68c6Ad86F9D9929782A78E39E5;
    address public constant FINANCE = 0x254Ae22bEEba64127F0e59fe8593082F3cd13f6b;
    address public constant AGENT = 0x0534aA41907c9631fae990960bCC72d75fA7cfeD;
    address public constant EVM_SCRIPT_REGISTRY = 0xe4D32427b1F9b12ab89B142eD3714dCAABB3f38c;
    address public constant CURATED_MODULE = 0x5cDbE1590c083b5A2A64427fAA63A7cfDB91FbB5;
    address public constant SDVT_MODULE = 0x0B5236BECA68004DB89434462DfC3BB074d2c830;
    address public constant ALLOWED_TOKENS_REGISTRY = 0x40Db7E8047C487bD8359289272c717eA3C34D1D3;
    address public constant WITHDRAWAL_VAULT = 0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2;
    address public constant WITHDRAWAL_QUEUE = 0xfe56573178f1bcdf53F01A6E9977670dcBBD9186;
    address public constant VEBO = 0x8664d394C2B3278F26A1B44B967aEf99707eeAB2;
    address public constant STAKING_ROUTER = 0xCc820558B39ee15C7C45B59390B503b83fb499A8;
    address public constant ORACLES_GATE_SEAL = 0x2168Ea6D948Ab49c3D34c667A7e02F92369F3A9C;
    address public constant EVM_SCRIPT_EXECUTOR = 0x79a20FD0FA36453B2F45eAbab19bfef43575Ba9E;

    // Dev Addresses And Contracts
    address public constant DEV_EOA_1 = 0xE28f573b732632fdE03BD5507A7d475383e8512E;
    address public constant DEV_EOA_2 = 0xF865A1d43D36c713B4DA085f32b7d1e9739B9275;
    address public constant DEV_EOA_3 = 0x4022E0754d0cB6905B54306105D3346d1547988b;
    address public constant UNLIMITED_STAKE = 0x064A4D64040bFD52D0d1dC7f42eA799cb0a8AC40;

    // Additional grantee of the Agent.RUN_SCRIPT_ROLE, which may be used
    // for development purposes or as a fallback recovery mechanism.
    address public constant AGENT_MANAGER = 0xD500a8aDB182F55741E267730dfbfb4F1944C205;
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

import {AragonRoles} from "./libraries/AragonRoles.sol";
import {OZRoles} from "./libraries/OZRoles.sol";

import {IACL} from "./interfaces/IACL.sol";
import {IOZ} from "./interfaces/IOZ.sol";

/// @title RolesValidatorBase
/// @dev Abstract contract for validating roles in both Aragon and OpenZeppelin access control systems.
///     This base contract provides functionality to check if entities have the correct permissions
///     according to predefined role configurations.
abstract contract RolesValidatorBase {
    event OZRoleValidated(address entity, string roleName, address[] grantedTo, address[] revokedFrom);
    event AragonPermissionValidated(
        address entity, string roleName, address manager, address[] grantedTo, address[] revokedFrom
    );

    error OZRoleGranted(address entity, string roleName, address app);
    error OZRoleNotGranted(address entity, string roleName, address app);
    error AragonPermissionInvalidManager(
        address entity, string roleName, address expectedManager, address actualManager
    );
    error AragonPermissionGranted(address entity, string roleName, address app);
    error AragonPermissionNotGranted(address entity, string roleName, address app);

    IACL private immutable ACL_CONTRACT;

    constructor(address acl) {
        ACL_CONTRACT = IACL(acl);
    }

    /// @dev Validates Aragon role permissions for a specific entity.
    ///     Checks that:
    ///         1. The role has the correct manager.
    ///         2. All addresses in grantedTo list have the permission.
    ///         3. All addresses in revokedFrom list do not have the permission.
    /// @param entity The address of the contract entity to validate.
    /// @param roleName The string name of the role being validated.
    /// @param role The context containing manager, granted and revoked addresses for the role.
    function _validate(address entity, string memory roleName, AragonRoles.Context memory role) internal {
        bytes32 roleNameHash = keccak256(bytes(roleName));

        address roleManager = ACL_CONTRACT.getPermissionManager(entity, roleNameHash);
        if (roleManager != role.manager) {
            revert AragonPermissionInvalidManager(entity, roleName, role.manager, roleManager);
        }

        address[] memory grantedTo = role.rolesTracker.grantedTo;
        for (uint256 i = 0; i < grantedTo.length; ++i) {
            bool isPermissionGranted = ACL_CONTRACT.hasPermission(grantedTo[i], entity, roleNameHash);
            if (!isPermissionGranted) {
                revert AragonPermissionNotGranted(entity, roleName, grantedTo[i]);
            }
        }

        address[] memory revokedFrom = role.rolesTracker.revokedFrom;
        for (uint256 i = 0; i < revokedFrom.length; ++i) {
            bool isPermissionGranted = ACL_CONTRACT.hasPermission(revokedFrom[i], entity, roleNameHash);
            if (isPermissionGranted) {
                revert AragonPermissionGranted(entity, roleName, revokedFrom[i]);
            }
        }

        emit AragonPermissionValidated(entity, roleName, role.manager, grantedTo, revokedFrom);
    }

    /// @dev Validates OpenZeppelin role assignments for a specific entity.
    ///     Checks that:
    ///         1. All addresses in grantedTo list have the role.
    ///         2. All addresses in revokedFrom list do not have the role.
    ///     NOTE: Handles special case for DEFAULT_ADMIN_ROLE (uses bytes32(0)).
    /// @param entity The address of the contract entity to validate.
    /// @param roleName The string name of the role being validated.
    /// @param role The context containing granted and revoked addresses for the role.
    function _validate(address entity, string memory roleName, OZRoles.Context memory role) internal {
        bytes32 roleHash = keccak256(bytes(roleName)) == keccak256(bytes("DEFAULT_ADMIN_ROLE"))
            ? bytes32(0)
            : keccak256(bytes(roleName));

        address[] memory grantedTo = role.rolesTracker.grantedTo;
        for (uint256 i = 0; i < grantedTo.length; ++i) {
            bool isRoleGranted = IOZ(entity).hasRole(roleHash, grantedTo[i]);
            if (!isRoleGranted) {
                revert OZRoleNotGranted(entity, roleName, grantedTo[i]);
            }
        }

        address[] memory revokedFrom = role.rolesTracker.revokedFrom;
        for (uint256 i = 0; i < revokedFrom.length; ++i) {
            bool isRoleGranted = IOZ(entity).hasRole(roleHash, revokedFrom[i]);
            if (isRoleGranted) {
                revert OZRoleGranted(entity, roleName, revokedFrom[i]);
            }
        }

        emit OZRoleValidated(entity, roleName, grantedTo, revokedFrom);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

interface IRolesValidator {
    function validateVotingLaunchPhase() external;
    function validateDGProposalLaunchPhase() external;
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

interface IWithdrawalVaultProxy {
    function proxy_changeAdmin(address admin) external payable;
    function proxy_getAdmin() external returns (address);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

import {RolesTracker} from "./RolesTracker.sol";

library AragonRoles {
    using RolesTracker for RolesTracker.Context;

    struct Context {
        address manager;
        RolesTracker.Context rolesTracker;
    }

    function manager(address _manager) internal pure returns (Context memory ctx) {
        ctx.manager = _manager;
    }

    function granted(Context memory self, address grantedTo) internal pure returns (Context memory) {
        self.rolesTracker.addGrantedTo(grantedTo);
        return self;
    }

    function revoked(Context memory self, address revokedFrom) internal pure returns (Context memory) {
        self.rolesTracker.addRevokedFrom(revokedFrom);
        return self;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

import {RolesTracker} from "./RolesTracker.sol";

library OZRoles {
    using RolesTracker for RolesTracker.Context;

    struct Context {
        RolesTracker.Context rolesTracker;
    }

    function granted(address grantedTo) internal pure returns (Context memory ctx) {
        ctx.rolesTracker.addGrantedTo(grantedTo);
    }

    function granted(Context memory self, address grantedTo) internal pure returns (Context memory) {
        self.rolesTracker.addGrantedTo(grantedTo);
        return self;
    }

    function revoked(address revokedFrom) internal pure returns (Context memory ctx) {
        ctx.rolesTracker.addRevokedFrom(revokedFrom);
    }

    function revoked(Context memory self, address revokedFrom) internal pure returns (Context memory) {
        self.rolesTracker.addRevokedFrom(revokedFrom);
        return self;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

interface IACL {
    function hasPermission(address _who, address _where, bytes32 _what) external view returns (bool);
    function createPermission(address _entity, address _app, bytes32 _role, address _manager) external;
    function grantPermission(address _entity, address _app, bytes32 _role) external;
    function revokePermission(address _entity, address _app, bytes32 _role) external;

    function setPermissionManager(address _newManager, address _app, bytes32 _role) external;
    function getPermissionManager(address _app, bytes32 _role) external view returns (address);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

interface IOZ {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

library RolesTracker {
    struct Context {
        address[] grantedTo;
        address[] revokedFrom;
    }

    function addGrantedTo(Context memory self, address grantedTo) internal pure {
        address[] memory prevGrantedTo = self.grantedTo;
        uint256 prevGrantedToCount = self.grantedTo.length;

        self.grantedTo = new address[](prevGrantedToCount + 1);
        _copyAddressesArray({origin: prevGrantedTo, destination: self.grantedTo});

        self.grantedTo[prevGrantedToCount] = grantedTo;
    }

    function addRevokedFrom(Context memory self, address revokedFrom) internal pure {
        address[] memory prevRevokedFrom = self.revokedFrom;
        uint256 prevRevokedFromCount = self.revokedFrom.length;

        self.revokedFrom = new address[](prevRevokedFromCount + 1);
        _copyAddressesArray({origin: prevRevokedFrom, destination: self.revokedFrom});

        self.revokedFrom[prevRevokedFromCount] = revokedFrom;
    }

    function _copyAddressesArray(address[] memory origin, address[] memory destination) private pure {
        for (uint256 i = 0; i < origin.length; ++i) {
            destination[i] = origin[i];
        }
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "eth-gas-reporter/=node_modules/eth-gas-reporter/",
    "forge-std/=lib/forge-std/src/",
    "hardhat/=node_modules/hardhat/",
    "kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"adminExecutor","type":"address"},{"internalType":"address","name":"resealManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"string","name":"roleName","type":"string"},{"internalType":"address","name":"app","type":"address"}],"name":"AragonPermissionGranted","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"string","name":"roleName","type":"string"},{"internalType":"address","name":"expectedManager","type":"address"},{"internalType":"address","name":"actualManager","type":"address"}],"name":"AragonPermissionInvalidManager","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"string","name":"roleName","type":"string"},{"internalType":"address","name":"app","type":"address"}],"name":"AragonPermissionNotGranted","type":"error"},{"inputs":[{"internalType":"address","name":"actual","type":"address"},{"internalType":"address","name":"expected","type":"address"}],"name":"InvalidWithdrawalsVaultProxyAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"string","name":"roleName","type":"string"},{"internalType":"address","name":"app","type":"address"}],"name":"OZRoleGranted","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"string","name":"roleName","type":"string"},{"internalType":"address","name":"app","type":"address"}],"name":"OZRoleNotGranted","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"entity","type":"address"},{"indexed":false,"internalType":"string","name":"roleName","type":"string"},{"indexed":false,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"address[]","name":"grantedTo","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"revokedFrom","type":"address[]"}],"name":"AragonPermissionValidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"entity","type":"address"},{"indexed":false,"internalType":"string","name":"roleName","type":"string"},{"indexed":false,"internalType":"address[]","name":"grantedTo","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"revokedFrom","type":"address[]"}],"name":"OZRoleValidated","type":"event"},{"inputs":[],"name":"ACL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADMIN_EXECUTOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AGENT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AGENT_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ALLOWED_TOKENS_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CURATED_MODULE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_EOA_1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_EOA_2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_EOA_3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EVM_SCRIPT_EXECUTOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EVM_SCRIPT_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FINANCE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KERNEL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIDO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLES_GATE_SEAL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESEAL_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SDVT_MODULE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNLIMITED_STAKE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VEBO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_QUEUE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_VAULT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"validateDGProposalLaunchPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validateVotingLaunchPhase","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405234801561000f575f80fd5b5060405161227c38038061227c83398101604081905261002e91610078565b7378780e70eae33e2935814a327f7db6c01136cc626080526001600160a01b0391821660a0521660c0526100a9565b80516001600160a01b0381168114610073575f80fd5b919050565b5f8060408385031215610089575f80fd5b6100928361005d565b91506100a06020840161005d565b90509250929050565b60805160a05160c0516121636101195f395f81816102910152818161128b0152818161130c0152818161138801526113fe01525f818161039a015281816104a1015281816105330152818161116c01526111ed01525f818161168901528181611748015261186601526121635ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c806390a72277116100d9578063cbc0228f11610093578063e0956e0f1161006e578063e0956e0f146103f2578063f7d6f75b1461040d578063ff5ccbe214610428578063ffb1947d14610430575f80fd5b8063cbc0228f14610395578063cd85c721146103bc578063d0282bf7146103d7575f80fd5b806390a722771461030457806395d6153c1461031f57806398b4a29d1461033a578063ab484e1414610355578063ba416fd114610370578063c8a5f8e61461037a575f80fd5b80634f86473d116101445780636a51eadc1161011f5780636a51eadc1461028c5780637af53532146102b35780638486902d146102ce5780638b21f170146102e9575f80fd5b80634f86473d14610242578063661bf5b114610256578063699340f414610271575f80fd5b80630205d3301461018b578063037c6514146101c25780630bdc5e95146101dd578063269e1d1a146101f85780633c9a04061461020c5780634485a5f014610227575b5f80fd5b6101a673e28f573b732632fde03bd5507a7d475383e8512e81565b6040516001600160a01b03909116815260200160405180910390f35b6101a673a48df029fd2e5fcecb3886c5c2f60e3625a1e87d81565b6101a6730b5236beca68004db89434462dfc3bb074d2c83081565b6101a65f805160206120a483398151915281565b6101a673d500a8adb182f55741e267730dfbfb4f1944c20581565b6101a6734022e0754d0cb6905b54306105d3346d1547988b81565b6101a65f805160206120e783398151915281565b6101a67379a20fd0fa36453b2f45eabab19bfef43575ba9e81565b6101a673fe56573178f1bcdf53f01a6e9977670dcbbd918681565b6101a67f000000000000000000000000000000000000000000000000000000000000000081565b6101a67378780e70eae33e2935814a327f7db6c01136cc6281565b6101a673254ae22beeba64127f0e59fe8593082f3cd13f6b81565b6101a6733508a952176b3c15387c97be809eaffb1982176a81565b6101a6734473dcddbf77679a643bdb654dbd86d67f8d32f281565b6101a67340db7e8047c487bd8359289272c717ea3c34d1d381565b6101a6738664d394c2b3278f26a1b44b967aef99707eeab281565b6101a6735cdbe1590c083b5a2a64427faa63a7cfdb91fbb581565b61037861044b565b005b6101a673cc820558b39ee15c7c45b59390b503b83fb499a881565b6101a67f000000000000000000000000000000000000000000000000000000000000000081565b6101a6732168ea6d948ab49c3d34c667a7e02f92369f3a9c81565b6101a673e4d32427b1f9b12ab89b142ed3714dcaabb3f38c81565b6101a6738ab4a56721ad8e68c6ad86f9d9929782a78e39e581565b6101a673f865a1d43d36c713b4da085f32b7d1e9739b927581565b61037861057b565b6101a673064a4d64040bfd52d0d1dc7f42ea799cb0a8ac4081565b6104f85f805160206120e78339815191526040518060400160405280600f81526020016e52554e5f5343524950545f524f4c4560881b8152506104f373d500a8adb182f55741e267730dfbfb4f1944c2056104ed7f00000000000000000000000000000000000000000000000000000000000000006104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b90611623565b90611643565b61165a565b6105795f805160206120e78339815191526040518060400160405280600c81526020016b455845435554455f524f4c4560a01b8152506104f37f00000000000000000000000000000000000000000000000000000000000000006104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b565b6105ff733508a952176b3c15387c97be809eaffb1982176a604051806040016040528060148152602001735354414b494e475f434f4e54524f4c5f524f4c4560601b8152506104f373064a4d64040bfd52d0d1dc7f42ea799cb0a8ac406104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610662733508a952176b3c15387c97be809eaffb1982176a6040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6106c4733508a952176b3c15387c97be809eaffb1982176a6040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b61071c733508a952176b3c15387c97be809eaffb1982176a604051806060016040528060278152602001612107602791396104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610786733508a952176b3c15387c97be809eaffb1982176a604051806040016040528060128152602001715354414b494e475f50415553455f524f4c4560701b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6107ee73a48df029fd2e5fcecb3886c5c2f60e3625a1e87d6040518060400160405280601081526020016f4150505f4d414e414745525f524f4c4560801b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b61085c5f805160206120a48339815191526040518060400160405280601e81526020017f554e534146454c595f4d4f444946595f564f54455f54494d455f524f4c4500008152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b6108bd738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060098152602001684d494e545f524f4c4560b81b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610929738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060148152602001735245564f4b455f56455354494e47535f524f4c4560601b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b61098a738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060098152602001684255524e5f524f4c4560b81b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b6109ec738ab4a56721ad8e68c6ad86f9d9929782a78e39e56040518060400160405280600a81526020016949535355455f524f4c4560b01b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610a5673254ae22beeba64127f0e59fe8593082f3cd13f6b604051806040016040528060128152602001714348414e47455f504552494f445f524f4c4560701b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610ac173254ae22beeba64127f0e59fe8593082f3cd13f6b604051806040016040528060138152602001724348414e47455f425544474554535f524f4c4560681b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610b2e73e4d32427b1f9b12ab89b142ed3714dcaabb3f38c6040518060400160405280601581526020017452454749535452595f4d414e414745525f524f4c4560581b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610ba373e4d32427b1f9b12ab89b142ed3714dcaabb3f38c6040518060400160405280601a81526020017f52454749535452595f4144445f4558454355544f525f524f4c450000000000008152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610c45735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060138152602001725354414b494e475f524f555445525f524f4c4560681b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73cc820558b39ee15c7c45b59390b503b83fb499a86104ed5f805160206120e783398151915261160b565b610ce6735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060198152602001784d414e4147455f4e4f44455f4f50455241544f525f524f4c4560381b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120e78339815191526104ed5f805160206120e783398151915261160b565b610da3735cdbe1590c083b5a2a64427faa63a7cfdb91fbb56040518060400160405280601c81526020017f5345545f4e4f44455f4f50455241544f525f4c494d49545f524f4c45000000008152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610e3e735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060138152602001724d414e4147455f5349474e494e475f4b45595360681b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610f1a730b5236beca68004db89434462dfc3bb074d2c830604051806040016040528060138152602001725354414b494e475f524f555445525f524f4c4560681b8152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed5f805160206120e78339815191526104ed73cc820558b39ee15c7c45b59390b503b83fb499a86104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610fd3730b5236beca68004db89434462dfc3bb074d2c830604051806040016040528060198152602001784d414e4147455f4e4f44455f4f50455241544f525f524f4c4560381b8152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b611090730b5236beca68004db89434462dfc3bb074d2c8306040518060400160405280601c81526020017f5345545f4e4f44455f4f50455241544f525f4c494d49545f524f4c45000000008152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed7379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6111167378780e70eae33e2935814a327f7db6c01136cc626040518060400160405280601781526020017f4352454154455f5045524d495353494f4e535f524f4c450000000000000000008152506104f35f805160206120e78339815191526104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6111b25f805160206120e78339815191526040518060400160405280600f81526020016e52554e5f5343524950545f524f4c4560881b8152506104f373d500a8adb182f55741e267730dfbfb4f1944c2056104ed7f00000000000000000000000000000000000000000000000000000000000000006104ed5f805160206120a48339815191526104ed5f805160206120e783398151915261160b565b6112335f805160206120e78339815191526040518060400160405280600c81526020016b455845435554455f524f4c4560a01b8152506104f37f00000000000000000000000000000000000000000000000000000000000000006104ed5f805160206120a48339815191526104ed5f805160206120e783398151915261160b565b6112ba73fe56573178f1bcdf53f01a6e9977670dcbbd91866040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506112b5732168ea6d948ab49c3d34c667a7e02f92369f3a9c6112af7f00000000000000000000000000000000000000000000000000000000000000006119b8565b906119e1565b611a06565b61133073fe56573178f1bcdf53f01a6e9977670dcbbd91866040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506112b55f805160206120e78339815191526112af7f00000000000000000000000000000000000000000000000000000000000000006119b8565b6113ac738664d394c2b3278f26a1b44b967aef99707eeab26040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506112b5732168ea6d948ab49c3d34c667a7e02f92369f3a9c6112af7f00000000000000000000000000000000000000000000000000000000000000006119b8565b611422738664d394c2b3278f26a1b44b967aef99707eeab26040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506112b55f805160206120e78339815191526112af7f00000000000000000000000000000000000000000000000000000000000000006119b8565b61148c7340db7e8047c487bd8359289272c717ea3c34d1d36040518060400160405280601281526020017144454641554c545f41444d494e5f524f4c4560701b8152506112b55f805160206120a48339815191526112af5f805160206120e7833981519152611c98565b6114f07340db7e8047c487bd8359289272c717ea3c34d1d36040518060400160405280601e81526020017f4144445f544f4b454e5f544f5f414c4c4f5745445f4c4953545f524f4c4500008152506112b55f805160206120e7833981519152611c98565b6115377340db7e8047c487bd8359289272c717ea3c34d1d36040518060600160405280602381526020016120c4602391396112b55f805160206120e7833981519152611c98565b5f734473dcddbf77679a643bdb654dbd86d67f8d32f26001600160a01b031663abe5e5876040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611589573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ad9190611e68565b90506001600160a01b0381165f805160206120e7833981519152146116085760405163131717f160e21b81526001600160a01b03821660048201525f805160206120e783398151915260248201526044015b60405180910390fd5b50565b611613611e2c565b6001600160a01b03909116815290565b61162b611e2c565b602083015161163a9083611cb8565b50815b92915050565b61164b611e2c565b602083015161163a9083611d5b565b8151602083012060405163b190572760e01b81526001600160a01b038581166004830152602482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063b190572790604401602060405180830381865afa1580156116d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f49190611e68565b9050825f01516001600160a01b0316816001600160a01b03161461173457825160405163ea81cfb160e01b81526115ff9187918791908590600401611ec3565b6020830151515f5b815181101561184f575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d6712d884848151811061178757611787611f07565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908b16602482015260448101889052606401602060405180830381865afa1580156117e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118079190611f1b565b90508061184657878784848151811061182257611822611f07565b6020026020010151604051630ede00d360e41b81526004016115ff93929190611f3a565b5060010161173c565b5060208085015101515f5b815181101561196e575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d6712d88484815181106118a5576118a5611f07565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908c16602482015260448101899052606401602060405180830381865afa158015611901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119259190611f1b565b9050801561196557888884848151811061194157611941611f07565b602002602001015160405163bd208db960e01b81526004016115ff93929190611f3a565b5060010161185a565b5084516040517f78961cda85a099db82a9fb489460a38706427cf4c005a56fa1232bc48768155c916119a7918a918a9187908790611fb8565b60405180910390a150505050505050565b60408051606080820183526020820181815292820152818152906119dc9083611d5b565b919050565b60408051606080820183526020820181815292820152908152825161163a9083611d5b565b60408051808201909152601281527144454641554c545f41444d494e5f524f4c4560701b6020918201528251908301205f907f1effbbff9c66c5e59634f24fe842750c60d18891155c32dd155fc2d661a4c86d14611a6a5782516020840120611a6c565b5f5b8251519091505f5b8151811015611b5e575f866001600160a01b03166391d1485485858581518110611aa057611aa0611f07565b60200260200101516040518363ffffffff1660e01b8152600401611ad79291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015611af2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b169190611f1b565b905080611b55578686848481518110611b3157611b31611f07565b6020026020010151604051634ddb9bb960e11b81526004016115ff93929190611f3a565b50600101611a74565b508251602001515f5b8151811015611c52575f876001600160a01b03166391d1485486858581518110611b9357611b93611f07565b60200260200101516040518363ffffffff1660e01b8152600401611bca9291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015611be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c099190611f1b565b90508015611c49578787848481518110611c2557611c25611f07565b6020026020010151604051636e41f9d160e11b81526004016115ff93929190611f3a565b50600101611b67565b507fffa51fe76331999e547a3fd5c698396ee6860fe0ad7e3c12e3b73a9c05903d3d86868484604051611c88949392919061201c565b60405180910390a1505050505050565b60408051606080820183526020820181815292820152818152906119dc90835b60208201518051611cca816001612070565b67ffffffffffffffff811115611ce257611ce261208f565b604051908082528060200260200182016040528015611d0b578160200160208202803683370190505b5060208501819052611d1e908390611dd0565b8284602001518281518110611d3557611d35611f07565b60200260200101906001600160a01b031690816001600160a01b03168152505050505050565b81518051611d6a816001612070565b67ffffffffffffffff811115611d8257611d8261208f565b604051908082528060200260200182016040528015611dab578160200160208202803683370190505b50808552611dba908390611dd0565b82845f01518281518110611d3557611d35611f07565b5f5b8251811015611e2757828181518110611ded57611ded611f07565b6020026020010151828281518110611e0757611e07611f07565b6001600160a01b0390921660209283029190910190910152600101611dd2565b505050565b60405180604001604052805f6001600160a01b03168152602001611e63604051806040016040528060608152602001606081525090565b905290565b5f60208284031215611e78575f80fd5b81516001600160a01b0381168114611e8e575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03851681526080602082018190525f90611ee690830186611e95565b6001600160a01b039485166040840152929093166060909101529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611f2b575f80fd5b81518015158114611e8e575f80fd5b6001600160a01b03841681526060602082018190525f90611f5d90830185611e95565b905060018060a01b0383166040830152949350505050565b5f8151808452602084019350602083015f5b82811015611fae5781516001600160a01b0316865260209586019590910190600101611f87565b5093949350505050565b6001600160a01b038616815260a0602082018190525f90611fdb90830187611e95565b6001600160a01b03861660408401528281036060840152611ffc8186611f75565b905082810360808401526120108185611f75565b98975050505050505050565b6001600160a01b03851681526080602082018190525f9061203f90830186611e95565b82810360408401526120518186611f75565b905082810360608401526120658185611f75565b979650505050505050565b8082018082111561163d57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe00000000000000000000000049b3512c44891bef83f8967d075121bd1b07a01b52454d4f56455f544f4b454e5f46524f4d5f414c4c4f5745445f4c4953545f524f4c450000000000000000000000000534aa41907c9631fae990960bcc72d75fa7cfed554e534146455f4348414e47455f4445504f53495445445f56414c494441544f52535f524f4c45a264697066735822122015254c40013efd46258d312f2d77f1889844049cc29d7a6644898d0089dc48b964736f6c634300081a00330000000000000000000000000ecc17597d292271836691358b22340b78f3035b00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610187575f3560e01c806390a72277116100d9578063cbc0228f11610093578063e0956e0f1161006e578063e0956e0f146103f2578063f7d6f75b1461040d578063ff5ccbe214610428578063ffb1947d14610430575f80fd5b8063cbc0228f14610395578063cd85c721146103bc578063d0282bf7146103d7575f80fd5b806390a722771461030457806395d6153c1461031f57806398b4a29d1461033a578063ab484e1414610355578063ba416fd114610370578063c8a5f8e61461037a575f80fd5b80634f86473d116101445780636a51eadc1161011f5780636a51eadc1461028c5780637af53532146102b35780638486902d146102ce5780638b21f170146102e9575f80fd5b80634f86473d14610242578063661bf5b114610256578063699340f414610271575f80fd5b80630205d3301461018b578063037c6514146101c25780630bdc5e95146101dd578063269e1d1a146101f85780633c9a04061461020c5780634485a5f014610227575b5f80fd5b6101a673e28f573b732632fde03bd5507a7d475383e8512e81565b6040516001600160a01b03909116815260200160405180910390f35b6101a673a48df029fd2e5fcecb3886c5c2f60e3625a1e87d81565b6101a6730b5236beca68004db89434462dfc3bb074d2c83081565b6101a65f805160206120a483398151915281565b6101a673d500a8adb182f55741e267730dfbfb4f1944c20581565b6101a6734022e0754d0cb6905b54306105d3346d1547988b81565b6101a65f805160206120e783398151915281565b6101a67379a20fd0fa36453b2f45eabab19bfef43575ba9e81565b6101a673fe56573178f1bcdf53f01a6e9977670dcbbd918681565b6101a67f00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b81565b6101a67378780e70eae33e2935814a327f7db6c01136cc6281565b6101a673254ae22beeba64127f0e59fe8593082f3cd13f6b81565b6101a6733508a952176b3c15387c97be809eaffb1982176a81565b6101a6734473dcddbf77679a643bdb654dbd86d67f8d32f281565b6101a67340db7e8047c487bd8359289272c717ea3c34d1d381565b6101a6738664d394c2b3278f26a1b44b967aef99707eeab281565b6101a6735cdbe1590c083b5a2a64427faa63a7cfdb91fbb581565b61037861044b565b005b6101a673cc820558b39ee15c7c45b59390b503b83fb499a881565b6101a67f0000000000000000000000000ecc17597d292271836691358b22340b78f3035b81565b6101a6732168ea6d948ab49c3d34c667a7e02f92369f3a9c81565b6101a673e4d32427b1f9b12ab89b142ed3714dcaabb3f38c81565b6101a6738ab4a56721ad8e68c6ad86f9d9929782a78e39e581565b6101a673f865a1d43d36c713b4da085f32b7d1e9739b927581565b61037861057b565b6101a673064a4d64040bfd52d0d1dc7f42ea799cb0a8ac4081565b6104f85f805160206120e78339815191526040518060400160405280600f81526020016e52554e5f5343524950545f524f4c4560881b8152506104f373d500a8adb182f55741e267730dfbfb4f1944c2056104ed7f0000000000000000000000000ecc17597d292271836691358b22340b78f3035b6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b90611623565b90611643565b61165a565b6105795f805160206120e78339815191526040518060400160405280600c81526020016b455845435554455f524f4c4560a01b8152506104f37f0000000000000000000000000ecc17597d292271836691358b22340b78f3035b6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b565b6105ff733508a952176b3c15387c97be809eaffb1982176a604051806040016040528060148152602001735354414b494e475f434f4e54524f4c5f524f4c4560601b8152506104f373064a4d64040bfd52d0d1dc7f42ea799cb0a8ac406104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610662733508a952176b3c15387c97be809eaffb1982176a6040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6106c4733508a952176b3c15387c97be809eaffb1982176a6040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b61071c733508a952176b3c15387c97be809eaffb1982176a604051806060016040528060278152602001612107602791396104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610786733508a952176b3c15387c97be809eaffb1982176a604051806040016040528060128152602001715354414b494e475f50415553455f524f4c4560701b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6107ee73a48df029fd2e5fcecb3886c5c2f60e3625a1e87d6040518060400160405280601081526020016f4150505f4d414e414745525f524f4c4560801b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b61085c5f805160206120a48339815191526040518060400160405280601e81526020017f554e534146454c595f4d4f444946595f564f54455f54494d455f524f4c4500008152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b6108bd738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060098152602001684d494e545f524f4c4560b81b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610929738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060148152602001735245564f4b455f56455354494e47535f524f4c4560601b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b61098a738ab4a56721ad8e68c6ad86f9d9929782a78e39e5604051806040016040528060098152602001684255524e5f524f4c4560b81b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b6109ec738ab4a56721ad8e68c6ad86f9d9929782a78e39e56040518060400160405280600a81526020016949535355455f524f4c4560b01b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610a5673254ae22beeba64127f0e59fe8593082f3cd13f6b604051806040016040528060128152602001714348414e47455f504552494f445f524f4c4560701b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610ac173254ae22beeba64127f0e59fe8593082f3cd13f6b604051806040016040528060138152602001724348414e47455f425544474554535f524f4c4560681b8152506104f35f805160206120a48339815191526104ed5f805160206120a483398151915261160b565b610b2e73e4d32427b1f9b12ab89b142ed3714dcaabb3f38c6040518060400160405280601581526020017452454749535452595f4d414e414745525f524f4c4560581b8152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610ba373e4d32427b1f9b12ab89b142ed3714dcaabb3f38c6040518060400160405280601a81526020017f52454749535452595f4144445f4558454355544f525f524f4c450000000000008152506104f35f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610c45735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060138152602001725354414b494e475f524f555445525f524f4c4560681b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73cc820558b39ee15c7c45b59390b503b83fb499a86104ed5f805160206120e783398151915261160b565b610ce6735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060198152602001784d414e4147455f4e4f44455f4f50455241544f525f524f4c4560381b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120e78339815191526104ed5f805160206120e783398151915261160b565b610da3735cdbe1590c083b5a2a64427faa63a7cfdb91fbb56040518060400160405280601c81526020017f5345545f4e4f44455f4f50455241544f525f4c494d49545f524f4c45000000008152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610e3e735cdbe1590c083b5a2a64427faa63a7cfdb91fbb5604051806040016040528060138152602001724d414e4147455f5349474e494e475f4b45595360681b8152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610f1a730b5236beca68004db89434462dfc3bb074d2c830604051806040016040528060138152602001725354414b494e475f524f555445525f524f4c4560681b8152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed5f805160206120e78339815191526104ed73cc820558b39ee15c7c45b59390b503b83fb499a86104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b610fd3730b5236beca68004db89434462dfc3bb074d2c830604051806040016040528060198152602001784d414e4147455f4e4f44455f4f50455241544f525f524f4c4560381b8152506104f37379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed73f865a1d43d36c713b4da085f32b7d1e9739b92756104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b611090730b5236beca68004db89434462dfc3bb074d2c8306040518060400160405280601c81526020017f5345545f4e4f44455f4f50455241544f525f4c494d49545f524f4c45000000008152506104f373f865a1d43d36c713b4da085f32b7d1e9739b92756104ed73e28f573b732632fde03bd5507a7d475383e8512e6104ed7379a20fd0fa36453b2f45eabab19bfef43575ba9e6104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6111167378780e70eae33e2935814a327f7db6c01136cc626040518060400160405280601781526020017f4352454154455f5045524d495353494f4e535f524f4c450000000000000000008152506104f35f805160206120e78339815191526104ed5f805160206120a48339815191526104e75f805160206120e783398151915261160b565b6111b25f805160206120e78339815191526040518060400160405280600f81526020016e52554e5f5343524950545f524f4c4560881b8152506104f373d500a8adb182f55741e267730dfbfb4f1944c2056104ed7f0000000000000000000000000ecc17597d292271836691358b22340b78f3035b6104ed5f805160206120a48339815191526104ed5f805160206120e783398151915261160b565b6112335f805160206120e78339815191526040518060400160405280600c81526020016b455845435554455f524f4c4560a01b8152506104f37f0000000000000000000000000ecc17597d292271836691358b22340b78f3035b6104ed5f805160206120a48339815191526104ed5f805160206120e783398151915261160b565b6112ba73fe56573178f1bcdf53f01a6e9977670dcbbd91866040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506112b5732168ea6d948ab49c3d34c667a7e02f92369f3a9c6112af7f00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b6119b8565b906119e1565b611a06565b61133073fe56573178f1bcdf53f01a6e9977670dcbbd91866040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506112b55f805160206120e78339815191526112af7f00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b6119b8565b6113ac738664d394c2b3278f26a1b44b967aef99707eeab26040518060400160405280600a81526020016950415553455f524f4c4560b01b8152506112b5732168ea6d948ab49c3d34c667a7e02f92369f3a9c6112af7f00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b6119b8565b611422738664d394c2b3278f26a1b44b967aef99707eeab26040518060400160405280600b81526020016a524553554d455f524f4c4560a81b8152506112b55f805160206120e78339815191526112af7f00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b6119b8565b61148c7340db7e8047c487bd8359289272c717ea3c34d1d36040518060400160405280601281526020017144454641554c545f41444d494e5f524f4c4560701b8152506112b55f805160206120a48339815191526112af5f805160206120e7833981519152611c98565b6114f07340db7e8047c487bd8359289272c717ea3c34d1d36040518060400160405280601e81526020017f4144445f544f4b454e5f544f5f414c4c4f5745445f4c4953545f524f4c4500008152506112b55f805160206120e7833981519152611c98565b6115377340db7e8047c487bd8359289272c717ea3c34d1d36040518060600160405280602381526020016120c4602391396112b55f805160206120e7833981519152611c98565b5f734473dcddbf77679a643bdb654dbd86d67f8d32f26001600160a01b031663abe5e5876040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611589573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ad9190611e68565b90506001600160a01b0381165f805160206120e7833981519152146116085760405163131717f160e21b81526001600160a01b03821660048201525f805160206120e783398151915260248201526044015b60405180910390fd5b50565b611613611e2c565b6001600160a01b03909116815290565b61162b611e2c565b602083015161163a9083611cb8565b50815b92915050565b61164b611e2c565b602083015161163a9083611d5b565b8151602083012060405163b190572760e01b81526001600160a01b038581166004830152602482018390525f917f00000000000000000000000078780e70eae33e2935814a327f7db6c01136cc629091169063b190572790604401602060405180830381865afa1580156116d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f49190611e68565b9050825f01516001600160a01b0316816001600160a01b03161461173457825160405163ea81cfb160e01b81526115ff9187918791908590600401611ec3565b6020830151515f5b815181101561184f575f7f00000000000000000000000078780e70eae33e2935814a327f7db6c01136cc626001600160a01b0316636d6712d884848151811061178757611787611f07565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908b16602482015260448101889052606401602060405180830381865afa1580156117e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118079190611f1b565b90508061184657878784848151811061182257611822611f07565b6020026020010151604051630ede00d360e41b81526004016115ff93929190611f3a565b5060010161173c565b5060208085015101515f5b815181101561196e575f7f00000000000000000000000078780e70eae33e2935814a327f7db6c01136cc626001600160a01b0316636d6712d88484815181106118a5576118a5611f07565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908c16602482015260448101899052606401602060405180830381865afa158015611901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119259190611f1b565b9050801561196557888884848151811061194157611941611f07565b602002602001015160405163bd208db960e01b81526004016115ff93929190611f3a565b5060010161185a565b5084516040517f78961cda85a099db82a9fb489460a38706427cf4c005a56fa1232bc48768155c916119a7918a918a9187908790611fb8565b60405180910390a150505050505050565b60408051606080820183526020820181815292820152818152906119dc9083611d5b565b919050565b60408051606080820183526020820181815292820152908152825161163a9083611d5b565b60408051808201909152601281527144454641554c545f41444d494e5f524f4c4560701b6020918201528251908301205f907f1effbbff9c66c5e59634f24fe842750c60d18891155c32dd155fc2d661a4c86d14611a6a5782516020840120611a6c565b5f5b8251519091505f5b8151811015611b5e575f866001600160a01b03166391d1485485858581518110611aa057611aa0611f07565b60200260200101516040518363ffffffff1660e01b8152600401611ad79291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015611af2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b169190611f1b565b905080611b55578686848481518110611b3157611b31611f07565b6020026020010151604051634ddb9bb960e11b81526004016115ff93929190611f3a565b50600101611a74565b508251602001515f5b8151811015611c52575f876001600160a01b03166391d1485486858581518110611b9357611b93611f07565b60200260200101516040518363ffffffff1660e01b8152600401611bca9291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015611be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c099190611f1b565b90508015611c49578787848481518110611c2557611c25611f07565b6020026020010151604051636e41f9d160e11b81526004016115ff93929190611f3a565b50600101611b67565b507fffa51fe76331999e547a3fd5c698396ee6860fe0ad7e3c12e3b73a9c05903d3d86868484604051611c88949392919061201c565b60405180910390a1505050505050565b60408051606080820183526020820181815292820152818152906119dc90835b60208201518051611cca816001612070565b67ffffffffffffffff811115611ce257611ce261208f565b604051908082528060200260200182016040528015611d0b578160200160208202803683370190505b5060208501819052611d1e908390611dd0565b8284602001518281518110611d3557611d35611f07565b60200260200101906001600160a01b031690816001600160a01b03168152505050505050565b81518051611d6a816001612070565b67ffffffffffffffff811115611d8257611d8261208f565b604051908082528060200260200182016040528015611dab578160200160208202803683370190505b50808552611dba908390611dd0565b82845f01518281518110611d3557611d35611f07565b5f5b8251811015611e2757828181518110611ded57611ded611f07565b6020026020010151828281518110611e0757611e07611f07565b6001600160a01b0390921660209283029190910190910152600101611dd2565b505050565b60405180604001604052805f6001600160a01b03168152602001611e63604051806040016040528060608152602001606081525090565b905290565b5f60208284031215611e78575f80fd5b81516001600160a01b0381168114611e8e575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03851681526080602082018190525f90611ee690830186611e95565b6001600160a01b039485166040840152929093166060909101529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611f2b575f80fd5b81518015158114611e8e575f80fd5b6001600160a01b03841681526060602082018190525f90611f5d90830185611e95565b905060018060a01b0383166040830152949350505050565b5f8151808452602084019350602083015f5b82811015611fae5781516001600160a01b0316865260209586019590910190600101611f87565b5093949350505050565b6001600160a01b038616815260a0602082018190525f90611fdb90830187611e95565b6001600160a01b03861660408401528281036060840152611ffc8186611f75565b905082810360808401526120108185611f75565b98975050505050505050565b6001600160a01b03851681526080602082018190525f9061203f90830186611e95565b82810360408401526120518186611f75565b905082810360608401526120658185611f75565b979650505050505050565b8082018082111561163d57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe00000000000000000000000049b3512c44891bef83f8967d075121bd1b07a01b52454d4f56455f544f4b454e5f46524f4d5f414c4c4f5745445f4c4953545f524f4c450000000000000000000000000534aa41907c9631fae990960bcc72d75fa7cfed554e534146455f4348414e47455f4445504f53495445445f56414c494441544f52535f524f4c45a264697066735822122015254c40013efd46258d312f2d77f1889844049cc29d7a6644898d0089dc48b964736f6c634300081a0033

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

0000000000000000000000000ecc17597d292271836691358b22340b78f3035b00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b

-----Decoded View---------------
Arg [0] : adminExecutor (address): 0x0eCc17597D292271836691358B22340b78F3035B
Arg [1] : resealManager (address): 0x05172CbCDb7307228F781436b327679e4DAE166B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000ecc17597d292271836691358b22340b78f3035b
Arg [1] : 00000000000000000000000005172cbcdb7307228f781436b327679e4dae166b


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.