Everyday giveaways up to 8.88BTC, Lucky Spins. Deposit BONUS 300% and Cashbacks!
5000+ Slots & Live Casino Games, 50+cryptos. Register with BscScan and get 760% deposit bonus. Win Big$, withdraw it fast.
Join Pasino and get the daily chance to win US$100k and 0.5 BTC
5000+ Slots, Live casino games, 50+ cryptos, 100% bet insurance. Register with Bscscan and get 240% first deposit bonus.
Holidays are coming soon! Start betting on 1xBit and get a secret gift from Santa!
3000+ Slots, 20+ Cryptos, 75K Raffle, Sports Promos - World's largest Crypto Casino & Sportsbook - Provably Fair!
Overview
BNB Balance
BNB Value
$0.43 (@ $718.96/BNB)Token Holdings
Could not find any matches!
- BEP-20 Tokens (94)0.08735903 COSMICCOSMIC FOMO (COSMIC)$0.00@0.02323.16966 MDAOMarsDAO (MDAO)$0.19@0.0615100 MTVMultiVAC (MTV)$0.09@0.00090.05 PAXEPaxe Token (PAXE)$0.01@0.11370.00150381 ezETHRenzo Restak... (ezETH)$6.21@4,129.34864.97948256 BSC-USDBinance-Peg ... (BSC-US...)$864.79@0.99986.8310807 DAIBinance-Peg ... (DAI)$6.83@0.99990.86112934 ETHBinance-Peg ... (ETH)$3,457.04@4,014.54714,382.65747686 USDCBinance-Peg ... (USDC)$14,380.79@0.99991,231.43437285 www.zkfair.winBEP-20: ! A-ZKF (www.zk...)850 BSC-USD Airdrop: busd-rewards.com)BEP-20: ! BSC-USD (BSC-US...)8,888 TRON Rare Address Generator https://RareTron.orgBEP-20: ! RareTro... (TRON R...)2,678 Visit https://arkhami-ai.tech to swap tokenBEP-20: $ARKM (Visit ...)1,000 ZEROVMBEP-20: 0VM (ZEROVM)32.10923725 ADSCBEP-20: ADSC Toke... (ADSC)150 AI RATSBEP-20: AI RATS (AI RAT...)142 AIBEP-20: Any Inu (AI)3.78 AMSPBEP-20: Autonomou... (AMSP)1,000 BabyFairBEP-20: BabyFair (BabyFa...)1,000 BabyLongBEP-20: BabyLong (BabyLo...)0.25 BIRDBEP-20: BIRD (BIRD)62,738 $ BUSD.funBEP-20: BUSD.fun ($ BUSD...)1,000 CATMEMEBEP-20: Cat Of Me... (CATMEM...)1,000 CATPEPEBEP-20: CAT PEPE (CATPEP...)1,000 CATPEPEBEP-20: CAT PEPE (CATPEP...)1,000 CatPantsBEP-20: Cat Wif P... (CatPan...)1 CHILLGUYBEP-20: CHILLGUY (CHILLG...)0.01 CCIDCOMMUNITY CRYPTO ID6.94358287 CMABEP-20: CosmosAI (CMA)0.00000999 RADARBEP-20: DappRadar (RADAR)70 DHORSEBEP-20: DHORSE (DHORSE)1 DAOBEP-20: Distribut... (DAO)1,000 WIFCEOBEP-20: dogewifha... (WIFCEO)70 EXPBEP-20: Expert Op... (EXP)17,045,549.5739811 GLRBEP-20: Game Lead... (GLR)70 GRAPEBEP-20: Grape coi... (GRAPE)1,000 GROKQUEENBEP-20: GROK QUEE... (GROKQU...)146 GROKQUEENBEP-20: GROKQUEEN (GROKQU...)2,700 Reward on initiafi.xyzBEP-20: INIT (Reward...)1,000 KISSBEP-20: kisskitti... (KISS)0.1 LBBEP-20: LB (LB)0.00000001 LETSBBEP-20: Lets Benc... (LETSB)1 LiquidEther rewards on https://stkether.comBEP-20: LiquidEth... (Liquid...)1 MAMABEP-20: MAMMOTH (MAMA)20 MANYBEP-20: Many Toke... (MANY)2 BNB Claim Rewards: https://fomomems.site/BEP-20: MEMES (BNB Cl...)3,470 $ MetaWin.farmBEP-20: MetaWin.f... ($ Meta...)694 $ MetaWin.farmBEP-20: MetaWin.f... ($ Meta...)15 $ MetaWin.farmBEP-20: MetaWin.f... ($ Meta...)60,000 MMBox.orgBEP-20: MMBox.org (MMBox....)0.1 NATGBEP-20: NaturalGa... (NATG)0.0001291 NXBEP-20: Next-Gen ... (NX)5,235.02951687ERC20 ***11,847.846061 nextUSDCnextUSDC6,273.401744ERC20 ***0.91182737 nextWETHnextWETH1 OriginEther rewards on https://stkether.orgBEP-20: OriginEth... (Origin...)0.97954439 FRACTIONOwn a fraction60,000 PPBox.ioBEP-20: PPBox.io (PPBox....)1,000 PsychoPepeBEP-20: PsychoPep... (Psycho...)1 Swap $pufETH at https://puffereth.xyzBEP-20: PufETH (Swap $...)153.8815014 QUCBEP-20: Quantum C... (QUC)6,666 Rare Address Generator at https://rareAddress.comBEP-20: RareAddre... (Rare A...)8,888 TRON Rare Address Generator https://RareTron.orgBEP-20: RareTronO... (TRON R...)106 RATS XBEP-20: RATS X (RATS X)165 RITEBEP-20: RITE Coin (RITE)235.8555 secBEP-20: smile emo... (sec)1 TTBEP-20: Test Toke... (TT)1,000 TVOTESBEP-20: Test Vote... (TVOTES)8.0963091 TBCBEP-20: The Borin... (TBC)1,000 TORTOBEP-20: TORTO (TORTO)9,000 USDТ (stable-event.net)BEP-20: USDТ (sta... (USDТ (...)1,000 WAGORABEP-20: WrappedAG... (WAGORA)9.1167511 XBEP-20: X (X)51.03104045 xURUSBEP-20: xAurox To... (xURUS)2,504.00005 XOCBEP-20: Xocolatl ... (XOC)10.00005 xSPACEBEP-20: xSpace To... (xSPACE)0.06439567 xZOOMERxZoomerCoin$0.00@0.0013 ZEPXBEP-20: ZEPX (ZEPX)9,999 找妹妹+TG:CaoP9BEP-20: 找妹+TG:Cao... (找妹妹+TG...)0.83367828 MANEMANE$0.03@0.03191,000 TokenBEP-20 TOKEN*[Suspicious]5,000,000 TokenBEP-20 TOKEN*[Suspicious]1 TokenBEP-20 TOKEN*[Suspicious]587 TokenBEP-20 TOKEN*[Suspicious]60,000 TokenBEP-20 TOKEN*[Suspicious]8,888 TokenBEP-20 TOKEN*[Spam]1 TokenBEP-20 TOKEN*[Spam]2 TokenBEP-20 TOKEN*[Spam]2 TokenBEP-20 TOKEN*[Spam]1 TokenBEP-20 TOKEN*[Spam]5 TokenBEP-20 TOKEN*[Spam]1 TokenBEP-20 TOKEN*[Spam]25,000 TokenBEP-20 TOKEN*[Spam]NFT Tokens (14)reward-circle.org# reward-circle.orgBEP-1155REWARD# rewardUSDT.orgBEP-1155AirdropMakerVault.orgBEP-1155OETHOETH NFT #1911BEP-1155AirdropStakingETH.orgBEP-1155BEP-1155 TOKEN*[Suspicious]
More Info
Private Name Tags
ContractCreator
- Transactions
- Internal Transactions
- Token Transfers (BEP-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- BEP-20
- NFTs
Latest 25 from a total of 53,723 transactions
Transaction Hash MethodBlockFromToXcall Into Local 44942415 2024-12-17 4:03:56 34 mins ago 1734408236 IN 0 BNB$0.00 0.00021631 1 Xcall Into Local 44938855 2024-12-17 1:05:56 3 hrs ago 1734397556 IN 0 BNB$0.00 0.00021651 1 Xcall Into Local 44935184 2024-12-16 22:02:21 6 hrs ago 1734386541 IN 0 BNB$0.00 0.000216 1 Xcall 44932392 2024-12-16 19:42:45 8 hrs ago 1734378165 IN 0 BNB$0.00 0.0003688 1 Xcall 44932043 2024-12-16 19:25:18 9 hrs ago 1734377118 IN 0 BNB$0.00 0.00033726 1 Xcall Into Local 44931586 2024-12-16 19:02:25 9 hrs ago 1734375745 IN 0 BNB$0.00 0.00022276 1.03 Xcall Into Local 44928008 2024-12-16 16:03:31 12 hrs ago 1734365011 IN 0 BNB$0.00 0.00021515 1 Xcall Into Local 44924392 2024-12-16 13:02:43 15 hrs ago 1734354163 IN 0 BNB$0.00 0.0002177 1 Xcall Into Local 44920794 2024-12-16 10:02:49 18 hrs ago 1734343369 IN 0 BNB$0.00 0.0002179 1.00000001 Remove Swap Liqu... 44919474 2024-12-16 8:56:49 19 hrs ago 1734339409 IN 0 BNB$0.00 0.00048586 3 Xcall Into Local 44917211 2024-12-16 7:03:40 21 hrs ago 1734332620 IN 0 BNB$0.00 0.00021739 1 Xcall Into Local 44913605 2024-12-16 4:03:20 24 hrs ago 1734321800 IN 0 BNB$0.00 0.00021802 1 Xcall Into Local 44909999 2024-12-16 1:03:02 27 hrs ago 1734310982 IN 0 BNB$0.00 0.00021747 1 Xcall Into Local 44908783 2024-12-16 0:02:14 28 hrs ago 1734307334 IN 0 BNB$0.00 0.00021984 1.01 Xcall 44891067 2024-12-15 9:16:21 43 hrs ago 1734254181 IN 0 BNB$0.00 0.00111061 3 Xcall Into Local 44888412 2024-12-15 7:03:36 45 hrs ago 1734246216 IN 0 BNB$0.00 0.00021814 1 Xcall Into Local 44884804 2024-12-15 4:03:11 2 days ago 1734235391 IN 0 BNB$0.00 0.00024161 1.111 Xcall 44884628 2024-12-15 3:54:23 2 days ago 1734234863 IN 0 BNB$0.00 0.00114778 3 Xcall Into Local 44877586 2024-12-14 22:02:17 2 days ago 1734213737 IN 0 BNB$0.00 0.00021716 1 Xcall 44875892 2024-12-14 20:37:35 2 days ago 1734208655 IN 0 BNB$0.00 0.00110686 3 Xcall 44870913 2024-12-14 16:28:38 2 days ago 1734193718 IN 0 BNB$0.00 0.00114653 3 Xcall Into Local 44852392 2024-12-14 1:02:34 3 days ago 1734138154 IN 0 BNB$0.00 0.00021961 1.01 Xcall Into Local 44848791 2024-12-13 22:02:22 3 days ago 1734127342 IN 0 BNB$0.00 0.00021894 1.01 Xcall Into Local 44845199 2024-12-13 19:02:41 3 days ago 1734116561 IN 0 BNB$0.00 0.00024008 1.1 Xcall Into Local 44830802 2024-12-13 7:02:25 3 days ago 1734073345 IN 0 BNB$0.00 0.00021964 1.01 Latest 25 internal transactions (View All)
Parent Transaction Hash Block From To 44925949 2024-12-16 14:20:34 14 hrs ago 1734358834 0.00013533 BNB$0.10 44925949 2024-12-16 14:20:34 14 hrs ago 1734358834 0.00013533 BNB$0.10 44810176 2024-12-12 13:50:59 4 days ago 1734011459 0.07218618 BNB$51.90 44809064 2024-12-12 12:55:23 4 days ago 1734008123 0.00049296 BNB$0.35 44809064 2024-12-12 12:55:23 4 days ago 1734008123 0.00049296 BNB$0.35 44808696 2024-12-12 12:36:59 4 days ago 1734007019 0.00005439 BNB$0.04 44808696 2024-12-12 12:36:59 4 days ago 1734007019 0.00005439 BNB$0.04 44803478 2024-12-12 8:16:05 4 days ago 1733991365 0.00070624 BNB$0.51 44803478 2024-12-12 8:16:05 4 days ago 1733991365 0.00070624 BNB$0.51 44803064 2024-12-12 7:55:23 4 days ago 1733990123 0.00069169 BNB$0.50 44803064 2024-12-12 7:55:23 4 days ago 1733990123 0.00069169 BNB$0.50 44799053 2024-12-12 4:34:50 5 days ago 1733978090 0.00064754 BNB$0.47 44799053 2024-12-12 4:34:50 5 days ago 1733978090 0.00064754 BNB$0.47 44797249 2024-12-12 3:04:36 5 days ago 1733972676 0.00132094 BNB$0.95 44797249 2024-12-12 3:04:36 5 days ago 1733972676 0.00132094 BNB$0.95 44796926 2024-12-12 2:48:27 5 days ago 1733971707 0.00078932 BNB$0.57 44796926 2024-12-12 2:48:27 5 days ago 1733971707 0.00078932 BNB$0.57 44796109 2024-12-12 2:07:36 5 days ago 1733969256 0.00002185 BNB$0.02 44782599 2024-12-11 14:52:03 5 days ago 1733928723 0.00005751 BNB$0.04 44781097 2024-12-11 13:36:57 5 days ago 1733924217 0.00010768 BNB$0.08 44779904 2024-12-11 12:37:18 5 days ago 1733920638 0.00002943 BNB$0.02 44736580 2024-12-10 0:30:59 7 days ago 1733790659 0.00000316 BNB$0.00 44736580 2024-12-10 0:30:59 7 days ago 1733790659 0.00000316 BNB$0.00 44712876 2024-12-09 4:45:41 7 days ago 1733719541 0.00028747 BNB$0.21 44712876 2024-12-09 4:45:41 7 days ago 1733719541 0.00028747 BNB$0.21 Loading...LoadingSimilar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x191D761a...C4938600aThe constructor portion of the code might be different and could alter the actual behaviour of the contractContract Name:ConnextDiamond
Compiler Versionv0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /******************************************************************************\ * 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"; contract ConnextDiamond { struct Initialization { address initContract; bytes initData; } /// @notice This construct a diamond contract /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts. /// @param _diamondCut the list of facet to add /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization. constructor( address _contractOwner, IDiamondCut.FacetCut[] memory _diamondCut, Initialization[] memory _initializations ) payable { if (_contractOwner != address(0)) { LibDiamond.setContractOwner(_contractOwner); } LibDiamond.diamondCut(_diamondCut, address(0), ""); uint256 len = _initializations.length; for (uint256 i = 0; i < len; ) { LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData); unchecked { ++i; } } } // 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.selectorToFacetAndPosition[msg.sig].facetAddress; require(facet != address(0), "Diamond: Function does not exist"); // 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.17; /******************************************************************************\ * 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 Propose to 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 proposeDiamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; event DiamondCutProposed(FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline); /// @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); /// @notice Propose to 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 rescindDiamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; /** * @notice Returns the acceptance time for a given proposal * @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 getAcceptanceTime( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external returns (uint256); event DiamondCutRescinded(FacetCut[] _diamondCut, address _init, bytes _calldata); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /******************************************************************************\ * 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 library LibDiamond { 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; // hash of proposed facets => acceptance time mapping(bytes32 => uint256) acceptanceTimes; // acceptance delay for upgrading facets uint256 acceptanceDelay; } 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(); emit OwnershipTransferred(ds.contractOwner, _newOwner); ds.contractOwner = _newOwner; } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function acceptanceDelay() internal view returns (uint256) { return diamondStorage().acceptanceDelay; } function acceptanceTime(bytes32 _key) internal view returns (uint256) { return diamondStorage().acceptanceTimes[_key]; } function enforceIsContractOwner() internal view { require(msg.sender == diamondStorage().contractOwner, "LibDiamond: !contract owner"); } event DiamondCutProposed(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline); function proposeDiamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { // NOTE: to save gas, verification that `proposeDiamondCut` and `diamondCut` are not // included is performed in `diamondCut`, where there is already a loop over facets. // In the case where these cuts are performed, admins must call `rescindDiamondCut` DiamondStorage storage ds = diamondStorage(); uint256 acceptance = block.timestamp + ds.acceptanceDelay; ds.acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))] = acceptance; emit DiamondCutProposed(_diamondCut, _init, _calldata, acceptance); } event DiamondCutRescinded(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); function rescindDiamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { // NOTE: you can always rescind a proposed facet cut as the owner, even if outside of the validity // period or befor the delay elpases delete diamondStorage().acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))]; emit DiamondCutRescinded(_diamondCut, _init, _calldata); } 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 { DiamondStorage storage ds = diamondStorage(); bytes32 key = keccak256(abi.encode(_diamondCut, _init, _calldata)); if (ds.facetAddresses.length != 0) { uint256 time = ds.acceptanceTimes[key]; require(time != 0 && time <= block.timestamp, "LibDiamond: delay not elapsed"); // Reset the acceptance time to ensure the same set of updates cannot be replayed // without going through a proposal window // NOTE: the only time this will not be set to 0 is when there are no // existing facet addresses (on initialization, or when starting after a bad upgrade, // for example). // The only relevant case is the initial case, which has no acceptance time. otherwise, // there is no way to update the facet selector mapping to call `diamondCut`. // Avoiding setting the empty value will save gas on the initial deployment. delete ds.acceptanceTimes[key]; } // Otherwise, this is the first instance of deployment and it can be set automatically uint256 len = _diamondCut.length; for (uint256 facetIndex; facetIndex < len; ) { 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"); } unchecked { ++facetIndex; } } 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); } uint256 len = _functionSelectors.length; for (uint256 selectorIndex; selectorIndex < len; ) { 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++; unchecked { ++selectorIndex; } } } function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { uint256 len = _functionSelectors.length; require(len != 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 < len; ) { 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++; unchecked { ++selectorIndex; } } } function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length != 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); // get the propose and cut selectors -- can never remove these bytes4 proposeSelector = IDiamondCut.proposeDiamondCut.selector; bytes4 cutSelector = IDiamondCut.diamondCut.selector; // if function does not exist then do nothing and return require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)"); uint256 len = _functionSelectors.length; for (uint256 selectorIndex; selectorIndex < len; ) { bytes4 selector = _functionSelectors[selectorIndex]; require(selector != proposeSelector && selector != cutSelector, "LibDiamondCut: Cannot remove cut selectors"); address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; removeFunction(ds, oldFacetAddress, selector); unchecked { ++selectorIndex; } } } 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)) { require(_calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty"); } else { require(_calldata.length != 0, "LibDiamondCut: _calldata is empty but _init is not address(0)"); if (_init != address(this)) { enforceHasContractCode(_init, "LibDiamondCut: _init address has no code"); } (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length != 0) { // bubble up the error revert(string(error)); } else { revert("LibDiamondCut: _init function reverted"); } } } } function enforceHasContractCode(address _contract, string memory _errorMessage) internal view { require(_contract.code.length != 0, _errorMessage); } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"initContract","type":"address"},{"internalType":"bytes","name":"initData","type":"bytes"}],"internalType":"struct ConnextDiamond.Initialization[]","name":"_initializations","type":"tuple[]"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x60806040523661000b57005b600080356001600160e01b031916815260008051602061128a833981519152602081905260409091205481906001600160a01b0316806100925760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100b1573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205460405160008051602061128a833981519152916001600160a01b03848116929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360040180546001600160a01b0319166001600160a01b0392909216919091179055565b60405160008051602061128a8339815191529060009061016b9086908690869060200161103b565b60408051601f19818403018152919052805160209091012060028301549091501561020f57600081815260058301602052604090205480158015906101b05750428111155b6101fc5760405162461bcd60e51b815260206004820152601d60248201527f4c69624469616d6f6e643a2064656c6179206e6f7420656c61707365640000006044820152606401610089565b5060008181526005830160205260408120555b845160005b818110156103cc5760008782815181106102305761023061113b565b60200260200101516020015190506000600281111561025157610251610fd5565b81600281111561026357610263610fd5565b036102b1576102ac88838151811061027d5761027d61113b565b60200260200101516000015189848151811061029b5761029b61113b565b60200260200101516040015161062d565b6103c3565b60018160028111156102c5576102c5610fd5565b0361030e576102ac8883815181106102df576102df61113b565b6020026020010151600001518984815181106102fd576102fd61113b565b60200260200101516040015161079e565b600281600281111561032257610322610fd5565b0361036b576102ac88838151811061033c5761033c61113b565b60200260200101516000015189848151811061035a5761035a61113b565b602002602001015160400151610927565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b6064820152608401610089565b50600101610214565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516104009392919061103b565b60405180910390a1610412858561041a565b505050505050565b6001600160a01b0382166104a15780511561049d5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d707479000000006064820152608401610089565b5050565b80516000036105185760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f7420616464726573732830290000006064820152608401610089565b6001600160a01b038216301461054a5761054a826040518060600160405280602881526020016112aa60289139610ad9565b600080836001600160a01b0316836040516105659190611151565b600060405180830381855af49150503d80600081146105a0576040519150601f19603f3d011682016040523d82523d6000602084013e6105a5565b606091505b509150915081610627578051156105d0578060405162461bcd60e51b8152600401610089919061116d565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b6064820152608401610089565b50505050565b805160000361064e5760405162461bcd60e51b815260040161008990611187565b60008051602061128a8339815191526001600160a01b0383166106835760405162461bcd60e51b8152600401610089906111d2565b6001600160a01b0383166000908152600182016020526040812054906001600160601b03821690036106b9576106b98285610b07565b825160005b818110156104125760008582815181106106da576106da61113b565b6020908102919091018101516001600160e01b031981166000908152918790526040909120549091506001600160a01b031680156107785760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b6064820152608401610089565b6107848683878b610b71565b8461078e81611234565b95505082600101925050506106be565b805160008190036107c15760405162461bcd60e51b815260040161008990611187565b60008051602061128a8339815191526001600160a01b0384166107f65760405162461bcd60e51b8152600401610089906111d2565b6001600160a01b0384166000908152600182016020526040812054906001600160601b038216900361082c5761082c8286610b07565b60005b8381101561041257600085828151811061084b5761084b61113b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690881681036108f65760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401610089565b610901858284610c11565b61090d8583868b610b71565b8361091781611234565b945050826001019250505061082f565b80516000036109485760405162461bcd60e51b815260040161008990611187565b60008051602061128a833981519152635df91ac760e11b6307e4c70760e21b6001600160a01b038516156109dd5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b6064820152608401610089565b835160005b81811015610ad05760008682815181106109fe576109fe61113b565b60200260200101519050846001600160e01b031916816001600160e01b03191614158015610a3957506001600160e01b031981811690851614155b610a985760405162461bcd60e51b815260206004820152602a60248201527f4c69624469616d6f6e644375743a2043616e6e6f742072656d6f7665206375746044820152692073656c6563746f727360b01b6064820152608401610089565b6001600160e01b031981166000908152602087905260409020546001600160a01b0316610ac6878284610c11565b50506001016109e2565b50505050505050565b806001600160a01b0383163b610b025760405162461bcd60e51b8152600401610089919061116d565b505050565b610b29816040518060600160405280602481526020016112d260249139610ad9565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160e01b0319831660008181526020868152604080832080546001600160601b03909716600160a01b026001600160a01b0397881617815594909516808352600180890183529583208054968701815583528183206008870401805460e09890981c60046007909816979097026101000a96870263ffffffff9097021990971695909517909555529290915281546001600160a01b031916179055565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401610089565b306001600160a01b03831603610cfc5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401610089565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610d4b9161125a565b9050808214610e3d576001600160a01b03841660009081526001860160205260408120805483908110610d8057610d8061113b565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610dd157610dd161113b565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610e6657610e66611273565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003610fce576002850154600090610ec99060019061125a565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610f78576000876002018381548110610f0857610f0861113b565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610f3957610f3961113b565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610f8b57610f8b611273565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505b5050505050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015611006578181015183820152602001610fee565b50506000910152565b60008151808452611027816020860160208601610feb565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561110b57898403607f19018652815180516001600160a01b031685528381015189860190600381106110aa57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156110f65783516001600160e01b03191682529286019260019290920191908601906110cc565b50978501979550505090820190600101611064565b50506001600160a01b038a1690880152868103604088015261112d818961100f565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b60008251611163818460208701610feb565b9190910192915050565b602081526000611180602083018461100f565b9392505050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038083168181036112505761125061121e565b6001019392505050565b8181038181111561126d5761126d61121e565b92915050565b634e487b7160e01b600052603160045260246000fdfec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212203b1f4ed65a6bab0f6c2f33b7eaa1e2b892847a6c215922d52116d1d72f8895c164736f6c63430008110033
Loading...LoadingLoading...LoadingABI for the implementation contract at 0x9ab5f562dc2acccd1b80d6564b770786e38f0686, likely using a custom proxy implementation.Learn more about proxy contracts in our Knowledge Base
Loading...LoadingABI for the implementation contract at 0x9ab5f562dc2acccd1b80d6564b770786e38f0686, likely using a custom proxy implementation.Learn more about proxy contracts in our Knowledge Base
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingMultichain Portfolio | 30 Chains
[ 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.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to VerbatimInvalidDeduplication (low-severity), FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.