Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 46 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Convert To Full ... | 19184445 | 147 days ago | IN | 0 ETH | 0.05171381 | ||||
Convert To Full ... | 19183709 | 147 days ago | IN | 0 ETH | 0.06845158 | ||||
Convert To Full ... | 19183652 | 147 days ago | IN | 0 ETH | 0.07635995 | ||||
Convert To Full ... | 19183099 | 147 days ago | IN | 0 ETH | 0.04990532 | ||||
Convert To Full ... | 19182649 | 147 days ago | IN | 0 ETH | 0.17808896 | ||||
Convert To Full ... | 19182612 | 147 days ago | IN | 0 ETH | 0.18924689 | ||||
Convert To Full ... | 19182216 | 147 days ago | IN | 0 ETH | 0.03902635 | ||||
Convert To Full ... | 19181251 | 148 days ago | IN | 0 ETH | 0.02703002 | ||||
Convert To Full ... | 19180909 | 148 days ago | IN | 0 ETH | 0.09193189 | ||||
Convert To Full ... | 19179826 | 148 days ago | IN | 0 ETH | 0.03620461 | ||||
Convert To Full ... | 19178544 | 148 days ago | IN | 0 ETH | 0.09471255 | ||||
Convert To Full ... | 19175552 | 148 days ago | IN | 0 ETH | 0.0245722 | ||||
Convert To Full ... | 19175249 | 148 days ago | IN | 0 ETH | 0.01928712 | ||||
Convert To Full ... | 19164173 | 150 days ago | IN | 0 ETH | 0.0153908 | ||||
Convert To Full ... | 19162214 | 150 days ago | IN | 0 ETH | 0.01404328 | ||||
Convert To Full ... | 19158045 | 151 days ago | IN | 0 ETH | 0.01011093 | ||||
Convert To Full ... | 19157018 | 151 days ago | IN | 0 ETH | 0.01548038 | ||||
Convert To Full ... | 19154172 | 151 days ago | IN | 0 ETH | 0.01135893 | ||||
Convert To Full ... | 19149506 | 152 days ago | IN | 0 ETH | 0.01767679 | ||||
Convert To Full ... | 19135431 | 154 days ago | IN | 0 ETH | 0.04854632 | ||||
Convert To Full ... | 19131816 | 154 days ago | IN | 0 ETH | 0.01611566 | ||||
Convert To Full ... | 19130592 | 155 days ago | IN | 0 ETH | 0.02952132 | ||||
Convert To Full ... | 19129453 | 155 days ago | IN | 0 ETH | 0.02447476 | ||||
Convert To Full ... | 19126877 | 155 days ago | IN | 0 ETH | 0.01803387 | ||||
Convert To Full ... | 19124011 | 156 days ago | IN | 0 ETH | 0.02360738 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
FullRangeConvertor
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 1000 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED // Code Author: UNCX by SDDTech pragma solidity 0.8.19; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../uniswap-updated/INonfungiblePositionManager.sol"; import "@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol"; import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; import "../IUNCX_ProofOfReservesV2_UniV3.sol"; contract FullRangeConvertor is IERC721Receiver, ReentrancyGuard { IUNCX_ProofOfReservesV2_UniV3 public UNIV3_V2_LOCKER; constructor(IUNCX_ProofOfReservesV2_UniV3 _univ3_v2_locker) { UNIV3_V2_LOCKER = _univ3_v2_locker; } function convertToFullRangeAndLock (IUNCX_ProofOfReservesV2_UniV3.LockParams memory _lockParams, uint256 _amount0Min, uint256 _amount1Min) external nonReentrant returns (uint256 newLockId) { _lockParams.nftPositionManager.safeTransferFrom(msg.sender, address(this), _lockParams.nft_id); INonfungiblePositionManager.Position memory position; ( , // nonce , // operator , // token0 , // token1 position.fee, // fee position.tickLower, // tickLower position.tickUpper, // tickUpper , // liquidity , // feeGrowthInside0LastX128 , // feeGrowthInside1LastX128 , // tokensOwed0 // tokensOwed1 ) = _lockParams.nftPositionManager.positions(_lockParams.nft_id); IUniswapV3Factory factory = IUniswapV3Factory(_lockParams.nftPositionManager.factory()); int24 maxTick = tickSpacingToMaxTick(factory.feeAmountTickSpacing(position.fee)); uint256 nftToLock; if (position.tickLower == -maxTick && position.tickUpper == maxTick) { nftToLock = _lockParams.nft_id; } else { // convert the position to full range by minting a new full range NFT nftToLock = _convertPositionToFullRange(_lockParams.nftPositionManager, _lockParams.nft_id, maxTick, _lockParams.dustRecipient, _amount0Min, _amount1Min); } _lockParams.nftPositionManager.approve(address(UNIV3_V2_LOCKER), nftToLock); _lockParams.nft_id = nftToLock; newLockId = UNIV3_V2_LOCKER.lock(_lockParams); } function _convertPositionToFullRange (INonfungiblePositionManager _nftPositionManager, uint256 _tokenId, int24 _maxTick, address _dustRecipient, uint256 _amount0Min, uint256 _amount1Min) private returns (uint256) { INonfungiblePositionManager.MintParams memory mintParams; uint128 positionLiquidity; ( , // nonce , // operator mintParams.token0, // token0 mintParams.token1, // token1 mintParams.fee, // fee , // tickLower , // tickUpper positionLiquidity, , // feeGrowthInside0LastX128 , // feeGrowthInside1LastX128 , // tokensOwed0 // tokensOwed1 ) = _nftPositionManager.positions(_tokenId); _nftPositionManager.decreaseLiquidity(INonfungiblePositionManager.DecreaseLiquidityParams(_tokenId, positionLiquidity, 0, 0, block.timestamp)); _nftPositionManager.collect(INonfungiblePositionManager.CollectParams(_tokenId, address(this), type(uint128).max, type(uint128).max)); mintParams.tickLower = -_maxTick; mintParams.tickUpper = _maxTick; mintParams.amount0Desired = IERC20(mintParams.token0).balanceOf(address(this)); mintParams.amount1Desired = IERC20(mintParams.token1).balanceOf(address(this)); mintParams.amount0Min = _amount0Min; mintParams.amount1Min = _amount1Min; mintParams.recipient = address(this); mintParams.deadline = block.timestamp; TransferHelper.safeApprove(mintParams.token0, address(_nftPositionManager), mintParams.amount0Desired); TransferHelper.safeApprove(mintParams.token1, address(_nftPositionManager), mintParams.amount1Desired); (uint256 newNftId,,,) = _nftPositionManager.mint(mintParams); _nftPositionManager.burn(_tokenId); // Refund the tokens which dont fit into full range liquidity uint256 balance0 = IERC20(mintParams.token0).balanceOf(address(this)); uint256 balance1 = IERC20(mintParams.token1).balanceOf(address(this)); if (balance0 > 0) { TransferHelper.safeTransfer(mintParams.token0, _dustRecipient, balance0); } if (balance1 > 0) { TransferHelper.safeTransfer(mintParams.token1, _dustRecipient, balance1); } return newNftId; } /** * @dev gets the maximum tick for a tickSpacing * source: https://github.com/Uniswap/v3-core/blob/main/contracts/libraries/Tick.sol */ function tickSpacingToMaxTick(int24 tickSpacing) public pure returns (int24 maxTick) { maxTick = (887272 / tickSpacing) * tickSpacing; } function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) public pure override returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title The interface for the Uniswap V3 Factory /// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees interface IUniswapV3Factory { /// @notice Emitted when the owner of the factory is changed /// @param oldOwner The owner before the owner was changed /// @param newOwner The owner after the owner was changed event OwnerChanged(address indexed oldOwner, address indexed newOwner); /// @notice Emitted when a pool is created /// @param token0 The first token of the pool by address sort order /// @param token1 The second token of the pool by address sort order /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks /// @param pool The address of the created pool event PoolCreated( address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool ); /// @notice Emitted when a new fee amount is enabled for pool creation via the factory /// @param fee The enabled fee, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing); /// @notice Returns the current owner of the factory /// @dev Can be changed by the current owner via setOwner /// @return The address of the factory owner function owner() external view returns (address); /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee /// @return The tick spacing function feeAmountTickSpacing(uint24 fee) external view returns (int24); /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order /// @param tokenA The contract address of either token0 or token1 /// @param tokenB The contract address of the other token /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @return pool The pool address function getPool( address tokenA, address tokenB, uint24 fee ) external view returns (address pool); /// @notice Creates a pool for the given two tokens and fee /// @param tokenA One of the two tokens in the desired pool /// @param tokenB The other of the two tokens in the desired pool /// @param fee The desired fee for the pool /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments /// are invalid. /// @return pool The address of the newly created pool function createPool( address tokenA, address tokenB, uint24 fee ) external returns (address pool); /// @notice Updates the owner of the factory /// @dev Must be called by the current owner /// @param _owner The new owner of the factory function setOwner(address _owner) external; /// @notice Enables a fee amount with the given tickSpacing /// @dev Fee amounts may never be removed once enabled /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount function enableFeeAmount(uint24 fee, int24 tickSpacing) external; }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.6.0; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; library TransferHelper { /// @notice Transfers tokens from the targeted address to the given destination /// @notice Errors with 'STF' if transfer fails /// @param token The contract address of the token to be transferred /// @param from The originating address from which the tokens will be transferred /// @param to The destination address of the transfer /// @param value The amount to be transferred function safeTransferFrom( address token, address from, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF'); } /// @notice Transfers tokens from msg.sender to a recipient /// @dev Errors with ST if transfer fails /// @param token The contract address of the token which will be transferred /// @param to The recipient of the transfer /// @param value The value of the transfer function safeTransfer( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST'); } /// @notice Approves the stipulated contract to spend the given allowance in the given token /// @dev Errors with 'SA' if transfer fails /// @param token The contract address of the token to be approved /// @param to The target of the approval /// @param value The amount of the given token the target will be allowed to spend function safeApprove( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA'); } /// @notice Transfers ETH to the recipient address /// @dev Fails with `STE` /// @param to The destination of the transfer /// @param value The value to be transferred function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'STE'); } }
// SPDX-License-Identifier: UNLICENSED // ALL RIGHTS RESERVED // UNCX by SDDTech reserves all rights on this code. You may not copy these contracts. pragma solidity 0.8.19; import "./uniswap-updated/INonfungiblePositionManager.sol"; /** * @dev Interface of the UNCX UniswapV3 Liquidity Locker */ interface IUNCX_ProofOfReservesV2_UniV3 { struct FeeStruct { string name; // name by which the fee is accessed uint256 lpFee; // 100 = 1%, 10,000 = 100% uint256 collectFee; // 100 = 1%, 10,000 = 100% uint256 flatFee; // in amount tokens address flatFeeToken; // address(0) = ETH otherwise ERC20 address expected } struct Lock { uint256 lock_id; // unique nonce per lock INonfungiblePositionManager nftPositionManager; // the nft position manager of the uniswap fork address pool; // the pool address uint256 nft_id; // the nft token id of the nft belonging to the nftPositionManager (there could be two nfts with id = 1, belonging to different amm forks and position managers) address owner; // the owner who can collect and withdraw address pendingOwner; // two step process ownership transfer, the pending owner must accept ownership to own the lock address additionalCollector; // an additional address allowed to call collect (ideal for contracts to auto collect without having to use owner) address collectAddress; // The address to which automatic collections are sent uint256 unlockDate; // unlock date of the lock in seconds uint16 countryCode; // the country code of the locker / business uint256 ucf; // collect fee } struct LockParams { INonfungiblePositionManager nftPositionManager; // the NFT Position manager of the Uniswap V3 fork uint256 nft_id; // the nft token_id address dustRecipient; // receiver of dust tokens which do not fit into liquidity and initial collection fees address owner; // owner of the lock address additionalCollector; // an additional address allowed to call collect (ideal for contracts to auto collect without having to use owner) address collectAddress; // The address to which automatic collections are sent uint256 unlockDate; // unlock date of the lock in seconds uint16 countryCode; // the country code of the locker / business string feeName; // The fee name key you wish to accept, use "DEFAULT" if in doubt bytes[] r; // use an empty array => [] } // User functions function lock (LockParams calldata params) external payable returns (uint256 lockId); function collect (uint256 lockId, address recipient, uint128 amount0Max, uint128 amount1Max) external returns (uint256 amount0, uint256 amount1, uint256 fee0, uint256 fee1); function withdraw (uint256 lockId, address receiver) external; function migrate (uint256 lockId) external; function relock(uint256 lockId, uint256 unlockDate) external; function setAdditionalCollector (uint256 lockId, address additionalCollector) external; function setCollectAddress (uint256 lockId, address collectAddress) external; function transferLockOwnership (uint256 lockId, address newOwner) external; function acceptLockOwnership (uint256 lockId) external; function decreaseLiquidity(uint256 lockId, INonfungiblePositionManager.DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1); function increaseLiquidity(uint256 lockId, INonfungiblePositionManager.IncreaseLiquidityParams calldata params) external payable returns (uint128 liquidity, uint256 amount0, uint256 amount1); // Admin functions function setMigrator(address migrator) external; function setUCF(uint256 lockId, uint256 ucf) external; function setMigrateInContract (address migrateInContract) external; // Getters function getLocksLength() external view returns (uint256); function getLock(uint256 lockId) external view returns (Lock memory lock); function getNumUserLocks(address user) external view returns (uint256 numLocks); function getUserLockAtIndex(address user, uint256 index) external view returns (Lock memory lock); function getFee (string memory name) external view returns (FeeStruct memory); function getAmountsForLiquidity (int24 currentTick, int24 tickLower, int24 tickHigher, uint128 liquidity) external pure returns (uint256 amount0, uint256 amount1); // Events event onLock( uint256 lock_id, address nftPositionManager, uint256 nft_id, address owner, address additionalCollector, address collectAddress, uint256 unlockDate, uint16 countryCode, uint256 collectFee, address poolAddress, INonfungiblePositionManager.Position position ); event onWithdraw(uint256 lock_id, address owner, address receiver); event onLockOwnershipTransferStarted(uint256 lockId, address currentOwner, address pendingOwner); event onTransferLockOwnership(uint256 lockId, address oldOwner, address newOwner); event onMigrate(uint256 lockId); event onSetAdditionalCollector(uint256 lockId, address additionalCollector); event onSetCollectAddress(uint256 lockId, address collectAddress); event onSetMigrator(address migrator); event onRelock(uint256 lockId, uint256 unlockDate); event onIncreaseLiquidity(uint256 lockId); event onDecreaseLiquidity(uint256 lockId); event onRemoveFee(bytes32 nameHash); event onAddFee(bytes32 nameHash, string name, uint256 lpFee, uint256 collectFee, uint256 flatFee, address flatFeeToken); event onEditFee(bytes32 nameHash, string name, uint256 lpFee, uint256 collectFee, uint256 flatFee, address flatFeeToken); event onSetUCF(uint256 lockId, uint256 ucf); }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; // Importing from @uniswap doesnt work with @openzepplins latest release so this is refactored // Source: https://github.com/Uniswap/v3-periphery/blob/main/contracts/interfaces/INonfungiblePositionManager.sol interface INonfungiblePositionManager { function approve(address to, uint256 tokenId) external; function safeTransferFrom( address from, address to, uint256 tokenId ) external; struct MintParams { address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; address recipient; uint256 deadline; } function mint( MintParams calldata params ) external payable returns ( uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1 ); struct Position { uint96 nonce; address operator; address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint128 liquidity; uint256 feeGrowthInside0LastX128; uint256 feeGrowthInside1LastX128; uint128 tokensOwed0; uint128 tokensOwed1; } function positions( uint256 tokenId ) external view returns ( uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1 ); struct IncreaseLiquidityParams { uint256 tokenId; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; uint256 deadline; } /// @notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender` /// @param params tokenId The ID of the token for which liquidity is being increased, /// amount0Desired The desired amount of token0 to be spent, /// amount1Desired The desired amount of token1 to be spent, /// amount0Min The minimum amount of token0 to spend, which serves as a slippage check, /// amount1Min The minimum amount of token1 to spend, which serves as a slippage check, /// deadline The time by which the transaction must be included to effect the change /// @return liquidity The new liquidity amount as a result of the increase /// @return amount0 The amount of token0 to acheive resulting liquidity /// @return amount1 The amount of token1 to acheive resulting liquidity function increaseLiquidity(IncreaseLiquidityParams calldata params) external payable returns ( uint128 liquidity, uint256 amount0, uint256 amount1 ); struct DecreaseLiquidityParams { uint256 tokenId; uint128 liquidity; uint256 amount0Min; uint256 amount1Min; uint256 deadline; } /// @notice Decreases the amount of liquidity in a position and accounts it to the position /// @param params tokenId The ID of the token for which liquidity is being decreased, /// amount The amount by which liquidity will be decreased, /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, /// deadline The time by which the transaction must be included to effect the change /// @return amount0 The amount of token0 accounted to the position's tokens owed /// @return amount1 The amount of token1 accounted to the position's tokens owed function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1); struct CollectParams { uint256 tokenId; address recipient; uint128 amount0Max; uint128 amount1Max; } function collect( CollectParams calldata params ) external payable returns (uint256 amount0, uint256 amount1); function factory() external view returns (address); function burn(uint256 tokenId) external payable; }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IUNCX_ProofOfReservesV2_UniV3","name":"_univ3_v2_locker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"UNIV3_V2_LOCKER","outputs":[{"internalType":"contract IUNCX_ProofOfReservesV2_UniV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"contract INonfungiblePositionManager","name":"nftPositionManager","type":"address"},{"internalType":"uint256","name":"nft_id","type":"uint256"},{"internalType":"address","name":"dustRecipient","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"additionalCollector","type":"address"},{"internalType":"address","name":"collectAddress","type":"address"},{"internalType":"uint256","name":"unlockDate","type":"uint256"},{"internalType":"uint16","name":"countryCode","type":"uint16"},{"internalType":"string","name":"feeName","type":"string"},{"internalType":"bytes[]","name":"r","type":"bytes[]"}],"internalType":"struct IUNCX_ProofOfReservesV2_UniV3.LockParams","name":"_lockParams","type":"tuple"},{"internalType":"uint256","name":"_amount0Min","type":"uint256"},{"internalType":"uint256","name":"_amount1Min","type":"uint256"}],"name":"convertToFullRangeAndLock","outputs":[{"internalType":"uint256","name":"newLockId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"tickSpacingToMaxTick","outputs":[{"internalType":"int24","name":"maxTick","type":"int24"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161184d38038061184d83398101604081905261002f91610059565b6001600081905580546001600160a01b0319166001600160a01b0392909216919091179055610089565b60006020828403121561006b57600080fd5b81516001600160a01b038116811461008257600080fd5b9392505050565b6117b5806100986000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063150b7a0214610051578063395bd9db146100bf57806355be236b146100e0578063e526dd481461010b575b600080fd5b61008961005f366004610ed0565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100d26100cd36600461111e565b610131565b6040519081526020016100b6565b6001546100f3906001600160a01b031681565b6040516001600160a01b0390911681526020016100b6565b61011e610119366004611250565b610550565b60405160029190910b81526020016100b6565b600061013b610570565b835160208501516040517f42842e0e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101919091526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156101ab57600080fd5b505af11580156101bf573d6000803e3d6000fd5b50506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152915061022b9050565b8451602086015160405163133f757160e31b81526001600160a01b03909216916399fbab88916102619160040190815260200190565b61018060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a391906112b6565b50505050600291820b60c08a0152500b60a087015262ffffff16608086015250508651604080517fc45a01550000000000000000000000000000000000000000000000000000000081529051600094506001600160a01b03909216925063c45a01559160048083019260209291908290030181865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e9190611397565b60808301516040517f22afcccb00000000000000000000000000000000000000000000000000000000815262ffffff90911660048201529091506000906103e4906001600160a01b038416906322afcccb90602401602060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011991906113b4565b905060006103f1826113e7565b60020b8460a0015160020b14801561041257508160020b8460c0015160020b145b156104225750602087015161043f565b61043c88600001518960200151848b604001518b8b6105ce565b90505b875160015460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b50505050602088018190526001546040517fa35a96b80000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a35a96b8906104f6908b906004016114ae565b6020604051808303816000875af1158015610515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105399190611595565b9450505050506105496001600055565b9392505050565b60008161056081620d89e86115ae565b61056a91906115f6565b92915050565b6002600054036105c75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905260405163133f757160e31b8152600481018890526000906001600160a01b038a16906399fbab889060240161018060405180830381865afa15801561066f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069391906112b6565b909192939495969798999a50909192939495969798995090919293949550909192939450909192509091509050508560000186602001876040018397508462ffffff1662ffffff16815250846001600160a01b03166001600160a01b0316815250846001600160a01b03166001600160a01b031681525050505050886001600160a01b0316630c49ccbe6040518060a001604052808b8152602001846fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001428152506040518263ffffffff1660e01b81526004016107bb9190600060a082019050825182526fffffffffffffffffffffffffffffffff602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b60408051808303816000875af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd919061161d565b50506040805160808101825289815230602082019081526fffffffffffffffffffffffffffffffff8284018181526060840182815294517ffc6f78650000000000000000000000000000000000000000000000000000000081529351600485015291516001600160a01b03908116602485015291518116604484015292519092166064820152908a169063fc6f78659060840160408051808303816000875af11580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d2919061161d565b5050866108de906113e7565b600290810b606084015287900b608083015281516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b9190611595565b60a083015260208201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190611595565b60c083015260e0820185905261010082018490523061012083015242610140830152815160a0830151610a0391908b90610c36565b610a1682602001518a8460c00151610c36565b6040517f883164560000000000000000000000000000000000000000000000000000000081526000906001600160a01b038b1690638831645690610a5e908690600401611641565b6080604051808303816000875af1158015610a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa19190611705565b50506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018c9052919250506001600160a01b038b16906342966c6890602401600060405180830381600087803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505084516040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190611595565b60208501516040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc9190611595565b90508115610c11578451610c11908a84610d66565b8015610c2657610c2685602001518a83610d66565b50909a9950505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b1790529151600092839290871691610ca79190611741565b6000604051808303816000865af19150503d8060008114610ce4576040519150601f19603f3d011682016040523d82523d6000602084013e610ce9565b606091505b5091509150818015610d13575080511580610d13575080806020019051810190610d13919061175d565b610d5f5760405162461bcd60e51b815260206004820152600260248201527f534100000000000000000000000000000000000000000000000000000000000060448201526064016105be565b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691610df09190611741565b6000604051808303816000865af19150503d8060008114610e2d576040519150601f19603f3d011682016040523d82523d6000602084013e610e32565b606091505b5091509150818015610e5c575080511580610e5c575080806020019051810190610e5c919061175d565b610d5f5760405162461bcd60e51b815260206004820152600260248201527f535400000000000000000000000000000000000000000000000000000000000060448201526064016105be565b6001600160a01b0381168114610ebd57600080fd5b50565b8035610ecb81610ea8565b919050565b600080600080600060808688031215610ee857600080fd5b8535610ef381610ea8565b94506020860135610f0381610ea8565b935060408601359250606086013567ffffffffffffffff80821115610f2757600080fd5b818801915088601f830112610f3b57600080fd5b813581811115610f4a57600080fd5b896020828501011115610f5c57600080fd5b9699959850939650602001949392505050565b634e487b7160e01b600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610fa957610fa9610f6f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fd857610fd8610f6f565b604052919050565b803561ffff81168114610ecb57600080fd5b600067ffffffffffffffff83111561100c5761100c610f6f565b61101f601f8401601f1916602001610faf565b905082815283838301111561103357600080fd5b828260208301376000602084830101529392505050565b600082601f83011261105b57600080fd5b61054983833560208501610ff2565b600082601f83011261107b57600080fd5b8135602067ffffffffffffffff8083111561109857611098610f6f565b8260051b6110a7838201610faf565b93845285810183019383810190888611156110c157600080fd5b84880192505b85831015611112578235848111156110df5760008081fd5b8801603f81018a136110f15760008081fd5b6111028a8783013560408401610ff2565b83525091840191908401906110c7565b98975050505050505050565b60008060006060848603121561113357600080fd5b833567ffffffffffffffff8082111561114b57600080fd5b90850190610140828803121561116057600080fd5b611168610f85565b61117183610ec0565b81526020830135602082015261118960408401610ec0565b604082015261119a60608401610ec0565b60608201526111ab60808401610ec0565b60808201526111bc60a08401610ec0565b60a082015260c083013560c08201526111d760e08401610fe0565b60e082015261010080840135838111156111f057600080fd5b6111fc8a82870161104a565b828401525050610120808401358381111561121657600080fd5b6112228a82870161106a565b9183019190915250976020870135975060409096013595945050505050565b8060020b8114610ebd57600080fd5b60006020828403121561126257600080fd5b813561054981611241565b8051610ecb81610ea8565b805162ffffff81168114610ecb57600080fd5b8051610ecb81611241565b80516fffffffffffffffffffffffffffffffff81168114610ecb57600080fd5b6000806000806000806000806000806000806101808d8f0312156112d957600080fd5b8c516bffffffffffffffffffffffff811681146112f557600080fd5b9b5061130360208e0161126d565b9a5061131160408e0161126d565b995061131f60608e0161126d565b985061132d60808e01611278565b975061133b60a08e0161128b565b965061134960c08e0161128b565b955061135760e08e01611296565b94506101008d015193506101208d015192506113766101408e01611296565b91506113856101608e01611296565b90509295989b509295989b509295989b565b6000602082840312156113a957600080fd5b815161054981610ea8565b6000602082840312156113c657600080fd5b815161054981611241565b634e487b7160e01b600052601160045260246000fd5b60008160020b627fffff198103611400576114006113d1565b60000392915050565b60005b8381101561142457818101518382015260200161140c565b50506000910152565b60008151808452611445816020860160208601611409565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156114a157828403895261148f84835161142d565b98850198935090840190600101611477565b5091979650505050505050565b602081526114c86020820183516001600160a01b03169052565b60208201516040820152600060408301516114ee60608401826001600160a01b03169052565b5060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e083015161010061154f8185018361ffff169052565b80850151915050610140610120818186015261156f61016086018461142d565b90860151858203601f19018387015290925061158b8382611459565b9695505050505050565b6000602082840312156115a757600080fd5b5051919050565b60008160020b8360020b806115d357634e487b7160e01b600052601260045260246000fd5b627fffff198214600019821416156115ed576115ed6113d1565b90059392505050565b60008260020b8260020b028060020b9150808214611616576116166113d1565b5092915050565b6000806040838503121561163057600080fd5b505080516020909101519092909150565b81516001600160a01b031681526101608101602083015161166d60208401826001600160a01b03169052565b506040830151611684604084018262ffffff169052565b506060830151611699606084018260020b9052565b5060808301516116ae608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516116f4828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561171b57600080fd5b8451935061172b60208601611296565b6040860151606090960151949790965092505050565b60008251611753818460208701611409565b9190910192915050565b60006020828403121561176f57600080fd5b8151801515811461054957600080fdfea2646970667358221220bb0199babc734c960c21a1c08f1f20c66e25adbaf27a58b4141162565409abab64736f6c634300081300330000000000000000000000007f5c649856f900d15c83741f45ae46f5c6858234
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063150b7a0214610051578063395bd9db146100bf57806355be236b146100e0578063e526dd481461010b575b600080fd5b61008961005f366004610ed0565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100d26100cd36600461111e565b610131565b6040519081526020016100b6565b6001546100f3906001600160a01b031681565b6040516001600160a01b0390911681526020016100b6565b61011e610119366004611250565b610550565b60405160029190910b81526020016100b6565b600061013b610570565b835160208501516040517f42842e0e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101919091526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156101ab57600080fd5b505af11580156101bf573d6000803e3d6000fd5b50506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152915061022b9050565b8451602086015160405163133f757160e31b81526001600160a01b03909216916399fbab88916102619160040190815260200190565b61018060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a391906112b6565b50505050600291820b60c08a0152500b60a087015262ffffff16608086015250508651604080517fc45a01550000000000000000000000000000000000000000000000000000000081529051600094506001600160a01b03909216925063c45a01559160048083019260209291908290030181865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e9190611397565b60808301516040517f22afcccb00000000000000000000000000000000000000000000000000000000815262ffffff90911660048201529091506000906103e4906001600160a01b038416906322afcccb90602401602060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011991906113b4565b905060006103f1826113e7565b60020b8460a0015160020b14801561041257508160020b8460c0015160020b145b156104225750602087015161043f565b61043c88600001518960200151848b604001518b8b6105ce565b90505b875160015460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b50505050602088018190526001546040517fa35a96b80000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a35a96b8906104f6908b906004016114ae565b6020604051808303816000875af1158015610515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105399190611595565b9450505050506105496001600055565b9392505050565b60008161056081620d89e86115ae565b61056a91906115f6565b92915050565b6002600054036105c75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905260405163133f757160e31b8152600481018890526000906001600160a01b038a16906399fbab889060240161018060405180830381865afa15801561066f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069391906112b6565b909192939495969798999a50909192939495969798995090919293949550909192939450909192509091509050508560000186602001876040018397508462ffffff1662ffffff16815250846001600160a01b03166001600160a01b0316815250846001600160a01b03166001600160a01b031681525050505050886001600160a01b0316630c49ccbe6040518060a001604052808b8152602001846fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001428152506040518263ffffffff1660e01b81526004016107bb9190600060a082019050825182526fffffffffffffffffffffffffffffffff602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b60408051808303816000875af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd919061161d565b50506040805160808101825289815230602082019081526fffffffffffffffffffffffffffffffff8284018181526060840182815294517ffc6f78650000000000000000000000000000000000000000000000000000000081529351600485015291516001600160a01b03908116602485015291518116604484015292519092166064820152908a169063fc6f78659060840160408051808303816000875af11580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d2919061161d565b5050866108de906113e7565b600290810b606084015287900b608083015281516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b9190611595565b60a083015260208201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190611595565b60c083015260e0820185905261010082018490523061012083015242610140830152815160a0830151610a0391908b90610c36565b610a1682602001518a8460c00151610c36565b6040517f883164560000000000000000000000000000000000000000000000000000000081526000906001600160a01b038b1690638831645690610a5e908690600401611641565b6080604051808303816000875af1158015610a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa19190611705565b50506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018c9052919250506001600160a01b038b16906342966c6890602401600060405180830381600087803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505084516040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190611595565b60208501516040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc9190611595565b90508115610c11578451610c11908a84610d66565b8015610c2657610c2685602001518a83610d66565b50909a9950505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b1790529151600092839290871691610ca79190611741565b6000604051808303816000865af19150503d8060008114610ce4576040519150601f19603f3d011682016040523d82523d6000602084013e610ce9565b606091505b5091509150818015610d13575080511580610d13575080806020019051810190610d13919061175d565b610d5f5760405162461bcd60e51b815260206004820152600260248201527f534100000000000000000000000000000000000000000000000000000000000060448201526064016105be565b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691610df09190611741565b6000604051808303816000865af19150503d8060008114610e2d576040519150601f19603f3d011682016040523d82523d6000602084013e610e32565b606091505b5091509150818015610e5c575080511580610e5c575080806020019051810190610e5c919061175d565b610d5f5760405162461bcd60e51b815260206004820152600260248201527f535400000000000000000000000000000000000000000000000000000000000060448201526064016105be565b6001600160a01b0381168114610ebd57600080fd5b50565b8035610ecb81610ea8565b919050565b600080600080600060808688031215610ee857600080fd5b8535610ef381610ea8565b94506020860135610f0381610ea8565b935060408601359250606086013567ffffffffffffffff80821115610f2757600080fd5b818801915088601f830112610f3b57600080fd5b813581811115610f4a57600080fd5b896020828501011115610f5c57600080fd5b9699959850939650602001949392505050565b634e487b7160e01b600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610fa957610fa9610f6f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fd857610fd8610f6f565b604052919050565b803561ffff81168114610ecb57600080fd5b600067ffffffffffffffff83111561100c5761100c610f6f565b61101f601f8401601f1916602001610faf565b905082815283838301111561103357600080fd5b828260208301376000602084830101529392505050565b600082601f83011261105b57600080fd5b61054983833560208501610ff2565b600082601f83011261107b57600080fd5b8135602067ffffffffffffffff8083111561109857611098610f6f565b8260051b6110a7838201610faf565b93845285810183019383810190888611156110c157600080fd5b84880192505b85831015611112578235848111156110df5760008081fd5b8801603f81018a136110f15760008081fd5b6111028a8783013560408401610ff2565b83525091840191908401906110c7565b98975050505050505050565b60008060006060848603121561113357600080fd5b833567ffffffffffffffff8082111561114b57600080fd5b90850190610140828803121561116057600080fd5b611168610f85565b61117183610ec0565b81526020830135602082015261118960408401610ec0565b604082015261119a60608401610ec0565b60608201526111ab60808401610ec0565b60808201526111bc60a08401610ec0565b60a082015260c083013560c08201526111d760e08401610fe0565b60e082015261010080840135838111156111f057600080fd5b6111fc8a82870161104a565b828401525050610120808401358381111561121657600080fd5b6112228a82870161106a565b9183019190915250976020870135975060409096013595945050505050565b8060020b8114610ebd57600080fd5b60006020828403121561126257600080fd5b813561054981611241565b8051610ecb81610ea8565b805162ffffff81168114610ecb57600080fd5b8051610ecb81611241565b80516fffffffffffffffffffffffffffffffff81168114610ecb57600080fd5b6000806000806000806000806000806000806101808d8f0312156112d957600080fd5b8c516bffffffffffffffffffffffff811681146112f557600080fd5b9b5061130360208e0161126d565b9a5061131160408e0161126d565b995061131f60608e0161126d565b985061132d60808e01611278565b975061133b60a08e0161128b565b965061134960c08e0161128b565b955061135760e08e01611296565b94506101008d015193506101208d015192506113766101408e01611296565b91506113856101608e01611296565b90509295989b509295989b509295989b565b6000602082840312156113a957600080fd5b815161054981610ea8565b6000602082840312156113c657600080fd5b815161054981611241565b634e487b7160e01b600052601160045260246000fd5b60008160020b627fffff198103611400576114006113d1565b60000392915050565b60005b8381101561142457818101518382015260200161140c565b50506000910152565b60008151808452611445816020860160208601611409565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156114a157828403895261148f84835161142d565b98850198935090840190600101611477565b5091979650505050505050565b602081526114c86020820183516001600160a01b03169052565b60208201516040820152600060408301516114ee60608401826001600160a01b03169052565b5060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e083015161010061154f8185018361ffff169052565b80850151915050610140610120818186015261156f61016086018461142d565b90860151858203601f19018387015290925061158b8382611459565b9695505050505050565b6000602082840312156115a757600080fd5b5051919050565b60008160020b8360020b806115d357634e487b7160e01b600052601260045260246000fd5b627fffff198214600019821416156115ed576115ed6113d1565b90059392505050565b60008260020b8260020b028060020b9150808214611616576116166113d1565b5092915050565b6000806040838503121561163057600080fd5b505080516020909101519092909150565b81516001600160a01b031681526101608101602083015161166d60208401826001600160a01b03169052565b506040830151611684604084018262ffffff169052565b506060830151611699606084018260020b9052565b5060808301516116ae608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516116f4828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561171b57600080fd5b8451935061172b60208601611296565b6040860151606090960151949790965092505050565b60008251611753818460208701611409565b9190910192915050565b60006020828403121561176f57600080fd5b8151801515811461054957600080fdfea2646970667358221220bb0199babc734c960c21a1c08f1f20c66e25adbaf27a58b4141162565409abab64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007f5c649856f900d15c83741f45ae46f5c6858234
-----Decoded View---------------
Arg [0] : _univ3_v2_locker (address): 0x7f5C649856F900d15C83741f45AE46f5C6858234
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007f5c649856f900d15c83741f45ae46f5c6858234
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.