Source Code
Latest 25 from a total of 1,837 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Multicall | 87988948 | 144 days ago | IN | 0 MNT | 0.0343105 | ||||
| Multicall | 87988918 | 144 days ago | IN | 0 MNT | 0.04150865 | ||||
| Multicall | 86713770 | 173 days ago | IN | 0 MNT | 0.01742059 | ||||
| Multicall | 86299009 | 183 days ago | IN | 0 MNT | 0.11366772 | ||||
| Multicall | 85985774 | 190 days ago | IN | 0 MNT | 0.07554839 | ||||
| Multicall | 85984320 | 190 days ago | IN | 0 MNT | 0.04508324 | ||||
| Multicall | 85984316 | 190 days ago | IN | 0 MNT | 0.04444538 | ||||
| Multicall | 85982252 | 190 days ago | IN | 0 MNT | 0.03678212 | ||||
| Multicall | 85981931 | 190 days ago | IN | 0 MNT | 0.07264505 | ||||
| Multicall | 85981916 | 190 days ago | IN | 0 MNT | 0.04246758 | ||||
| Multicall | 85981665 | 190 days ago | IN | 0 MNT | 0.05789618 | ||||
| Multicall | 85980020 | 190 days ago | IN | 0 MNT | 0.02495942 | ||||
| Multicall | 85960027 | 191 days ago | IN | 0 MNT | 0.01183043 | ||||
| Multicall | 85355645 | 205 days ago | IN | 0 MNT | 0.07079432 | ||||
| Multicall | 83746942 | 242 days ago | IN | 0 MNT | 0.08273839 | ||||
| Multicall | 83148700 | 256 days ago | IN | 0 MNT | 0.08181858 | ||||
| Multicall | 82143560 | 279 days ago | IN | 0 MNT | 0.09895799 | ||||
| Multicall | 81569980 | 292 days ago | IN | 0 MNT | 0.08973746 | ||||
| Multicall | 81503360 | 294 days ago | IN | 0 MNT | 0.07819782 | ||||
| Multicall | 81503028 | 294 days ago | IN | 0 MNT | 0.04567794 | ||||
| Multicall | 81502614 | 294 days ago | IN | 0.1657524 MNT | 0.02947419 | ||||
| Multicall | 81502560 | 294 days ago | IN | 0 MNT | 0.05801855 | ||||
| Multicall | 81502495 | 294 days ago | IN | 0 MNT | 0.05150322 | ||||
| Multicall | 81502467 | 294 days ago | IN | 0 MNT | 0.07661242 | ||||
| Multicall | 81502074 | 294 days ago | IN | 0 MNT | 0.05187187 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 81502614 | 294 days ago | 0.1657524 MNT | ||||
| 81500272 | 294 days ago | 0.1 MNT | ||||
| 81499325 | 294 days ago | 0.16655667 MNT | ||||
| 81497173 | 294 days ago | 0.1 MNT | ||||
| 81497072 | 294 days ago | 0.33700087 MNT | ||||
| 81497042 | 294 days ago | 0.2 MNT | ||||
| 81496876 | 294 days ago | 0.2 MNT | ||||
| 81496876 | 294 days ago | 0.2 MNT | ||||
| 81496787 | 294 days ago | 0.05 MNT | ||||
| 81496761 | 294 days ago | 0.1 MNT | ||||
| 81496761 | 294 days ago | 0.1 MNT | ||||
| 81496683 | 294 days ago | 0.1 MNT | ||||
| 81496124 | 294 days ago | 1 MNT | ||||
| 80993812 | 306 days ago | 0.2 MNT | ||||
| 76230670 | 416 days ago | 0.1 MNT | ||||
| 75916668 | 423 days ago | 0.1 MNT | ||||
| 75916445 | 423 days ago | 0.1 MNT | ||||
| 75358911 | 436 days ago | 0.1 MNT | ||||
| 75239061 | 439 days ago | 0.1 MNT | ||||
| 75239061 | 439 days ago | 0.1 MNT | ||||
| 75238658 | 439 days ago | 0.1 MNT | ||||
| 75238658 | 439 days ago | 0.1 MNT | ||||
| 75238586 | 439 days ago | 0.2 MNT | ||||
| 75238586 | 439 days ago | 0.2 MNT | ||||
| 75238385 | 439 days ago | 1 MNT |
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
DeltaBrokerProxy
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
paris 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 DeltaBrokerProxy { error noImplementation(); constructor(address _contractOwner, address _moduleConfigModule) payable { 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: _moduleConfigModule, action: IModuleConfig.ModuleConfigAction.Add, functionSelectors: functionSelectors }); LibModules.configureModules(cut); } // An efficient multicall implementation for directly calling functions across multiple modules // Note that this multicall is payable, as such, native multi-spending has to be taken into account by // the caller function multicall(bytes[] calldata data) external payable { // This is used in assembly below as impls.slot. mapping(bytes4 => address) storage impls = LibModules.moduleStorage().selectorToModule; assembly { mstore(0x00, 0x20) let tracker := 0x40 // `shl` 5 is equivalent to multiplying by 0x20. let end := shl(5, data.length) // Copy the offsets from calldata into memory. calldatacopy(0x40, data.offset, end) // Offset into `tracker`. let currentOffset := end // Pointer to the end of `tracker`. end := add(tracker, end) for { } 1 { } { // The offset of the current bytes in the calldata. let o := add(data.offset, mload(tracker)) let m := add(currentOffset, 0x40) // Copy the current bytes from calldata to the memory. calldatacopy( m, add(o, 0x20), // The offset of the current bytes' bytes. calldataload(o) // The length of the current bytes. ) // determine the selector let target := and( mload(m), // calldata was copied to 0, we load the selector from there 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 ) mstore(0x00, target) mstore(0x20, impls.slot) let slot := keccak256(0x00, 0x40) // assign module target := sload(slot) if iszero(target) { // Reverting with NoImplementation mstore(0x00, 0x6826a5a500000000000000000000000000000000000000000000000000000000) revert(0x00, 4) } // execute the current call if iszero(delegatecall(gas(), target, m, calldataload(o), codesize(), 0x00)) { // Bubble up the revert if the delegatecall reverts. returndatacopy(0x00, 0x00, returndatasize()) revert(0x00, returndatasize()) } tracker := add(tracker, 0x20) if iszero(lt(tracker, end)) { break } } } } // Find module for function that is called and execute the // function if a module is found and return any value. fallback() external payable { // This is used in assembly below as impls.slot. mapping(bytes4 => address) storage impls = LibModules.moduleStorage().selectorToModule; 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, 0x6826a5a500000000000000000000000000000000000000000000000000000000) 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);
}
}{
"evmVersion": "paris",
"libraries": {},
"metadata": {
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_moduleConfigModule","type":"address"}],"stateMutability":"payable","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"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526040516200148638038062001486833981016040819052620000269162000f71565b62000031826200012e565b604080516001808252818301909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200004857505060408051600180825281830190925291925060009190602080830190803683370190505090506369fc9a8060e01b81600081518110620000bb57620000bb62000fa9565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081016000815260200182815250826000815181106200010e576200010e62000fa9565b60209081029190910101526200012482620001b2565b5050505062001184565b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40780546001600160a01b031981166001600160a01b038481169182179093556040516000805160206200141f833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b8151811015620003b8576000828281518110620001d657620001d662000fa9565b602002602001015160200151905060006002811115620001fa57620001fa62000fbf565b8160028111156200020f576200020f62000fbf565b036200026d57620002678383815181106200022e576200022e62000fa9565b6020026020010151600001518484815181106200024f576200024f62000fa9565b602002602001015160400151620003f560201b60201c565b620003ae565b600181600281111562000284576200028462000fbf565b03620002dc5762000267838381518110620002a357620002a362000fa9565b602002602001015160000151848481518110620002c457620002c462000fa9565b6020026020010151604001516200069360201b60201c565b6002816002811115620002f357620002f362000fbf565b036200034b576200026783838151811062000312576200031262000fa9565b60200260200101516000015184848151811062000333576200033362000fa9565b6020026020010151604001516200093c60201b60201c565b60405162461bcd60e51b815260206004820152602d60248201527f4c69624d6f64756c65436f6e6669673a20496e636f7272656374204d6f64756c60448201526c32a1b7b73334b3a0b1ba34b7b760991b60648201526084015b60405180910390fd5b50600101620001b5565b507f5baa3478e7f762f071cc4e10c54ae2573362a38e93c8ba3f39d9acf6e49ca52881604051620003ea919062000fd5565b60405180910390a150565b60008151116200044e5760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b038316620004bd5760405162461bcd60e51b815260206004820152602f6024820152600080516020620013ff83398151915260448201526e74206265206164647265737328302960881b6064820152608401620003a5565b6001600160a01b0383166000908152600282016020526040812054906001600160601b0382169003620004f657620004f6828562000a98565b60005b83518110156200068c5760008482815181106200051a576200051a62000fa9565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005c25760405162461bcd60e51b815260206004820152603760248201527f4c69624d6f64756c65436f6e6669673a2043616e2774206164642066756e637460448201527f696f6e207468617420616c7265616479206578697374730000000000000000006064820152608401620003a5565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a0190925290912080549091169091179055836200067a81620010d0565b94505060019092019150620004f99050565b5050505050565b6000815111620006ec5760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b0383166200075b5760405162461bcd60e51b815260206004820152602f6024820152600080516020620013ff83398151915260448201526e74206265206164647265737328302960881b6064820152608401620003a5565b6001600160a01b0383166000908152600282016020526040812054906001600160601b0382169003620007945762000794828562000a98565b60005b83518110156200068c576000848281518110620007b857620007b862000fa9565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103620008655760405162461bcd60e51b815260206004820152603a60248201527f4c69624d6f64756c65436f6e6669673a2043616e2774207265706c616365206660448201527f756e6374696f6e20776974682073616d652066756e6374696f6e0000000000006064820152608401620003a5565b6200087285828462000b20565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a0190925290912080549091169091179055836200092a81620010d0565b94505060019092019150620007979050565b6000815111620009955760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b0383161562000a245760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2052656d6f7665206d6f64756c65206160448201527f646472657373206d7573742062652061646472657373283029000000000000006064820152608401620003a5565b60005b825181101562000a9257600083828151811062000a485762000a4862000fa9565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000a8784828462000b20565b505060010162000a27565b50505050565b62000abd816040518060600160405280602781526020016200145f6027913962000f30565b6003820180546001600160a01b03909216600081815260028501602090815260408083206001908101879055808701865594835281832090950180546001600160a01b03191684179055918152600590940190529120805460ff19169091179055565b6001600160a01b03821662000b9e5760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520667560448201527f6e6374696f6e207468617420646f65736e2774206578697374000000000000006064820152608401620003a5565b306001600160a01b0383160362000c115760405162461bcd60e51b815260206004820152603060248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520696d60448201526f36baba30b1363290333ab731ba34b7b760811b6064820152608401620003a5565b6001600160e01b03198116600090815260208481526040808320546001600160a01b038616845260028701909252822054600160a01b9091046001600160601b0316919062000c639060019062001101565b905080821462000d5c576001600160a01b0384166000908152600286016020526040812080548390811062000c9c5762000c9c62000fa9565b600091825260208083206008830401546001600160a01b038916845260028a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000cf05762000cf062000fa9565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600286016020526040902080548062000d885762000d886200111d565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252868152604080832083905560018801909152812080546001600160a01b03191690558190036200068c57600385015460009062000e069060019062001101565b6001600160a01b038616600090815260028801602052604090206001015490915080821462000ebd57600087600301838154811062000e495762000e4962000fa9565b6000918252602090912001546003890180546001600160a01b03909216925082918490811062000e7d5762000e7d62000fa9565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260028901909152604090206001018190555b8660030180548062000ed35762000ed36200111d565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600289018152604080832060010183905560058a019091529020805460ff1916905550505050505050565b813b818162000a925760405162461bcd60e51b8152600401620003a5919062001133565b80516001600160a01b038116811462000f6c57600080fd5b919050565b6000806040838503121562000f8557600080fd5b62000f908362000f54565b915062000fa06020840162000f54565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015620010ac57888303603f19018552815180516001600160a01b031684528781015160609081860190600381106200104957634e487b7160e01b600052602160045260246000fd5b868b0152918801518886019190915280519182905288019060808501906000905b80821015620010965783516001600160e01b0319168352928a0192918a0191600191909101906200106a565b5050958801959350509086019060010162000ffe565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038281166002600160601b03198101620010f757620010f7620010ba565b6001019392505050565b81810381811115620011175762001117620010ba565b92915050565b634e487b7160e01b600052603160045260246000fd5b60006020808352835180602085015260005b81811015620011635785810183015185820160400152820162001145565b506000604082860101526040601f19601f8301168501019250505092915050565b61026b80620011946000396000f3fe6080604052600436106100225760003560e01c8063ac9650d8146100d457610029565b3661002957005b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40236806000604037604080517fffffffff0000000000000000000000000000000000000000000000000000000016600090815260208490522054806100b2577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600080836040845af49150503d806000803e81156100cf57806000f35b806000fd5b6100e76100e23660046101c0565b6100e9565b005b60206000527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4026040600583901b80858337818101905b8251860160408201813560208301823780517fffffffff000000000000000000000000000000000000000000000000000000001660009081526020879052604090205480610191577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600038843584845af46101a8573d6000803e3d6000fd5b50505060208301925081831061011f57505050505050565b600080602083850312156101d357600080fd5b823567ffffffffffffffff808211156101eb57600080fd5b818501915085601f8301126101ff57600080fd5b81358181111561020e57600080fd5b8660208260051b850101111561022357600080fd5b6020929092019691955090935050505056fea2646970667358221220edfcdb95094c609d61221cc1adff232dbd1ca791793d96642595ca65bf7fb18164736f6c634300081800334c69624d6f64756c65436f6e6669673a20416464206d6f64756c652063616e2776a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4014c69624d6f64756c65436f6e6669673a204e6f2073656c6563746f727320696e4c69624d6f64756c65436f6e6669673a204e6577206d6f64756c6520686173206e6f20636f6465000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7
Deployed Bytecode
0x6080604052600436106100225760003560e01c8063ac9650d8146100d457610029565b3661002957005b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40236806000604037604080517fffffffff0000000000000000000000000000000000000000000000000000000016600090815260208490522054806100b2577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600080836040845af49150503d806000803e81156100cf57806000f35b806000fd5b6100e76100e23660046101c0565b6100e9565b005b60206000527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4026040600583901b80858337818101905b8251860160408201813560208301823780517fffffffff000000000000000000000000000000000000000000000000000000001660009081526020879052604090205480610191577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600038843584845af46101a8573d6000803e3d6000fd5b50505060208301925081831061011f57505050505050565b600080602083850312156101d357600080fd5b823567ffffffffffffffff808211156101eb57600080fd5b818501915085601f8301126101ff57600080fd5b81358181111561020e57600080fd5b8660208260051b850101111561022357600080fd5b6020929092019691955090935050505056fea2646970667358221220edfcdb95094c609d61221cc1adff232dbd1ca791793d96642595ca65bf7fb18164736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x999999833d965c275A2C102a4Ebf222ca938546f
Arg [1] : _moduleConfigModule (address): 0x554E97c885F92F091b08c03AfB24eEBdf8a720f7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f
Arg [1] : 000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MNT
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.