Overview
ETH Balance
0.0066 ETH
ETH Value
$12.82 (@ $1,941.68/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Remote | 20783105 | 7 hrs ago | IN | 0.00045042 ETH | 0.00000751 | ||||
Mint | 20783016 | 7 hrs ago | IN | 0.00033 ETH | 0.00000712 | ||||
Transfer Remote | 20777397 | 12 hrs ago | IN | 0.00045042 ETH | 0.00000285 | ||||
Mint | 20771188 | 18 hrs ago | IN | 0.00033 ETH | 0.00000474 | ||||
Transfer Remote | 20767401 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000233 | ||||
Mint | 20767393 | 21 hrs ago | IN | 0.00033 ETH | 0.00000189 | ||||
Transfer Remote | 20767378 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000238 | ||||
Transfer Remote | 20767371 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000253 | ||||
Transfer Remote | 20767345 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000256 | ||||
Transfer Remote | 20767339 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000253 | ||||
Transfer Remote | 20767333 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000263 | ||||
Transfer Remote | 20767323 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000256 | ||||
Transfer Remote | 20767312 | 21 hrs ago | IN | 0.00045042 ETH | 0.00000273 | ||||
Mint | 20767162 | 21 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767154 | 21 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767148 | 21 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767113 | 21 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767107 | 21 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767068 | 22 hrs ago | IN | 0.00033 ETH | 0.00000192 | ||||
Mint | 20767040 | 22 hrs ago | IN | 0.00033 ETH | 0.00000237 | ||||
Withdraw Fees | 20760551 | 27 hrs ago | IN | 0 ETH | 0.00000035 | ||||
Transfer Remote | 20739028 | 47 hrs ago | IN | 0.00063105 ETH | 0.00000301 | ||||
Mint | 20738916 | 47 hrs ago | IN | 0.00033 ETH | 0.00000284 | ||||
Transfer Remote | 20721165 | 2 days ago | IN | 0.00063105 ETH | 0.00000314 | ||||
Transfer Remote | 20721154 | 2 days ago | IN | 0.00063105 ETH | 0.00000304 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20783105 | 7 hrs ago | 0.00012042 ETH | ||||
20777397 | 12 hrs ago | 0.00012042 ETH | ||||
20767401 | 21 hrs ago | 0.00012042 ETH | ||||
20767378 | 21 hrs ago | 0.00012042 ETH | ||||
20767371 | 21 hrs ago | 0.00012042 ETH | ||||
20767345 | 21 hrs ago | 0.00012042 ETH | ||||
20767339 | 21 hrs ago | 0.00012042 ETH | ||||
20767333 | 21 hrs ago | 0.00012042 ETH | ||||
20767323 | 21 hrs ago | 0.00012042 ETH | ||||
20767312 | 21 hrs ago | 0.00012042 ETH | ||||
20760551 | 27 hrs ago | 0.020646 ETH | ||||
20739028 | 47 hrs ago | 0.00030105 ETH | ||||
20721165 | 2 days ago | 0.00030105 ETH | ||||
20721154 | 2 days ago | 0.00030105 ETH | ||||
20701558 | 3 days ago | 0.00012042 ETH | ||||
20701551 | 3 days ago | 0.00012042 ETH | ||||
20701161 | 3 days ago | 0.00012042 ETH | ||||
20701039 | 3 days ago | 0.00012042 ETH | ||||
20698570 | 3 days ago | 0.00012042 ETH | ||||
20698561 | 3 days ago | 0.00012042 ETH | ||||
20692801 | 3 days ago | 0.00012042 ETH | ||||
20634755 | 5 days ago | 0.00008714 ETH | ||||
20624805 | 6 days ago | 0.00008714 ETH | ||||
20605862 | 7 days ago | 0.00008714 ETH | ||||
20601294 | 7 days ago | 0.00008714 ETH |
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 Source Code Verified (Exact Match)
Contract Name:
Diamond
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //******************************************************************************\ //* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) //* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 //* //* Implementation of a diamond. //******************************************************************************/ import {LibDiamond} from "./libraries/LibDiamond.sol"; import {IDiamondCut} from "./interfaces/IDiamondCut.sol"; import {IDiamondLoupe} from "./interfaces/IDiamondLoupe.sol"; // When no function exists for function called error FunctionNotFound(bytes4 _functionSelector); // This is used in diamond constructor // more arguments are added to this struct // this avoids stack too deep errors struct DiamondArgs { address owner; address init; bytes initCalldata; } contract Diamond { constructor(IDiamondCut.FacetCut[] memory _diamondCut, DiamondArgs memory _args) payable { LibDiamond.setContractOwner(_args.owner); LibDiamond.diamondCut(_diamondCut, _args.init, _args.initCalldata); // Code can be added here to perform actions and set state variables. } // Find facet for function that is called and execute the // function if a facet is found and return any value. fallback() external payable { LibDiamond.DiamondStorage storage ds; bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; // get diamond storage assembly { ds.slot := position } // get facet from function selector address facet = ds.facetAddressAndSelectorPosition[msg.sig].facetAddress; if (facet == address(0)) { revert FunctionNotFound(msg.sig); } // Execute external function from facet using delegatecall and return any value. assembly { // copy function selector and any arguments calldatacopy(0, 0, calldatasize()) // execute function call using the facet let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) // get any return value returndatacopy(0, 0, returndatasize()) // return any return value or error back to the caller switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //******************************************************************************\ //* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) //* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 //******************************************************************************/ import {IDiamond} from "../interfaces/IDiamond.sol"; import {IDiamondCut} from "../interfaces/IDiamondCut.sol"; // Remember to add the loupe functions from DiamondLoupeFacet to the diamond. // The loupe functions are required by the EIP2535 Diamonds standard error NoSelectorsGivenToAdd(); error NotContractOwner(address _user, address _contractOwner); error NoSelectorsProvidedForFacetForCut(address _facetAddress); error CannotAddSelectorsToZeroAddress(bytes4[] _selectors); error NoBytecodeAtAddress(address _contractAddress, string _message); error IncorrectFacetCutAction(uint8 _action); error CannotAddFunctionToDiamondThatAlreadyExists(bytes4 _selector); error CannotReplaceFunctionsFromFacetWithZeroAddress(bytes4[] _selectors); error CannotReplaceImmutableFunction(bytes4 _selector); error CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(bytes4 _selector); error CannotReplaceFunctionThatDoesNotExists(bytes4 _selector); error RemoveFacetAddressMustBeZeroAddress(address _facetAddress); error CannotRemoveFunctionThatDoesNotExist(bytes4 _selector); error CannotRemoveImmutableFunction(bytes4 _selector); error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata); library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndSelectorPosition { address facetAddress; uint16 selectorPosition; } struct DiamondStorage { // function selector => facet address and selector position in selectors array mapping(bytes4 => FacetAddressAndSelectorPosition) facetAddressAndSelectorPosition; bytes4[] selectors; mapping(bytes4 => bool) supportedInterfaces; bool locked; // owner of the contract address contractOwner; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function setContractOwner(address _newOwner) internal { DiamondStorage storage ds = diamondStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function enforceIsContractOwner() internal view { if (msg.sender != diamondStorage().contractOwner) { revert NotContractOwner(msg.sender, diamondStorage().contractOwner); } } event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); // Internal function version of diamondCut function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal { for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) { bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors; address facetAddress = _diamondCut[facetIndex].facetAddress; if (functionSelectors.length == 0) { revert NoSelectorsProvidedForFacetForCut(facetAddress); } IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamond.FacetCutAction.Add) { addFunctions(facetAddress, functionSelectors); } else if (action == IDiamond.FacetCutAction.Replace) { replaceFunctions(facetAddress, functionSelectors); } else if (action == IDiamond.FacetCutAction.Remove) { removeFunctions(facetAddress, functionSelectors); } else { revert IncorrectFacetCutAction(uint8(action)); } } emit DiamondCut(_diamondCut, _init, _calldata); initializeDiamondCut(_init, _calldata); } function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { if (_facetAddress == address(0)) { revert CannotAddSelectorsToZeroAddress(_functionSelectors); } DiamondStorage storage ds = diamondStorage(); uint16 selectorCount = uint16(ds.selectors.length); enforceHasContractCode(_facetAddress, "LibDiamondCut: Add facet has no code"); for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress; if (oldFacetAddress != address(0)) { revert CannotAddFunctionToDiamondThatAlreadyExists(selector); } ds.facetAddressAndSelectorPosition[selector] = FacetAddressAndSelectorPosition(_facetAddress, selectorCount); ds.selectors.push(selector); selectorCount++; } } function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { DiamondStorage storage ds = diamondStorage(); if (_facetAddress == address(0)) { revert CannotReplaceFunctionsFromFacetWithZeroAddress(_functionSelectors); } enforceHasContractCode(_facetAddress, "LibDiamondCut: Replace facet has no code"); for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress; // can't replace immutable functions -- functions defined directly in the diamond in this case if (oldFacetAddress == address(this)) { revert CannotReplaceImmutableFunction(selector); } if (oldFacetAddress == _facetAddress) { revert CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(selector); } if (oldFacetAddress == address(0)) { revert CannotReplaceFunctionThatDoesNotExists(selector); } // replace old facet address ds.facetAddressAndSelectorPosition[selector].facetAddress = _facetAddress; } } function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { DiamondStorage storage ds = diamondStorage(); uint256 selectorCount = ds.selectors.length; if (_facetAddress != address(0)) { revert RemoveFacetAddressMustBeZeroAddress(_facetAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; FacetAddressAndSelectorPosition memory oldFacetAddressAndSelectorPosition = ds.facetAddressAndSelectorPosition[selector]; if (oldFacetAddressAndSelectorPosition.facetAddress == address(0)) { revert CannotRemoveFunctionThatDoesNotExist(selector); } // can't remove immutable functions -- functions defined directly in the diamond if (oldFacetAddressAndSelectorPosition.facetAddress == address(this)) { revert CannotRemoveImmutableFunction(selector); } // replace selector with last selector selectorCount--; if (oldFacetAddressAndSelectorPosition.selectorPosition != selectorCount) { bytes4 lastSelector = ds.selectors[selectorCount]; ds.selectors[oldFacetAddressAndSelectorPosition.selectorPosition] = lastSelector; ds.facetAddressAndSelectorPosition[lastSelector].selectorPosition = oldFacetAddressAndSelectorPosition.selectorPosition; } // delete last selector ds.selectors.pop(); delete ds.facetAddressAndSelectorPosition[selector]; } } function initializeDiamondCut(address _init, bytes memory _calldata) internal { if (_init == address(0)) { return; } enforceHasContractCode(_init, "LibDiamondCut: _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) } if (contractSize == 0) { revert NoBytecodeAtAddress(_contract, _errorMessage); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //******************************************************************************\ //* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) //* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 //******************************************************************************/ import {IDiamond} from "./IDiamond.sol"; interface IDiamondCut is IDiamond { /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //******************************************************************************\ //* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) //* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 //******************************************************************************/ // A loupe is a small magnifying glass used to look at diamonds. // These functions look at diamonds interface IDiamondLoupe { /// These functions are expected to be called frequently /// by tools. struct Facet { address facetAddress; bytes4[] functionSelectors; } /// @notice Gets all facet addresses and their four byte function selectors. /// @return facets_ Facet function facets() external view returns (Facet[] memory facets_); /// @notice Gets all the function selectors supported by a specific facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory facetAddresses_); /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //*****************************************************************************\ //* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) //* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 //******************************************************************************/ interface IDiamond { enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); }
{ "remappings": [ "@HyperLane/=node_modules/@hyperlane-xyz/core/contracts/", "@openzeppelin/=node_modules/@openzeppelin/", "@/=src/", "ds-test/=lib/solmate/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "solidity-stringutils/=lib/solidity-stringutils/", "solmate/=lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamond.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"init","type":"address"},{"internalType":"bytes","name":"initCalldata","type":"bytes"}],"internalType":"struct DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotAddFunctionToDiamondThatAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotAddSelectorsToZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveFunctionThatDoesNotExist","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionThatDoesNotExists","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotReplaceFunctionsFromFacetWithZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"FunctionNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"_action","type":"uint8"}],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"string","name":"_message","type":"string"}],"name":"NoBytecodeAtAddress","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"NoSelectorsProvidedForFacetForCut","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"RemoveFacetAddressMustBeZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamond.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405161104338038061104383398101604081905261002291610ab7565b805161002d9061004d565b61004682826020015183604001516100d860201b60201c565b5050610ea8565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b03838116610100818102610100600160a81b0319851617909455604051600080516020610f8f833981519152949093049091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156102375760008482815181106100f8576100f8610c72565b6020026020010151604001519050600085838151811061011a5761011a610c72565b6020026020010151600001519050815160000361015a5760405163e767f91f60e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600086848151811061016e5761016e610c72565b60200260200101516020015190506000600281111561018f5761018f610c88565b8160028111156101a1576101a1610c88565b036101b5576101b08284610282565b61022c565b60018160028111156101c9576101c9610c88565b036101d8576101b0828461042e565b60028160028111156101ec576101ec610c88565b036101fb576101b082846105b7565b80600281111561020d5761020d610c88565b604051633ff4d20f60e11b815260ff9091166004820152602401610151565b5050506001016100db565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161026b93929190610d10565b60405180910390a161027d8282610836565b505050565b6001600160a01b0382166102ab57806040516302b8da0760e21b81526004016101519190610de2565b600080516020610ffb8339815191525460408051606081019091526024808252600080516020610f8f83398151915292916102f091869190610faf60208301396108fc565b60005b835181101561042757600084828151811061031057610310610c72565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0316801561036d5760405163ebbf5d0760e01b81526001600160e01b031983166004820152602401610151565b6040805180820182526001600160a01b03808a16825261ffff80881660208085019182526001600160e01b0319881660009081528b8252958620945185549251909316600160a01b026001600160b01b0319909216929093169190911717909155600180880180549182018155835291206008820401805460e085901c60046007909416939093026101000a92830263ffffffff90930219169190911790558361041681610e12565b945050600190920191506102f39050565b5050505050565b600080516020610f8f8339815191526001600160a01b038316610466578160405163cd98a96f60e01b81526004016101519190610de2565b6104888360405180606001604052806028815260200161101b602891396108fc565b60005b82518110156105b15760008382815181106104a8576104a8610c72565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031630810361050657604051632901806d60e11b81526001600160e01b031983166004820152602401610151565b856001600160a01b0316816001600160a01b03160361054457604051631ac6ce8d60e11b81526001600160e01b031983166004820152602401610151565b6001600160a01b03811661057757604051637479f93960e01b81526001600160e01b031983166004820152602401610151565b506001600160e01b031916600090815260208390526040902080546001600160a01b0319166001600160a01b03861617905560010161048b565b50505050565b600080516020610ffb83398151915254600080516020610f8f833981519152906001600160a01b0384161561060a5760405163d091bc8160e01b81526001600160a01b0385166004820152602401610151565b60005b835181101561042757600084828151811061062a5761062a610c72565b6020908102919091018101516001600160e01b0319811660009081528683526040908190208151808301909252546001600160a01b038116808352600160a01b90910461ffff1693820193909352909250906106a557604051637a08a22d60e01b81526001600160e01b031983166004820152602401610151565b8051306001600160a01b03909116036106dd57604051630df5fd6160e31b81526001600160e01b031983166004820152602401610151565b836106e781610e33565b94505083816020015161ffff16146107c557600085600101858154811061071057610710610c72565b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600101836020015161ffff168154811061075357610753610c72565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c92909202939093179055838201516001600160e01b03199390931681529087905260409020805461ffff60a01b1916600160a01b61ffff909316929092029190911790555b846001018054806107d8576107d8610e4a565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319909316815291859052506040902080546001600160b01b031916905560010161060d565b6001600160a01b038216610848575050565b61086a82604051806060016040528060288152602001610fd3602891396108fc565b600080836001600160a01b0316836040516108859190610e60565b600060405180830381855af49150503d80600081146108c0576040519150601f19603f3d011682016040523d82523d6000602084013e6108c5565b606091505b5091509150816105b1578051156108df5780518082602001fd5b838360405163192105d760e01b8152600401610151929190610e7c565b813b600081900361027d57828260405163919834b960e01b8152600401610151929190610e7c565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561095c5761095c610924565b60405290565b604051601f8201601f191681016001600160401b038111828210171561098a5761098a610924565b604052919050565b60006001600160401b038211156109ab576109ab610924565b5060051b60200190565b80516001600160a01b03811681146109cc57600080fd5b919050565b60005b838110156109ec5781810151838201526020016109d4565b50506000910152565b600060608284031215610a0757600080fd5b610a0f61093a565b9050610a1a826109b5565b8152610a28602083016109b5565b602082015260408201516001600160401b03811115610a4657600080fd5b8201601f81018413610a5757600080fd5b80516001600160401b03811115610a7057610a70610924565b610a83601f8201601f1916602001610962565b818152856020838501011115610a9857600080fd5b610aa98260208301602086016109d1565b604084015250909392505050565b60008060408385031215610aca57600080fd5b82516001600160401b03811115610ae057600080fd5b8301601f81018513610af157600080fd5b8051610b04610aff82610992565b610962565b8082825260208201915060208360051b850101925087831115610b2657600080fd5b602084015b83811015610c3b5780516001600160401b03811115610b4957600080fd5b85016060818b03601f19011215610b5f57600080fd5b610b6761093a565b610b73602083016109b5565b8152604082015160038110610b8757600080fd5b602082015260608201516001600160401b03811115610ba557600080fd5b6020818401019250508a601f830112610bbd57600080fd5b8151610bcb610aff82610992565b8082825260208201915060208360051b86010192508d831115610bed57600080fd5b6020850194505b82851015610c255784516001600160e01b031981168114610c1457600080fd5b825260209485019490910190610bf4565b6040840152505084525060209283019201610b2b565b506020870151909550925050506001600160401b03811115610c5c57600080fd5b610c68858286016109f5565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020840193506020830160005b82811015610cda5781516001600160e01b031916865260209586019590910190600101610cb2565b5093949350505050565b60008151808452610cfc8160208601602086016109d1565b601f01601f19169290920160200192915050565b6000606082016060835280865180835260808501915060808160051b86010192506020880160005b82811015610db357868503607f19018452815180516001600160a01b03168652602081015160038110610d7b57634e487b7160e01b600052602160045260246000fd5b806020880152506040810151905060606040870152610d9d6060870182610c9e565b9550506020938401939190910190600101610d38565b5050506001600160a01b0386166020850152508281036040840152610dd88185610ce4565b9695505050505050565b602081526000610df56020830184610c9e565b9392505050565b634e487b7160e01b600052601160045260246000fd5b600061ffff821661ffff8103610e2a57610e2a610dfc565b60010192915050565b600081610e4257610e42610dfc565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251610e728184602087016109d1565b9190910192915050565b6001600160a01b0383168152604060208201819052600090610ea090830184610ce4565b949350505050565b60d980610eb66000396000f3fe608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b031680608057604051630a82dd7360e31b81526001600160e01b031960003516600482015260240160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220d7bec6efd8de404a1dbab8f6eb4d7df60871717e171a6537ed29c3449dad443b64736f6c634300081b0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f6465c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d4c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047a0ed6270000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc600000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000000000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020e1c7392a00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b031680608057604051630a82dd7360e31b81526001600160e01b031960003516600482015260240160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220d7bec6efd8de404a1dbab8f6eb4d7df60871717e171a6537ed29c3449dad443b64736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047a0ed6270000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc600000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000000000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020e1c7392a00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : _args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
23 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [5] : 000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [10] : 00000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [15] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [16] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [17] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603
Arg [19] : 000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef0
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [22] : e1c7392a00000000000000000000000000000000000000000000000000000000
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.