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 | |||
---|---|---|---|---|---|---|
254312 | 83 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.28+commit.7893614a
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.28; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import {LibDiamond} from "../libraries/storages/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. /// @dev DiamondLoupeFacet facet 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 view override 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 view override 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 view override 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 view override returns (address facetAddress_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetAddress_ = ds .selectorToFacetAndPosition[_functionSelector] .facetAddress; } // This implements ERC-165. function supportsInterface( bytes4 _interfaceId ) external view override returns (bool) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); return ds.supportedInterfaces[_interfaceId]; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.28; /******************************************************************************\ * 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.28; 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.28; /******************************************************************************\ * 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; } 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 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.28; /******************************************************************************\ * 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": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010000bdacd6be1d77e48250ee59d647098ae1ba9f0ae80815dac09a446149d800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x00060000000000020000008003000039000000400030043f0000000100200190000000270000c13d00000060021002700000009f02200197000000040020008c000001c10000413d000000000301043b000000e003300270000000a10030009c0000002f0000a13d000000a20030009c000000400000613d000000a30030009c0000007c0000613d000000a40030009c000001c10000c13d000000240020008c000001c10000413d0000000002000416000000000002004b000001c10000c13d0000000401100370000000000101043b000000a700100198000001c10000c13d000000000010043f000000a801000041000000200010043f000000400200003900000000010000190279025f0000040f000000000101041a000000a901100197000000800010043f000000aa010000410000027a0001042e0000000001000416000000000001004b000001c10000c13d000000200100003900000100001004430000012000000443000000a0010000410000027a0001042e000000a50030009c000000ac0000613d000000a60030009c000001c10000c13d0000000001000416000000000001004b000001c10000c13d000000ae02000041000000000102041a000000800010043f000000000020043f0000002002000039000000000001004b000000c20000c13d000000a0010000390000000004020019000000d20000013d0000000001000416000000000001004b000001c10000c13d000000ae01000041000000000101041a000100000001001d000000af0010009c000000fc0000213d000000010100002900000005021002100000003f01200039000000b003100197000000b10030009c000000fc0000213d0000008001300039000000400010043f0000000104000029000000800040043f000000000004004b000000eb0000c13d00000020020000390000000002210436000000800300043d0000000000320435000000400410003900000005023002100000000002420019000000000003004b000000e20000613d000000a00500003900000040060000390000000007000019000000640000013d0000000107700039000000000037004b000000e20000813d0000000008120049000000400880008a000000000484043600000000580504340000000098080434000000a908800197000000000a820436000000000809043300000000006a0435000000400a200039000000000908043300000000009a04350000006002200039000000000009004b000000610000613d000000000a0000190000002008800039000000000b080433000000ad0bb001970000000002b20436000000010aa0003900000000009a004b000000740000413d000000610000013d000000240020008c000001c10000413d0000000002000416000000000002004b000001c10000c13d0000000401100370000000000101043b000000a90010009c000001c10000213d000000000010043f000000ab01000041000000200010043f00000000010004140000009f0010009c0000009f01008041000000c001100210000000ac011001c70000801002000039027902740000040f0000000100200190000001c10000613d000000000101043b027901cb0000040f0000002003000039000000400200043d0000000003320436000000000401043300000000004304350000004003200039000000000004004b000000a30000613d000000000500001900000020011000390000000006010433000000ad0660019700000000036304360000000105500039000000000045004b0000009c0000413d00000000012300490000009f0010009c0000009f0100804100000060011002100000009f0020009c0000009f020080410000004002200210000000000121019f0000027a0001042e000000240020008c000001c10000413d0000000002000416000000000002004b000001c10000c13d0000000401100370000000000101043b000000a700100198000001c10000c13d000000000010043f000000b901000041000000200010043f000000400200003900000000010000190279025f0000040f000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f000000aa010000410000027a0001042e000000a005000039000000b70300004100000000040000190000000006050019000000000503041a000000a905500197000000000556043600000001033000390000000104400039000000000014004b000000c50000413d000000410160008a000000ba04100197000000b80040009c000000fc0000813d0000008001400039000000400010043f0000000000210435000000a002400039000000800300043d0000000000320435000000c002400039000000000003004b000000e20000613d000000a00400003900000000050000190000000046040434000000a90660019700000000026204360000000105500039000000000035004b000000dc0000413d00000000021200490000009f0020009c0000009f0200804100000060022002100000009f0010009c0000009f010080410000004001100210000000000112019f0000027a0001042e000000b20030009c000000fc0000213d000000600300003900000000040000190000004005100039000000400050043f000000200510003900000000003504350000000000010435000000a00540003900000000001504350000002004400039000000000024004b000001020000813d000000400100043d000000b60010009c000000ef0000a13d000000b401000041000000000010043f0000004101000039000000040010043f000000b5010000410000027b00010430000600000000001d000000ae01000041000000000010043f00000000010004140000009f0010009c0000009f01008041000000c001100210000000b3011001c70000801002000039027902740000040f0000000100200190000001c10000613d000000800200043d0000000603000029000000000032004b000001c30000a13d000000000101043b0000000001310019000000000101041a000000a9011001970000000502300210000000a002200039000500000002001d00000000020204330000000000120435000000000010043f000000ab01000041000000200010043f00000000010004140000009f0010009c0000009f01008041000000c001100210000000ac011001c70000801002000039027902740000040f0000000100200190000001c10000613d000000800200043d000000060020006c000001c30000a13d00000005020000290000000002020433000200000002001d000000000101043b000000000301041a000000400200043d000500000002001d000300000003001d0000000002320436000400000002001d000000000010043f00000000010004140000009f0010009c0000009f01008041000000c001100210000000b3011001c70000801002000039027902740000040f0000000100200190000001c10000613d000000000201043b0000000307000029000000080070008c000001910000413d00000000010000190000000406000029000000e003600039000000000402041a000000ad0540019700000000005304350000002003400210000000ad03300197000000c00560003900000000003504350000004003400210000000ad03300197000000a00560003900000000003504350000006003400210000000ad03300197000000800560003900000000003504350000008003400210000000ad0330019700000060056000390000000000350435000000a003400210000000ad0330019700000040056000390000000000350435000000c003400210000000ad0330019700000020056000390000000000350435000000e003400210000000000036043500000001022000390000010006600039000000080110003900000007031001bf000000000073004b000001440000413d000000000202041a000000000071004b000001960000413d000000000071004b0000019b0000413d000000000071004b000001a10000413d000000000071004b000001a70000413d000000000071004b000001ad0000413d000000000071004b000001b30000413d000000000071004b000001b90000413d0000000503000029000000000071004b0000017c0000813d000000ad01200197000000000616043600000000013600490000001f01100039000000ba021001970000000001320019000000000021004b00000000020000390000000102004039000000af0010009c000000fc0000213d0000000100200190000000fc0000c13d00000002020000290000002002200039000000400010043f000000000032043500000006020000290000000102200039000600000002001d000000010020006c000001030000413d000001c90000013d00000000010000190000000406000029000000000202041a000000000070004b0000016b0000813d000000e003200210000000000636043600000001011001bf000000000071004b0000016d0000813d000000c003200210000000ad0330019700000000063604360000000101100039000000000071004b0000016f0000813d000000a003200210000000ad0330019700000000063604360000000101100039000000000071004b000001710000813d0000008003200210000000ad0330019700000000063604360000000101100039000000000071004b000001730000813d0000006003200210000000ad0330019700000000063604360000000101100039000000000071004b000001750000813d0000004003200210000000ad0330019700000000063604360000000101100039000000000071004b000001770000813d0000002003200210000000ad03300197000000000636043600000001011000390000000503000029000000000071004b0000017a0000413d0000017c0000013d00000000010000190000027b00010430000000b401000041000000000010043f0000003201000039000000040010043f000000b5010000410000027b00010430000000400100043d000000540000013d0003000000000002000000000301041a000000400200043d000300000002001d000100000003001d0000000002320436000200000002001d000000000010043f00000000010004140000009f0010009c0000009f01008041000000c001100210000000b3011001c70000801002000039027902740000040f0000000100200190000002570000613d000000000201043b0000000108000029000000080080008c000002270000413d00000000060000190000000207000029000000e003700039000000000402041a000000ad0540019700000000005304350000002003400210000000ad03300197000000c00570003900000000003504350000004003400210000000ad03300197000000a00570003900000000003504350000006003400210000000ad03300197000000800570003900000000003504350000008003400210000000ad0330019700000060057000390000000000350435000000a003400210000000ad0330019700000040057000390000000000350435000000c003400210000000ad0330019700000020057000390000000000350435000000e003400210000000000037043500000001022000390000010007700039000000080660003900000007036001bf000000000083004b000001e20000413d000000000202041a000000000086004b0000022c0000413d000000000086004b000002310000413d000000000086004b000002370000413d000000000086004b0000023d0000413d000000000086004b000002430000413d000000000086004b000002490000413d000000000086004b0000024f0000413d0000000301000029000000000086004b0000021a0000813d000000ad02200197000000000727043600000000021700490000001f03200039000000ba023001970000000003120019000000000023004b00000000020000390000000102004039000000af0030009c000002590000213d0000000100200190000002590000c13d000000400030043f000000000001042d00000000060000190000000207000029000000000202041a000000000080004b000002090000813d000000e003200210000000000737043600000001066001bf000000000086004b0000020b0000813d000000c003200210000000ad0330019700000000073704360000000106600039000000000086004b0000020d0000813d000000a003200210000000ad0330019700000000073704360000000106600039000000000086004b0000020f0000813d0000008003200210000000ad0330019700000000073704360000000106600039000000000086004b000002110000813d0000006003200210000000ad0330019700000000073704360000000106600039000000000086004b000002130000813d0000004003200210000000ad0330019700000000073704360000000106600039000000000086004b000002150000813d0000002003200210000000ad03300197000000000737043600000001066000390000000301000029000000000086004b000002180000413d0000021a0000013d00000000010000190000027b00010430000000b401000041000000000010043f0000004101000039000000040010043f000000b5010000410000027b000104300000009f0010009c0000009f0100804100000040011002100000009f0020009c0000009f020080410000006002200210000000000112019f00000000020004140000009f0020009c0000009f02008041000000c002200210000000000112019f000000bb011001c70000801002000039027902740000040f0000000100200190000002720000613d000000000101043b000000000001042d00000000010000190000027b0001043000000277002104230000000102000039000000000001042d0000000002000019000000000001042d00000279000004320000027a0001042e0000027b0001043000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000007a0ed626000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000adfca15e00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000052ef6b2c00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d0200000000000000000000000000000000000040000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f02000000000000000000000000000000000000200000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbfb5c239a29faf02594141bbc5e6982a9b85ba2b4d59c3ed3baaf4cb8e5e11cbef000000000000000000000000000000000000000000000000ffffffffffffff80c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0020000000000000000000000000000000000000000000000000000000000000030088fba1f250fbb7e658d1ab55c7a945cf79afea97d54e81d5cb7b05320e774
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.