Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,135 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit Buffered... | 17242844 | 674 days ago | IN | 0 ETH | 0.60557127 | ||||
Deposit Buffered... | 17242792 | 674 days ago | IN | 0 ETH | 0.53546275 | ||||
Deposit Buffered... | 17242757 | 674 days ago | IN | 0 ETH | 0.53758305 | ||||
Deposit Buffered... | 17242726 | 674 days ago | IN | 0 ETH | 0.56415723 | ||||
Deposit Buffered... | 17242698 | 674 days ago | IN | 0 ETH | 0.60813912 | ||||
Deposit Buffered... | 17242669 | 674 days ago | IN | 0 ETH | 0.60889005 | ||||
Deposit Buffered... | 17241638 | 674 days ago | IN | 0 ETH | 0.74313643 | ||||
Deposit Buffered... | 17241543 | 674 days ago | IN | 0 ETH | 0.89514888 | ||||
Deposit Buffered... | 17241509 | 674 days ago | IN | 0 ETH | 0.75003889 | ||||
Deposit Buffered... | 17241477 | 674 days ago | IN | 0 ETH | 0.7880499 | ||||
Deposit Buffered... | 17241443 | 674 days ago | IN | 0 ETH | 0.84476329 | ||||
Deposit Buffered... | 17241436 | 674 days ago | IN | 0 ETH | 0.01120769 | ||||
Deposit Buffered... | 17241395 | 674 days ago | IN | 0 ETH | 0.95074674 | ||||
Deposit Buffered... | 17241351 | 674 days ago | IN | 0 ETH | 1.18448126 | ||||
Deposit Buffered... | 17241199 | 674 days ago | IN | 0 ETH | 0.14099313 | ||||
Deposit Buffered... | 17240844 | 674 days ago | IN | 0 ETH | 0.10699241 | ||||
Deposit Buffered... | 17240584 | 674 days ago | IN | 0 ETH | 0.11662823 | ||||
Deposit Buffered... | 17239974 | 674 days ago | IN | 0 ETH | 0.09106184 | ||||
Deposit Buffered... | 17239940 | 674 days ago | IN | 0 ETH | 0.76081014 | ||||
Deposit Buffered... | 17239854 | 674 days ago | IN | 0 ETH | 0.80632189 | ||||
Deposit Buffered... | 17239816 | 674 days ago | IN | 0 ETH | 0.88622806 | ||||
Deposit Buffered... | 17239813 | 674 days ago | IN | 0 ETH | 0.01007114 | ||||
Deposit Buffered... | 17239798 | 674 days ago | IN | 0 ETH | 0.01022312 | ||||
Deposit Buffered... | 17239764 | 674 days ago | IN | 0 ETH | 0.01081559 | ||||
Deposit Buffered... | 17237174 | 675 days ago | IN | 0 ETH | 0.92704822 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DepositSecurityModule
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: 2021 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 /* See contracts/COMPILERS.md */ pragma solidity 0.8.9; import {ECDSA} from "./lib/ECDSA.sol"; interface IDepositContract { function get_deposit_root() external view returns (bytes32 rootHash); } interface ILido { function depositBufferedEther(uint256 maxDeposits) external; } interface INodeOperatorsRegistry { function getKeysOpIndex() external view returns (uint256 index); } contract DepositSecurityModule { /** * Short ECDSA signature as defined in https://eips.ethereum.org/EIPS/eip-2098. */ struct Signature { bytes32 r; bytes32 vs; } event OwnerChanged(address newValue); event NodeOperatorsRegistryChanged(address newValue); event PauseIntentValidityPeriodBlocksChanged(uint256 newValue); event MaxDepositsChanged(uint256 newValue); event MinDepositBlockDistanceChanged(uint256 newValue); event GuardianQuorumChanged(uint256 newValue); event GuardianAdded(address guardian); event GuardianRemoved(address guardian); event DepositsPaused(address guardian); event DepositsUnpaused(); bytes32 public immutable ATTEST_MESSAGE_PREFIX; bytes32 public immutable PAUSE_MESSAGE_PREFIX; address public immutable LIDO; address public immutable DEPOSIT_CONTRACT; address internal nodeOperatorsRegistry; uint256 internal maxDepositsPerBlock; uint256 internal minDepositBlockDistance; uint256 internal pauseIntentValidityPeriodBlocks; address internal owner; address[] internal guardians; mapping(address => uint256) internal guardianIndicesOneBased; // 1-based uint256 internal quorum; bool internal paused; uint256 internal lastDepositBlock; constructor( address _lido, address _depositContract, address _nodeOperatorsRegistry, uint256 _networkId, uint256 _maxDepositsPerBlock, uint256 _minDepositBlockDistance, uint256 _pauseIntentValidityPeriodBlocks ) { require(_lido != address(0), "LIDO_ZERO_ADDRESS"); require(_depositContract != address(0), "DEPOSIT_CONTRACT_ZERO_ADDRESS"); LIDO = _lido; DEPOSIT_CONTRACT = _depositContract; ATTEST_MESSAGE_PREFIX = keccak256(abi.encodePacked( // keccak256("lido.DepositSecurityModule.ATTEST_MESSAGE") bytes32(0x1085395a994e25b1b3d0ea7937b7395495fb405b31c7d22dbc3976a6bd01f2bf), _networkId )); PAUSE_MESSAGE_PREFIX = keccak256(abi.encodePacked( // keccak256("lido.DepositSecurityModule.PAUSE_MESSAGE") bytes32(0x9c4c40205558f12027f21204d6218b8006985b7a6359bcab15404bcc3e3fa122), _networkId )); _setOwner(msg.sender); _setNodeOperatorsRegistry(_nodeOperatorsRegistry); _setMaxDeposits(_maxDepositsPerBlock); _setMinDepositBlockDistance(_minDepositBlockDistance); _setPauseIntentValidityPeriodBlocks(_pauseIntentValidityPeriodBlocks); } /** * Returns the owner address. */ function getOwner() external view returns (address) { return owner; } modifier onlyOwner { require(msg.sender == owner, "not an owner"); _; } /** * Sets new owner. Only callable by the current owner. */ function setOwner(address newValue) external onlyOwner { _setOwner(newValue); } function _setOwner(address newValue) internal { require(newValue != address(0), "invalid value for owner: must be different from zero address"); owner = newValue; emit OwnerChanged(newValue); } /** * Returns NodeOperatorsRegistry contract address. */ function getNodeOperatorsRegistry() external view returns (address) { return nodeOperatorsRegistry; } /** * Sets NodeOperatorsRegistry contract address. Only callable by the owner. */ function setNodeOperatorsRegistry(address newValue) external onlyOwner { _setNodeOperatorsRegistry(newValue); } function _setNodeOperatorsRegistry(address newValue) internal { nodeOperatorsRegistry = newValue; emit NodeOperatorsRegistryChanged(newValue); } /** * Returns current `pauseIntentValidityPeriodBlocks` contract parameter (see `pauseDeposits`). */ function getPauseIntentValidityPeriodBlocks() external view returns (uint256) { return pauseIntentValidityPeriodBlocks; } /** * Sets `pauseIntentValidityPeriodBlocks`. Only callable by the owner. */ function setPauseIntentValidityPeriodBlocks(uint256 newValue) external onlyOwner { _setPauseIntentValidityPeriodBlocks(newValue); } function _setPauseIntentValidityPeriodBlocks(uint256 newValue) internal { require(newValue > 0, "invalid value for pauseIntentValidityPeriodBlocks: must be greater then 0"); pauseIntentValidityPeriodBlocks = newValue; emit PauseIntentValidityPeriodBlocksChanged(newValue); } /** * Returns `maxDepositsPerBlock` (see `depositBufferedEther`). */ function getMaxDeposits() external view returns (uint256) { return maxDepositsPerBlock; } /** * Sets `maxDepositsPerBlock`. Only callable by the owner. */ function setMaxDeposits(uint256 newValue) external onlyOwner { _setMaxDeposits(newValue); } function _setMaxDeposits(uint256 newValue) internal { maxDepositsPerBlock = newValue; emit MaxDepositsChanged(newValue); } /** * Returns `minDepositBlockDistance` (see `depositBufferedEther`). */ function getMinDepositBlockDistance() external view returns (uint256) { return minDepositBlockDistance; } /** * Sets `minDepositBlockDistance`. Only callable by the owner. */ function setMinDepositBlockDistance(uint256 newValue) external onlyOwner { _setMinDepositBlockDistance(newValue); } function _setMinDepositBlockDistance(uint256 newValue) internal { require(newValue > 0, "invalid value for minDepositBlockDistance: must be greater then 0"); if (newValue != minDepositBlockDistance) { minDepositBlockDistance = newValue; emit MinDepositBlockDistanceChanged(newValue); } } /** * Returns number of valid guardian signatures required to vet (depositRoot, keysOpIndex) pair. */ function getGuardianQuorum() external view returns (uint256) { return quorum; } function setGuardianQuorum(uint256 newValue) external onlyOwner { _setGuardianQuorum(newValue); } function _setGuardianQuorum(uint256 newValue) internal { // we're intentionally allowing setting quorum value higher than the number of guardians quorum = newValue; emit GuardianQuorumChanged(newValue); } /** * Returns guardian committee member list. */ function getGuardians() external view returns (address[] memory) { return guardians; } /** * Checks whether the given address is a guardian. */ function isGuardian(address addr) external view returns (bool) { return _isGuardian(addr); } function _isGuardian(address addr) internal view returns (bool) { return guardianIndicesOneBased[addr] > 0; } /** * Returns index of the guardian, or -1 if the address is not a guardian. */ function getGuardianIndex(address addr) external view returns (int256) { return _getGuardianIndex(addr); } function _getGuardianIndex(address addr) internal view returns (int256) { return int256(guardianIndicesOneBased[addr]) - 1; } /** * Adds a guardian address and sets a new quorum value. * Reverts if the address is already a guardian. * * Only callable by the owner. */ function addGuardian(address addr, uint256 newQuorum) external onlyOwner { _addGuardian(addr); _setGuardianQuorum(newQuorum); } /** * Adds a set of guardian addresses and sets a new quorum value. * Reverts any of them is already a guardian. * * Only callable by the owner. */ function addGuardians(address[] memory addresses, uint256 newQuorum) external onlyOwner { for (uint256 i = 0; i < addresses.length; ++i) { _addGuardian(addresses[i]); } _setGuardianQuorum(newQuorum); } function _addGuardian(address addr) internal { require(addr != address(0), "guardian zero address"); require(!_isGuardian(addr), "duplicate address"); guardians.push(addr); guardianIndicesOneBased[addr] = guardians.length; emit GuardianAdded(addr); } /** * Removes a guardian with the given address and sets a new quorum value. * * Only callable by the owner. */ function removeGuardian(address addr, uint256 newQuorum) external onlyOwner { uint256 indexOneBased = guardianIndicesOneBased[addr]; require(indexOneBased != 0, "not a guardian"); uint256 totalGuardians = guardians.length; assert(indexOneBased <= totalGuardians); if (indexOneBased != totalGuardians) { address addrToMove = guardians[totalGuardians - 1]; guardians[indexOneBased - 1] = addrToMove; guardianIndicesOneBased[addrToMove] = indexOneBased; } guardianIndicesOneBased[addr] = 0; guardians.pop(); _setGuardianQuorum(newQuorum); emit GuardianRemoved(addr); } /** * Returns whether deposits were paused. */ function isPaused() external view returns (bool) { return paused; } /** * Pauses deposits given that both conditions are satisfied (reverts otherwise): * * 1. The function is called by the guardian with index guardianIndex OR sig * is a valid signature by the guardian with index guardianIndex of the data * defined below. * * 2. block.number - blockNumber <= pauseIntentValidityPeriodBlocks * * The signature, if present, must be produced for keccak256 hash of the following * message (each component taking 32 bytes): * * | PAUSE_MESSAGE_PREFIX | blockNumber */ function pauseDeposits(uint256 blockNumber, Signature memory sig) external { // In case of an emergency function `pauseDeposits` is supposed to be called // by all guardians. Thus only the first call will do the actual change. But // the other calls would be OK operations from the point of view of protocol’s logic. // Thus we prefer not to use “error” semantics which is implied by `require`. if (paused) { return; } address guardianAddr = msg.sender; int256 guardianIndex = _getGuardianIndex(msg.sender); if (guardianIndex == -1) { bytes32 msgHash = keccak256(abi.encodePacked(PAUSE_MESSAGE_PREFIX, blockNumber)); guardianAddr = ECDSA.recover(msgHash, sig.r, sig.vs); guardianIndex = _getGuardianIndex(guardianAddr); require(guardianIndex != -1, "invalid signature"); } require( block.number - blockNumber <= pauseIntentValidityPeriodBlocks, "pause intent expired" ); paused = true; emit DepositsPaused(guardianAddr); } /** * Unpauses deposits. * * Only callable by the owner. */ function unpauseDeposits() external onlyOwner { if (paused) { paused = false; emit DepositsUnpaused(); } } /** * Returns the last block that contains a deposit performed via this security module. */ function getLastDepositBlock() external view returns (uint256) { return lastDepositBlock; } /** * Sets `lastDepositBlock`. Only callable by the owner. */ function setLastDepositBlock(uint256 newLastDepositBlock) external onlyOwner { lastDepositBlock = newLastDepositBlock; } /** * Returns whether depositBufferedEther can be called, given that the caller will provide * guardian attestations of non-stale deposit root and `keysOpIndex`, and the number of * such attestations will be enough to reach quorum. */ function canDeposit() external view returns (bool) { return !paused && quorum > 0 && block.number - lastDepositBlock >= minDepositBlockDistance; } /** * Calls Lido.depositBufferedEther(maxDepositsPerBlock). * * Reverts if any of the following is true: * 1. IDepositContract.get_deposit_root() != depositRoot. * 2. INodeOperatorsRegistry.getKeysOpIndex() != keysOpIndex. * 3. The number of guardian signatures is less than getGuardianQuorum(). * 4. An invalid or non-guardian signature received. * 5. block.number - getLastDepositBlock() < minDepositBlockDistance. * 6. blockhash(blockNumber) != blockHash. * * Signatures must be sorted in ascending order by index of the guardian. Each signature must * be produced for keccak256 hash of the following message (each component taking 32 bytes): * * | ATTEST_MESSAGE_PREFIX | depositRoot | keysOpIndex | blockNumber | blockHash | */ function depositBufferedEther( bytes32 depositRoot, uint256 keysOpIndex, uint256 blockNumber, bytes32 blockHash, Signature[] memory sortedGuardianSignatures ) external { bytes32 onchainDepositRoot = IDepositContract(DEPOSIT_CONTRACT).get_deposit_root(); require(depositRoot == onchainDepositRoot, "deposit root changed"); require(!paused, "deposits are paused"); require(quorum > 0 && sortedGuardianSignatures.length >= quorum, "no guardian quorum"); require(block.number - lastDepositBlock >= minDepositBlockDistance, "too frequent deposits"); require(blockHash != bytes32(0) && blockhash(blockNumber) == blockHash, "unexpected block hash"); uint256 onchainKeysOpIndex = INodeOperatorsRegistry(nodeOperatorsRegistry).getKeysOpIndex(); require(keysOpIndex == onchainKeysOpIndex, "keys op index changed"); _verifySignatures( depositRoot, keysOpIndex, blockNumber, blockHash, sortedGuardianSignatures ); ILido(LIDO).depositBufferedEther(maxDepositsPerBlock); lastDepositBlock = block.number; } function _verifySignatures( bytes32 depositRoot, uint256 keysOpIndex, uint256 blockNumber, bytes32 blockHash, Signature[] memory sigs ) internal view { bytes32 msgHash = keccak256(abi.encodePacked( ATTEST_MESSAGE_PREFIX, depositRoot, keysOpIndex, blockNumber, blockHash )); address prevSignerAddr = address(0); for (uint256 i = 0; i < sigs.length; ++i) { address signerAddr = ECDSA.recover(msgHash, sigs[i].r, sigs[i].vs); require(_isGuardian(signerAddr), "invalid signature"); require(signerAddr > prevSignerAddr, "signatures not sorted"); prevSignerAddr = signerAddr; } } }
// SPDX-License-Identifier: MIT // Extracted from: // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0/contracts/cryptography/ECDSA.sol#L53 // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/541e821/contracts/utils/cryptography/ECDSA.sol#L112 /* See contracts/COMPILERS.md */ pragma solidity 0.8.9; library ECDSA { /** * @dev Returns the address that signed a hashed message (`hash`). * This address can then be used for verification purposes. * Receives the `v`, `r` and `s` signature fields separately. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value"); require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value"); // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); require(signer != address(0), "ECDSA: invalid signature"); return signer; } /** * @dev Overload of `recover` that receives the `r` and `vs` short-signature fields separately. * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] */ function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return recover(hash, v, r, s); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_lido","type":"address"},{"internalType":"address","name":"_depositContract","type":"address"},{"internalType":"address","name":"_nodeOperatorsRegistry","type":"address"},{"internalType":"uint256","name":"_networkId","type":"uint256"},{"internalType":"uint256","name":"_maxDepositsPerBlock","type":"uint256"},{"internalType":"uint256","name":"_minDepositBlockDistance","type":"uint256"},{"internalType":"uint256","name":"_pauseIntentValidityPeriodBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"DepositsPaused","type":"event"},{"anonymous":false,"inputs":[],"name":"DepositsUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"GuardianQuorumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxDepositsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinDepositBlockDistanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newValue","type":"address"}],"name":"NodeOperatorsRegistryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newValue","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"PauseIntentValidityPeriodBlocksChanged","type":"event"},{"inputs":[],"name":"ATTEST_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSIT_CONTRACT","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":"PAUSE_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardians","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"canDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"depositRoot","type":"bytes32"},{"internalType":"uint256","name":"keysOpIndex","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature[]","name":"sortedGuardianSignatures","type":"tuple[]"}],"name":"depositBufferedEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getGuardianIndex","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardianQuorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastDepositBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinDepositBlockDistance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNodeOperatorsRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseIntentValidityPeriodBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isGuardian","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature","name":"sig","type":"tuple"}],"name":"pauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"removeGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setGuardianQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLastDepositBlock","type":"uint256"}],"name":"setLastDepositBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinDepositBlockDistance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newValue","type":"address"}],"name":"setNodeOperatorsRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newValue","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPauseIntentValidityPeriodBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5060405162001fe238038062001fe28339810160408190526200003591620004c4565b6001600160a01b038716620000855760405162461bcd60e51b81526020600482015260116024820152704c49444f5f5a45524f5f4144445245535360781b60448201526064015b60405180910390fd5b6001600160a01b038616620000dd5760405162461bcd60e51b815260206004820152601d60248201527f4445504f5349545f434f4e54524143545f5a45524f5f4144445245535300000060448201526064016200007c565b6001600160a01b0387811660c052861660e052604080517f1085395a994e25b1b3d0ea7937b7395495fb405b31c7d22dbc3976a6bd01f2bf602082015290810185905260600160408051808303601f1901815282825280516020918201206080527f9c4c40205558f12027f21204d6218b8006985b7a6359bcab15404bcc3e3fa12290830152810185905260600160408051601f19818403018152919052805160209091012060a0526200019133620001ca565b6200019c856200029d565b620001a783620002ec565b620001b28262000322565b620001bd81620003e7565b5050505050505062000535565b6001600160a01b038116620002485760405162461bcd60e51b815260206004820152603c60248201527f696e76616c69642076616c756520666f72206f776e65723a206d75737420626560448201527f20646966666572656e742066726f6d207a65726f20616464726573730000000060648201526084016200007c565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf36906020015b60405180910390a150565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f40d0cbed36e9d36ffe92f223f1f44635a84ad83db42f8596e4885984b608a29060200162000292565b60018190556040518181527f4d72502b63cfe737b98b225a53708fe347cf8274baed31e0c4e4941b758da9929060200162000292565b60008111620003a45760405162461bcd60e51b815260206004820152604160248201527f696e76616c69642076616c756520666f72206d696e4465706f736974426c6f6360448201527f6b44697374616e63653a206d7573742062652067726561746572207468656e206064820152600360fc1b608482015260a4016200007c565b6002548114620003e45760028190556040518181527fdb69cbc4aa6648b506b7854c26807bfd811c27feaf97ac8847e3a66356cace149060200162000292565b50565b60008111620004715760405162461bcd60e51b815260206004820152604960248201527f696e76616c69642076616c756520666f72207061757365496e74656e7456616c60448201527f6964697479506572696f64426c6f636b733a206d75737420626520677265617460648201526806572207468656e20360bc1b608482015260a4016200007c565b60038190556040518181527f8120886d27fee35672e5d5a482d6c858105aebb26caf12178b8c0034fa88c2ba9060200162000292565b80516001600160a01b0381168114620004bf57600080fd5b919050565b600080600080600080600060e0888a031215620004e057600080fd5b620004eb88620004a7565b9650620004fb60208901620004a7565b95506200050b60408901620004a7565b9450606088015193506080880151925060a0880151915060c0880151905092959891949750929550565b60805160a05160c05160e051611a576200058b600039600081816102c60152610566015260008181610329015261087c015260008181610363015261091a0152600081816103c101526110b30152611a576000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637e92331211610104578063b7b7a408116100a2578063c8f712d511610071578063c8f712d5146103eb578063e78a5875146103fe578063eccd085f14610406578063f47610e61461041957600080fd5b8063b7b7a408146103a3578063ba6252b2146103ab578063c6dda2c3146103bc578063c7062e98146103e357600080fd5b80638d71a6f4116100de5780638d71a6f41461034b578063a50833d61461035e578063a749013e14610385578063b187bd261461039857600080fd5b80637e92331214610300578063893d20e8146103135780638b21f1701461032457600080fd5b8063251e3a211161017157806360c8a5471161014b57806360c8a5471461029e57806362272f28146102b157806363d8882a146102b95780636b96736b146102c157600080fd5b8063251e3a21146102705780633ab54bc3146102785780633e6f6d681461028b57600080fd5b80630c68ba21116101ad5780630c68ba2114610214578063111e53131461023757806313af40351461024a57806320d580d11461025d57600080fd5b8062fed902146101d3578063062b662e146101e85780630665f04b146101ff575b600080fd5b6101e66101e13660046115fd565b61042c565b005b6007545b6040519081526020015b60405180910390f35b61020761046b565b6040516101f69190611616565b61022761022236600461167f565b6104cd565b60405190151581526020016101f6565b6101e66102453660046116a1565b6104ef565b6101e661025836600461167f565b61052f565b6101e661026b366004611785565b610562565b6002546101ec565b6101e661028636600461184e565b6108ed565b6101e66102993660046115fd565b610a6c565b6101e66102ac3660046115fd565b610a9f565b6009546101ec565b6101e6610ace565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f6565b6101e661030e3660046115fd565b610b39565b6004546001600160a01b03166102e8565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6101e66103593660046116a1565b610b6c565b6101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6101e661039336600461167f565b610d24565b60085460ff16610227565b6001546101ec565b6000546001600160a01b03166102e8565b6101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6003546101ec565b6101e66103f936600461187b565b610d57565b610227610dc9565b6101e66104143660046115fd565b610e00565b6101ec61042736600461167f565b610e33565b6004546001600160a01b0316331461045f5760405162461bcd60e51b815260040161045690611919565b60405180910390fd5b61046881610e3e565b50565b606060058054806020026020016040519081016040528092919081815260200182805480156104c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104a5575b5050505050905090565b6001600160a01b03811660009081526006602052604081205415155b92915050565b6004546001600160a01b031633146105195760405162461bcd60e51b815260040161045690611919565b61052282610e7a565b61052b81610fae565b5050565b6004546001600160a01b031633146105595760405162461bcd60e51b815260040161045690611919565b61046881610fe3565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c5f2892f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105bd57600080fd5b505afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f5919061193f565b905080861461063d5760405162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d081c9bdbdd0818da185b99d95960621b6044820152606401610456565b60085460ff16156106865760405162461bcd60e51b815260206004820152601360248201527219195c1bdcda5d1cc8185c99481c185d5cd959606a1b6044820152606401610456565b600060075411801561069b5750600754825110155b6106dc5760405162461bcd60e51b81526020600482015260126024820152716e6f20677561726469616e2071756f72756d60701b6044820152606401610456565b6002546009546106ec904361196e565b10156107325760405162461bcd60e51b8152602060048201526015602482015274746f6f206672657175656e74206465706f7369747360581b6044820152606401610456565b82158015906107415750828440145b6107855760405162461bcd60e51b81526020600482015260156024820152740eadccaf0e0cac6e8cac840c4d8dec6d640d0c2e6d605b1b6044820152606401610456565b60008060009054906101000a90046001600160a01b03166001600160a01b031663d07442f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d457600080fd5b505afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061193f565b90508086146108555760405162461bcd60e51b81526020600482015260156024820152741ad95e5cc81bdc081a5b99195e0818da185b99d959605a1b6044820152606401610456565b61086287878787876110ad565b6001546040516390adc83b60e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906390adc83b90602401600060405180830381600087803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b505043600955505050505050505050565b60085460ff16156108fc575050565b3360006109088261123c565b90508060001914156109ca57604080517f000000000000000000000000000000000000000000000000000000000000000060208201529081018590526000906060016040516020818303038152906040528051906020012090506109758185600001518660200151611261565b92506109808361123c565b91508160001914156109c85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610456565b505b6003546109d7854361196e565b1115610a1c5760405162461bcd60e51b81526020600482015260146024820152731c185d5cd9481a5b9d195b9d08195e1c1a5c995960621b6044820152606401610456565b6008805460ff191660011790556040516001600160a01b03831681527feb225a736fbfee3f85ccb72bdf84ff0396ab358b7970e2cc351ab3e3fd92358d906020015b60405180910390a150505050565b6004546001600160a01b03163314610a965760405162461bcd60e51b815260040161045690611919565b61046881610fae565b6004546001600160a01b03163314610ac95760405162461bcd60e51b815260040161045690611919565b600955565b6004546001600160a01b03163314610af85760405162461bcd60e51b815260040161045690611919565b60085460ff1615610b37576008805460ff191690556040517f823084e804e36d8971e8b86749b6b0ace7b9f87ed272bef910c1e72d123eeb4890600090a15b565b6004546001600160a01b03163314610b635760405162461bcd60e51b815260040161045690611919565b6104688161128b565b6004546001600160a01b03163314610b965760405162461bcd60e51b815260040161045690611919565b6001600160a01b03821660009081526006602052604090205480610bed5760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309033bab0b93234b0b760911b6044820152606401610456565b60055480821115610c0057610c00611985565b808214610c965760006005610c1660018461196e565b81548110610c2657610c2661199b565b6000918252602090912001546001600160a01b03169050806005610c4b60018661196e565b81548110610c5b57610c5b61199b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526006909152604090208290555b6001600160a01b0384166000908152600660205260408120556005805480610cc057610cc06119b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610ceb83610fae565b6040516001600160a01b03851681527fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c5290602001610a5e565b6004546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161045690611919565b61046881611349565b6004546001600160a01b03163314610d815760405162461bcd60e51b815260040161045690611919565b60005b8251811015610dbf57610daf838281518110610da257610da261199b565b6020026020010151610e7a565b610db8816119c7565b9050610d84565b5061052b81610fae565b60085460009060ff16158015610de157506000600754115b8015610dfb5750600254600954610df8904361196e565b10155b905090565b6004546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161045690611919565b61046881611397565b60006104e98261123c565b60018190556040518181527f4d72502b63cfe737b98b225a53708fe347cf8274baed31e0c4e4941b758da992906020015b60405180910390a150565b6001600160a01b038116610ec85760405162461bcd60e51b8152602060048201526015602482015274677561726469616e207a65726f206164647265737360581b6044820152606401610456565b6001600160a01b03811660009081526006602052604090205415610f225760405162461bcd60e51b81526020600482015260116024820152706475706c6963617465206164647265737360781b6044820152606401610456565b600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038416908117909155905460008281526006602090815260409182902092909255519182527f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699101610e6f565b60078190556040518181527f70d7432f2ec830b36e5b8c45176a8079968714429c4be85665c06ec1b8fde4bb90602001610e6f565b6001600160a01b03811661105f5760405162461bcd60e51b815260206004820152603c60248201527f696e76616c69642076616c756520666f72206f776e65723a206d75737420626560448201527f20646966666572656e742066726f6d207a65726f2061646472657373000000006064820152608401610456565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3690602001610e6f565b604080517f00000000000000000000000000000000000000000000000000000000000000006020820152908101869052606081018590526080810184905260a0810183905260009060c0016040516020818303038152906040528051906020012090506000805b8351811015611232576000611164848684815181106111355761113561199b565b6020026020010151600001518785815181106111535761115361199b565b602002602001015160200151611261565b9050611187816001600160a01b0316600090815260066020526040902054151590565b6111c75760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610456565b826001600160a01b0316816001600160a01b0316116112205760405162461bcd60e51b81526020600482015260156024820152741cda59db985d1d5c995cc81b9bdd081cdbdc9d1959605a1b6044820152606401610456565b915061122b816119c7565b9050611114565b5050505050505050565b6001600160a01b0381166000908152600660205260408120546104e9906001906119e2565b60006001600160ff1b03821660ff83901c601b0161128186828785611454565b9695505050505050565b6000811161130b5760405162461bcd60e51b815260206004820152604160248201527f696e76616c69642076616c756520666f72206d696e4465706f736974426c6f6360448201527f6b44697374616e63653a206d7573742062652067726561746572207468656e206064820152600360fc1b608482015260a401610456565b60025481146104685760028190556040518181527fdb69cbc4aa6648b506b7854c26807bfd811c27feaf97ac8847e3a66356cace1490602001610e6f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f40d0cbed36e9d36ffe92f223f1f44635a84ad83db42f8596e4885984b608a290602001610e6f565b6000811161141f5760405162461bcd60e51b815260206004820152604960248201527f696e76616c69642076616c756520666f72207061757365496e74656e7456616c60448201527f6964697479506572696f64426c6f636b733a206d75737420626520677265617460648201526806572207468656e20360bc1b608482015260a401610456565b60038190556040518181527f8120886d27fee35672e5d5a482d6c858105aebb26caf12178b8c0034fa88c2ba90602001610e6f565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156114d15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610456565b8360ff16601b14806114e657508360ff16601c145b61153d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610456565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611591573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115f45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610456565b95945050505050565b60006020828403121561160f57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156116575783516001600160a01b031683529284019291840191600101611632565b50909695505050505050565b80356001600160a01b038116811461167a57600080fd5b919050565b60006020828403121561169157600080fd5b61169a82611663565b9392505050565b600080604083850312156116b457600080fd5b6116bd83611663565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561170a5761170a6116cb565b604052919050565b600067ffffffffffffffff82111561172c5761172c6116cb565b5060051b60200190565b60006040828403121561174857600080fd5b6040516040810181811067ffffffffffffffff8211171561176b5761176b6116cb565b604052823581526020928301359281019290925250919050565b600080600080600060a0868803121561179d57600080fd5b853594506020808701359450604080880135945060608801359350608088013567ffffffffffffffff8111156117d257600080fd5b8801601f81018a136117e357600080fd5b80356117f66117f182611712565b6116e1565b81815260069190911b8201840190848101908c83111561181557600080fd5b928501925b8284101561183b5761182c8d85611736565b8252928401929085019061181a565b8096505050505050509295509295909350565b6000806060838503121561186157600080fd5b823591506118728460208501611736565b90509250929050565b6000806040838503121561188e57600080fd5b823567ffffffffffffffff8111156118a557600080fd5b8301601f810185136118b657600080fd5b803560206118c66117f183611712565b82815260059290921b830181019181810190888411156118e557600080fd5b938201935b8385101561190a576118fb85611663565b825293820193908201906118ea565b98969091013596505050505050565b6020808252600c908201526b3737ba1030b71037bbb732b960a11b604082015260600190565b60006020828403121561195157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561198057611980611958565b500390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156119db576119db611958565b5060010190565b60008083128015600160ff1b850184121615611a0057611a00611958565b6001600160ff1b0384018313811615611a1b57611a1b611958565b5050039056fea26469706673582212208433a00c064ab9783c865e1aac266d63169264d8317e2481b4ffcfa27375525364736f6c63430008090033000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000000000000219ab540356cbb839cbe05303d7705fa00000000000000000000000055032650b14df07b85bf18a3a3ec8e0af2e028d500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000019f6
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637e92331211610104578063b7b7a408116100a2578063c8f712d511610071578063c8f712d5146103eb578063e78a5875146103fe578063eccd085f14610406578063f47610e61461041957600080fd5b8063b7b7a408146103a3578063ba6252b2146103ab578063c6dda2c3146103bc578063c7062e98146103e357600080fd5b80638d71a6f4116100de5780638d71a6f41461034b578063a50833d61461035e578063a749013e14610385578063b187bd261461039857600080fd5b80637e92331214610300578063893d20e8146103135780638b21f1701461032457600080fd5b8063251e3a211161017157806360c8a5471161014b57806360c8a5471461029e57806362272f28146102b157806363d8882a146102b95780636b96736b146102c157600080fd5b8063251e3a21146102705780633ab54bc3146102785780633e6f6d681461028b57600080fd5b80630c68ba21116101ad5780630c68ba2114610214578063111e53131461023757806313af40351461024a57806320d580d11461025d57600080fd5b8062fed902146101d3578063062b662e146101e85780630665f04b146101ff575b600080fd5b6101e66101e13660046115fd565b61042c565b005b6007545b6040519081526020015b60405180910390f35b61020761046b565b6040516101f69190611616565b61022761022236600461167f565b6104cd565b60405190151581526020016101f6565b6101e66102453660046116a1565b6104ef565b6101e661025836600461167f565b61052f565b6101e661026b366004611785565b610562565b6002546101ec565b6101e661028636600461184e565b6108ed565b6101e66102993660046115fd565b610a6c565b6101e66102ac3660046115fd565b610a9f565b6009546101ec565b6101e6610ace565b6102e87f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b6040516001600160a01b0390911681526020016101f6565b6101e661030e3660046115fd565b610b39565b6004546001600160a01b03166102e8565b6102e87f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8481565b6101e66103593660046116a1565b610b6c565b6101ec7fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb1081565b6101e661039336600461167f565b610d24565b60085460ff16610227565b6001546101ec565b6000546001600160a01b03166102e8565b6101ec7f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b086381565b6003546101ec565b6101e66103f936600461187b565b610d57565b610227610dc9565b6101e66104143660046115fd565b610e00565b6101ec61042736600461167f565b610e33565b6004546001600160a01b0316331461045f5760405162461bcd60e51b815260040161045690611919565b60405180910390fd5b61046881610e3e565b50565b606060058054806020026020016040519081016040528092919081815260200182805480156104c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104a5575b5050505050905090565b6001600160a01b03811660009081526006602052604081205415155b92915050565b6004546001600160a01b031633146105195760405162461bcd60e51b815260040161045690611919565b61052282610e7a565b61052b81610fae565b5050565b6004546001600160a01b031633146105595760405162461bcd60e51b815260040161045690611919565b61046881610fe3565b60007f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663c5f2892f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105bd57600080fd5b505afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f5919061193f565b905080861461063d5760405162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d081c9bdbdd0818da185b99d95960621b6044820152606401610456565b60085460ff16156106865760405162461bcd60e51b815260206004820152601360248201527219195c1bdcda5d1cc8185c99481c185d5cd959606a1b6044820152606401610456565b600060075411801561069b5750600754825110155b6106dc5760405162461bcd60e51b81526020600482015260126024820152716e6f20677561726469616e2071756f72756d60701b6044820152606401610456565b6002546009546106ec904361196e565b10156107325760405162461bcd60e51b8152602060048201526015602482015274746f6f206672657175656e74206465706f7369747360581b6044820152606401610456565b82158015906107415750828440145b6107855760405162461bcd60e51b81526020600482015260156024820152740eadccaf0e0cac6e8cac840c4d8dec6d640d0c2e6d605b1b6044820152606401610456565b60008060009054906101000a90046001600160a01b03166001600160a01b031663d07442f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d457600080fd5b505afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061193f565b90508086146108555760405162461bcd60e51b81526020600482015260156024820152741ad95e5cc81bdc081a5b99195e0818da185b99d959605a1b6044820152606401610456565b61086287878787876110ad565b6001546040516390adc83b60e01b815260048101919091527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b0316906390adc83b90602401600060405180830381600087803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b505043600955505050505050505050565b60085460ff16156108fc575050565b3360006109088261123c565b90508060001914156109ca57604080517fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb1060208201529081018590526000906060016040516020818303038152906040528051906020012090506109758185600001518660200151611261565b92506109808361123c565b91508160001914156109c85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610456565b505b6003546109d7854361196e565b1115610a1c5760405162461bcd60e51b81526020600482015260146024820152731c185d5cd9481a5b9d195b9d08195e1c1a5c995960621b6044820152606401610456565b6008805460ff191660011790556040516001600160a01b03831681527feb225a736fbfee3f85ccb72bdf84ff0396ab358b7970e2cc351ab3e3fd92358d906020015b60405180910390a150505050565b6004546001600160a01b03163314610a965760405162461bcd60e51b815260040161045690611919565b61046881610fae565b6004546001600160a01b03163314610ac95760405162461bcd60e51b815260040161045690611919565b600955565b6004546001600160a01b03163314610af85760405162461bcd60e51b815260040161045690611919565b60085460ff1615610b37576008805460ff191690556040517f823084e804e36d8971e8b86749b6b0ace7b9f87ed272bef910c1e72d123eeb4890600090a15b565b6004546001600160a01b03163314610b635760405162461bcd60e51b815260040161045690611919565b6104688161128b565b6004546001600160a01b03163314610b965760405162461bcd60e51b815260040161045690611919565b6001600160a01b03821660009081526006602052604090205480610bed5760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309033bab0b93234b0b760911b6044820152606401610456565b60055480821115610c0057610c00611985565b808214610c965760006005610c1660018461196e565b81548110610c2657610c2661199b565b6000918252602090912001546001600160a01b03169050806005610c4b60018661196e565b81548110610c5b57610c5b61199b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526006909152604090208290555b6001600160a01b0384166000908152600660205260408120556005805480610cc057610cc06119b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610ceb83610fae565b6040516001600160a01b03851681527fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c5290602001610a5e565b6004546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161045690611919565b61046881611349565b6004546001600160a01b03163314610d815760405162461bcd60e51b815260040161045690611919565b60005b8251811015610dbf57610daf838281518110610da257610da261199b565b6020026020010151610e7a565b610db8816119c7565b9050610d84565b5061052b81610fae565b60085460009060ff16158015610de157506000600754115b8015610dfb5750600254600954610df8904361196e565b10155b905090565b6004546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161045690611919565b61046881611397565b60006104e98261123c565b60018190556040518181527f4d72502b63cfe737b98b225a53708fe347cf8274baed31e0c4e4941b758da992906020015b60405180910390a150565b6001600160a01b038116610ec85760405162461bcd60e51b8152602060048201526015602482015274677561726469616e207a65726f206164647265737360581b6044820152606401610456565b6001600160a01b03811660009081526006602052604090205415610f225760405162461bcd60e51b81526020600482015260116024820152706475706c6963617465206164647265737360781b6044820152606401610456565b600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038416908117909155905460008281526006602090815260409182902092909255519182527f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699101610e6f565b60078190556040518181527f70d7432f2ec830b36e5b8c45176a8079968714429c4be85665c06ec1b8fde4bb90602001610e6f565b6001600160a01b03811661105f5760405162461bcd60e51b815260206004820152603c60248201527f696e76616c69642076616c756520666f72206f776e65723a206d75737420626560448201527f20646966666572656e742066726f6d207a65726f2061646472657373000000006064820152608401610456565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3690602001610e6f565b604080517f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b08636020820152908101869052606081018590526080810184905260a0810183905260009060c0016040516020818303038152906040528051906020012090506000805b8351811015611232576000611164848684815181106111355761113561199b565b6020026020010151600001518785815181106111535761115361199b565b602002602001015160200151611261565b9050611187816001600160a01b0316600090815260066020526040902054151590565b6111c75760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610456565b826001600160a01b0316816001600160a01b0316116112205760405162461bcd60e51b81526020600482015260156024820152741cda59db985d1d5c995cc81b9bdd081cdbdc9d1959605a1b6044820152606401610456565b915061122b816119c7565b9050611114565b5050505050505050565b6001600160a01b0381166000908152600660205260408120546104e9906001906119e2565b60006001600160ff1b03821660ff83901c601b0161128186828785611454565b9695505050505050565b6000811161130b5760405162461bcd60e51b815260206004820152604160248201527f696e76616c69642076616c756520666f72206d696e4465706f736974426c6f6360448201527f6b44697374616e63653a206d7573742062652067726561746572207468656e206064820152600360fc1b608482015260a401610456565b60025481146104685760028190556040518181527fdb69cbc4aa6648b506b7854c26807bfd811c27feaf97ac8847e3a66356cace1490602001610e6f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f40d0cbed36e9d36ffe92f223f1f44635a84ad83db42f8596e4885984b608a290602001610e6f565b6000811161141f5760405162461bcd60e51b815260206004820152604960248201527f696e76616c69642076616c756520666f72207061757365496e74656e7456616c60448201527f6964697479506572696f64426c6f636b733a206d75737420626520677265617460648201526806572207468656e20360bc1b608482015260a401610456565b60038190556040518181527f8120886d27fee35672e5d5a482d6c858105aebb26caf12178b8c0034fa88c2ba90602001610e6f565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156114d15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610456565b8360ff16601b14806114e657508360ff16601c145b61153d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610456565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611591573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115f45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610456565b95945050505050565b60006020828403121561160f57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156116575783516001600160a01b031683529284019291840191600101611632565b50909695505050505050565b80356001600160a01b038116811461167a57600080fd5b919050565b60006020828403121561169157600080fd5b61169a82611663565b9392505050565b600080604083850312156116b457600080fd5b6116bd83611663565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561170a5761170a6116cb565b604052919050565b600067ffffffffffffffff82111561172c5761172c6116cb565b5060051b60200190565b60006040828403121561174857600080fd5b6040516040810181811067ffffffffffffffff8211171561176b5761176b6116cb565b604052823581526020928301359281019290925250919050565b600080600080600060a0868803121561179d57600080fd5b853594506020808701359450604080880135945060608801359350608088013567ffffffffffffffff8111156117d257600080fd5b8801601f81018a136117e357600080fd5b80356117f66117f182611712565b6116e1565b81815260069190911b8201840190848101908c83111561181557600080fd5b928501925b8284101561183b5761182c8d85611736565b8252928401929085019061181a565b8096505050505050509295509295909350565b6000806060838503121561186157600080fd5b823591506118728460208501611736565b90509250929050565b6000806040838503121561188e57600080fd5b823567ffffffffffffffff8111156118a557600080fd5b8301601f810185136118b657600080fd5b803560206118c66117f183611712565b82815260059290921b830181019181810190888411156118e557600080fd5b938201935b8385101561190a576118fb85611663565b825293820193908201906118ea565b98969091013596505050505050565b6020808252600c908201526b3737ba1030b71037bbb732b960a11b604082015260600190565b60006020828403121561195157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561198057611980611958565b500390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156119db576119db611958565b5060010190565b60008083128015600160ff1b850184121615611a0057611a00611958565b6001600160ff1b0384018313811615611a1b57611a1b611958565b5050039056fea26469706673582212208433a00c064ab9783c865e1aac266d63169264d8317e2481b4ffcfa27375525364736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000000000000219ab540356cbb839cbe05303d7705fa00000000000000000000000055032650b14df07b85bf18a3a3ec8e0af2e028d500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000019f6
-----Decoded View---------------
Arg [0] : _lido (address): 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
Arg [1] : _depositContract (address): 0x00000000219ab540356cBB839Cbe05303d7705Fa
Arg [2] : _nodeOperatorsRegistry (address): 0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5
Arg [3] : _networkId (uint256): 1
Arg [4] : _maxDepositsPerBlock (uint256): 150
Arg [5] : _minDepositBlockDistance (uint256): 25
Arg [6] : _pauseIntentValidityPeriodBlocks (uint256): 6646
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84
Arg [1] : 00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa
Arg [2] : 00000000000000000000000055032650b14df07b85bf18a3a3ec8e0af2e028d5
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [6] : 00000000000000000000000000000000000000000000000000000000000019f6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.