Source Code
Overview
POL Balance
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 31 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Lock LP | 16805473 | 64 days ago | IN | 3.0202299 POL | 0.04699323 | ||||
Lock LP | 16682173 | 67 days ago | IN | 0.72588567 POL | 0.00626558 | ||||
Lock LP | 16677711 | 67 days ago | IN | 0.72588567 POL | 0.0061986 | ||||
Lock LP | 16676852 | 67 days ago | IN | 0.72588567 POL | 0.00588052 | ||||
Lock LP | 16658982 | 67 days ago | IN | 13.9886989 POL | 0.009773 | ||||
Lock LP | 16623531 | 68 days ago | IN | 16.16425481 POL | 0.01200398 | ||||
Lock LP | 16567311 | 70 days ago | IN | 0.72588567 POL | 0.00648177 | ||||
Lock LP | 16479234 | 72 days ago | IN | 0.72588567 POL | 0.00501016 | ||||
Lock LP | 16470928 | 72 days ago | IN | 0.72588567 POL | 0.00486402 | ||||
Lock LP | 16378966 | 74 days ago | IN | 0.72588567 POL | 0.00501016 | ||||
Lock LP | 16357306 | 75 days ago | IN | 0.72588567 POL | 0.00626316 | ||||
Lock LP | 16263394 | 77 days ago | IN | 0.72588567 POL | 0.00461339 | ||||
Lock LP | 16224239 | 78 days ago | IN | 0.72588567 POL | 0.00441117 | ||||
Lock LP | 16224140 | 78 days ago | IN | 0.72588567 POL | 0.01630919 | ||||
Lock LP | 16178336 | 79 days ago | IN | 0.72588567 POL | 0.00801663 | ||||
Lock LP | 16178331 | 79 days ago | IN | 0.72588567 POL | 0.00801663 | ||||
Lock LP | 16145753 | 80 days ago | IN | 0.72588567 POL | 0.00799021 | ||||
Lock LP | 16134779 | 80 days ago | IN | 0.72588567 POL | 0.00492132 | ||||
Lock LP | 16112401 | 81 days ago | IN | 0.72588567 POL | 0.00588052 | ||||
Lock LP | 16031013 | 83 days ago | IN | 2.86879225 POL | 0.01165766 | ||||
Lock LP | 15868012 | 87 days ago | IN | 2.99433196 POL | 0.00887252 | ||||
Lock LP | 15789138 | 89 days ago | IN | 0.72588567 POL | 0.00665381 | ||||
Lock LP | 15763244 | 89 days ago | IN | 0.72588567 POL | 0.00619814 | ||||
Lock LP | 15763029 | 89 days ago | IN | 2.78028127 POL | 0.01183003 | ||||
Lock LP | 15751246 | 90 days ago | IN | 2.78028127 POL | 0.01236365 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16805473 | 64 days ago | 3.0202299 POL | ||||
16682173 | 67 days ago | 0.72588567 POL | ||||
16677711 | 67 days ago | 0.72588567 POL | ||||
16676852 | 67 days ago | 0.72588567 POL | ||||
16658982 | 67 days ago | 13.9886989 POL | ||||
16623531 | 68 days ago | 16.16425481 POL | ||||
16567311 | 70 days ago | 0.72588567 POL | ||||
16479234 | 72 days ago | 0.72588567 POL | ||||
16470928 | 72 days ago | 0.72588567 POL | ||||
16378966 | 74 days ago | 0.72588567 POL | ||||
16357306 | 75 days ago | 0.72588567 POL | ||||
16263394 | 77 days ago | 0.72588567 POL | ||||
16224239 | 78 days ago | 0.72588567 POL | ||||
16224140 | 78 days ago | 0.72588567 POL | ||||
16178336 | 79 days ago | 0.72588567 POL | ||||
16178331 | 79 days ago | 0.72588567 POL | ||||
16145753 | 80 days ago | 0.72588567 POL | ||||
16134779 | 80 days ago | 0.72588567 POL | ||||
16112401 | 81 days ago | 0.72588567 POL | ||||
16031013 | 83 days ago | 2.86879225 POL | ||||
15868012 | 87 days ago | 2.99433196 POL | ||||
15789138 | 89 days ago | 0.72588567 POL | ||||
15763244 | 89 days ago | 0.72588567 POL | ||||
15763029 | 89 days ago | 2.78028127 POL | ||||
15751246 | 90 days ago | 2.78028127 POL |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LockLPLightChain
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; import "../lightChains/Owned.sol"; import "../lightChains/MixinResolver.sol"; import "../interfaces/ISynthrBridgeLightChain.sol"; import "../interfaces/IERC20.sol"; import "../interfaces/ISystemStatus.sol"; contract LockLPLightChain is MixinResolver, Owned { // ========== STATE VARIABLES ========== address public lpToken; bytes32 public constant CONTRACT_NAME = "LockLP"; bytes32 private constant CONTRACT_SYSTEMSTATUS = "SystemStatus"; uint16 internal constant PT_LOCK_LP = 16; modifier systemActive() { _systemActive(); _; } event LPLocked(address indexed account, bytes32 bridgeName, uint256 amount); event LPUnlocked(address indexed account, uint256 amount); constructor( address _owner, address _resolver, address _lpToken ) Owned(_owner) MixinResolver(_resolver) { lpToken = _lpToken; } // Note: use public visibility so that it can be invoked in a subclass function resolverAddressesRequired() public pure override returns (bytes32[] memory addresses) { addresses = new bytes32[](1); addresses[0] = CONTRACT_SYSTEMSTATUS; } function _systemActive() private view { systemStatus().requireSystemActive(); } function systemStatus() internal view returns (ISystemStatus) { return ISystemStatus(requireAndGetAddress(CONTRACT_SYSTEMSTATUS)); } function synthrBridge(bytes32 bridgeName) internal view returns (ISynthrBridge) { return ISynthrBridge(resolver.getAvailableBridge(bridgeName)); } function getLockLPgasFee( address _account, uint256 _amount, bytes32 _bridgeName, uint16 _destChainId ) external view returns (uint256) { bytes memory lzPayload = abi.encode(PT_LOCK_LP, abi.encodePacked(_account), _amount); return synthrBridge(_bridgeName).calcFee(lzPayload, PT_LOCK_LP, _destChainId); } function lockLP( uint256 _amount, bytes32 _bridgeName, bool _erc20Payment ) external payable systemActive { require( IERC20(lpToken).transferFrom(msg.sender, address(this), _amount), "LP token transfer failed" ); require(msg.value > 0, "LockLP: msg.value must be greater than 0"); synthrBridge(_bridgeName).sendLockLP{value: msg.value}(msg.sender, _amount, _erc20Payment); emit LPLocked(msg.sender, _bridgeName, _amount); } function unlockLP(address _to, uint256 _amount) external onlySynthrBridge { IERC20(lpToken).transfer(_to, _amount); emit LPUnlocked(_to, _amount); } function setLpToken(address _lpToken) external onlyOwner { lpToken = _lpToken; } modifier onlySynthrBridge() { require( resolver.isBridge(msg.sender), "LockLP: Only the SynthrBridge contract can perform this action" ); _; } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; interface IAddressResolver { function getAddress(bytes32 name) external view returns (address); function getSynth(bytes32 key) external view returns (address); function getAvailableBridge(bytes32 bridgeName) external view returns (address); function getBridgeList() external view returns (bytes32[] memory); function requireAndGetAddress( bytes32 name, string calldata reason ) external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; interface IERC20 { // ERC20 Optional Views function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); // Views function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); // Mutative functions function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); // Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; interface IExchanger { struct ExchangeEntrySettlement { bytes32 src; uint256 amount; bytes32 dest; uint256 reclaim; uint256 rebate; uint256 srcRoundIdAtPeriodEnd; uint256 destRoundIdAtPeriodEnd; uint256 timestamp; } struct ExchangeEntry { uint256 sourceRate; uint256 destinationRate; uint256 destinationAmount; uint256 exchangeFeeRate; uint256 exchangeDynamicFeeRate; uint256 roundIdForSrc; uint256 roundIdForDest; } struct ExchangeArgs { address fromAccount; address destAccount; bytes32 sourceCurrencyKey; bytes32 destCurrencyKey; uint256 sourceAmount; uint256 destAmount; uint256 fee; uint256 reclaimed; uint256 refunded; uint16 destChainId; bool erc20Payment; } // Views function calculateAmountAfterSettlement( address from, bytes32 currencyKey, uint256 amount, uint256 refunded ) external view returns (uint256 amountAfterSettlement); function isSynthRateInvalid(bytes32 currencyKey) external view returns (bool); function maxSecsLeftInWaitingPeriod( address account, bytes32 currencyKey ) external view returns (uint256); function settlementOwing( address account, bytes32 currencyKey ) external view returns (uint256 reclaimAmount, uint256 rebateAmount, uint256 numEntries); // function hasWaitingPeriodOrSettlementOwing(address account, bytes32 currencyKey) external view returns (bool); function feeRateForExchange( bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey ) external view returns (uint256); function dynamicFeeRateForExchange( bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey ) external view returns (uint256 feeRate, bool tooVolatile); function getAmountsForExchange( uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey ) external view returns (uint256 amountReceived, uint256 fee, uint256 exchangeFeeRate); // function priceDeviationThresholdFactor() external view returns (uint256); // function waitingPeriodSecs() external view returns (uint256); // function lastExchangeRate(bytes32 currencyKey) external view returns (uint256); // Mutative functions function exchange( ExchangeArgs calldata args, bytes32 bridgeName ) external payable returns (uint256 amountReceived); function exchangeAtomically( uint256 minAmount, ExchangeArgs calldata args, bytes32 bridgeName ) external payable returns (uint256 amountReceived); function settle( address from, bytes32 currencyKey ) external returns (uint256 reclaimed, uint256 refunded, uint256 numEntries); function suspendSynthWithInvalidRate(bytes32 currencyKey) external; function updateDestinationForExchange( address recipient, bytes32 destinationKey, uint256 destinationAmount ) external; }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; import "../interfaces/ISynth.sol"; interface IIssuer { // Views function allNetworksDebtInfo() external view returns (uint256 debt, uint256 sharesSupply); function availableCurrencyKeys() external view returns (bytes32[] memory); function availableSynthCount() external view returns (uint256); function availableSynths(uint256 index) external view returns (ISynth); function canBurnSynths(address account) external view returns (bool); function collateral(address account) external view returns (uint256); function collateralisationRatio(address issuer) external view returns (uint256); function collateralisationRatioAndAnyRatesInvalid( address _issuer ) external view returns (uint256 cratio, bool anyRateIsInvalid); function debtBalanceOf(address issuer) external view returns (uint256 debtBalance); function issuanceRatio() external view returns (uint256); function lastIssueEvent(address account) external view returns (uint256); function maxIssuableSynths(address issuer) external view returns (uint256 maxIssuable); function minimumStakeTime() external view returns (uint256); function remainingIssuableSynths( address issuer ) external view returns (uint256 maxIssuable, uint256 alreadyIssued, uint256 totalSystemDebt); function synths(bytes32 currencyKey) external view returns (ISynth); function getSynths(bytes32[] calldata currencyKeys) external view returns (ISynth[] memory); function synthsByAddress(address synthAddress) external view returns (bytes32); function totalIssuedSynths(bytes32 currencyKey) external view returns (uint256); function checkFreeCollateral( address _issuer, bytes32 _collateralKey, uint16 _chainId ) external view returns (uint256 withdrawableSynthr); function issueSynths( address from, uint256 amount, uint256 destChainId ) external returns (uint256 synthAmount, uint256 debtShare); function issueMaxSynths( address from, uint256 destChainId ) external returns (uint256 synthAmount, uint256 debtShare); function burnSynths( address from, bytes32 synthKey, uint256 amount ) external returns (uint256 synthAmount, uint256 debtShare, uint256 reclaimed, uint256 refunded); function burnSynthsToTarget( address from, bytes32 synthKey ) external returns (uint256 synthAmount, uint256 debtShare, uint256 reclaimed, uint256 refunded); function burnForRedemption( address deprecatedSynthProxy, address account, uint256 balance ) external; function burnSynthsWithoutDebt( bytes32 currencyKey, address from, uint amount ) external returns (uint256 burnAmount); function synthIssueFromSynthrSwap( address _account, bytes32 _synthKey, uint256 _synthAmount ) external; function liquidateAccount( address account, bytes32 collateralKey, uint16 chainId, bool isSelfLiquidation ) external returns (uint256 totalRedeemed, uint256 amountToLiquidate, uint256 sharesToRemove); function destIssue(address _account, bytes32 _synthKey, uint256 _synthAmount) external; function destBurn( address _account, bytes32 _synthKey, uint256 _synthAmount ) external returns (uint256); function transferMargin(address account, uint256 marginDelta) external returns (uint256); function destTransferMargin( address _account, uint256 _marginDelta, bytes32 _marketKey ) external returns (bool); function setCurrentPeriodId(uint128 periodId) external; }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; interface ISynth { // Views function balanceOf(address _account) external view returns (uint256); function currencyKey() external view returns (bytes32); function transferableSynths(address account) external view returns (uint256); // Mutative functions function transferAndSettle(address to, uint256 value) external payable returns (bool); function transferFromAndSettle( address from, address to, uint256 value ) external payable returns (bool); function burn(address account, uint256 amount) external; function issue(address account, uint256 amount) external; }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; import "./IExchanger.sol"; interface ISynthrBridge { /* ========== MUTATIVE FUNCTIONS ========== */ function sendDepositCollateral( address account, bytes32 collateralKey, uint256 amount, bool erc20Payment ) external payable; function sendBurn( address account, bytes32 synthKey, uint256 amount, bool erc20Payment ) external payable; function sendExchange( address account, bytes32 srcSynthKey, bytes32 dstSynthKey, uint256 srcAmount, uint256 dstAmount, uint256 reclaimed, uint256 refunded, uint256 fee, uint16 dstChainId, bool erc20Payment ) external payable; // function sendBridgeSyToken( // address account, // bytes32 synthKey, // uint256 amount, // uint16 dstChainId, // bool erc20Payment // ) external payable; function sendTransferMargin( address account, uint256 amount, bytes32 marketKey, bool erc20Payment ) external payable; function sendCrossSwapSyAssetToNative( address account, bytes32 srcKey, uint256 srcAmount, bytes32 dstKey, uint256 dstAmount, uint16 dstChainId, uint256 fee, bytes calldata dexPayload, address dexAddress, bool erc20Payment ) external payable; function sendCrossSwapNativeToSyAsset( address account, bytes32 srcKey, uint256 srcAmount, bytes32 dstKey, uint256 dstAmount, uint16 dstChainId, uint256 fee, bool erc20Payment ) external payable; function sendCrossSwapNativeToNative( address account, bytes32 srcKey, uint256 srcAmount, bytes32 dstKey, uint256 dstAmount, uint16 dstChainId, uint256 fee, address dexAddress, bytes calldata dexPayload, bool erc20Payment ) external payable; function sendCrossSwapSyAssetToNativeWithDex( address account, bytes32 srcKey, uint256 srcAmount, bytes32 dstKey, uint256 dstAmount, uint16 dstChainId, uint256 fee, bool erc20Payment ) external payable; function sendCrossSwapNativeToNativeWithDex( address account, bytes32 srcKey, uint256 srcAmount, bytes32 dstKey, uint256 dstAmount, uint16 dstChainId, uint256 fee, bool erc20Payment ) external payable; // function sendExchange(IExchanger.ExchangeArgs calldata args) external payable; function calcFee( bytes memory lzPayload, uint16 packetType, uint16 dstChainId ) external view returns (uint256 lzFee); function sendLockLP(address account, uint256 amount, bool erc20Payment) external payable; }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; interface ISystemStatus { struct Status { bool canSuspend; bool canResume; } struct Suspension { bool suspended; // reason is an integer code, // 0 => no reason, 1 => upgrading, 2+ => defined by system usage uint248 reason; } // Views function accessControl( bytes32 section, address account ) external view returns (bool canSuspend, bool canResume); function requireSystemActive() external view; function systemSuspended() external view returns (bool); function requireIssuanceActive() external view; function requireExchangeActive() external view; function requireFuturesActive() external view; function requireFuturesMarketActive(bytes32 marketKey) external view; function requireExchangeBetweenSynthsAllowed( bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey ) external view; function requireSynthActive(bytes32 currencyKey) external view; function synthSuspended(bytes32 currencyKey) external view returns (bool); function requireSynthsActive( bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey ) external view; function systemSuspension() external view returns (bool suspended, uint248 reason); function issuanceSuspension() external view returns (bool suspended, uint248 reason); function exchangeSuspension() external view returns (bool suspended, uint248 reason); function futuresSuspension() external view returns (bool suspended, uint248 reason); function synthExchangeSuspension( bytes32 currencyKey ) external view returns (bool suspended, uint248 reason); function synthSuspension( bytes32 currencyKey ) external view returns (bool suspended, uint248 reason); function futuresMarketSuspension( bytes32 marketKey ) external view returns (bool suspended, uint248 reason); function getSynthExchangeSuspensions( bytes32[] calldata synths ) external view returns (bool[] memory exchangeSuspensions, uint256[] memory reasons); function getSynthSuspensions( bytes32[] calldata synths ) external view returns (bool[] memory suspensions, uint256[] memory reasons); function getFuturesMarketSuspensions( bytes32[] calldata marketKeys ) external view returns (bool[] memory suspensions, uint256[] memory reasons); // Restricted functions function suspendIssuance(uint256 reason) external; function suspendSynth(bytes32 currencyKey, uint256 reason) external; function suspendFuturesMarket(bytes32 marketKey, uint256 reason) external; function updateAccessControl( bytes32 section, address account, bool canSuspend, bool canResume ) external; }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; // Inheritance import "./Owned.sol"; import "../interfaces/IAddressResolver.sol"; // Internal references import "../interfaces/IIssuer.sol"; import "./MixinResolver.sol"; contract AddressResolverLightChain is Owned, IAddressResolver { mapping(bytes32 => address) public repository; mapping(bytes32 => address) public availableBridge; mapping(address => bool) public isBridge; bytes32[] public bridgeList; constructor(address _owner) Owned(_owner) {} /* ========== RESTRICTED FUNCTIONS ========== */ function importAddresses( bytes32[] calldata names, address[] calldata destinations ) external onlyOwner { require(names.length == destinations.length, "Input lengths must match"); for (uint256 i = 0; i < names.length; i++) { bytes32 name = names[i]; address destination = destinations[i]; repository[name] = destination; emit AddressImported(name, destination); } } function addAvailableBridge(bytes32 bridgeName, address bridgeAddress) external onlyOwner { _addAvailableBridge(bridgeName, bridgeAddress); } function removeAvailableBridge(bytes32 bridgeName) external onlyOwner { _removeAvailableBridge(bridgeName); } /* ========= PUBLIC FUNCTIONS ========== */ function rebuildCaches(MixinResolver[] calldata destinations) external { for (uint256 i = 0; i < destinations.length; i++) { destinations[i].rebuildCache(); } } /* ========== PRIVATE FUNCTIONS ========== */ function _addAvailableBridge(bytes32 bridgeName, address bridgeAddress) private { if (availableBridge[bridgeName] != address(0)) { _removeAvailableBridge(bridgeName); } availableBridge[bridgeName] = bridgeAddress; isBridge[bridgeAddress] = true; bridgeList.push(bridgeName); emit AddBridge(bridgeName, bridgeAddress); } function _removeAvailableBridge(bytes32 bridgeName) private { require(availableBridge[bridgeName] != address(0), "The bridge no exist."); uint lastBridgeNumber = bridgeList.length - 1; for (uint ii = 0; ii <= lastBridgeNumber; ii++) { if (bridgeList[ii] == bridgeName) { bridgeList[ii] = bridgeList[lastBridgeNumber]; bridgeList.pop(); break; } } address bridgeToRemove = availableBridge[bridgeName]; delete availableBridge[bridgeName]; delete isBridge[bridgeToRemove]; emit RemoveBridge(bridgeName, bridgeToRemove); } /* ========== VIEWS ========== */ function areAddressesImported( bytes32[] calldata names, address[] calldata destinations ) external view returns (bool) { for (uint256 i = 0; i < names.length; i++) { if (repository[names[i]] != destinations[i]) { return false; } } return true; } function getAddress(bytes32 name) external view returns (address) { return repository[name]; } function requireAndGetAddress( bytes32 name, string calldata reason ) external view returns (address) { address _foundAddress = repository[name]; require(_foundAddress != address(0), reason); return _foundAddress; } function getSynth(bytes32 key) external view returns (address) { IIssuer issuer = IIssuer(repository["Issuer"]); require(address(issuer) != address(0), "Cannot find Issuer address"); return address(issuer.synths(key)); } function getAvailableBridge(bytes32 bridgeName) external view returns (address) { return availableBridge[bridgeName]; } function getBridgeList() external view returns (bytes32[] memory) { return bridgeList; } /* ========== EVENTS ========== */ event AddressImported(bytes32 name, address destination); event AddBridge(bytes32 indexed bridgeName, address bridgeAddress); event RemoveBridge(bytes32 indexed bridgeName, address bridgeAddress); }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; // Internal references import "./AddressResolverLightChain.sol"; contract MixinResolver { AddressResolverLightChain public resolver; mapping(bytes32 => address) private addressCache; constructor(address _resolver) { resolver = AddressResolverLightChain(_resolver); } /* ========== INTERNAL FUNCTIONS ========== */ function combineArrays( bytes32[] memory first, bytes32[] memory second ) internal pure returns (bytes32[] memory combination) { combination = new bytes32[](first.length + second.length); for (uint256 i = 0; i < first.length; i++) { combination[i] = first[i]; } for (uint256 j = 0; j < second.length; j++) { combination[first.length + j] = second[j]; } } /* ========== PUBLIC FUNCTIONS ========== */ // Note: this function is public not external in order for it to be overridden and invoked via super in subclasses function resolverAddressesRequired() public view virtual returns (bytes32[] memory addresses) {} function rebuildCache() public { bytes32[] memory requiredAddresses = resolverAddressesRequired(); // The resolver must call this function whenver it updates its state for (uint256 i = 0; i < requiredAddresses.length; i++) { bytes32 name = requiredAddresses[i]; // Note: can only be invoked once the resolver has all the targets needed added address destination = resolver.requireAndGetAddress( name, string(abi.encodePacked("Resolver missing target: ", name)) ); addressCache[name] = destination; emit CacheUpdated(name, destination); } } /* ========== VIEWS ========== */ function isResolverCached() external view returns (bool) { bytes32[] memory requiredAddresses = resolverAddressesRequired(); for (uint256 i = 0; i < requiredAddresses.length; i++) { bytes32 name = requiredAddresses[i]; // false if our cache is invalid or if the resolver doesn't have the required address if ( resolver.getAddress(name) != addressCache[name] || addressCache[name] == address(0) ) { return false; } } return true; } /* ========== INTERNAL FUNCTIONS ========== */ function requireAndGetAddress(bytes32 name) internal view returns (address) { address _foundAddress = addressCache[name]; require(_foundAddress != address(0), string(abi.encodePacked("Missing address: ", name))); return _foundAddress; } /* ========== EVENTS ========== */ event CacheUpdated(bytes32 name, address destination); }
// SPDX-License-Identifier: MIT pragma solidity =0.8.24; contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require( msg.sender == nominatedOwner, "You must be nominated before you can accept ownership" ); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner() { _onlyOwner(); _; } function _onlyOwner() private view { require(msg.sender == owner, "Only the contract owner may perform this action"); } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_resolver","type":"address"},{"internalType":"address","name":"_lpToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"CacheUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"bridgeName","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LPLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LPUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[],"name":"CONTRACT_NAME","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_bridgeName","type":"bytes32"},{"internalType":"uint16","name":"_destChainId","type":"uint16"}],"name":"getLockLPgasFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isResolverCached","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_bridgeName","type":"bytes32"},{"internalType":"bool","name":"_erc20Payment","type":"bool"}],"name":"lockLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lpToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebuildCache","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolver","outputs":[{"internalType":"contract AddressResolverLightChain","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resolverAddressesRequired","outputs":[{"internalType":"bytes32[]","name":"addresses","type":"bytes32[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"setLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unlockLP","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161117d38038061117d83398101604081905261002f91610141565b600080546001600160a01b0319166001600160a01b0384811691909117909155839081166100a35760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600280546001600160a01b0319166001600160a01b038316908117909155604080516000815260208101929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150600480546001600160a01b0319166001600160a01b0392909216919091179055506101849050565b80516001600160a01b038116811461013c57600080fd5b919050565b60008060006060848603121561015657600080fd5b61015f84610125565b925061016d60208501610125565b915061017b60408501610125565b90509250925092565b610fea806101936000396000f3fe6080604052600436106100dd5760003560e01c8063741853601161007f5780638da5cb5b116100595780638da5cb5b1461023d5780639ee933b51461025d578063c155a8e21461027d578063fa97b9221461029d57600080fd5b806374185360146101f157806379ba509714610206578063899ffef41461021b57600080fd5b80632af64bd3116100bb5780632af64bd31461016f57806353a47bb7146101945780635fcbd285146101b4578063614d08f8146101d457600080fd5b806304f3bcec146100e257806312534c161461011f5780631627540c1461014d575b600080fd5b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012b57600080fd5b5061013f61013a366004610d4a565b6102b0565b604051908152602001610116565b34801561015957600080fd5b5061016d610168366004610d9b565b610389565b005b34801561017b57600080fd5b506101846103e5565b6040519015158152602001610116565b3480156101a057600080fd5b50600354610102906001600160a01b031681565b3480156101c057600080fd5b50600454610102906001600160a01b031681565b3480156101e057600080fd5b5061013f6504c6f636b4c560d41b81565b3480156101fd57600080fd5b5061016d6104ea565b34801561021257600080fd5b5061016d610663565b34801561022757600080fd5b50610230610752565b6040516101169190610dbf565b34801561024957600080fd5b50600254610102906001600160a01b031681565b34801561026957600080fd5b5061016d610278366004610d9b565b6107a6565b34801561028957600080fd5b5061016d610298366004610e03565b6107d0565b61016d6102ab366004610e3d565b61096f565b60408051606086901b6bffffffffffffffffffffffff19166020820152815160148183030181526034820190925260009182916102f4916010918890605401610ebc565b604051602081830303815290604052905061030e84610b56565b6001600160a01b0316632bb821bd826010866040518463ffffffff1660e01b815260040161033e93929190610ee9565b602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190610f17565b9695505050505050565b610391610bc9565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6000806103f0610752565b905060005b81518110156104e157600082828151811061041257610412610f30565b60209081029190910181015160008181526001909252604080832054925490516321f8a72160e01b8152600481018390529193506001600160a01b039283169216906321f8a72190602401602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e9190610f46565b6001600160a01b03161415806104c957506000818152600160205260409020546001600160a01b0316155b156104d8576000935050505090565b506001016103f5565b50600191505090565b60006104f4610752565b905060005b815181101561065f57600082828151811061051657610516610f30565b6020026020010151905060008060009054906101000a90046001600160a01b03166001600160a01b031663dacb2d01838460405160200161058391907f5265736f6c766572206d697373696e67207461726765743a20000000000000008152601981019190915260390190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016105af929190610f63565b602060405180830381865afa1580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f09190610f46565b60008381526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251868152918201529192507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa68910160405180910390a150506001016104f9565b5050565b6003546001600160a01b031633146106e05760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b600254600354604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b604080516001808252818301909252606091602080830190803683370190505090506b53797374656d53746174757360a01b8160008151811061079757610797610f30565b60200260200101818152505090565b6107ae610bc9565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600054604051633933006760e11b81523360048201526001600160a01b039091169063726600ce90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190610f84565b6108ae5760405162461bcd60e51b815260206004820152603e60248201527f4c6f636b4c503a204f6e6c79207468652053796e74687242726964676520636f60448201527f6e74726163742063616e20706572666f726d207468697320616374696f6e000060648201526084016106d7565b6004805460405163a9059cbb60e01b81526001600160a01b03858116938201939093526024810184905291169063a9059cbb906044016020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190610f84565b50816001600160a01b03167f2eab39e96175731c01c457424b5afe77321256924558c30352fca0eb622a9c7e8260405161096391815260200190565b60405180910390a25050565b610977610c3d565b600480546040516323b872dd60e01b81523392810192909252306024830152604482018590526001600160a01b0316906323b872dd906064016020604051808303816000875af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190610f84565b610a3f5760405162461bcd60e51b815260206004820152601860248201527f4c5020746f6b656e207472616e73666572206661696c6564000000000000000060448201526064016106d7565b60003411610aa05760405162461bcd60e51b815260206004820152602860248201527f4c6f636b4c503a206d73672e76616c7565206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016106d7565b610aa982610b56565b60405163e60a8b4b60e01b81523360048201526024810185905282151560448201526001600160a01b03919091169063e60a8b4b9034906064016000604051808303818588803b158015610afc57600080fd5b505af1158015610b10573d6000803e3d6000fd5b505060408051868152602081018890523394507fbe50c0b712540d175145f047335615d983ed6379c41afec4f3d96672cd9670ca935001905060405180910390a2505050565b6000805460405162c8ac9760e41b8152600481018490526001600160a01b0390911690630c8ac97090602401602060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc39190610f46565b92915050565b6002546001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016106d7565b565b610c45610c97565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b158015610c7d57600080fd5b505afa158015610c91573d6000803e3d6000fd5b50505050565b6000610cb16b53797374656d53746174757360a01b610cb6565b905090565b600081815260016020908152604080832054905170026b4b9b9b4b7339030b2323932b9b99d1607d1b92810192909252603182018490526001600160a01b0316908115159060510160405160208183030381529060405290610d2b5760405162461bcd60e51b81526004016106d79190610fa1565b5092915050565b6001600160a01b0381168114610d4757600080fd5b50565b60008060008060808587031215610d6057600080fd5b8435610d6b81610d32565b93506020850135925060408501359150606085013561ffff81168114610d9057600080fd5b939692955090935050565b600060208284031215610dad57600080fd5b8135610db881610d32565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610df757835183529284019291840191600101610ddb565b50909695505050505050565b60008060408385031215610e1657600080fd5b8235610e2181610d32565b946020939093013593505050565b8015158114610d4757600080fd5b600080600060608486031215610e5257600080fd5b83359250602084013591506040840135610e6b81610e2f565b809150509250925092565b6000815180845260005b81811015610e9c57602081850181015186830182015201610e80565b506000602082860101526020601f19601f83011685010191505092915050565b61ffff84168152606060208201526000610ed96060830185610e76565b9050826040830152949350505050565b606081526000610efc6060830186610e76565b61ffff94851660208401529290931660409091015292915050565b600060208284031215610f2957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f5857600080fd5b8151610db881610d32565b828152604060208201526000610f7c6040830184610e76565b949350505050565b600060208284031215610f9657600080fd5b8151610db881610e2f565b602081526000610db86020830184610e7656fea26469706673582212203028f6acb4f15247793f0ff3e79dcc8f7c69f4b0cb1d1574e299a581cdca2b1964736f6c634300081800330000000000000000000000007802edc1ae4c39ed9f3dd2759007b9cb31b347a3000000000000000000000000a996800258629fe4064fa98758e122ad677206130000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c8063741853601161007f5780638da5cb5b116100595780638da5cb5b1461023d5780639ee933b51461025d578063c155a8e21461027d578063fa97b9221461029d57600080fd5b806374185360146101f157806379ba509714610206578063899ffef41461021b57600080fd5b80632af64bd3116100bb5780632af64bd31461016f57806353a47bb7146101945780635fcbd285146101b4578063614d08f8146101d457600080fd5b806304f3bcec146100e257806312534c161461011f5780631627540c1461014d575b600080fd5b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012b57600080fd5b5061013f61013a366004610d4a565b6102b0565b604051908152602001610116565b34801561015957600080fd5b5061016d610168366004610d9b565b610389565b005b34801561017b57600080fd5b506101846103e5565b6040519015158152602001610116565b3480156101a057600080fd5b50600354610102906001600160a01b031681565b3480156101c057600080fd5b50600454610102906001600160a01b031681565b3480156101e057600080fd5b5061013f6504c6f636b4c560d41b81565b3480156101fd57600080fd5b5061016d6104ea565b34801561021257600080fd5b5061016d610663565b34801561022757600080fd5b50610230610752565b6040516101169190610dbf565b34801561024957600080fd5b50600254610102906001600160a01b031681565b34801561026957600080fd5b5061016d610278366004610d9b565b6107a6565b34801561028957600080fd5b5061016d610298366004610e03565b6107d0565b61016d6102ab366004610e3d565b61096f565b60408051606086901b6bffffffffffffffffffffffff19166020820152815160148183030181526034820190925260009182916102f4916010918890605401610ebc565b604051602081830303815290604052905061030e84610b56565b6001600160a01b0316632bb821bd826010866040518463ffffffff1660e01b815260040161033e93929190610ee9565b602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190610f17565b9695505050505050565b610391610bc9565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6000806103f0610752565b905060005b81518110156104e157600082828151811061041257610412610f30565b60209081029190910181015160008181526001909252604080832054925490516321f8a72160e01b8152600481018390529193506001600160a01b039283169216906321f8a72190602401602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e9190610f46565b6001600160a01b03161415806104c957506000818152600160205260409020546001600160a01b0316155b156104d8576000935050505090565b506001016103f5565b50600191505090565b60006104f4610752565b905060005b815181101561065f57600082828151811061051657610516610f30565b6020026020010151905060008060009054906101000a90046001600160a01b03166001600160a01b031663dacb2d01838460405160200161058391907f5265736f6c766572206d697373696e67207461726765743a20000000000000008152601981019190915260390190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016105af929190610f63565b602060405180830381865afa1580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f09190610f46565b60008381526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251868152918201529192507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa68910160405180910390a150506001016104f9565b5050565b6003546001600160a01b031633146106e05760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b600254600354604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b604080516001808252818301909252606091602080830190803683370190505090506b53797374656d53746174757360a01b8160008151811061079757610797610f30565b60200260200101818152505090565b6107ae610bc9565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600054604051633933006760e11b81523360048201526001600160a01b039091169063726600ce90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190610f84565b6108ae5760405162461bcd60e51b815260206004820152603e60248201527f4c6f636b4c503a204f6e6c79207468652053796e74687242726964676520636f60448201527f6e74726163742063616e20706572666f726d207468697320616374696f6e000060648201526084016106d7565b6004805460405163a9059cbb60e01b81526001600160a01b03858116938201939093526024810184905291169063a9059cbb906044016020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190610f84565b50816001600160a01b03167f2eab39e96175731c01c457424b5afe77321256924558c30352fca0eb622a9c7e8260405161096391815260200190565b60405180910390a25050565b610977610c3d565b600480546040516323b872dd60e01b81523392810192909252306024830152604482018590526001600160a01b0316906323b872dd906064016020604051808303816000875af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190610f84565b610a3f5760405162461bcd60e51b815260206004820152601860248201527f4c5020746f6b656e207472616e73666572206661696c6564000000000000000060448201526064016106d7565b60003411610aa05760405162461bcd60e51b815260206004820152602860248201527f4c6f636b4c503a206d73672e76616c7565206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016106d7565b610aa982610b56565b60405163e60a8b4b60e01b81523360048201526024810185905282151560448201526001600160a01b03919091169063e60a8b4b9034906064016000604051808303818588803b158015610afc57600080fd5b505af1158015610b10573d6000803e3d6000fd5b505060408051868152602081018890523394507fbe50c0b712540d175145f047335615d983ed6379c41afec4f3d96672cd9670ca935001905060405180910390a2505050565b6000805460405162c8ac9760e41b8152600481018490526001600160a01b0390911690630c8ac97090602401602060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc39190610f46565b92915050565b6002546001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016106d7565b565b610c45610c97565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b158015610c7d57600080fd5b505afa158015610c91573d6000803e3d6000fd5b50505050565b6000610cb16b53797374656d53746174757360a01b610cb6565b905090565b600081815260016020908152604080832054905170026b4b9b9b4b7339030b2323932b9b99d1607d1b92810192909252603182018490526001600160a01b0316908115159060510160405160208183030381529060405290610d2b5760405162461bcd60e51b81526004016106d79190610fa1565b5092915050565b6001600160a01b0381168114610d4757600080fd5b50565b60008060008060808587031215610d6057600080fd5b8435610d6b81610d32565b93506020850135925060408501359150606085013561ffff81168114610d9057600080fd5b939692955090935050565b600060208284031215610dad57600080fd5b8135610db881610d32565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610df757835183529284019291840191600101610ddb565b50909695505050505050565b60008060408385031215610e1657600080fd5b8235610e2181610d32565b946020939093013593505050565b8015158114610d4757600080fd5b600080600060608486031215610e5257600080fd5b83359250602084013591506040840135610e6b81610e2f565b809150509250925092565b6000815180845260005b81811015610e9c57602081850181015186830182015201610e80565b506000602082860101526020601f19601f83011685010191505092915050565b61ffff84168152606060208201526000610ed96060830185610e76565b9050826040830152949350505050565b606081526000610efc6060830186610e76565b61ffff94851660208401529290931660409091015292915050565b600060208284031215610f2957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f5857600080fd5b8151610db881610d32565b828152604060208201526000610f7c6040830184610e76565b949350505050565b600060208284031215610f9657600080fd5b8151610db881610e2f565b602081526000610db86020830184610e7656fea26469706673582212203028f6acb4f15247793f0ff3e79dcc8f7c69f4b0cb1d1574e299a581cdca2b1964736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007802edc1ae4c39ed9f3dd2759007b9cb31b347a3000000000000000000000000a996800258629fe4064fa98758e122ad677206130000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _owner (address): 0x7802EdC1Ae4c39ED9f3dd2759007b9Cb31B347A3
Arg [1] : _resolver (address): 0xA996800258629fE4064fA98758E122aD67720613
Arg [2] : _lpToken (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007802edc1ae4c39ed9f3dd2759007b9cb31b347a3
Arg [1] : 000000000000000000000000a996800258629fe4064fa98758e122ad67720613
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.