More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,604 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Delta Compose | 1101784 | 6 hrs ago | IN | 0 ETH | 0.00002057 | ||||
Delta Compose | 1101784 | 6 hrs ago | IN | 0 ETH | 0.00011764 | ||||
Delta Compose | 1101627 | 8 hrs ago | IN | 0 ETH | 0.00001434 | ||||
Delta Compose | 1101624 | 8 hrs ago | IN | 0 ETH | 0.00001601 | ||||
Delta Compose | 1101612 | 8 hrs ago | IN | 0 ETH | 0.00001582 | ||||
Delta Compose | 1101611 | 8 hrs ago | IN | 0 ETH | 0.00001549 | ||||
Delta Compose | 1101483 | 9 hrs ago | IN | 0 ETH | 0.00002253 | ||||
Delta Compose | 1101481 | 9 hrs ago | IN | 0 ETH | 0.00002333 | ||||
Delta Compose | 1101480 | 9 hrs ago | IN | 0 ETH | 0.00002397 | ||||
Delta Compose | 1101444 | 9 hrs ago | IN | 0 ETH | 0.00002253 | ||||
Delta Compose | 1101441 | 9 hrs ago | IN | 0 ETH | 0.00002333 | ||||
Delta Compose | 1101439 | 9 hrs ago | IN | 0 ETH | 0.00003692 | ||||
Delta Compose | 1101435 | 10 hrs ago | IN | 0 ETH | 0.0001024 | ||||
Delta Compose | 1101434 | 10 hrs ago | IN | 0 ETH | 0.0000895 | ||||
Delta Compose | 1101433 | 10 hrs ago | IN | 0 ETH | 0.0000895 | ||||
Delta Compose | 1101375 | 10 hrs ago | IN | 0 ETH | 0.00002253 | ||||
Delta Compose | 1101370 | 10 hrs ago | IN | 0 ETH | 0.00002333 | ||||
Delta Compose | 1101368 | 10 hrs ago | IN | 0 ETH | 0.00002439 | ||||
Delta Compose | 1101339 | 10 hrs ago | IN | 0 ETH | 0.00005107 | ||||
Delta Compose | 1101337 | 10 hrs ago | IN | 0 ETH | 0.00005107 | ||||
Delta Compose | 1099745 | 27 hrs ago | IN | 0 ETH | 0.00014542 | ||||
Delta Compose | 1099668 | 27 hrs ago | IN | 0 ETH | 0.00013276 | ||||
Delta Compose | 1099668 | 27 hrs ago | IN | 0 ETH | 0.00002946 | ||||
Delta Compose | 1099667 | 27 hrs ago | IN | 0 ETH | 0.00013121 | ||||
Delta Compose | 1099520 | 28 hrs ago | IN | 0 ETH | 0.00021778 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
1092132 | 3 days ago | 0.15 ETH | ||||
1092121 | 3 days ago | 0.16 ETH | ||||
1087379 | 4 days ago | 0.00750468 ETH | ||||
1087379 | 4 days ago | 0.00750468 ETH | ||||
1078477 | 8 days ago | 0.2525318 ETH | ||||
1078477 | 8 days ago | 0.2525318 ETH | ||||
1078352 | 8 days ago | 0.81854901 ETH | ||||
1078352 | 8 days ago | 0.81854901 ETH | ||||
1075843 | 8 days ago | 0.0072094 ETH | ||||
1075843 | 8 days ago | 0.0072094 ETH | ||||
1073345 | 9 days ago | 0.00051841 ETH | ||||
1073345 | 9 days ago | 0.00051841 ETH | ||||
1069684 | 10 days ago | 0.00766624 ETH | ||||
1069684 | 10 days ago | 0.00766624 ETH | ||||
1068711 | 10 days ago | 0.02785558 ETH | ||||
1068711 | 10 days ago | 0.02785558 ETH | ||||
1067118 | 11 days ago | 0.0825 ETH | ||||
1067116 | 11 days ago | 0.0825 ETH | ||||
1066022 | 11 days ago | 0.22 ETH | ||||
1065907 | 11 days ago | 0.22348 ETH | ||||
1065656 | 11 days ago | 0.22243 ETH | ||||
1065653 | 11 days ago | 0.22264 ETH | ||||
1065606 | 11 days ago | 0.22219 ETH | ||||
1064920 | 11 days ago | 0.001 ETH | ||||
1064918 | 11 days ago | 0.001 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DeltaBrokerProxyGen2
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * Author: Achthar <[email protected]> /******************************************************************************/ import {LibModules} from "./libraries/LibModules.sol"; import {IModuleConfig} from "./interfaces/IModuleConfig.sol"; contract DeltaBrokerProxyGen2 { error NoImplementation(); // [LibModules.moduleStorage().selectorToModule].slot bytes32 private constant IMPLS_SLOT = 0x76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc402; constructor(address _contractOwner, address _moduleConfig) { LibModules.setContractOwner(_contractOwner); // Add the moduleConfig external function from the moduleConfigModule IModuleConfig.ModuleConfig[] memory cut = new IModuleConfig.ModuleConfig[](1); bytes4[] memory functionSelectors = new bytes4[](1); functionSelectors[0] = IModuleConfig.configureModules.selector; cut[0] = IModuleConfig.ModuleConfig({ moduleAddress: _moduleConfig, action: IModuleConfig.ModuleConfigAction.Add, functionSelectors: functionSelectors }); LibModules.configureModules(cut); } // Find module for function that is called and execute the // function if a module is found and return any value. fallback() external payable { assembly { let cdlen := calldatasize() // Store at 0x40, to leave 0x00-0x3F for slot calculation below. calldatacopy(0x40, 0x00, cdlen) let target := and(mload(0x40), 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000) // Slot for impls[target] is keccak256(target . IMPLS_SLOT). mstore(0x00, target) mstore(0x20, IMPLS_SLOT) let slot := keccak256(0x00, 0x40) target := sload(slot) // overwrite target to delegate address if iszero(target) { // Revert with: // abi.encodeWithSelector( // bytes4(keccak256("NoImplementation()"))) mstore(0x00, 0xc6745ca800000000000000000000000000000000000000000000000000000000) revert(0x00, 4) } let success := delegatecall(gas(), target, 0x40, cdlen, 0x00, 0x00) let rdlen := returndatasize() returndatacopy(0x00, 0x00, rdlen) if success { return(0x00, rdlen) } revert(0x00, rdlen) } } receive() external payable {} }
// SPDX-License-Identifier: MIT /** * Vendored on December 23, 2021 from: * https://github.com/mudgen/diamond-3-hardhat/blob/7feb995/contracts/interfaces/IModuleConfig.sol */ pragma solidity ^0.8.0; interface IModuleConfig { enum ModuleConfigAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct ModuleConfig { address moduleAddress; ModuleConfigAction action; bytes4[] functionSelectors; } /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _moduleConfig Contains the module addresses and function selectors function configureModules(ModuleConfig[] calldata _moduleConfig) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * Author: Achthar - 1delta.io * Modified diamond module handling library /******************************************************************************/ import {IModuleConfig} from "../interfaces/IModuleConfig.sol"; // solhint-disable max-line-length error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata); library LibModules { bytes32 constant MODULE_STORAGE_POSITION = keccak256("diamond.standard.module.storage"); struct ModuleAddressAndPosition { address moduleAddress; uint96 functionSelectorPosition; // position in moduleFunctionSelectors.functionSelectors array } struct ModuleFunctionSelectors { bytes4[] functionSelectors; uint256 moduleAddressPosition; // position of moduleAddress in moduleAddresses array } struct ModuleStorage { // maps function selector to the module address and // the position of the selector in the moduleFunctionSelectors.selectors array mapping(bytes4 => ModuleAddressAndPosition) selectorToModuleAndPosition; // maps selector to module mapping(bytes4 => address) selectorToModule; // maps module addresses to function selectors mapping(address => ModuleFunctionSelectors) moduleFunctionSelectors; // module addresses address[] moduleAddresses; // Used to query if a contract implements an interface. // Used to implement ERC-165. mapping(bytes4 => bool) supportedInterfaces; // Used to query if a module exits mapping(address => bool) moduleExists; // owner of the contract address contractOwner; } function moduleStorage() internal pure returns (ModuleStorage storage ds) { bytes32 position = MODULE_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function setContractOwner(address _newOwner) internal { ModuleStorage storage ds = moduleStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = moduleStorage().contractOwner; } function enforceIsContractOwner() internal view { require(msg.sender == moduleStorage().contractOwner, "LibModuleConfig: Must be contract owner"); } event Upgrade(IModuleConfig.ModuleConfig[] _moduleChange); // Internal function version of diamondCut function configureModules(IModuleConfig.ModuleConfig[] memory _moduleChange) internal { for (uint256 moduleIndex; moduleIndex < _moduleChange.length; moduleIndex++) { IModuleConfig.ModuleConfigAction action = _moduleChange[moduleIndex].action; if (action == IModuleConfig.ModuleConfigAction.Add) { addFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors); } else if (action == IModuleConfig.ModuleConfigAction.Replace) { replaceFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors); } else if (action == IModuleConfig.ModuleConfigAction.Remove) { removeFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors); } else { revert("LibModuleConfig: Incorrect ModuleConfigAction"); } } emit Upgrade(_moduleChange); } function addFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut"); ModuleStorage storage ds = moduleStorage(); require(_moduleAddress != address(0), "LibModuleConfig: Add module can't be address(0)"); uint96 selectorPosition = uint96(ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length); // add new module address if it does not exist if (selectorPosition == 0) { addModule(ds, _moduleAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress; require(oldModuleAddress == address(0), "LibModuleConfig: Can't add function that already exists"); addFunction(ds, selector, selectorPosition, _moduleAddress); selectorPosition++; } } function replaceFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut"); ModuleStorage storage ds = moduleStorage(); require(_moduleAddress != address(0), "LibModuleConfig: Add module can't be address(0)"); uint96 selectorPosition = uint96(ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length); // add new module address if it does not exist if (selectorPosition == 0) { addModule(ds, _moduleAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress; require(oldModuleAddress != _moduleAddress, "LibModuleConfig: Can't replace function with same function"); removeFunction(ds, oldModuleAddress, selector); addFunction(ds, selector, selectorPosition, _moduleAddress); selectorPosition++; } } function removeFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut"); ModuleStorage storage ds = moduleStorage(); // if function does not exist then do nothing and return require(_moduleAddress == address(0), "LibModuleConfig: Remove module address must be address(0)"); for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress; removeFunction(ds, oldModuleAddress, selector); } } function addModule(ModuleStorage storage ds, address _moduleAddress) internal { enforceHasContractCode(_moduleAddress, "LibModuleConfig: New module has no code"); ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition = ds.moduleAddresses.length; ds.moduleAddresses.push(_moduleAddress); ds.moduleExists[_moduleAddress] = true; } function addFunction( ModuleStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _moduleAddress ) internal { ds.selectorToModuleAndPosition[_selector].functionSelectorPosition = _selectorPosition; ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.push(_selector); ds.selectorToModuleAndPosition[_selector].moduleAddress = _moduleAddress; ds.selectorToModule[_selector] = _moduleAddress; } function removeFunction( ModuleStorage storage ds, address _moduleAddress, bytes4 _selector ) internal { require(_moduleAddress != address(0), "LibModuleConfig: Can't remove function that doesn't exist"); // an immutable function is a function defined directly in a diamond require(_moduleAddress != address(this), "LibModuleConfig: Can't remove immutable function"); // replace selector with last selector, then delete last selector uint256 selectorPosition = ds.selectorToModuleAndPosition[_selector].functionSelectorPosition; uint256 lastSelectorPosition = ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length - 1; // if not the same then replace _selector with lastSelector if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds.moduleFunctionSelectors[_moduleAddress].functionSelectors[lastSelectorPosition]; ds.moduleFunctionSelectors[_moduleAddress].functionSelectors[selectorPosition] = lastSelector; ds.selectorToModuleAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition); } // delete the last selector ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.pop(); delete ds.selectorToModuleAndPosition[_selector]; delete ds.selectorToModule[_selector]; // if no more selectors for module address then delete the module address if (lastSelectorPosition == 0) { // replace module address with last module address and delete last module address uint256 lastModuleAddressPosition = ds.moduleAddresses.length - 1; uint256 moduleAddressPosition = ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition; if (moduleAddressPosition != lastModuleAddressPosition) { address lastModuleAddress = ds.moduleAddresses[lastModuleAddressPosition]; ds.moduleAddresses[moduleAddressPosition] = lastModuleAddress; ds.moduleFunctionSelectors[lastModuleAddress].moduleAddressPosition = moduleAddressPosition; } ds.moduleAddresses.pop(); delete ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition; ds.moduleExists[_moduleAddress] = false; } } function initializeModuleConfig(address _init, bytes memory _calldata) internal { if (_init == address(0)) { return; } enforceHasContractCode(_init, "LibModuleConfig: _init address has no code"); (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up error /// @solidity memory-safe-assembly assembly { let returndata_size := mload(error) revert(add(32, error), returndata_size) } } else { revert InitializationFunctionReverted(_init, _calldata); } } } function enforceHasContractCode(address _contract, string memory _errorMessage) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } require(contractSize > 0, _errorMessage); } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "evmVersion": "shanghai", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_moduleConfig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NoImplementation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"moduleAddress","type":"address"},{"internalType":"enum IModuleConfig.ModuleConfigAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IModuleConfig.ModuleConfig[]","name":"_moduleChange","type":"tuple[]"}],"name":"Upgrade","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561000f575f80fd5b5060405161121738038061121783398101604081905261002e91610eae565b61003782610124565b6040805160018082528183019092525f91816020015b60408051606080820183525f80835260208301529181019190915281526020019060019003908161004d5750506040805160018082528183019092529192505f9190602080830190803683370190505090506369fc9a8060e01b815f815181106100b9576100b9610edf565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081015f815260200182815250825f8151811061010757610107610edf565b602090810291909101015261011b826101a5565b505050506110a5565b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40780546001600160a01b031981166001600160a01b038481169182179093556040515f805160206111b0833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b8151811015610378575f8282815181106101c3576101c3610edf565b60200260200101516020015190505f60028111156101e3576101e3610ef3565b8160028111156101f5576101f5610ef3565b036102485761024383838151811061020f5761020f610edf565b60200260200101515f015184848151811061022c5761022c610edf565b6020026020010151604001516103b360201b60201c565b61036f565b600181600281111561025c5761025c610ef3565b036102aa5761024383838151811061027657610276610edf565b60200260200101515f015184848151811061029357610293610edf565b60200260200101516040015161063560201b60201c565b60028160028111156102be576102be610ef3565b0361030c576102438383815181106102d8576102d8610edf565b60200260200101515f01518484815181106102f5576102f5610edf565b6020026020010151604001516108c060201b60201c565b60405162461bcd60e51b815260206004820152602d60248201527f4c69624d6f64756c65436f6e6669673a20496e636f7272656374204d6f64756c60448201526c32a1b7b73334b3a0b1ba34b7b760991b60648201526084015b60405180910390fd5b506001016101a7565b507f5baa3478e7f762f071cc4e10c54ae2573362a38e93c8ba3f39d9acf6e49ca528816040516103a89190610f07565b60405180910390a150565b5f8151116104075760405162461bcd60e51b815260206004820152602e60248201525f805160206111d083398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401610366565b5f805160206111b08339815191526001600160a01b0383166104705760405162461bcd60e51b815260206004820152602f60248201525f8051602061119083398151915260448201526e74206265206164647265737328302960881b6064820152608401610366565b6001600160a01b0383165f908152600282016020526040812054906001600160601b03821690036104a5576104a58285610a09565b5f5b835181101561062e575f8482815181106104c3576104c3610edf565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b031680156105685760405162461bcd60e51b815260206004820152603760248201527f4c69624d6f64756c65436f6e6669673a2043616e2774206164642066756e637460448201527f696f6e207468617420616c7265616479206578697374730000000000000000006064820152608401610366565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a01909252909120805490911690911790558361061d81611002565b945050600190920191506104a79050565b5050505050565b5f8151116106895760405162461bcd60e51b815260206004820152602e60248201525f805160206111d083398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401610366565b5f805160206111b08339815191526001600160a01b0383166106f25760405162461bcd60e51b815260206004820152602f60248201525f8051602061119083398151915260448201526e74206265206164647265737328302960881b6064820152608401610366565b6001600160a01b0383165f908152600282016020526040812054906001600160601b0382169003610727576107278285610a09565b5f5b835181101561062e575f84828151811061074557610745610edf565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b0390811690871681036107ef5760405162461bcd60e51b815260206004820152603a60248201527f4c69624d6f64756c65436f6e6669673a2043616e2774207265706c616365206660448201527f756e6374696f6e20776974682073616d652066756e6374696f6e0000000000006064820152608401610366565b6107fa858284610a8d565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a0190925290912080549091169091179055836108af81611002565b945050600190920191506107299050565b5f8151116109145760405162461bcd60e51b815260206004820152602e60248201525f805160206111d083398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401610366565b5f805160206111b08339815191526001600160a01b0383161561099f5760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2052656d6f7665206d6f64756c65206160448201527f646472657373206d7573742062652061646472657373283029000000000000006064820152608401610366565b5f5b8251811015610a03575f8382815181106109bd576109bd610edf565b6020908102919091018101516001600160e01b031981165f908152918590526040909120549091506001600160a01b03166109f9848284610a8d565b50506001016109a1565b50505050565b610a2b816040518060600160405280602781526020016111f060279139610e72565b6003820180546001600160a01b039092165f81815260028501602090815260408083206001908101879055808701865594835281832090950180546001600160a01b03191684179055918152600590940190529120805460ff19169091179055565b6001600160a01b038216610b095760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520667560448201527f6e6374696f6e207468617420646f65736e2774206578697374000000000000006064820152608401610366565b306001600160a01b03831603610b7a5760405162461bcd60e51b815260206004820152603060248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520696d60448201526f36baba30b1363290333ab731ba34b7b760811b6064820152608401610366565b6001600160e01b031981165f90815260208481526040808320546001600160a01b038616845260028701909252822054600160a01b9091046001600160601b03169190610bc99060019061102d565b9050808214610cb8576001600160a01b0384165f9081526002860160205260408120805483908110610bfd57610bfd610edf565b5f91825260208083206008830401546001600160a01b038916845260028a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610c4d57610c4d610edf565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f9081526002860160205260409020805480610ce057610ce0611046565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252868152604080832083905560018801909152812080546001600160a01b031916905581900361062e5760038501545f90610d589060019061102d565b6001600160a01b0386165f908152600288016020526040902060010154909150808214610e04575f876003018381548110610d9557610d95610edf565b5f918252602090912001546003890180546001600160a01b039092169250829184908110610dc557610dc5610edf565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260028901909152604090206001018190555b86600301805480610e1757610e17611046565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252600289018152604080832060010183905560058a019091529020805460ff1916905550505050505050565b813b8181610a035760405162461bcd60e51b8152600401610366919061105a565b80516001600160a01b0381168114610ea9575f80fd5b919050565b5f8060408385031215610ebf575f80fd5b610ec883610e93565b9150610ed660208401610e93565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015610fe257868503603f19018452815180516001600160a01b031686526020810151606087019060038110610f7357634e487b7160e01b5f52602160045260245ffd5b8060208901525060408201519150606060408801528082518083526080890191506020840193505f92505b80831015610fca5783516001600160e01b03191682526020938401936001939093019290910190610f9e565b50965050506020938401939190910190600101610f2d565b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b0382166002600160601b0319810161102457611024610fee565b60010192915050565b8181038181111561104057611040610fee565b92915050565b634e487b7160e01b5f52603160045260245ffd5b602081525f82518060208401525f5b818110156110865760208186018101516040868401015201611069565b505f604082850101526040601f19601f83011684010191505092915050565b60df806110b15f395ff3fe608060405236600a57005b36805f604037604080517fffffffff00000000000000000000000000000000000000000000000000000000165f9081527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc402602052205480608c577fc6745ca8000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80836040845af49150503d805f803e811560a557805ff35b805ffdfea264697066735822122086fe70a19252b382ec3a34bd72b741294d466455f3f5b25734f7cd5d95b0476464736f6c634300081a00334c69624d6f64756c65436f6e6669673a20416464206d6f64756c652063616e2776a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4014c69624d6f64756c65436f6e6669673a204e6f2073656c6563746f727320696e4c69624d6f64756c65436f6e6669673a204e6577206d6f64756c6520686173206e6f20636f6465000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000cb6eb8df68153cebf60e1872273ef52075a5c297
Deployed Bytecode
0x608060405236600a57005b36805f604037604080517fffffffff00000000000000000000000000000000000000000000000000000000165f9081527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc402602052205480608c577fc6745ca8000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80836040845af49150503d805f803e811560a557805ff35b805ffdfea264697066735822122086fe70a19252b382ec3a34bd72b741294d466455f3f5b25734f7cd5d95b0476464736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000cb6eb8df68153cebf60e1872273ef52075a5c297
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x999999833d965c275A2C102a4Ebf222ca938546f
Arg [1] : _moduleConfig (address): 0xcB6Eb8df68153cebF60E1872273Ef52075a5C297
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f
Arg [1] : 000000000000000000000000cb6eb8df68153cebf60e1872273ef52075a5c297
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.222344 | 0.000000000000000001 | <$0.000001 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.