Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x3BF45832...6E15a1004 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
UniV3LiquidityLocker
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-23 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IERC721 { function safeTransferFrom(address from, address to, uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address); function approve(address to, uint256 tokenId) external; } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { _transferOwnership(initialOwner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface INonfungiblePositionManager is IERC721 { } contract UniV3LiquidityLocker is Ownable, IERC721Receiver { INonfungiblePositionManager public immutable uniswapV3NFT; struct LockedPosition { address owner; uint256 unlockTime; } mapping(uint256 => LockedPosition) public lockedPositions; event LiquidityLocked(address indexed user, uint256 indexed tokenId, uint256 unlockTime); event LiquidityUnlocked(address indexed user, uint256 indexed tokenId); constructor(address _uniswapV3NFT) Ownable(msg.sender) { uniswapV3NFT = INonfungiblePositionManager(_uniswapV3NFT); } function lockLiquidity(uint256 tokenId, uint256 lockDuration) external { require(lockDuration >= 1 days, "Minimum lock duration is 1 day"); require(uniswapV3NFT.ownerOf(tokenId) == msg.sender, "You must own the LP NFT"); uniswapV3NFT.safeTransferFrom(msg.sender, address(this), tokenId); lockedPositions[tokenId] = LockedPosition({ owner: msg.sender, unlockTime: block.timestamp + lockDuration }); emit LiquidityLocked(msg.sender, tokenId, block.timestamp + lockDuration); } function unlockLiquidity(uint256 tokenId) external { LockedPosition storage position = lockedPositions[tokenId]; require(position.owner == msg.sender, "Not the owner of this NFT"); require(block.timestamp >= position.unlockTime, "Liquidity is still locked"); uniswapV3NFT.safeTransferFrom(address(this), msg.sender, tokenId); delete lockedPositions[tokenId]; emit LiquidityUnlocked(msg.sender, tokenId); } function onERC721Received(address, address, uint256, bytes calldata) external pure override returns (bytes4) { return this.onERC721Received.selector; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_uniswapV3NFT","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"LiquidityLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"LiquidityUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"lockDuration","type":"uint256"}],"name":"lockLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockedPositions","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV3NFT","outputs":[{"internalType":"contract INonfungiblePositionManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlockLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638da5cb5b116100585780638da5cb5b1461014b57806396e839241461015b578063ec87682a14610170578063f2fde38b14610183575f80fd5b806301a5e1631461007e578063150b7a02146100d45780637011b7261461010c575b5f80fd5b6100b061008c366004610695565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106c0565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b6101337f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d69081565b6040516001600160a01b0390911681526020016100cb565b5f546001600160a01b0316610133565b61016e610169366004610695565b610196565b005b61016e61017e366004610757565b610326565b61016e610191366004610777565b61056d565b5f81815260016020526040902080546001600160a01b031633146102015760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102555760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f8565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102c0575f80fd5b505af11580156102d2573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b620151808110156103795760405162461bcd60e51b815260206004820152601e60248201527f4d696e696d756d206c6f636b206475726174696f6e206973203120646179000060448201526064016101f8565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6901690636352211e90602401602060405180830381865afa1580156103de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104029190610799565b6001600160a01b0316146104585760405162461bcd60e51b815260206004820152601760248201527f596f75206d757374206f776e20746865204c50204e465400000000000000000060448201526064016101f8565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c3575f80fd5b505af11580156104d5573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f583426107b4565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055884426107b4565b60405190815260200160405180910390a35050565b3361057f5f546001600160a01b031690565b6001600160a01b0316146105d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f8565b6001600160a01b03811661063a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f8565b61064381610646565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a5575f80fd5b5035919050565b6001600160a01b0381168114610643575f80fd5b5f805f805f608086880312156106d4575f80fd5b85356106df816106ac565b945060208601356106ef816106ac565b935060408601359250606086013567ffffffffffffffff80821115610712575f80fd5b818801915088601f830112610725575f80fd5b813581811115610733575f80fd5b896020828501011115610744575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610768575f80fd5b50508035926020909101359150565b5f60208284031215610787575f80fd5b8135610792816106ac565b9392505050565b5f602082840312156107a9575f80fd5b8151610792816106ac565b808201808211156107d357634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220b73c33ddf6740f11e56f595b68def1ebc874d90d93bbeed76e1e80de1d1feeac64736f6c63430008140033
Deployed Bytecode Sourcemap
1390:1838:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1620:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1620:57:0;;;;;;;;;;-1:-1:-1;;;;;391:32:1;;;373:51;;455:2;440:18;;433:34;;;;346:18;1620:57:0;;;;;;;;3060:165;;;;;;:::i;:::-;-1:-1:-1;;;3060:165:0;;;;;;;;;;;-1:-1:-1;;;;;;1717:33:1;;;1699:52;;1687:2;1672:18;3060:165:0;1555:202:1;1455:57:0;;;;;;;;-1:-1:-1;;;;;1961:32:1;;;1943:51;;1931:2;1916:18;1455:57:0;1762:238:1;713:87:0;759:7;786:6;-1:-1:-1;;;;;786:6:0;713:87;;2584:468;;;;;;:::i;:::-;;:::i;:::-;;2003:573;;;;;;:::i;:::-;;:::i;934:201::-;;;;;;:::i;:::-;;:::i;2584:468::-;2646:31;2680:24;;;:15;:24;;;;;2725:14;;-1:-1:-1;;;;;2725:14:0;2743:10;2725:28;2717:66;;;;-1:-1:-1;;;2717:66:0;;2920:2:1;2717:66:0;;;2902:21:1;2959:2;2939:18;;;2932:30;2998:27;2978:18;;;2971:55;3043:18;;2717:66:0;;;;;;;;;2821:8;:19;;;2802:15;:38;;2794:76;;;;-1:-1:-1;;;2794:76:0;;3274:2:1;2794:76:0;;;3256:21:1;3313:2;3293:18;;;3286:30;3352:27;3332:18;;;3325:55;3397:18;;2794:76:0;3072:349:1;2794:76:0;2883:65;;-1:-1:-1;;;2883:65:0;;2921:4;2883:65;;;3666:34:1;2928:10:0;3716:18:1;;;3709:43;3768:18;;;3761:34;;;2883:12:0;-1:-1:-1;;;;;2883:29:0;;;;3601:18:1;;2883:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2966:24:0;;;;:15;:24;;;;;;;;2959:31;;-1:-1:-1;;;;;;2959:31:0;;;;;;;;;3006:38;2982:7;;-1:-1:-1;3024:10:0;;3006:38;;;2635:417;2584:468;:::o;2003:573::-;2109:6;2093:12;:22;;2085:65;;;;-1:-1:-1;;;2085:65:0;;4008:2:1;2085:65:0;;;3990:21:1;4047:2;4027:18;;;4020:30;4086:32;4066:18;;;4059:60;4136:18;;2085:65:0;3806:354:1;2085:65:0;2169:29;;-1:-1:-1;;;2169:29:0;;;;;4311:25:1;;;2202:10:0;;-1:-1:-1;;;;;2169:12:0;:20;;;;4284:18:1;;2169:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2169:43:0;;2161:79;;;;-1:-1:-1;;;2161:79:0;;4805:2:1;2161:79:0;;;4787:21:1;4844:2;4824:18;;;4817:30;4883:25;4863:18;;;4856:53;4926:18;;2161:79:0;4603:347:1;2161:79:0;2253:65;;-1:-1:-1;;;2253:65:0;;2283:10;2253:65;;;3666:34:1;2303:4:0;3716:18:1;;;3709:43;3768:18;;;3761:34;;;2253:12:0;-1:-1:-1;;;;;2253:29:0;;;;3601:18:1;;2253:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2366:116:0;;;;;;;;;2403:10;2366:116;;;-1:-1:-1;;2366:116:0;;;2440:30;2458:12;2440:15;:30;:::i;:::-;2366:116;;2339:24;;;;:15;:24;;;;;;;;:143;;;;-1:-1:-1;;;;;;2339:143:0;-1:-1:-1;;;;;2339:143:0;;;;;;;;;;;;;;:24;2516:10;2500:68;2537:30;2555:12;2537:15;:30;:::i;:::-;2500:68;;4311:25:1;;;4299:2;4284:18;2500:68:0;;;;;;;2003:573;;:::o;934:201::-;859:10;848:7;759;786:6;-1:-1:-1;;;;;786:6:0;;713:87;848:7;-1:-1:-1;;;;;848:21:0;;840:66;;;;-1:-1:-1;;;840:66:0;;5384:2:1;840:66:0;;;5366:21:1;;;5403:18;;;5396:30;5462:34;5442:18;;;5435:62;5514:18;;840:66:0;5182:356:1;840:66:0;-1:-1:-1;;;;;1023:22:0;::::1;1015:73;;;::::0;-1:-1:-1;;;1015:73:0;;5745:2:1;1015:73:0::1;::::0;::::1;5727:21:1::0;5784:2;5764:18;;;5757:30;5823:34;5803:18;;;5796:62;-1:-1:-1;;;5874:18:1;;;5867:36;5920:19;;1015:73:0::1;5543:402:1::0;1015:73:0::1;1099:28;1118:8;1099:18;:28::i;:::-;934:201:::0;:::o;1143:183::-;1209:16;1228:6;;-1:-1:-1;;;;;1245:17:0;;;-1:-1:-1;;;;;;1245:17:0;;;;;;1278:40;;1228:6;;;;;;;1278:40;;1209:16;1278:40;1198:128;1143:183;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;478:131::-;-1:-1:-1;;;;;553:31:1;;543:42;;533:70;;599:1;596;589:12;614:936;711:6;719;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;978:2:1;963:18;;950:32;991:33;950:32;991:33;:::i;:::-;1043:7;-1:-1:-1;1097:2:1;1082:18;;1069:32;;-1:-1:-1;1152:2:1;1137:18;;1124:32;1175:18;1205:14;;;1202:34;;;1232:1;1229;1222:12;1202:34;1270:6;1259:9;1255:22;1245:32;;1315:7;1308:4;1304:2;1300:13;1296:27;1286:55;;1337:1;1334;1327:12;1286:55;1377:2;1364:16;1403:2;1395:6;1392:14;1389:34;;;1419:1;1416;1409:12;1389:34;1464:7;1459:2;1450:6;1446:2;1442:15;1438:24;1435:37;1432:57;;;1485:1;1482;1475:12;1432:57;614:936;;;;-1:-1:-1;614:936:1;;-1:-1:-1;1516:2:1;1508:11;;1538:6;614:936;-1:-1:-1;;;614:936:1:o;2213:248::-;2281:6;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:52;;;2358:1;2355;2348:12;2310:52;-1:-1:-1;;2381:23:1;;;2451:2;2436:18;;;2423:32;;-1:-1:-1;2213:248:1:o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;:::-;2702:5;2466:247;-1:-1:-1;;;2466:247:1:o;4347:251::-;4417:6;4470:2;4458:9;4449:7;4445:23;4441:32;4438:52;;;4486:1;4483;4476:12;4438:52;4518:9;4512:16;4537:31;4562:5;4537:31;:::i;4955:222::-;5020:9;;;5041:10;;;5038:133;;;5093:10;5088:3;5084:20;5081:1;5074:31;5128:4;5125:1;5118:15;5156:4;5153:1;5146:15;5038:133;4955:222;;;;:::o
Swarm Source
ipfs://b73c33ddf6740f11e56f595b68def1ebc874d90d93bbeed76e1e80de1d1feeac
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.