Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
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"}]
Contract Creation Code
60a060405234801561000f575f80fd5b5060405161090238038061090283398101604081905261002e91610099565b336100388161004a565b506001600160a01b03166080526100c6565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100a9575f80fd5b81516001600160a01b03811681146100bf575f80fd5b9392505050565b60805161080f6100f35f395f81816101110152818161027701528181610399015261047a015261080f5ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638da5cb5b116100585780638da5cb5b1461014b57806396e839241461015b578063ec87682a14610170578063f2fde38b14610183575f80fd5b806301a5e1631461007e578063150b7a02146100d45780637011b7261461010c575b5f80fd5b6100b061008c366004610695565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106c0565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100cb565b5f546001600160a01b0316610133565b61016e610169366004610695565b610196565b005b61016e61017e366004610757565b610326565b61016e610191366004610777565b61056d565b5f81815260016020526040902080546001600160a01b031633146102015760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102555760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f8565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102c0575f80fd5b505af11580156102d2573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b620151808110156103795760405162461bcd60e51b815260206004820152601e60248201527f4d696e696d756d206c6f636b206475726174696f6e206973203120646179000060448201526064016101f8565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104029190610799565b6001600160a01b0316146104585760405162461bcd60e51b815260206004820152601760248201527f596f75206d757374206f776e20746865204c50204e465400000000000000000060448201526064016101f8565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c3575f80fd5b505af11580156104d5573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f583426107b4565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055884426107b4565b60405190815260200160405180910390a35050565b3361057f5f546001600160a01b031690565b6001600160a01b0316146105d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f8565b6001600160a01b03811661063a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f8565b61064381610646565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a5575f80fd5b5035919050565b6001600160a01b0381168114610643575f80fd5b5f805f805f608086880312156106d4575f80fd5b85356106df816106ac565b945060208601356106ef816106ac565b935060408601359250606086013567ffffffffffffffff80821115610712575f80fd5b818801915088601f830112610725575f80fd5b813581811115610733575f80fd5b896020828501011115610744575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610768575f80fd5b50508035926020909101359150565b5f60208284031215610787575f80fd5b8135610792816106ac565b9392505050565b5f602082840312156107a9575f80fd5b8151610792816106ac565b808201808211156107d357634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220b73c33ddf6740f11e56f595b68def1ebc874d90d93bbeed76e1e80de1d1feeac64736f6c6343000814003300000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638da5cb5b116100585780638da5cb5b1461014b57806396e839241461015b578063ec87682a14610170578063f2fde38b14610183575f80fd5b806301a5e1631461007e578063150b7a02146100d45780637011b7261461010c575b5f80fd5b6100b061008c366004610695565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106c0565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b6101337f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef81565b6040516001600160a01b0390911681526020016100cb565b5f546001600160a01b0316610133565b61016e610169366004610695565b610196565b005b61016e61017e366004610757565b610326565b61016e610191366004610777565b61056d565b5f81815260016020526040902080546001600160a01b031633146102015760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102555760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f8565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef6001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102c0575f80fd5b505af11580156102d2573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b620151808110156103795760405162461bcd60e51b815260206004820152601e60248201527f4d696e696d756d206c6f636b206475726174696f6e206973203120646179000060448201526064016101f8565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef1690636352211e90602401602060405180830381865afa1580156103de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104029190610799565b6001600160a01b0316146104585760405162461bcd60e51b815260206004820152601760248201527f596f75206d757374206f776e20746865204c50204e465400000000000000000060448201526064016101f8565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef6001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c3575f80fd5b505af11580156104d5573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f583426107b4565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055884426107b4565b60405190815260200160405180910390a35050565b3361057f5f546001600160a01b031690565b6001600160a01b0316146105d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f8565b6001600160a01b03811661063a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f8565b61064381610646565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a5575f80fd5b5035919050565b6001600160a01b0381168114610643575f80fd5b5f805f805f608086880312156106d4575f80fd5b85356106df816106ac565b945060208601356106ef816106ac565b935060408601359250606086013567ffffffffffffffff80821115610712575f80fd5b818801915088601f830112610725575f80fd5b813581811115610733575f80fd5b896020828501011115610744575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610768575f80fd5b50508035926020909101359150565b5f60208284031215610787575f80fd5b8135610792816106ac565b9392505050565b5f602082840312156107a9575f80fd5b8151610792816106ac565b808201808211156107d357634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220b73c33ddf6740f11e56f595b68def1ebc874d90d93bbeed76e1e80de1d1feeac64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000056CFC796bC88C9c7e1b38C2b0aF9B7120B079aef
-----Decoded View---------------
Arg [0] : _uniswapV3NFT (address): 0x56CFC796bC88C9c7e1b38C2b0aF9B7120B079aef
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000056CFC796bC88C9c7e1b38C2b0aF9B7120B079aef
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.