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
- 200
- EVM Version
- istanbul
- Verified at
- 2024-03-02T01:10:05.545851Z
Constructor Arguments
0x000000000000000000000000a64c80dae01248ee7b3a7c35149c0152749ee4340000000000000000000000001694b43d1eb40708a5066699c2039e66f008702f0000000000000000000000002deec96a937398b76745fe93d05018404e2cd9f00000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb380000000000000000000000000f433b2137e9c5804e8d07d9a97da54c1e02748bb0000000000000000000000007e4ab14cd8f4698bfac1a90978a6d18d8fd8b5b40000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb380000000000000000000000000c62d59293de9a3c2d5f3e973c22100008b85057a000000000000000000000000fb911923fbb1227ca0023b92afae954610e9b4530000000000000000000000008e797edfe1a9ff2b72fdca95a8e00ee9756b6b040000000000000000000000008c7fa4ab37791927fc159dfc69751b64be0e29e4000000000000000000000000fe833065dc7f079e2e7758cc1db0022e08e2bc44000000000000000000000000be05e29d05ec8ff0fa9eaa1888cfc394c48446aa000000000000000000000000bef5f19d09b3ca928e74338cdc844ac170ea197a
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":{"*":{"*":["*"],"":["*"]}},"optimizer":{"runs":200,"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
0x6102406040523480156200001257600080fd5b5060405162000a3238038062000a32833981016040819052620000359162000254565b80516200004290620001d1565b6001600160a01b031660805260208101516200005e90620001d1565b6001600160a01b031660a05260408101516200007a90620001d1565b6001600160a01b031660c05260608101516200009690620001d1565b6001600160a01b031660e0526080810151620000b290620001d1565b6001600160a01b03166101005260a0810151620000cf90620001d1565b6001600160a01b03166101205260c0810151620000ec90620001d1565b6001600160a01b03166101405260e08101516200010990620001d1565b6001600160a01b0316610160526101008101516200012790620001d1565b6001600160a01b0316610180526101208101516200014590620001d1565b6001600160a01b03166101a0526101408101516200016390620001d1565b6001600160a01b03166101c0526101608101516200018190620001d1565b6001600160a01b03166101e0526101808101516200019f90620001d1565b6001600160a01b0316610200526101a0810151620001bd90620001d1565b6001600160a01b0316610220525062000383565b60006001600160a01b038216620001fb5760405163d92e233d60e01b815260040160405180910390fd5b5090565b6040516101c081016001600160401b03811182821017156200023157634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024f57600080fd5b919050565b60006101c082840312156200026857600080fd5b62000272620001ff565b6200027d8362000237565b81526200028d6020840162000237565b6020820152620002a06040840162000237565b6040820152620002b36060840162000237565b6060820152620002c66080840162000237565b6080820152620002d960a0840162000237565b60a0820152620002ec60c0840162000237565b60c0820152620002ff60e0840162000237565b60e08201526101006200031481850162000237565b908201526101206200032884820162000237565b908201526101406200033c84820162000237565b908201526101606200035084820162000237565b908201526101806200036484820162000237565b908201526101a06200037884820162000237565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516105ac6200048660003960006103f501526000818161026c015281816103980152610491015260008181610244015281816102a101526103700152600061010a01526000818161021c015261046a0152600081816101f2015261052d01526000818161017501526103480152600081816103c001526104df0152600081816101ca0152818161031e01526105540152600061014e015260006104b80152600081816101a5015281816102f601526105060152600061041c0152600081816102d1015261044301526105ac6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80635a2031f911610097578063d680a87611610066578063d680a876146104da578063e441d25f14610501578063ef6c064c14610528578063f5e6d50f1461054f57600080fd5b80635a2031f91461043e57806361d027b31461046557806369d421481461048c578063996107aa146104b357600080fd5b806337d5fe99116100d357806337d5fe991461029c5780633cbf357e146102c35780633fe7d554146103f0578063472c17761461041757600080fd5b806312f8d4b91461010557806323509a2d1461014957806327810b6e1461017057806335f4022e14610197575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116928201929092527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f0000000000000000000000000000000000000000000000000000000000000000821660808201527f00000000000000000000000000000000000000000000000000000000000000009190911660a082015260c001610140565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116928201929092527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f0000000000000000000000000000000000000000000000000000000000000000821660808201527f0000000000000000000000000000000000000000000000000000000000000000821660a08201527f00000000000000000000000000000000000000000000000000000000000000009190911660c082015260e001610140565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b61012c7f00000000000000000000000000000000000000000000000000000000000000008156fea2646970667358221220f56a7e9b46d8e22c7fbd5bfb01e236cd03fd8640f62ca4bf7a383de86337258d64736f6c63430008090033000000000000000000000000a64c80dae01248ee7b3a7c35149c0152749ee4340000000000000000000000001694b43d1eb40708a5066699c2039e66f008702f0000000000000000000000002deec96a937398b76745fe93d05018404e2cd9f00000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb380000000000000000000000000f433b2137e9c5804e8d07d9a97da54c1e02748bb0000000000000000000000007e4ab14cd8f4698bfac1a90978a6d18d8fd8b5b40000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb380000000000000000000000000c62d59293de9a3c2d5f3e973c22100008b85057a000000000000000000000000fb911923fbb1227ca0023b92afae954610e9b4530000000000000000000000008e797edfe1a9ff2b72fdca95a8e00ee9756b6b040000000000000000000000008c7fa4ab37791927fc159dfc69751b64be0e29e4000000000000000000000000fe833065dc7f079e2e7758cc1db0022e08e2bc44000000000000000000000000be05e29d05ec8ff0fa9eaa1888cfc394c48446aa000000000000000000000000bef5f19d09b3ca928e74338cdc844ac170ea197a
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80635a2031f911610097578063d680a87611610066578063d680a876146104da578063e441d25f14610501578063ef6c064c14610528578063f5e6d50f1461054f57600080fd5b80635a2031f91461043e57806361d027b31461046557806369d421481461048c578063996107aa146104b357600080fd5b806337d5fe99116100d357806337d5fe991461029c5780633cbf357e146102c35780633fe7d554146103f0578063472c17761461041757600080fd5b806312f8d4b91461010557806323509a2d1461014957806327810b6e1461017057806335f4022e14610197575b600080fd5b61012c7f0000000000000000000000008c7fa4ab37791927fc159dfc69751b64be0e29e481565b6040516001600160a01b0390911681526020015b60405180910390f35b61012c7f000000000000000000000000f433b2137e9c5804e8d07d9a97da54c1e02748bb81565b61012c7f000000000000000000000000c62d59293de9a3c2d5f3e973c22100008b85057a81565b604080516001600160a01b037f0000000000000000000000002deec96a937398b76745fe93d05018404e2cd9f0811682527f0000000000000000000000007e4ab14cd8f4698bfac1a90978a6d18d8fd8b5b4811660208301527f000000000000000000000000fb911923fbb1227ca0023b92afae954610e9b4538116928201929092527f0000000000000000000000008e797edfe1a9ff2b72fdca95a8e00ee9756b6b04821660608201527f000000000000000000000000fe833065dc7f079e2e7758cc1db0022e08e2bc44821660808201527f000000000000000000000000be05e29d05ec8ff0fa9eaa1888cfc394c48446aa9190911660a082015260c001610140565b61012c7f000000000000000000000000fe833065dc7f079e2e7758cc1db0022e08e2bc4481565b604080516001600160a01b037f000000000000000000000000a64c80dae01248ee7b3a7c35149c0152749ee434811682527f0000000000000000000000002deec96a937398b76745fe93d05018404e2cd9f0811660208301527f0000000000000000000000007e4ab14cd8f4698bfac1a90978a6d18d8fd8b5b48116928201929092527f000000000000000000000000c62d59293de9a3c2d5f3e973c22100008b85057a821660608201527f000000000000000000000000fe833065dc7f079e2e7758cc1db0022e08e2bc44821660808201527f000000000000000000000000be05e29d05ec8ff0fa9eaa1888cfc394c48446aa821660a08201527f0000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb3809190911660c082015260e001610140565b61012c7f000000000000000000000000bef5f19d09b3ca928e74338cdc844ac170ea197a81565b61012c7f0000000000000000000000001694b43d1eb40708a5066699c2039e66f008702f81565b61012c7f000000000000000000000000a64c80dae01248ee7b3a7c35149c0152749ee43481565b61012c7f0000000000000000000000008e797edfe1a9ff2b72fdca95a8e00ee9756b6b0481565b61012c7f000000000000000000000000be05e29d05ec8ff0fa9eaa1888cfc394c48446aa81565b61012c7f0000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb38081565b61012c7f0000000000000000000000005efc24f9ee087de7892c5d0fa339a303503bb38081565b61012c7f0000000000000000000000002deec96a937398b76745fe93d05018404e2cd9f081565b61012c7f000000000000000000000000fb911923fbb1227ca0023b92afae954610e9b45381565b61012c7f0000000000000000000000007e4ab14cd8f4698bfac1a90978a6d18d8fd8b5b48156fea2646970667358221220f56a7e9b46d8e22c7fbd5bfb01e236cd03fd8640f62ca4bf7a383de86337258d64736f6c63430008090033