More 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-25 */ // 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); } 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); } } contract UniV3LiquidityLocker is Ownable, IERC721Receiver { IERC721 public immutable nftContract; 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 _nftContract) Ownable(msg.sender) { nftContract = IERC721(_nftContract); } function lockLiquidity(uint256 tokenId, uint256 lockDuration) external { require(lockDuration >= 5 minutes, "Minimum lock duration is 5 minutes"); require(nftContract.ownerOf(tokenId) == msg.sender, "You must own the NFT"); nftContract.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"); nftContract.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":"_nftContract","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":[],"name":"nftContract","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlockLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561000f575f80fd5b506040516108ff3803806108ff83398101604081905261002e91610099565b336100388161004a565b506001600160a01b03166080526100c6565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100a9575f80fd5b81516001600160a01b03811681146100bf575f80fd5b9392505050565b60805161080c6100f35f395f818161014a015281816102730152818161039f0152610477015261080c5ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c806396e839241161005857806396e8392414610130578063d56d229d14610145578063ec87682a1461016c578063f2fde38b1461017f575f80fd5b806301a5e1631461007e578063150b7a02146100d45780638da5cb5b1461010c575b5f80fd5b6100b061008c366004610692565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106bd565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100cb565b61014361013e366004610692565b610192565b005b6101187f000000000000000000000000000000000000000000000000000000000000000081565b61014361017a366004610754565b610322565b61014361018d366004610774565b61056a565b5f81815260016020526040902080546001600160a01b031633146101fd5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102515760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f4565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102bc575f80fd5b505af11580156102ce573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b61012c81101561037f5760405162461bcd60e51b815260206004820152602260248201527f4d696e696d756d206c6f636b206475726174696f6e2069732035206d696e7574604482015261657360f01b60648201526084016101f4565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104089190610796565b6001600160a01b0316146104555760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016101f4565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c0575f80fd5b505af11580156104d2573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f283426107b1565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055584426107b1565b60405190815260200160405180910390a35050565b3361057c5f546001600160a01b031690565b6001600160a01b0316146105d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f4565b6001600160a01b0381166106375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f4565b61064081610643565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a2575f80fd5b5035919050565b6001600160a01b0381168114610640575f80fd5b5f805f805f608086880312156106d1575f80fd5b85356106dc816106a9565b945060208601356106ec816106a9565b935060408601359250606086013567ffffffffffffffff8082111561070f575f80fd5b818801915088601f830112610722575f80fd5b813581811115610730575f80fd5b896020828501011115610741575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610765575f80fd5b50508035926020909101359150565b5f60208284031215610784575f80fd5b813561078f816106a9565b9392505050565b5f602082840312156107a6575f80fd5b815161078f816106a9565b808201808211156107d057634e487b7160e01b5f52601160045260245ffd5b9291505056fea264697066735822122028d4b22030e89e1a35b6bbb087e63d3edbd594a1f5cc92318930ea74ca46c48a64736f6c6343000814003300000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d690
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061007a575f3560e01c806396e839241161005857806396e8392414610130578063d56d229d14610145578063ec87682a1461016c578063f2fde38b1461017f575f80fd5b806301a5e1631461007e578063150b7a02146100d45780638da5cb5b1461010c575b5f80fd5b6100b061008c366004610692565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106bd565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100cb565b61014361013e366004610692565b610192565b005b6101187f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d69081565b61014361017a366004610754565b610322565b61014361018d366004610774565b61056a565b5f81815260016020526040902080546001600160a01b031633146101fd5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102515760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f4565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102bc575f80fd5b505af11580156102ce573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b61012c81101561037f5760405162461bcd60e51b815260206004820152602260248201527f4d696e696d756d206c6f636b206475726174696f6e2069732035206d696e7574604482015261657360f01b60648201526084016101f4565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6901690636352211e90602401602060405180830381865afa1580156103e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104089190610796565b6001600160a01b0316146104555760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016101f4565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c0575f80fd5b505af11580156104d2573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f283426107b1565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055584426107b1565b60405190815260200160405180910390a35050565b3361057c5f546001600160a01b031690565b6001600160a01b0316146105d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f4565b6001600160a01b0381166106375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f4565b61064081610643565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a2575f80fd5b5035919050565b6001600160a01b0381168114610640575f80fd5b5f805f805f608086880312156106d1575f80fd5b85356106dc816106a9565b945060208601356106ec816106a9565b935060408601359250606086013567ffffffffffffffff8082111561070f575f80fd5b818801915088601f830112610722575f80fd5b813581811115610730575f80fd5b896020828501011115610741575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610765575f80fd5b50508035926020909101359150565b5f60208284031215610784575f80fd5b813561078f816106a9565b9392505050565b5f602082840312156107a6575f80fd5b815161078f816106a9565b808201808211156107d057634e487b7160e01b5f52601160045260245ffd5b9291505056fea264697066735822122028d4b22030e89e1a35b6bbb087e63d3edbd594a1f5cc92318930ea74ca46c48a64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d690
-----Decoded View---------------
Arg [0] : _nftContract (address): 0x77DcC9b09C6Ae94CDC726540735682A38e18d690
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d690
Deployed Bytecode Sourcemap
1272:1777:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1473:57:0;;;;;;;;;;-1:-1:-1;;;;;391:32:1;;;373:51;;455:2;440:18;;433:34;;;;346:18;1473:57:0;;;;;;;;2881:165;;;;;;:::i;:::-;-1:-1:-1;;;2881:165:0;;;;;;;;;;;-1:-1:-1;;;;;;1717:33:1;;;1699:52;;1687:2;1672:18;2881:165:0;1555:202:1;652:87:0;698:7;725:6;-1:-1:-1;;;;;725:6:0;652:87;;;-1:-1:-1;;;;;1926:32:1;;;1908:51;;1896:2;1881:18;652:87:0;1762:203:1;2404:469:0;;;;;;:::i;:::-;;:::i;:::-;;1337:36;;;;;1829:567;;;;;;:::i;:::-;;:::i;873:201::-;;;;;;:::i;:::-;;:::i;2404:469::-;2466:31;2500:24;;;:15;:24;;;;;2545:14;;-1:-1:-1;;;;;2545:14:0;2563:10;2545:28;2537:66;;;;-1:-1:-1;;;2537:66:0;;2899:2:1;2537:66:0;;;2881:21:1;2938:2;2918:18;;;2911:30;2977:27;2957:18;;;2950:55;3022:18;;2537:66:0;;;;;;;;;2641:8;:19;;;2622:15;:38;;2614:76;;;;-1:-1:-1;;;2614:76:0;;3253:2:1;2614:76:0;;;3235:21:1;3292:2;3272:18;;;3265:30;3331:27;3311:18;;;3304:55;3376:18;;2614:76:0;3051:349:1;2614:76:0;2703:64;;-1:-1:-1;;;2703:64:0;;2740:4;2703:64;;;3645:34:1;2747:10:0;3695:18:1;;;3688:43;3747:18;;;3740:34;;;2703:11:0;-1:-1:-1;;;;;2703:28:0;;;;3580:18:1;;2703:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2785:24:0;;;;:15;:24;;;;;;;;2778:31;;-1:-1:-1;;;;;;2778:31:0;;;;;;;;;2827:38;2801:7;;-1:-1:-1;2845:10:0;;2827:38;;;2455:418;2404:469;:::o;1829:567::-;1935:9;1919:12;:25;;1911:72;;;;-1:-1:-1;;;1911:72:0;;3987:2:1;1911:72:0;;;3969:21:1;4026:2;4006:18;;;3999:30;4065:34;4045:18;;;4038:62;-1:-1:-1;;;4116:18:1;;;4109:32;4158:19;;1911:72:0;3785:398:1;1911:72:0;2002:28;;-1:-1:-1;;;2002:28:0;;;;;4334:25:1;;;2034:10:0;;-1:-1:-1;;;;;2002:11:0;:19;;;;4307:18:1;;2002:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2002:42:0;;1994:75;;;;-1:-1:-1;;;1994:75:0;;4828:2:1;1994:75:0;;;4810:21:1;4867:2;4847:18;;;4840:30;-1:-1:-1;;;4886:18:1;;;4879:50;4946:18;;1994:75:0;4626:344:1;1994:75:0;2082:64;;-1:-1:-1;;;2082:64:0;;2111:10;2082:64;;;3645:34:1;2131:4:0;3695:18:1;;;3688:43;3747:18;;;3740:34;;;2082:11:0;-1:-1:-1;;;;;2082:28:0;;;;3580:18:1;;2082:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2186:116:0;;;;;;;;;2223:10;2186:116;;;-1:-1:-1;;2186:116:0;;;2260:30;2278:12;2260:15;:30;:::i;:::-;2186:116;;2159:24;;;;:15;:24;;;;;;;;:143;;;;-1:-1:-1;;;;;;2159:143:0;-1:-1:-1;;;;;2159:143:0;;;;;;;;;;;;;;:24;2336:10;2320:68;2357:30;2375:12;2357:15;:30;:::i;:::-;2320:68;;4334:25:1;;;4322:2;4307:18;2320:68:0;;;;;;;1829:567;;:::o;873:201::-;798:10;787:7;698;725:6;-1:-1:-1;;;;;725:6:0;;652:87;787:7;-1:-1:-1;;;;;787:21:0;;779:66;;;;-1:-1:-1;;;779:66:0;;5404:2:1;779:66:0;;;5386:21:1;;;5423:18;;;5416:30;5482:34;5462:18;;;5455:62;5534:18;;779:66:0;5202:356:1;779:66:0;-1:-1:-1;;;;;962:22:0;::::1;954:73;;;::::0;-1:-1:-1;;;954:73:0;;5765:2:1;954:73:0::1;::::0;::::1;5747:21:1::0;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;-1:-1:-1;;;5894:18:1;;;5887:36;5940:19;;954:73:0::1;5563:402:1::0;954:73:0::1;1038:28;1057:8;1038:18;:28::i;:::-;873:201:::0;:::o;1082:183::-;1148:16;1167:6;;-1:-1:-1;;;;;1184:17:0;;;-1:-1:-1;;;;;;1184:17:0;;;;;;1217:40;;1167:6;;;;;;;1217:40;;1148:16;1217:40;1137:128;1082: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;2192:248::-;2260:6;2268;2321:2;2309:9;2300:7;2296:23;2292:32;2289:52;;;2337:1;2334;2327:12;2289:52;-1:-1:-1;;2360:23:1;;;2430:2;2415:18;;;2402:32;;-1:-1:-1;2192:248:1:o;2445:247::-;2504:6;2557:2;2545:9;2536:7;2532:23;2528:32;2525:52;;;2573:1;2570;2563:12;2525:52;2612:9;2599:23;2631:31;2656:5;2631:31;:::i;:::-;2681:5;2445:247;-1:-1:-1;;;2445:247:1:o;4370:251::-;4440:6;4493:2;4481:9;4472:7;4468:23;4464:32;4461:52;;;4509:1;4506;4499:12;4461:52;4541:9;4535:16;4560:31;4585:5;4560:31;:::i;4975:222::-;5040:9;;;5061:10;;;5058:133;;;5113:10;5108:3;5104:20;5101:1;5094:31;5148:4;5145:1;5138:15;5176:4;5173:1;5166:15;5058:133;4975:222;;;;:::o
Swarm Source
ipfs://28d4b22030e89e1a35b6bbb087e63d3edbd594a1f5cc92318930ea74ca46c48a
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.