Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
1661512 | 13 days ago | Contract Creation | 0 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:
DiamondLoupeFacet
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
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 /******************************************************************************/ import { LibDiamond } from "../libraries/LibDiamond.sol"; import { IDiamondLoupe } from "../interfaces/IDiamondLoupe.sol"; import { IERC165 } from "../interfaces/IERC165.sol"; // The functions in DiamondLoupeFacet MUST be added to a diamond. // The EIP-2535 Diamond standard requires these functions. contract DiamondLoupeFacet is IDiamondLoupe, IERC165 { // Diamond Loupe Functions //////////////////////////////////////////////////////////////////// /// These functions are expected to be called frequently by tools. // // struct Facet { // address facetAddress; // bytes4[] functionSelectors; // } /// @notice Gets all facets and their selectors. /// @return facets_ Facet function facets() external override view returns (Facet[] memory facets_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); uint256 numFacets = ds.facetAddresses.length; facets_ = new Facet[](numFacets); for (uint256 i; i < numFacets; i++) { address facetAddress_ = ds.facetAddresses[i]; facets_[i].facetAddress = facetAddress_; facets_[i].functionSelectors = ds.facetFunctionSelectors[facetAddress_].functionSelectors; } } /// @notice Gets all the function selectors provided by a facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external override view returns (bytes4[] memory facetFunctionSelectors_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetFunctionSelectors_ = ds.facetFunctionSelectors[_facet].functionSelectors; } /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external override view returns (address[] memory facetAddresses_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetAddresses_ = ds.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 override view returns (address facetAddress_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetAddress_ = ds.selectorToFacetAndPosition[_functionSelector].facetAddress; } // This implements ERC-165. function supportsInterface(bytes4 _interfaceId) external override view returns (bool) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); return ds.supportedInterfaces[_interfaceId]; } }
// 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; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceId The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// 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 { 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 InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata); library LibDiamond { // 32 bytes keccak hash of a string to use as a diamond storage location. bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndPosition { address facetAddress; uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint256 facetAddressPosition; // position of facetAddress in facetAddresses array } struct DiamondStorage { // maps function selector to the facet address and // the position of the selector in the facetFunctionSelectors.selectors array mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition; // maps facet addresses to function selectors mapping(address => FacetFunctionSelectors) facetFunctionSelectors; // facet addresses address[] facetAddresses; // Used to query if a contract implements an interface. // Used to implement ERC-165. mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; // assigns struct storage slot to the 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 { require(msg.sender == diamondStorage().contractOwner, "LibDiamond: Must be contract owner"); } 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++) { 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 { require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists"); addFunction(ds, selector, selectorPosition, _facetAddress); selectorPosition++; } } function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function"); removeFunction(ds, oldFacetAddress, selector); addFunction(ds, selector, selectorPosition, _facetAddress); selectorPosition++; } } function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); // if function does not exist then do nothing and return require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)"); 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, "LibDiamondCut: New facet has no code"); 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 { require(_facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist"); // an immutable function is a function defined directly in a diamond require(_facetAddress != address(this), "LibDiamondCut: Can't remove immutable function"); // replace selector with last selector, then delete last selector uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition; uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1; // if not the same then replace _selector with lastSelector if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition]; ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector; ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition); } // delete the last selector ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop(); delete ds.selectorToFacetAndPosition[_selector]; // if no more selectors for facet address then delete the facet address if (lastSelectorPosition == 0) { // replace facet address with last facet address and delete last facet address 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, "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) } require(contractSize > 0, _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 /******************************************************************************/ interface IDiamondCut { enum FacetCutAction {Add, Replace, Remove} // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } /// @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; event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010000bd803a96697d1b583be6d91e08e0395cd71577bbc3bfd49e4fe8f8c03a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x00060000000000020000008003000039000000400030043f0000000100200190000000270000c13d00000060021002700000009d02200197000000040020008c000001b60000413d000000000301043b000000e0033002700000009f0030009c0000002f0000a13d000000a00030009c000000400000613d000000a10030009c0000007c0000613d000000a20030009c000001b60000c13d000000240020008c000001b60000413d0000000002000416000000000002004b000001b60000c13d0000000401100370000000000101043b000000a500100198000001b60000c13d000000000010043f000000a601000041000000200010043f00000040020000390000000001000019026e02540000040f000000000101041a000000a701100197000000800010043f000000a8010000410000026f0001042e0000000001000416000000000001004b000001b60000c13d0000002001000039000001000010044300000120000004430000009e010000410000026f0001042e000000a30030009c000000ac0000613d000000a40030009c000001b60000c13d0000000001000416000000000001004b000001b60000c13d000000ac02000041000000000102041a000000800010043f000000000020043f0000002002000039000000000001004b000000c20000c13d000000a0010000390000000004020019000000d20000013d0000000001000416000000000001004b000001b60000c13d000000ac01000041000000000101041a000100000001001d000000ad0010009c000000fc0000213d000000010100002900000005021002100000003f01200039000000ae03100197000000af0030009c000000fc0000213d0000008001300039000000400010043f0000000104000029000000800040043f000000000004004b000000eb0000c13d00000020020000390000000002210436000000800300043d0000000000320435000000400410003900000005023002100000000002420019000000000003004b000000e20000613d000000a00500003900000040060000390000000007000019000000640000013d0000000107700039000000000037004b000000e20000813d0000000008120049000000400880008a000000000484043600000000580504340000000098080434000000a708800197000000000a820436000000000809043300000000006a0435000000400a200039000000000908043300000000009a04350000006002200039000000000009004b000000610000613d000000000a0000190000002008800039000000000b080433000000ab0bb001970000000002b20436000000010aa0003900000000009a004b000000740000413d000000610000013d000000240020008c000001b60000413d0000000002000416000000000002004b000001b60000c13d0000000401100370000000000101043b000000a70010009c000001b60000213d000000000010043f000000a901000041000000200010043f00000000010004140000009d0010009c0000009d01008041000000c001100210000000aa011001c70000801002000039026e02690000040f0000000100200190000001b60000613d000000000101043b026e01c00000040f0000002003000039000000400200043d0000000003320436000000000401043300000000004304350000004003200039000000000004004b000000a30000613d000000000500001900000020011000390000000006010433000000ab0660019700000000036304360000000105500039000000000045004b0000009c0000413d00000000012300490000009d0010009c0000009d0100804100000060011002100000009d0020009c0000009d020080410000004002200210000000000121019f0000026f0001042e000000240020008c000001b60000413d0000000002000416000000000002004b000001b60000c13d0000000401100370000000000101043b000000a500100198000001b60000c13d000000000010043f000000b801000041000000200010043f00000040020000390000000001000019026e02540000040f000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f000000a8010000410000026f0001042e000000a005000039000000b60300004100000000040000190000000006050019000000000503041a000000a705500197000000000556043600000001033000390000000104400039000000000014004b000000c50000413d000000410160008a000000b904100197000000b70040009c000000fc0000813d0000008001400039000000400010043f0000000000210435000000a002400039000000800300043d0000000000320435000000c002400039000000000003004b000000e20000613d000000a00400003900000000050000190000000046040434000000a70660019700000000026204360000000105500039000000000035004b000000dc0000413d00000000021200490000009d0020009c0000009d0200804100000060022002100000009d0010009c0000009d010080410000004001100210000000000112019f0000026f0001042e000000b00030009c000000fc0000213d000000600300003900000000040000190000004005100039000000400050043f000000200510003900000000003504350000000000010435000000a00540003900000000001504350000002004400039000000000024004b000001020000813d000000400100043d000000b50010009c000000ef0000a13d000000b201000041000000000010043f0000004101000039000000040010043f000000b30100004100000270000104300000000002000019000000ac01000041000000000010043f000000800100043d000000000021004b000001b80000a13d000000b10120009a000000000101041a000000a701100197000600000002001d0000000502200210000000a002200039000500000002001d00000000020204330000000000120435000000000010043f000000a901000041000000200010043f00000000010004140000009d0010009c0000009d01008041000000c001100210000000aa011001c70000801002000039026e02690000040f0000000100200190000001b60000613d000000800200043d000000060020006c000001b80000a13d00000005020000290000000002020433000200000002001d000000000101043b000000000301041a000000400200043d000500000002001d000300000003001d0000000002320436000400000002001d000000000010043f00000000010004140000009d0010009c0000009d01008041000000c001100210000000b4011001c70000801002000039026e02690000040f0000000100200190000001b60000613d000000000201043b0000000307000029000000080070008c000001860000413d00000000010000190000000406000029000000e003600039000000000402041a000000ab0540019700000000005304350000002003400210000000ab03300197000000c00560003900000000003504350000004003400210000000ab03300197000000a00560003900000000003504350000006003400210000000ab03300197000000800560003900000000003504350000008003400210000000ab0330019700000060056000390000000000350435000000a003400210000000ab0330019700000040056000390000000000350435000000c003400210000000ab0330019700000020056000390000000000350435000000e003400210000000000036043500000001022000390000010006600039000000080110003900000007031001bf000000000073004b0000013a0000413d000000000202041a000000000071004b0000018b0000413d000000000071004b000001900000413d000000000071004b000001960000413d000000000071004b0000019c0000413d000000000071004b000001a20000413d000000000071004b000001a80000413d000000000071004b000001ae0000413d0000000503000029000000000071004b000001720000813d000000ab01200197000000000616043600000000013600490000001f01100039000000b9021001970000000001320019000000000021004b00000000020000390000000102004039000000ad0010009c000000fc0000213d0000000100200190000000fc0000c13d00000002020000290000002002200039000000400010043f000000000032043500000006020000290000000102200039000000010020006c000001030000413d000001be0000013d00000000010000190000000406000029000000000202041a000000000070004b000001610000813d000000e003200210000000000636043600000001011001bf000000000071004b000001630000813d000000c003200210000000ab0330019700000000063604360000000101100039000000000071004b000001650000813d000000a003200210000000ab0330019700000000063604360000000101100039000000000071004b000001670000813d0000008003200210000000ab0330019700000000063604360000000101100039000000000071004b000001690000813d0000006003200210000000ab0330019700000000063604360000000101100039000000000071004b0000016b0000813d0000004003200210000000ab0330019700000000063604360000000101100039000000000071004b0000016d0000813d0000002003200210000000ab03300197000000000636043600000001011000390000000503000029000000000071004b000001700000413d000001720000013d00000000010000190000027000010430000000b201000041000000000010043f0000003201000039000000040010043f000000b3010000410000027000010430000000400100043d000000540000013d0003000000000002000000000301041a000000400200043d000300000002001d000100000003001d0000000002320436000200000002001d000000000010043f00000000010004140000009d0010009c0000009d01008041000000c001100210000000b4011001c70000801002000039026e02690000040f00000001002001900000024c0000613d000000000201043b0000000108000029000000080080008c0000021c0000413d00000000060000190000000207000029000000e003700039000000000402041a000000ab0540019700000000005304350000002003400210000000ab03300197000000c00570003900000000003504350000004003400210000000ab03300197000000a00570003900000000003504350000006003400210000000ab03300197000000800570003900000000003504350000008003400210000000ab0330019700000060057000390000000000350435000000a003400210000000ab0330019700000040057000390000000000350435000000c003400210000000ab0330019700000020057000390000000000350435000000e003400210000000000037043500000001022000390000010007700039000000080660003900000007036001bf000000000083004b000001d70000413d000000000202041a000000000086004b000002210000413d000000000086004b000002260000413d000000000086004b0000022c0000413d000000000086004b000002320000413d000000000086004b000002380000413d000000000086004b0000023e0000413d000000000086004b000002440000413d0000000301000029000000000086004b0000020f0000813d000000ab02200197000000000727043600000000021700490000001f03200039000000b9023001970000000003120019000000000023004b00000000020000390000000102004039000000ad0030009c0000024e0000213d00000001002001900000024e0000c13d000000400030043f000000000001042d00000000060000190000000207000029000000000202041a000000000080004b000001fe0000813d000000e003200210000000000737043600000001066001bf000000000086004b000002000000813d000000c003200210000000ab0330019700000000073704360000000106600039000000000086004b000002020000813d000000a003200210000000ab0330019700000000073704360000000106600039000000000086004b000002040000813d0000008003200210000000ab0330019700000000073704360000000106600039000000000086004b000002060000813d0000006003200210000000ab0330019700000000073704360000000106600039000000000086004b000002080000813d0000004003200210000000ab0330019700000000073704360000000106600039000000000086004b0000020a0000813d0000002003200210000000ab03300197000000000737043600000001066000390000000301000029000000000086004b0000020d0000413d0000020f0000013d00000000010000190000027000010430000000b201000041000000000010043f0000004101000039000000040010043f000000b30100004100000270000104300000009d0010009c0000009d0100804100000040011002100000009d0020009c0000009d020080410000006002200210000000000112019f00000000020004140000009d0020009c0000009d02008041000000c002200210000000000112019f000000ba011001c70000801002000039026e02690000040f0000000100200190000002670000613d000000000101043b000000000001042d000000000100001900000270000104300000026c002104230000000102000039000000000001042d0000000002000019000000000001042d0000026e000004320000026f0001042e000002700001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000007a0ed626000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000adfca15e00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000052ef6b2c00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d0200000000000000000000000000000000000040000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f4a3dc65d6050fda6bebe443a1967d5647a45d4b2a63c12c4550b3471a1ee34114e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000200000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbfb5c239a29faf02594141bbc5e6982a9b85ba2b4d59c3ed3baaf4cb8e5e11cbef000000000000000000000000000000000000000000000000ffffffffffffff80c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fe3b5c54670e1dfd4e1722157558cb93c1a8230d3a463258dd32e6f665ad644
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.