Source Code (Proxy)
Overview
ETH Balance
0 ETH
ETH Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Grant Role | 41653623 | 31 days ago | IN | 0 ETH | 0.00000025 | ||||
| Grant Role | 41644616 | 31 days ago | IN | 0 ETH | 0.00000037 | ||||
| Grant Role | 41644614 | 31 days ago | IN | 0 ETH | 0.00000037 | ||||
| Grant Role | 41644613 | 31 days ago | IN | 0 ETH | 0.00000037 | ||||
| Grant Role | 41636743 | 32 days ago | IN | 0 ETH | 0.00000059 | ||||
| Grant Role | 41636743 | 32 days ago | IN | 0 ETH | 0.00000059 | ||||
| Grant Role | 41636743 | 32 days ago | IN | 0 ETH | 0.00000059 | ||||
| Diamond Cut | 41636743 | 32 days ago | IN | 0 ETH | 0.00000521 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Diamond
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {LibDiamond} from "./LibDiamond.sol";
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";
contract Diamond {
constructor(address _contractOwner, address _diamondCutFacet) payable {
LibDiamond.setContractOwner(_contractOwner);
IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1);
bytes4[] memory functionSelectors = new bytes4[](1);
functionSelectors[0] = IDiamondCut.diamondCut.selector;
cut[0] = IDiamondCut.FacetCut({
facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors
});
LibDiamond.diamondCut(cut, address(0), "");
}
fallback() external payable {
LibDiamond.DiamondStorage storage ds;
bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
assembly {
ds.slot := position
}
address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
require(facet != address(0), "Diamond: Function does not exist");
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
receive() external payable {
revert("Diamond: ETH not accepted");
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";
library LibDiamond {
bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("cartha.diamond.storage");
struct FacetAddressAndPosition {
address facetAddress;
uint96 functionSelectorPosition;
}
struct FacetFunctionSelectors {
bytes4[] functionSelectors;
uint256 facetAddressPosition;
}
struct DiamondStorage {
mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
address[] facetAddresses;
mapping(bytes4 => bool) supportedInterfaces;
address contractOwner;
mapping(uint8 => mapping(address => bool)) roles;
}
error InitializationFailed(address _initializationContractAddress, bytes _calldata);
error NotContractOwner(address _user, address _contractOwner);
error NoSelectorsInFacet(address _facetAddress);
error FacetHasNoCode(address _facetAddress);
error FunctionAlreadyExists(bytes4 _selector);
error FunctionDoesNotExist(bytes4 _selector);
error FunctionIsImmutable(bytes4 _selector);
error ReplaceFunctionWithSameAddress(bytes4 _selector);
error RemoveFacetAddressMustBeZero(address _facetAddress);
error AddFacetCannotBeZero();
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
function diamondStorage() internal pure returns (DiamondStorage storage ds) {
bytes32 position = DIAMOND_STORAGE_POSITION;
assembly {
ds.slot := position
}
}
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);
function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal {
for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
if (action == IDiamondCut.FacetCutAction.Add) {
addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
} else if (action == IDiamondCut.FacetCutAction.Replace) {
replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
} else if (action == IDiamondCut.FacetCutAction.Remove) {
removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
} else {
revert("LibDiamondCut: Incorrect FacetCutAction");
}
}
emit DiamondCut(_diamondCut, _init, _calldata);
initializeDiamondCut(_init, _calldata);
}
function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
if (_functionSelectors.length == 0) {
revert NoSelectorsInFacet(_facetAddress);
}
DiamondStorage storage ds = diamondStorage();
if (_facetAddress == address(0)) {
revert AddFacetCannotBeZero();
}
uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
if (selectorPosition == 0) {
addFacet(ds, _facetAddress);
}
for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
bytes4 selector = _functionSelectors[selectorIndex];
address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
if (oldFacetAddress != address(0)) {
revert FunctionAlreadyExists(selector);
}
addFunction(ds, selector, selectorPosition, _facetAddress);
selectorPosition++;
}
}
function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
if (_functionSelectors.length == 0) {
revert NoSelectorsInFacet(_facetAddress);
}
DiamondStorage storage ds = diamondStorage();
if (_facetAddress == address(0)) {
revert AddFacetCannotBeZero();
}
uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
if (selectorPosition == 0) {
addFacet(ds, _facetAddress);
}
for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
bytes4 selector = _functionSelectors[selectorIndex];
address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
if (oldFacetAddress == _facetAddress) {
revert ReplaceFunctionWithSameAddress(selector);
}
removeFunction(ds, oldFacetAddress, selector);
addFunction(ds, selector, selectorPosition, _facetAddress);
selectorPosition++;
}
}
function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
if (_functionSelectors.length == 0) {
revert NoSelectorsInFacet(_facetAddress);
}
DiamondStorage storage ds = diamondStorage();
if (_facetAddress != address(0)) {
revert RemoveFacetAddressMustBeZero(_facetAddress);
}
for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
bytes4 selector = _functionSelectors[selectorIndex];
address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
removeFunction(ds, oldFacetAddress, selector);
}
}
function addFacet(DiamondStorage storage ds, address _facetAddress) internal {
enforceHasContractCode(_facetAddress);
ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;
ds.facetAddresses.push(_facetAddress);
}
function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress)
internal
{
ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;
ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);
ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;
}
function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal {
if (_facetAddress == address(0)) {
revert FunctionDoesNotExist(_selector);
}
uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
if (selectorPosition != lastSelectorPosition) {
bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
// forge-lint: disable-next-line(unsafe-typecast)
ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);
}
ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
delete ds.selectorToFacetAndPosition[_selector];
if (lastSelectorPosition == 0) {
uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
if (facetAddressPosition != lastFacetAddressPosition) {
address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;
}
ds.facetAddresses.pop();
delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
}
}
function initializeDiamondCut(address _init, bytes memory _calldata) internal {
if (_init == address(0)) {
return;
}
enforceHasContractCode(_init);
(bool success, bytes memory error) = _init.delegatecall(_calldata);
if (!success) {
if (error.length > 0) {
assembly {
let returndata_size := mload(error)
revert(add(32, error), returndata_size)
}
} else {
revert InitializationFailed(_init, _calldata);
}
}
}
function enforceHasContractCode(address _contract) internal view {
uint256 contractSize;
assembly {
contractSize := extcodesize(_contract)
}
if (contractSize == 0) {
revert FacetHasNoCode(_contract);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IDiamondCut {
enum FacetCutAction {
Add,
Replace,
Remove
}
struct FacetCut {
address facetAddress;
FacetCutAction action;
bytes4[] functionSelectors;
}
event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external;
}{
"remappings": [
"solady/=lib/solady/src/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "prague",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"AddFacetCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"FacetHasNoCode","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"FunctionAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"FunctionDoesNotExist","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFailed","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"NoSelectorsInFacet","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"RemoveFacetAddressMustBeZero","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"ReplaceFunctionWithSameAddress","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.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
608060405260405161102438038061102483398101604081905261002291610c7c565b61002b8261012e565b6040805160018082528183019092525f91816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816100415750506040805160018082528183019092529192505f919060208083019080368337019050509050631f931c1c60e01b815f815181106100ad576100ad610cad565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081015f815260200182815250825f815181106100fb576100fb610cad565b6020026020010181905250610125825f60405180602001604052805f8152506101af60201b60201c565b50505050610eba565b7f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b82150c80546001600160a01b031981166001600160a01b038481169182179093556040515f5160206110045f395f51905f52939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b835181101561037c575f8482815181106101cd576101cd610cad565b60200260200101516020015190505f60028111156101ed576101ed610cc1565b8160028111156101ff576101ff610cc1565b036102525761024d85838151811061021957610219610cad565b60200260200101515f015186848151811061023657610236610cad565b6020026020010151604001516103c760201b60201c565b610373565b600181600281111561026657610266610cc1565b036102b45761024d85838151811061028057610280610cad565b60200260200101515f015186848151811061029d5761029d610cad565b60200260200101516040015161059060201b60201c565b60028160028111156102c8576102c8610cc1565b036103165761024d8583815181106102e2576102e2610cad565b60200260200101515f01518684815181106102ff576102ff610cad565b60200260200101516040015161076260201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b506001016101b1565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103b093929190610d03565b60405180910390a16103c28282610839565b505050565b80515f036103f3576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b03831661042857604051633eedeedf60e21b815260040160405180910390fd5b6001600160a01b0383165f908152600182016020526040812054906001600160601b038216900361045d5761045d82856108e2565b5f5b8351811015610589575f84828151811061047b5761047b610cad565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b031680156104d7576040516333c9344360e21b81526001600160e01b03198316600482015260240161036a565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361057881610e21565b9450506001909201915061045f9050565b5050505050565b80515f036105bc576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b0383166105f157604051633eedeedf60e21b815260040160405180910390fd5b6001600160a01b0383165f908152600182016020526040812054906001600160601b03821690036106265761062682856108e2565b5f5b8351811015610589575f84828151811061064457610644610cad565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b0390811690871681036106a557604051636f129acf60e01b81526001600160e01b03198316600482015260240161036a565b6106b0858284610932565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361075181610e21565b945050600190920191506106289050565b80515f0361078e576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b038316156107cf57604051630c96cead60e01b81526001600160a01b038416600482015260240161036a565b5f5b8251811015610833575f8382815181106107ed576107ed610cad565b6020908102919091018101516001600160e01b031981165f908152918590526040909120549091506001600160a01b0316610829848284610932565b50506001016107d1565b50505050565b6001600160a01b03821661084b575050565b61085482610c2f565b5f5f836001600160a01b03168360405161086e9190610e4c565b5f60405180830381855af49150503d805f81146108a6576040519150601f19603f3d011682016040523d82523d5f602084013e6108ab565b606091505b509150915081610833578051156108c55780518082602001fd5b83836040516325844adf60e01b815260040161036a929190610e62565b6108eb81610c2f565b6002820180546001600160a01b039092165f8181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b0382166109655760405163f8473e6b60e01b81526001600160e01b03198216600482015260240161036a565b6001600160e01b031981165f90815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b031692916109b391610e8d565b9050808214610aa2576001600160a01b0384165f90815260018601602052604081208054839081106109e7576109e7610cad565b5f91825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610a3757610a37610cad565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f9081526001860160205260409020805480610aca57610aca610ea6565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252869052604081208190558190036105895760028501545f90610b2a90600190610e8d565b6001600160a01b0386165f908152600180890160205260409091200154909150808214610bd5575f876002018381548110610b6757610b67610cad565b5f918252602090912001546002890180546001600160a01b039092169250829184908110610b9757610b97610cad565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610be857610be8610ea6565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b803b5f819003610c5d57604051630579fa8f60e51b81526001600160a01b038316600482015260240161036a565b5050565b80516001600160a01b0381168114610c77575f5ffd5b919050565b5f5f60408385031215610c8d575f5ffd5b610c9683610c61565b9150610ca460208401610c61565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f606082016060835280865180835260808501915060808160051b8601019250602088015f5b82811015610dde57868503607f19018452815180516001600160a01b031686526020810151606087019060038110610d6f57634e487b7160e01b5f52602160045260245ffd5b8060208901525060408201519150606060408801528082518083526080890191506020840193505f92505b80831015610dc65783516001600160e01b03191682526020938401936001939093019290910190610d9a565b50965050506020938401939190910190600101610d29565b5050506001600160a01b0386166020850152508281036040840152610e038185610cd5565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b0382166002600160601b03198101610e4357610e43610e0d565b60010192915050565b5f82518060208501845e5f920191825250919050565b6001600160a01b03831681526040602082018190525f90610e8590830184610cd5565b949350505050565b81810381811115610ea057610ea0610e0d565b92915050565b634e487b7160e01b5f52603160045260245ffd5b61013d80610ec75f395ff3fe6080604052366100565760405162461bcd60e51b815260206004820152601960248201527f4469616d6f6e643a20455448206e6f742061636365707465640000000000000060448201526064015b60405180910390fd5b5f80356001600160e01b03191681527f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b821508602081905260409091205481906001600160a01b0316806100e95760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161004d565b365f5f375f5f365f845af43d5f5f3e808015610103573d5ff35b3d5ffdfea264697066735822122001df11bc96ff17cf37497da2b02b1fe0181d6443db8414e3f1c88c6cff422c2464736f6c634300081e0033190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b8215080000000000000000000000009d981c98f434a43916cee87a649ff15cb252d70000000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd
Deployed Bytecode
0x6080604052366100565760405162461bcd60e51b815260206004820152601960248201527f4469616d6f6e643a20455448206e6f742061636365707465640000000000000060448201526064015b60405180910390fd5b5f80356001600160e01b03191681527f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b821508602081905260409091205481906001600160a01b0316806100e95760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161004d565b365f5f375f5f365f845af43d5f5f3e808015610103573d5ff35b3d5ffdfea264697066735822122001df11bc96ff17cf37497da2b02b1fe0181d6443db8414e3f1c88c6cff422c2464736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009d981c98f434a43916cee87a649ff15cb252d70000000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x9D981C98F434A43916cee87a649ff15CB252d700
Arg [1] : _diamondCutFacet (address): 0x90089577b2C00ac1eB32610641dF7547fd81DeFd
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009d981c98f434a43916cee87a649ff15cb252d700
Arg [1] : 00000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.