Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
To
|
Amount
|
||
|---|---|---|---|---|---|---|---|
| Get_relays | 1058638 | 149 days ago | 0 ETH | ||||
| Create EVM Scrip... | 1058638 | 149 days ago | 0 ETH | ||||
| Get_relays | 1057993 | 149 days ago | 0 ETH | ||||
| Create EVM Scrip... | 1057993 | 149 days ago | 0 ETH | ||||
| Get_relays | 828859 | 184 days ago | 0 ETH | ||||
| Create EVM Scrip... | 828859 | 184 days ago | 0 ETH | ||||
| Get_relays | 729726 | 199 days ago | 0 ETH | ||||
| Create EVM Scrip... | 729726 | 199 days ago | 0 ETH | ||||
| Get_relays | 674482 | 207 days ago | 0 ETH | ||||
| Create EVM Scrip... | 674482 | 207 days ago | 0 ETH | ||||
| Get_relays | 580843 | 221 days ago | 0 ETH | ||||
| Create EVM Scrip... | 580843 | 221 days ago | 0 ETH | ||||
| Get_relays | 433141 | 243 days ago | 0 ETH | ||||
| Create EVM Scrip... | 433141 | 243 days ago | 0 ETH | ||||
| Get_relays | 433024 | 243 days ago | 0 ETH | ||||
| Create EVM Scrip... | 433024 | 243 days ago | 0 ETH | ||||
| Get_relays | 433001 | 243 days ago | 0 ETH | ||||
| Create EVM Scrip... | 433001 | 243 days ago | 0 ETH | ||||
| Get_relays | 432169 | 243 days ago | 0 ETH | ||||
| Create EVM Scrip... | 432169 | 243 days ago | 0 ETH | ||||
| Get_relays | 425051 | 244 days ago | 0 ETH | ||||
| Create EVM Scrip... | 425051 | 244 days ago | 0 ETH | ||||
| Get_relays | 424306 | 244 days ago | 0 ETH | ||||
| Create EVM Scrip... | 424306 | 244 days ago | 0 ETH | ||||
| Get_relays | 424251 | 244 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Contract Name:
AddMEVBoostRelays
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: 2025 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.6; import "contracts/TrustedCaller.sol"; import "contracts/libraries/EVMScriptCreator.sol"; import "contracts/interfaces/IEVMScriptFactory.sol"; import "contracts/interfaces/IMEVBoostRelayAllowedList.sol"; import "contracts/libraries/MEVBoostRelaysInputUtils.sol"; /// @author katamarinaki, swissarmytowel /// @notice Creates EVMScript to add new MEV boost relay to MEV Boost relay allowed list contract AddMEVBoostRelays is TrustedCaller, IEVMScriptFactory { // ------------- // ERRORS // ------------- string private constant ERROR_MAX_NUM_RELAYS_EXCEEDED = "MAX_NUM_RELAYS_EXCEEDED"; // ------------- // CONSTANTS // ------------- /// @notice Limit on the number of relays in the registry based on the value from the MEVBoostRelayAllowedList uint256 private constant MAX_NUM_RELAYS = 40; /// @notice Selector for the add_relay method in the MEVBoostRelayAllowedList bytes4 private constant ADD_RELAY_SELECTOR = bytes4(keccak256("add_relay(string,string,bool,string)")); // ------------- // VARIABLES // ------------- /// @notice Address of MEVBoostRelayAllowedList contract IMEVBoostRelayAllowedList public immutable mevBoostRelayAllowedList; // ------------- // CONSTRUCTOR // ------------- constructor( address _trustedCaller, address _mevBoostRelayAllowedList ) TrustedCaller(_trustedCaller) { mevBoostRelayAllowedList = IMEVBoostRelayAllowedList(_mevBoostRelayAllowedList); } // ------------- // EXTERNAL METHODS // ------------- /// @notice Creates EVMScript to add new MEV boost relay to MEV Boost relay allowed list /// @param _creator Address who creates EVMScript /// @param _evmScriptCallData Encoded relays data: IMEVBoostRelayAllowedList.Relay[] function createEVMScript( address _creator, bytes memory _evmScriptCallData ) external view override onlyTrustedCaller(_creator) returns (bytes memory) { IMEVBoostRelayAllowedList.Relay[] memory _relaysToAdd = MEVBoostRelaysInputUtils .decodeCallDataWithRelayStructs(_evmScriptCallData); IMEVBoostRelayAllowedList.Relay[] memory _currentAllowedRelays = mevBoostRelayAllowedList .get_relays(); require( _currentAllowedRelays.length + _relaysToAdd.length <= MAX_NUM_RELAYS, ERROR_MAX_NUM_RELAYS_EXCEEDED ); // Validate the input data before creating EVMScript to add new relays. The relay URIs MUST NOT be already in the list. MEVBoostRelaysInputUtils.validateRelays(_relaysToAdd, _currentAllowedRelays, false); uint256 newRelaysCount = _relaysToAdd.length; bytes[] memory encodedCalldata = new bytes[](newRelaysCount); for (uint256 i; i < newRelaysCount; ) { encodedCalldata[i] = abi.encode( _relaysToAdd[i].uri, _relaysToAdd[i].operator, _relaysToAdd[i].is_mandatory, _relaysToAdd[i].description ); unchecked { ++i; } } return EVMScriptCreator.createEVMScript( address(mevBoostRelayAllowedList), ADD_RELAY_SELECTOR, encodedCalldata ); } /// @notice Decodes call data used by createEVMScript method /// @param _evmScriptCallData Encoded relays data: IMEVBoostRelayAllowedList.Relay[] /// @return relays IMEVBoostRelayAllowedList.Relay[] function decodeEVMScriptCallData( bytes calldata _evmScriptCallData ) external pure returns (IMEVBoostRelayAllowedList.Relay[] memory relays) { return MEVBoostRelaysInputUtils.decodeCallDataWithRelayStructs(_evmScriptCallData); } }
// SPDX-FileCopyrightText: 2021 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; /// @author psirex /// @notice A helper contract contains logic to validate that only a trusted caller has access to certain methods. /// @dev Trusted caller set once on deployment and can't be changed. contract TrustedCaller { string private constant ERROR_TRUSTED_CALLER_IS_ZERO_ADDRESS = "TRUSTED_CALLER_IS_ZERO_ADDRESS"; string private constant ERROR_CALLER_IS_FORBIDDEN = "CALLER_IS_FORBIDDEN"; address public immutable trustedCaller; constructor(address _trustedCaller) { require(_trustedCaller != address(0), ERROR_TRUSTED_CALLER_IS_ZERO_ADDRESS); trustedCaller = _trustedCaller; } modifier onlyTrustedCaller(address _caller) { require(_caller == trustedCaller, ERROR_CALLER_IS_FORBIDDEN); _; } }
// SPDX-FileCopyrightText: 2021 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; /// @author psirex /// @notice Contains methods for convenient creation /// of EVMScripts in EVMScript factories contracts library EVMScriptCreator { // Id of default CallsScript Aragon's executor. bytes4 private constant SPEC_ID = hex"00000001"; /// @notice Encodes one method call as EVMScript function createEVMScript( address _to, bytes4 _methodId, bytes memory _evmScriptCallData ) internal pure returns (bytes memory _commands) { return abi.encodePacked( SPEC_ID, _to, uint32(_evmScriptCallData.length) + 4, _methodId, _evmScriptCallData ); } /// @notice Encodes multiple calls of the same method on one contract as EVMScript function createEVMScript( address _to, bytes4 _methodId, bytes[] memory _evmScriptCallData ) internal pure returns (bytes memory _evmScript) { for (uint256 i = 0; i < _evmScriptCallData.length; ++i) { _evmScript = bytes.concat( _evmScript, abi.encodePacked( _to, uint32(_evmScriptCallData[i].length) + 4, _methodId, _evmScriptCallData[i] ) ); } _evmScript = bytes.concat(SPEC_ID, _evmScript); } /// @notice Encodes multiple calls to different methods within the same contract as EVMScript function createEVMScript( address _to, bytes4[] memory _methodIds, bytes[] memory _evmScriptCallData ) internal pure returns (bytes memory _evmScript) { require(_methodIds.length == _evmScriptCallData.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < _methodIds.length; ++i) { _evmScript = bytes.concat( _evmScript, abi.encodePacked( _to, uint32(_evmScriptCallData[i].length) + 4, _methodIds[i], _evmScriptCallData[i] ) ); } _evmScript = bytes.concat(SPEC_ID, _evmScript); } /// @notice Encodes multiple calls to different contracts as EVMScript function createEVMScript( address[] memory _to, bytes4[] memory _methodIds, bytes[] memory _evmScriptCallData ) internal pure returns (bytes memory _evmScript) { require(_to.length == _methodIds.length, "LENGTH_MISMATCH"); require(_to.length == _evmScriptCallData.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < _to.length; ++i) { _evmScript = bytes.concat( _evmScript, abi.encodePacked( _to[i], uint32(_evmScriptCallData[i].length) + 4, _methodIds[i], _evmScriptCallData[i] ) ); } _evmScript = bytes.concat(SPEC_ID, _evmScript); } }
// SPDX-FileCopyrightText: 2021 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; /// @author psirex /// @notice Interface which every EVMScript factory used in EasyTrack contract has to implement interface IEVMScriptFactory { function createEVMScript(address _creator, bytes memory _evmScriptCallData) external returns (bytes memory); }
// SPDX-FileCopyrightText: 2025 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.6; /// @title Lido's MEV Boost Relay Allowed List interface interface IMEVBoostRelayAllowedList { struct Relay { string uri; string operator; bool is_mandatory; string description; } // View Functions function get_relays() external view returns (Relay[] memory); // State-Changing Functions function add_relay( string memory uri, string memory operator, bool is_mandatory, string memory description ) external; function remove_relay(string memory uri) external; }
// SPDX-FileCopyrightText: 2025 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.6; import "contracts/interfaces/IMEVBoostRelayAllowedList.sol"; /// @author swissarmytowel /// @notice Utility functions for validating and decoding MEV Boost relay input data library MEVBoostRelaysInputUtils { // ------------- // ERRORS // ------------- string private constant ERROR_EMPTY_RELAYS_ARRAY = "EMPTY_RELAYS_ARRAY"; string private constant ERROR_EMPTY_RELAY_URI = "EMPTY_RELAY_URI"; string private constant ERROR_MAX_STRING_LENGTH_EXCEEDED = "MAX_STRING_LENGTH_EXCEEDED"; string private constant ERROR_RELAY_URI_ALREADY_EXISTS = "RELAY_URI_ALREADY_EXISTS"; string private constant ERROR_RELAY_NOT_FOUND = "RELAY_NOT_FOUND"; string private constant ERROR_DUPLICATE_RELAY_URI = "DUPLICATE_RELAY_URI"; // ------------- // CONSTANTS // ------------- /// @notice Maximum length of a string defined in the MEVBoostRelayAllowedList contract uint256 private constant MAX_STRING_LENGTH = 1024; // ======================================================== // Dedicated Validation Functions for Each Operation // ======================================================== /// @notice Validates an array of relay structs /// @param _relays Array of Relay structs to validate /// @param _currentAllowedRelays Current list of allowed relays from the MEVBoostRelayAllowedList contract /// @param _expectExistence Switches the expected existence of the relay URIs in the current relay list /// if true, the relay URIs should exist in the current relay list and will revert otherwise /// if false, the relay URIs should NOT exist in the current relay list and will revert otherwise function validateRelays( IMEVBoostRelayAllowedList.Relay[] memory _relays, IMEVBoostRelayAllowedList.Relay[] memory _currentAllowedRelays, bool _expectExistence ) internal pure { uint256 relaysCount = _relays.length; require(relaysCount > 0, ERROR_EMPTY_RELAYS_ARRAY); for (uint256 i; i < relaysCount; ) { IMEVBoostRelayAllowedList.Relay memory relay = _relays[i]; // Validate the Relay parameters: URI, operator, and description uint256 relayURILength = bytes(relay.uri).length; require(relayURILength > 0, ERROR_EMPTY_RELAY_URI); require(relayURILength <= MAX_STRING_LENGTH, ERROR_MAX_STRING_LENGTH_EXCEEDED); require( bytes(relay.operator).length <= MAX_STRING_LENGTH, ERROR_MAX_STRING_LENGTH_EXCEEDED ); require( bytes(relay.description).length <= MAX_STRING_LENGTH, ERROR_MAX_STRING_LENGTH_EXCEEDED ); _validateNoDuplicateInputFromIndex(i, _relays); bool relayExistsInList = _isRelayURIContained( bytes(_relays[i].uri), _currentAllowedRelays ); if (_expectExistence) { require(relayExistsInList, ERROR_RELAY_NOT_FOUND); } else { require(!relayExistsInList, ERROR_RELAY_URI_ALREADY_EXISTS); } unchecked { ++i; } } } /// @notice Validates an array of relays by their URI strings /// @param _relayURIs Array of Relay URI strings to validate /// @param _currentAllowedRelays Current list of allowed relays from the MEVBoostRelayAllowedList contract function validateRelayURIs( string[] memory _relayURIs, IMEVBoostRelayAllowedList.Relay[] memory _currentAllowedRelays ) internal pure { require(_relayURIs.length > 0, ERROR_EMPTY_RELAYS_ARRAY); uint256 relayURIsCount = _relayURIs.length; for (uint256 i; i < relayURIsCount; ) { bytes memory uri = bytes(_relayURIs[i]); // Validate the URI length and presence require(uri.length > 0, ERROR_EMPTY_RELAY_URI); require(uri.length <= MAX_STRING_LENGTH, ERROR_MAX_STRING_LENGTH_EXCEEDED); _validateNoDuplicateInputFromIndex(i, _relayURIs); bool relayExistsInList = _isRelayURIContained(uri, _currentAllowedRelays); // This validation is only used for removing relays, so the relay should exist in the list require(relayExistsInList, ERROR_RELAY_NOT_FOUND); unchecked { ++i; } } } /// @notice Decodes the call data for a relay struct array /// @param _evmScriptCallData Encoded relay struct array /// @return Array of Relay structs decoded from the call data function decodeCallDataWithRelayStructs( bytes memory _evmScriptCallData ) internal pure returns (IMEVBoostRelayAllowedList.Relay[] memory) { return abi.decode(_evmScriptCallData, (IMEVBoostRelayAllowedList.Relay[])); } /// @notice Decodes the call data for a relay URI string array /// @param _evmScriptCallData Encoded relay URI string array /// @return Array of relay URIs decoded from the call data function decodeCallDataWithRelayURIs( bytes memory _evmScriptCallData ) internal pure returns (string[] memory) { return abi.decode(_evmScriptCallData, (string[])); } // ======================================================== // Private Helper Functions // ======================================================== /// @dev Asserts that a relay URI exists or not in the current relay list according to the expected condition function _isRelayURIContained( bytes memory _uri, IMEVBoostRelayAllowedList.Relay[] memory _currentAllowedRelays ) private pure returns (bool exists) { uint256 currentAllowedRelaysLength = _currentAllowedRelays.length; bytes32 uriHash = keccak256(_uri); for (uint256 j; j < currentAllowedRelaysLength; ) { if (keccak256(bytes(_currentAllowedRelays[j].uri)) == uriHash) { exists = true; break; } unchecked { ++j; } } } /// @dev Checks for duplicate URIs in a string array of URIs /// Starts checking from the current relay index to optimize gas usage function _validateNoDuplicateInputFromIndex( uint256 _currentRelayIndex, string[] memory _relayURIs ) private pure { bytes32 currentURIHash = keccak256(bytes(_relayURIs[_currentRelayIndex])); for (uint256 i = _currentRelayIndex + 1; i < _relayURIs.length; ) { require(keccak256(bytes(_relayURIs[i])) != currentURIHash, ERROR_DUPLICATE_RELAY_URI); unchecked { ++i; } } } /// @dev Checks for duplicate URIs in a Relay struct array /// Starts checking from the current relay index to optimize gas usage function _validateNoDuplicateInputFromIndex( uint256 _currentRelayIndex, IMEVBoostRelayAllowedList.Relay[] memory _relays ) private pure { bytes32 currentURIHash = keccak256(bytes(_relays[_currentRelayIndex].uri)); for (uint256 i = _currentRelayIndex + 1; i < _relays.length; ) { require(keccak256(bytes(_relays[i].uri)) != currentURIHash, ERROR_DUPLICATE_RELAY_URI); unchecked { ++i; } } } }
{
"evmVersion": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"libraries": {
"AddMEVBoostRelays.sol": {}
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"_trustedCaller","type":"address"},{"internalType":"address","name":"_mevBoostRelayAllowedList","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bytes","name":"_evmScriptCallData","type":"bytes"}],"name":"createEVMScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_evmScriptCallData","type":"bytes"}],"name":"decodeEVMScriptCallData","outputs":[{"components":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"operator","type":"string"},{"internalType":"bool","name":"is_mandatory","type":"bool"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct IMEVBoostRelayAllowedList.Relay[]","name":"relays","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"mevBoostRelayAllowedList","outputs":[{"internalType":"contract IMEVBoostRelayAllowedList","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001107380380620011078339810160408190526200003491620000dc565b60408051808201909152601e81527f545255535445445f43414c4c45525f49535f5a45524f5f414444524553530000602082015282906001600160a01b0382166200009d5760405162461bcd60e51b815260040162000094919062000114565b60405180910390fd5b506001600160601b0319606091821b811660805291901b1660a052506200016c565b80516001600160a01b0381168114620000d757600080fd5b919050565b60008060408385031215620000f057600080fd5b620000fb83620000bf565b91506200010b60208401620000bf565b90509250929050565b600060208083528351808285015260005b81811015620001435785810183015185820160400152820162000125565b8181111562000156576000604083870101525b50601f01601f1916929092016040019392505050565b60805160601c60a05160601c610f5c620001ab6000396000818160ba015281816101e1015261040c015260008181605601526101490152610f5c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063268f076014610051578063ecf7c69014610095578063f6396131146100b5578063fea21c9c146100dc575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a86100a3366004610b81565b6100fc565b60405161008c9190610cd7565b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100ef6100ea366004610989565b610144565b60405161008c9190610d85565b606061013d83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061045e92505050565b9392505050565b6060827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316146040518060400160405280601381526020017221a0a62622a92fa4a9afa327a92124a22222a760691b815250906101cf5760405162461bcd60e51b81526004016101c69190610d85565b60405180910390fd5b5060006101db8461045e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304e469ea6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023857600080fd5b505afa15801561024c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102749190810190610a23565b90506028825182516102869190610e66565b11156040518060400160405280601781526020017f4d41585f4e554d5f52454c4159535f4558434545444544000000000000000000815250906102dc5760405162461bcd60e51b81526004016101c69190610d85565b506102e98282600061047a565b815160008167ffffffffffffffff81111561030657610306610f10565b60405190808252806020026020018201604052801561033957816020015b60608152602001906001900390816103245790505b50905060005b828110156104065784818151811061035957610359610efa565b60200260200101516000015185828151811061037757610377610efa565b60200260200101516020015186838151811061039557610395610efa565b6020026020010151604001518784815181106103b3576103b3610efa565b6020026020010151606001516040516020016103d29493929190610d98565b6040516020818303038152906040528282815181106103f3576103f3610efa565b602090810291909101015260010161033f565b506104527f00000000000000000000000000000000000000000000000000000000000000007f2e21ecef55faf701b251536f848bf996ff802936f02c3f13d54c4b49cf8e437583610740565b98975050505050505050565b6060818060200190518101906104749190610a23565b92915050565b8251604080518082019091526012815271454d5054595f52454c4159535f415252415960701b6020820152816104c35760405162461bcd60e51b81526004016101c69190610d85565b5060005b818110156107395760008582815181106104e3576104e3610efa565b6020026020010151905060008160000151519050600081116040518060400160405280600f81526020016e454d5054595f52454c41595f55524960881b815250906105415760405162461bcd60e51b81526004016101c69190610d85565b5060408051808201909152601a81527913505617d4d514925391d7d3115391d51217d15610d15151115160321b60208201526104008211156105965760405162461bcd60e51b81526004016101c69190610d85565b5061040082602001515111156040518060400160405280601a81526020017913505617d4d514925391d7d3115391d51217d15610d15151115160321b815250906105f35760405162461bcd60e51b81526004016101c69190610d85565b5061040082606001515111156040518060400160405280601a81526020017913505617d4d514925391d7d3115391d51217d15610d15151115160321b815250906106505760405162461bcd60e51b81526004016101c69190610d85565b5061065b8388610815565b600061068488858151811061067257610672610efa565b602002602001015160000151886108da565b905085156106d65760408051808201909152600f81526e149153105657d393d517d193d55391608a1b6020820152816106d05760405162461bcd60e51b81526004016101c69190610d85565b5061072b565b60408051808201909152601881527f52454c41595f5552495f414c52454144595f4558495354530000000000000000602082015281156107295760405162461bcd60e51b81526004016101c69190610d85565b505b8360010193505050506104c7565b5050505050565b606060005b82518110156107e557818584838151811061076257610762610efa565b60200260200101515160046107779190610e7e565b8686858151811061078a5761078a610efa565b60200260200101516040516020016107a59493929190610c1f565b60408051601f19818403018152908290526107c39291602001610ca8565b6040516020818303038152906040529150806107de90610ec9565b9050610745565b50600160e01b816040516020016107fd929190610c77565b60405160208183030381529060405290509392505050565b600081838151811061082957610829610efa565b602002602001015160000151805190602001209050600083600161084d9190610e66565b90505b82518110156108d4578183828151811061086c5761086c610efa565b602002602001015160000151805190602001201415604051806040016040528060138152602001724455504c49434154455f52454c41595f55524960681b815250906108cb5760405162461bcd60e51b81526004016101c69190610d85565b50600101610850565b50505050565b80518251602084012060009190825b8281101561092e578185828151811061090457610904610efa565b602002602001015160000151805190602001201415610926576001935061092e565b6001016108e9565b50505092915050565b600082601f83011261094857600080fd5b815161095b61095682610e3e565b610e0d565b81815284602083860101111561097057600080fd5b610981826020830160208701610e9d565b949350505050565b6000806040838503121561099c57600080fd5b82356001600160a01b03811681146109b357600080fd5b9150602083013567ffffffffffffffff8111156109cf57600080fd5b8301601f810185136109e057600080fd5b80356109ee61095682610e3e565b818152866020838501011115610a0357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808385031215610a3657600080fd5b825167ffffffffffffffff80821115610a4e57600080fd5b818501915085601f830112610a6257600080fd5b815181811115610a7457610a74610f10565b8060051b610a83858201610e0d565b8281528581019085870183870188018b1015610a9e57600080fd5b600093505b84841015610b7357805186811115610aba57600080fd5b87016080818d03601f1901811315610ad157600080fd5b610ad9610de4565b8a83015189811115610aea57600080fd5b610af88f8d83870101610937565b825250604083015189811115610b0d57600080fd5b610b1b8f8d83870101610937565b8c830152506060808401518015158114610b3457600080fd5b6040830152918301519189831115610b4b57600080fd5b610b598f8d85870101610937565b908201528552505060019390930192918701918701610aa3565b509998505050505050505050565b60008060208385031215610b9457600080fd5b823567ffffffffffffffff80821115610bac57600080fd5b818501915085601f830112610bc057600080fd5b813581811115610bcf57600080fd5b866020828501011115610be157600080fd5b60209290920196919550909350505050565b60008151808452610c0b816020860160208601610e9d565b601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606086901b1681526001600160e01b031960e085901b81166014830152831660188201528151600090610c6781601c850160208701610e9d565b91909101601c0195945050505050565b6001600160e01b0319831681528151600090610c9a816004850160208701610e9d565b919091016004019392505050565b60008351610cba818460208801610e9d565b835190830190610cce818360208801610e9d565b01949350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015610d7757603f19898403018552815160808151818652610d2482870182610bf3565b915050888201518582038a870152610d3c8282610bf3565b9150508782015115158886015260608083015192508582038187015250610d638183610bf3565b968901969450505090860190600101610cfe565b509098975050505050505050565b60208152600061013d6020830184610bf3565b608081526000610dab6080830187610bf3565b8281036020840152610dbd8187610bf3565b905084151560408401528281036060840152610dd98185610bf3565b979650505050505050565b6040516080810167ffffffffffffffff81118282101715610e0757610e07610f10565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e3657610e36610f10565b604052919050565b600067ffffffffffffffff821115610e5857610e58610f10565b50601f01601f191660200190565b60008219821115610e7957610e79610ee4565b500190565b600063ffffffff808316818516808303821115610cce57610cce610ee4565b60005b83811015610eb8578181015183820152602001610ea0565b838111156108d45750506000910152565b6000600019821415610edd57610edd610ee4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f2131aabea8eff006639e21760dd01dac371c2d737d50ec68c28afd6dfa6a1eb64736f6c63430008060033000000000000000000000000418b816a7c3eca151a31d98e30aa7daa33abf83a000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063268f076014610051578063ecf7c69014610095578063f6396131146100b5578063fea21c9c146100dc575b600080fd5b6100787f000000000000000000000000418b816a7c3eca151a31d98e30aa7daa33abf83a81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a86100a3366004610b81565b6100fc565b60405161008c9190610cd7565b6100787f000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf81565b6100ef6100ea366004610989565b610144565b60405161008c9190610d85565b606061013d83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061045e92505050565b9392505050565b6060827f000000000000000000000000418b816a7c3eca151a31d98e30aa7daa33abf83a6001600160a01b0316816001600160a01b0316146040518060400160405280601381526020017221a0a62622a92fa4a9afa327a92124a22222a760691b815250906101cf5760405162461bcd60e51b81526004016101c69190610d85565b60405180910390fd5b5060006101db8461045e565b905060007f000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf6001600160a01b03166304e469ea6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023857600080fd5b505afa15801561024c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102749190810190610a23565b90506028825182516102869190610e66565b11156040518060400160405280601781526020017f4d41585f4e554d5f52454c4159535f4558434545444544000000000000000000815250906102dc5760405162461bcd60e51b81526004016101c69190610d85565b506102e98282600061047a565b815160008167ffffffffffffffff81111561030657610306610f10565b60405190808252806020026020018201604052801561033957816020015b60608152602001906001900390816103245790505b50905060005b828110156104065784818151811061035957610359610efa565b60200260200101516000015185828151811061037757610377610efa565b60200260200101516020015186838151811061039557610395610efa565b6020026020010151604001518784815181106103b3576103b3610efa565b6020026020010151606001516040516020016103d29493929190610d98565b6040516020818303038152906040528282815181106103f3576103f3610efa565b602090810291909101015260010161033f565b506104527f000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf7f2e21ecef55faf701b251536f848bf996ff802936f02c3f13d54c4b49cf8e437583610740565b98975050505050505050565b6060818060200190518101906104749190610a23565b92915050565b8251604080518082019091526012815271454d5054595f52454c4159535f415252415960701b6020820152816104c35760405162461bcd60e51b81526004016101c69190610d85565b5060005b818110156107395760008582815181106104e3576104e3610efa565b6020026020010151905060008160000151519050600081116040518060400160405280600f81526020016e454d5054595f52454c41595f55524960881b815250906105415760405162461bcd60e51b81526004016101c69190610d85565b5060408051808201909152601a81527913505617d4d514925391d7d3115391d51217d15610d15151115160321b60208201526104008211156105965760405162461bcd60e51b81526004016101c69190610d85565b5061040082602001515111156040518060400160405280601a81526020017913505617d4d514925391d7d3115391d51217d15610d15151115160321b815250906105f35760405162461bcd60e51b81526004016101c69190610d85565b5061040082606001515111156040518060400160405280601a81526020017913505617d4d514925391d7d3115391d51217d15610d15151115160321b815250906106505760405162461bcd60e51b81526004016101c69190610d85565b5061065b8388610815565b600061068488858151811061067257610672610efa565b602002602001015160000151886108da565b905085156106d65760408051808201909152600f81526e149153105657d393d517d193d55391608a1b6020820152816106d05760405162461bcd60e51b81526004016101c69190610d85565b5061072b565b60408051808201909152601881527f52454c41595f5552495f414c52454144595f4558495354530000000000000000602082015281156107295760405162461bcd60e51b81526004016101c69190610d85565b505b8360010193505050506104c7565b5050505050565b606060005b82518110156107e557818584838151811061076257610762610efa565b60200260200101515160046107779190610e7e565b8686858151811061078a5761078a610efa565b60200260200101516040516020016107a59493929190610c1f565b60408051601f19818403018152908290526107c39291602001610ca8565b6040516020818303038152906040529150806107de90610ec9565b9050610745565b50600160e01b816040516020016107fd929190610c77565b60405160208183030381529060405290509392505050565b600081838151811061082957610829610efa565b602002602001015160000151805190602001209050600083600161084d9190610e66565b90505b82518110156108d4578183828151811061086c5761086c610efa565b602002602001015160000151805190602001201415604051806040016040528060138152602001724455504c49434154455f52454c41595f55524960681b815250906108cb5760405162461bcd60e51b81526004016101c69190610d85565b50600101610850565b50505050565b80518251602084012060009190825b8281101561092e578185828151811061090457610904610efa565b602002602001015160000151805190602001201415610926576001935061092e565b6001016108e9565b50505092915050565b600082601f83011261094857600080fd5b815161095b61095682610e3e565b610e0d565b81815284602083860101111561097057600080fd5b610981826020830160208701610e9d565b949350505050565b6000806040838503121561099c57600080fd5b82356001600160a01b03811681146109b357600080fd5b9150602083013567ffffffffffffffff8111156109cf57600080fd5b8301601f810185136109e057600080fd5b80356109ee61095682610e3e565b818152866020838501011115610a0357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808385031215610a3657600080fd5b825167ffffffffffffffff80821115610a4e57600080fd5b818501915085601f830112610a6257600080fd5b815181811115610a7457610a74610f10565b8060051b610a83858201610e0d565b8281528581019085870183870188018b1015610a9e57600080fd5b600093505b84841015610b7357805186811115610aba57600080fd5b87016080818d03601f1901811315610ad157600080fd5b610ad9610de4565b8a83015189811115610aea57600080fd5b610af88f8d83870101610937565b825250604083015189811115610b0d57600080fd5b610b1b8f8d83870101610937565b8c830152506060808401518015158114610b3457600080fd5b6040830152918301519189831115610b4b57600080fd5b610b598f8d85870101610937565b908201528552505060019390930192918701918701610aa3565b509998505050505050505050565b60008060208385031215610b9457600080fd5b823567ffffffffffffffff80821115610bac57600080fd5b818501915085601f830112610bc057600080fd5b813581811115610bcf57600080fd5b866020828501011115610be157600080fd5b60209290920196919550909350505050565b60008151808452610c0b816020860160208601610e9d565b601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606086901b1681526001600160e01b031960e085901b81166014830152831660188201528151600090610c6781601c850160208701610e9d565b91909101601c0195945050505050565b6001600160e01b0319831681528151600090610c9a816004850160208701610e9d565b919091016004019392505050565b60008351610cba818460208801610e9d565b835190830190610cce818360208801610e9d565b01949350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015610d7757603f19898403018552815160808151818652610d2482870182610bf3565b915050888201518582038a870152610d3c8282610bf3565b9150508782015115158886015260608083015192508582038187015250610d638183610bf3565b968901969450505090860190600101610cfe565b509098975050505050505050565b60208152600061013d6020830184610bf3565b608081526000610dab6080830187610bf3565b8281036020840152610dbd8187610bf3565b905084151560408401528281036060840152610dd98185610bf3565b979650505050505050565b6040516080810167ffffffffffffffff81118282101715610e0757610e07610f10565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e3657610e36610f10565b604052919050565b600067ffffffffffffffff821115610e5857610e58610f10565b50601f01601f191660200190565b60008219821115610e7957610e79610ee4565b500190565b600063ffffffff808316818516808303821115610cce57610cce610ee4565b60005b83811015610eb8578181015183820152602001610ea0565b838111156108d45750506000910152565b6000600019821415610edd57610edd610ee4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f2131aabea8eff006639e21760dd01dac371c2d737d50ec68c28afd6dfa6a1eb64736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000418b816a7c3eca151a31d98e30aa7daa33abf83a000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf
-----Decoded View---------------
Arg [0] : _trustedCaller (address): 0x418B816A7c3ecA151A31d98e30aa7DAa33aBf83A
Arg [1] : _mevBoostRelayAllowedList (address): 0x279d3A456212a1294DaEd0faEE98675a52E8A4Bf
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000418b816a7c3eca151a31d98e30aa7daa33abf83a
Arg [1] : 000000000000000000000000279d3a456212a1294daed0faee98675a52e8a4bf
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.