Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- LidoLocator
- Optimization enabled
- true
- Compiler version
- v0.8.9+commit.e5eed63a
- Optimization runs
- 80
- EVM Version
- istanbul
- Verified at
- 2024-11-06T09:28:56.583280Z
Constructor Arguments
0x00000000000000000000000030a06e9aef08a6acac7e1a1abc6618a134ea1ea200000000000000000000000016a9358fddfcb50a4c812db1d110229e6ef06478000000000000000000000000a580f089e422267d6ca47342f65d496815d92ca00000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f590000000000000000000000001394038420cc6cf704069eed3331c9fd988ad32f000000000000000000000000ced6e9e9cf336921ce49d9b64c258be86c3ef2f70000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f590000000000000000000000008a6e7b16f77c222da76caae7d27836c1b28f64ba000000000000000000000000388b88d18cb0fa664e5ee754bd4050d3f72b213c000000000000000000000000295b20cdbde7197a79cf403989bd5f7b792f96fe0000000000000000000000007169aeb4b4f0fa65c7d7d498817c659fc9134f65000000000000000000000000395a749c7461b88ff5c56a2e49c86b35d63503c5000000000000000000000000e4d239dd1270a609928661bf93c91d31cfc6fa06000000000000000000000000cb2afce076d4c561c897b9956988e8c42c443687
contracts/0.8.9/LidoLocator.sol
// SPDX-FileCopyrightText: 2023 Lido <info@lido.fi>
// SPDX-License-Identifier: GPL-3.0
/* See contracts/COMPILERS.md */
pragma solidity 0.8.9;
import {ILidoLocator} from "../common/interfaces/ILidoLocator.sol";
/**
* @title LidoLocator
* @author mymphe
* @notice Lido service locator
* @dev configuration is stored as public immutables to reduce gas consumption
*/
contract LidoLocator is ILidoLocator {
struct Config {
address accountingOracle;
address depositSecurityModule;
address elRewardsVault;
address legacyOracle;
address lido;
address oracleReportSanityChecker;
address postTokenRebaseReceiver;
address burner;
address stakingRouter;
address treasury;
address validatorsExitBusOracle;
address withdrawalQueue;
address withdrawalVault;
address oracleDaemonConfig;
}
error ZeroAddress();
address public immutable accountingOracle;
address public immutable depositSecurityModule;
address public immutable elRewardsVault;
address public immutable legacyOracle;
address public immutable lido;
address public immutable oracleReportSanityChecker;
address public immutable postTokenRebaseReceiver;
address public immutable burner;
address public immutable stakingRouter;
address public immutable treasury;
address public immutable validatorsExitBusOracle;
address public immutable withdrawalQueue;
address public immutable withdrawalVault;
address public immutable oracleDaemonConfig;
/**
* @notice declare service locations
* @dev accepts a struct to avoid the "stack-too-deep" error
* @param _config struct of addresses
*/
constructor(Config memory _config) {
accountingOracle = _assertNonZero(_config.accountingOracle);
depositSecurityModule = _assertNonZero(_config.depositSecurityModule);
elRewardsVault = _assertNonZero(_config.elRewardsVault);
legacyOracle = _assertNonZero(_config.legacyOracle);
lido = _assertNonZero(_config.lido);
oracleReportSanityChecker = _assertNonZero(_config.oracleReportSanityChecker);
postTokenRebaseReceiver = _assertNonZero(_config.postTokenRebaseReceiver);
burner = _assertNonZero(_config.burner);
stakingRouter = _assertNonZero(_config.stakingRouter);
treasury = _assertNonZero(_config.treasury);
validatorsExitBusOracle = _assertNonZero(_config.validatorsExitBusOracle);
withdrawalQueue = _assertNonZero(_config.withdrawalQueue);
withdrawalVault = _assertNonZero(_config.withdrawalVault);
oracleDaemonConfig = _assertNonZero(_config.oracleDaemonConfig);
}
function coreComponents() external view returns(
address,
address,
address,
address,
address,
address
) {
return (
elRewardsVault,
oracleReportSanityChecker,
stakingRouter,
treasury,
withdrawalQueue,
withdrawalVault
);
}
function oracleReportComponentsForLido() external view returns(
address,
address,
address,
address,
address,
address,
address
) {
return (
accountingOracle,
elRewardsVault,
oracleReportSanityChecker,
burner,
withdrawalQueue,
withdrawalVault,
postTokenRebaseReceiver
);
}
function _assertNonZero(address _address) internal pure returns (address) {
if (_address == address(0)) revert ZeroAddress();
return _address;
}
}
contracts/common/interfaces/ILidoLocator.sol
// SPDX-FileCopyrightText: 2023 Lido <info@lido.fi>
// SPDX-License-Identifier: GPL-3.0
// See contracts/COMPILERS.md
// solhint-disable-next-line
pragma solidity >=0.4.24 <0.9.0;
interface ILidoLocator {
function accountingOracle() external view returns(address);
function depositSecurityModule() external view returns(address);
function elRewardsVault() external view returns(address);
function legacyOracle() external view returns(address);
function lido() external view returns(address);
function oracleReportSanityChecker() external view returns(address);
function burner() external view returns(address);
function stakingRouter() external view returns(address);
function treasury() external view returns(address);
function validatorsExitBusOracle() external view returns(address);
function withdrawalQueue() external view returns(address);
function withdrawalVault() external view returns(address);
function postTokenRebaseReceiver() external view returns(address);
function oracleDaemonConfig() external view returns(address);
function coreComponents() external view returns(
address elRewardsVault,
address oracleReportSanityChecker,
address stakingRouter,
address treasury,
address withdrawalQueue,
address withdrawalVault
);
function oracleReportComponentsForLido() external view returns(
address accountingOracle,
address elRewardsVault,
address oracleReportSanityChecker,
address burner,
address withdrawalQueue,
address withdrawalVault,
address postTokenRebaseReceiver
);
}
Compiler Settings
{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}},"optimizer":{"runs":80,"enabled":true},"libraries":{},"evmVersion":"istanbul"}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"tuple","name":"_config","internalType":"struct LidoLocator.Config","components":[{"type":"address","name":"accountingOracle","internalType":"address"},{"type":"address","name":"depositSecurityModule","internalType":"address"},{"type":"address","name":"elRewardsVault","internalType":"address"},{"type":"address","name":"legacyOracle","internalType":"address"},{"type":"address","name":"lido","internalType":"address"},{"type":"address","name":"oracleReportSanityChecker","internalType":"address"},{"type":"address","name":"postTokenRebaseReceiver","internalType":"address"},{"type":"address","name":"burner","internalType":"address"},{"type":"address","name":"stakingRouter","internalType":"address"},{"type":"address","name":"treasury","internalType":"address"},{"type":"address","name":"validatorsExitBusOracle","internalType":"address"},{"type":"address","name":"withdrawalQueue","internalType":"address"},{"type":"address","name":"withdrawalVault","internalType":"address"},{"type":"address","name":"oracleDaemonConfig","internalType":"address"}]}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"accountingOracle","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"burner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"}],"name":"coreComponents","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"depositSecurityModule","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"elRewardsVault","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"legacyOracle","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"lido","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"oracleDaemonConfig","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"}],"name":"oracleReportComponentsForLido","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"oracleReportSanityChecker","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"postTokenRebaseReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"stakingRouter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"treasury","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"validatorsExitBusOracle","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"withdrawalQueue","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"withdrawalVault","inputs":[]}]
Contract Creation Code
0x6102406040523480156200001257600080fd5b5060405162000a1138038062000a11833981016040819052620000359162000254565b80516200004290620001d1565b6001600160a01b031660805260208101516200005e90620001d1565b6001600160a01b031660a05260408101516200007a90620001d1565b6001600160a01b031660c05260608101516200009690620001d1565b6001600160a01b031660e0526080810151620000b290620001d1565b6001600160a01b03166101005260a0810151620000cf90620001d1565b6001600160a01b03166101205260c0810151620000ec90620001d1565b6001600160a01b03166101405260e08101516200010990620001d1565b6001600160a01b0316610160526101008101516200012790620001d1565b6001600160a01b0316610180526101208101516200014590620001d1565b6001600160a01b03166101a0526101408101516200016390620001d1565b6001600160a01b03166101c0526101608101516200018190620001d1565b6001600160a01b03166101e0526101808101516200019f90620001d1565b6001600160a01b0316610200526101a0810151620001bd90620001d1565b6001600160a01b0316610220525062000383565b60006001600160a01b038216620001fb5760405163d92e233d60e01b815260040160405180910390fd5b5090565b6040516101c081016001600160401b03811182821017156200023157634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024f57600080fd5b919050565b60006101c082840312156200026857600080fd5b62000272620001ff565b6200027d8362000237565b81526200028d6020840162000237565b6020820152620002a06040840162000237565b6040820152620002b36060840162000237565b6060820152620002c66080840162000237565b6080820152620002d960a0840162000237565b60a0820152620002ec60c0840162000237565b60c0820152620002ff60e0840162000237565b60e08201526101006200031481850162000237565b908201526101206200032884820162000237565b908201526101406200033c84820162000237565b908201526101606200035084820162000237565b908201526101806200036484820162000237565b908201526101a06200037884820162000237565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161058c6200048560003960006103d501526000818161024c0152818161037801526104710152600081816102240152818161028101526103500152600060ea0152600081816101fc015261044a0152600081816101d2015261050d01526000818161015501526103280152600081816103a001526104bf0152600081816101aa015281816102fe01526105340152600061012e01526000610498015260008181610185015281816102d601526104e6015260006103fc0152600081816102b10152610423015261058c6000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c80635a2031f9116100875780635a2031f91461041e57806361d027b31461044557806369d421481461046c578063996107aa14610493578063d680a876146104ba578063e441d25f146104e1578063ef6c064c14610508578063f5e6d50f1461052f57600080fd5b806312f8d4b9146100e557806323509a2d1461012957806327810b6e1461015057806335f4022e1461017757806337d5fe991461027c5780633cbf357e146102a35780633fe7d554146103d0578063472c1776146103f7575b600080fd5b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116928201929092527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f0000000000000000000000000000000000000000000000000000000000000000821660808201527f00000000000000000000000000000000000000000000000000000000000000009190911660a082015260c001610120565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116928201929092527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f0000000000000000000000000000000000000000000000000000000000000000821660808201527f0000000000000000000000000000000000000000000000000000000000000000821660a08201527f00000000000000000000000000000000000000000000000000000000000000009190911660c082015260e001610120565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b61010c7f00000000000000000000000000000000000000000000000000000000000000008156fea264697066735822122064e26937bb241fef5186decb7b82cd90f5176dbc4fe240d6d9bfa21be7f99ecd64736f6c6343000809003300000000000000000000000030a06e9aef08a6acac7e1a1abc6618a134ea1ea200000000000000000000000016a9358fddfcb50a4c812db1d110229e6ef06478000000000000000000000000a580f089e422267d6ca47342f65d496815d92ca00000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f590000000000000000000000001394038420cc6cf704069eed3331c9fd988ad32f000000000000000000000000ced6e9e9cf336921ce49d9b64c258be86c3ef2f70000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f590000000000000000000000008a6e7b16f77c222da76caae7d27836c1b28f64ba000000000000000000000000388b88d18cb0fa664e5ee754bd4050d3f72b213c000000000000000000000000295b20cdbde7197a79cf403989bd5f7b792f96fe0000000000000000000000007169aeb4b4f0fa65c7d7d498817c659fc9134f65000000000000000000000000395a749c7461b88ff5c56a2e49c86b35d63503c5000000000000000000000000e4d239dd1270a609928661bf93c91d31cfc6fa06000000000000000000000000cb2afce076d4c561c897b9956988e8c42c443687
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100e05760003560e01c80635a2031f9116100875780635a2031f91461041e57806361d027b31461044557806369d421481461046c578063996107aa14610493578063d680a876146104ba578063e441d25f146104e1578063ef6c064c14610508578063f5e6d50f1461052f57600080fd5b806312f8d4b9146100e557806323509a2d1461012957806327810b6e1461015057806335f4022e1461017757806337d5fe991461027c5780633cbf357e146102a35780633fe7d554146103d0578063472c1776146103f7575b600080fd5b61010c7f0000000000000000000000007169aeb4b4f0fa65c7d7d498817c659fc9134f6581565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c7f0000000000000000000000001394038420cc6cf704069eed3331c9fd988ad32f81565b61010c7f0000000000000000000000008a6e7b16f77c222da76caae7d27836c1b28f64ba81565b604080516001600160a01b037f000000000000000000000000a580f089e422267d6ca47342f65d496815d92ca0811682527f000000000000000000000000ced6e9e9cf336921ce49d9b64c258be86c3ef2f7811660208301527f000000000000000000000000388b88d18cb0fa664e5ee754bd4050d3f72b213c8116928201929092527f000000000000000000000000295b20cdbde7197a79cf403989bd5f7b792f96fe821660608201527f000000000000000000000000395a749c7461b88ff5c56a2e49c86b35d63503c5821660808201527f000000000000000000000000e4d239dd1270a609928661bf93c91d31cfc6fa069190911660a082015260c001610120565b61010c7f000000000000000000000000395a749c7461b88ff5c56a2e49c86b35d63503c581565b604080516001600160a01b037f00000000000000000000000030a06e9aef08a6acac7e1a1abc6618a134ea1ea2811682527f000000000000000000000000a580f089e422267d6ca47342f65d496815d92ca0811660208301527f000000000000000000000000ced6e9e9cf336921ce49d9b64c258be86c3ef2f78116928201929092527f0000000000000000000000008a6e7b16f77c222da76caae7d27836c1b28f64ba821660608201527f000000000000000000000000395a749c7461b88ff5c56a2e49c86b35d63503c5821660808201527f000000000000000000000000e4d239dd1270a609928661bf93c91d31cfc6fa06821660a08201527f0000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f599190911660c082015260e001610120565b61010c7f000000000000000000000000cb2afce076d4c561c897b9956988e8c42c44368781565b61010c7f00000000000000000000000016a9358fddfcb50a4c812db1d110229e6ef0647881565b61010c7f00000000000000000000000030a06e9aef08a6acac7e1a1abc6618a134ea1ea281565b61010c7f000000000000000000000000295b20cdbde7197a79cf403989bd5f7b792f96fe81565b61010c7f000000000000000000000000e4d239dd1270a609928661bf93c91d31cfc6fa0681565b61010c7f0000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f5981565b61010c7f0000000000000000000000000ccbe6255017616933f2c1a78915f9ddc2d18f5981565b61010c7f000000000000000000000000a580f089e422267d6ca47342f65d496815d92ca081565b61010c7f000000000000000000000000388b88d18cb0fa664e5ee754bd4050d3f72b213c81565b61010c7f000000000000000000000000ced6e9e9cf336921ce49d9b64c258be86c3ef2f78156fea264697066735822122064e26937bb241fef5186decb7b82cd90f5176dbc4fe240d6d9bfa21be7f99ecd64736f6c63430008090033