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; } 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 { 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); } }
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":[],"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
60a060405234801561000f575f80fd5b5060405161081838038061081883398101604081905261002e91610099565b336100388161004a565b506001600160a01b03166080526100c6565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100a9575f80fd5b81516001600160a01b03811681146100bf575f80fd5b9392505050565b6080516107266100f25f395f818160bf0152818161022501528181610347015261042801526107265ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806301a5e163146100645780637011b726146100ba5780638da5cb5b146100f957806396e8392414610109578063ec87682a1461011e578063f2fde38b14610131575b5f80fd5b610096610072366004610643565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b1565b5f546001600160a01b03166100e1565b61011c610117366004610643565b610144565b005b61011c61012c36600461065a565b6102d4565b61011c61013f36600461068e565b61051b565b5f81815260016020526040902080546001600160a01b031633146101af5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102035760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101a6565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b15801561026e575f80fd5b505af1158015610280573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b620151808110156103275760405162461bcd60e51b815260206004820152601e60248201527f4d696e696d756d206c6f636b206475726174696f6e206973203120646179000060448201526064016101a6565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa15801561038c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b091906106b0565b6001600160a01b0316146104065760405162461bcd60e51b815260206004820152601760248201527f596f75206d757374206f776e20746865204c50204e465400000000000000000060448201526064016101a6565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e906064015f604051808303815f87803b158015610471575f80fd5b505af1158015610483573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104a383426106cb565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161050684426106cb565b60405190815260200160405180910390a35050565b3361052d5f546001600160a01b031690565b6001600160a01b0316146105835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a6565b6001600160a01b0381166105e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101a6565b6105f1816105f4565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610653575f80fd5b5035919050565b5f806040838503121561066b575f80fd5b50508035926020909101359150565b6001600160a01b03811681146105f1575f80fd5b5f6020828403121561069e575f80fd5b81356106a98161067a565b9392505050565b5f602082840312156106c0575f80fd5b81516106a98161067a565b808201808211156106ea57634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220c6628462d15714e80dacbe9929f4d8843d962ca86301ef54fcb31be8f71abc4264736f6c6343000814003300000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610060575f3560e01c806301a5e163146100645780637011b726146100ba5780638da5cb5b146100f957806396e8392414610109578063ec87682a1461011e578063f2fde38b14610131575b5f80fd5b610096610072366004610643565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100e17f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef81565b6040516001600160a01b0390911681526020016100b1565b5f546001600160a01b03166100e1565b61011c610117366004610643565b610144565b005b61011c61012c36600461065a565b6102d4565b61011c61013f36600461068e565b61051b565b5f81815260016020526040902080546001600160a01b031633146101af5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102035760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101a6565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef6001600160a01b0316906342842e0e906064015f604051808303815f87803b15801561026e575f80fd5b505af1158015610280573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b620151808110156103275760405162461bcd60e51b815260206004820152601e60248201527f4d696e696d756d206c6f636b206475726174696f6e206973203120646179000060448201526064016101a6565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef1690636352211e90602401602060405180830381865afa15801561038c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b091906106b0565b6001600160a01b0316146104065760405162461bcd60e51b815260206004820152601760248201527f596f75206d757374206f776e20746865204c50204e465400000000000000000060448201526064016101a6565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000056cfc796bc88c9c7e1b38c2b0af9b7120b079aef6001600160a01b0316906342842e0e906064015f604051808303815f87803b158015610471575f80fd5b505af1158015610483573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104a383426106cb565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161050684426106cb565b60405190815260200160405180910390a35050565b3361052d5f546001600160a01b031690565b6001600160a01b0316146105835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a6565b6001600160a01b0381166105e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101a6565b6105f1816105f4565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610653575f80fd5b5035919050565b5f806040838503121561066b575f80fd5b50508035926020909101359150565b6001600160a01b03811681146105f1575f80fd5b5f6020828403121561069e575f80fd5b81356106a98161067a565b9392505050565b5f602082840312156106c0575f80fd5b81516106a98161067a565b808201808211156106ea57634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220c6628462d15714e80dacbe9929f4d8843d962ca86301ef54fcb31be8f71abc4264736f6c63430008140033
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
1228:1648:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1441:57:0;;;;;;;;;;-1:-1:-1;;;;;391:32:1;;;373:51;;455:2;440:18;;433:34;;;;346:18;1441:57:0;;;;;;;;1276;;;;;;;;-1:-1:-1;;;;;677:32:1;;;659:51;;647:2;632:18;1276:57:0;478:238:1;551:87:0;597:7;624:6;-1:-1:-1;;;;;624:6:0;551:87;;2405:468;;;;;;:::i;:::-;;:::i;:::-;;1824:573;;;;;;:::i;:::-;;:::i;772:201::-;;;;;;:::i;:::-;;:::i;2405:468::-;2467:31;2501:24;;;:15;:24;;;;;2546:14;;-1:-1:-1;;;;;2546:14:0;2564:10;2546:28;2538:66;;;;-1:-1:-1;;;2538:66:0;;1772:2:1;2538:66:0;;;1754:21:1;1811:2;1791:18;;;1784:30;1850:27;1830:18;;;1823:55;1895:18;;2538:66:0;;;;;;;;;2642:8;:19;;;2623:15;:38;;2615:76;;;;-1:-1:-1;;;2615:76:0;;2126:2:1;2615:76:0;;;2108:21:1;2165:2;2145:18;;;2138:30;2204:27;2184:18;;;2177:55;2249:18;;2615:76:0;1924:349:1;2615:76:0;2704:65;;-1:-1:-1;;;2704:65:0;;2742:4;2704:65;;;2518:34:1;2749:10:0;2568:18:1;;;2561:43;2620:18;;;2613:34;;;2704:12:0;-1:-1:-1;;;;;2704:29:0;;;;2453:18:1;;2704:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2787:24:0;;;;:15;:24;;;;;;;;2780:31;;-1:-1:-1;;;;;;2780:31:0;;;;;;;;;2827:38;2803:7;;-1:-1:-1;2845:10:0;;2827:38;;;2456:417;2405:468;:::o;1824:573::-;1930:6;1914:12;:22;;1906:65;;;;-1:-1:-1;;;1906:65:0;;2860:2:1;1906:65:0;;;2842:21:1;2899:2;2879:18;;;2872:30;2938:32;2918:18;;;2911:60;2988:18;;1906:65:0;2658:354:1;1906:65:0;1990:29;;-1:-1:-1;;;1990:29:0;;;;;3163:25:1;;;2023:10:0;;-1:-1:-1;;;;;1990:12:0;:20;;;;3136:18:1;;1990:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1990:43:0;;1982:79;;;;-1:-1:-1;;;1982:79:0;;3657:2:1;1982:79:0;;;3639:21:1;3696:2;3676:18;;;3669:30;3735:25;3715:18;;;3708:53;3778:18;;1982:79:0;3455:347:1;1982:79:0;2074:65;;-1:-1:-1;;;2074:65:0;;2104:10;2074:65;;;2518:34:1;2124:4:0;2568:18:1;;;2561:43;2620:18;;;2613:34;;;2074:12:0;-1:-1:-1;;;;;2074:29:0;;;;2453:18:1;;2074:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2187:116:0;;;;;;;;;2224:10;2187:116;;;-1:-1:-1;;2187:116:0;;;2261:30;2279:12;2261:15;:30;:::i;:::-;2187:116;;2160:24;;;;:15;:24;;;;;;;;:143;;;;-1:-1:-1;;;;;;2160:143:0;-1:-1:-1;;;;;2160:143:0;;;;;;;;;;;;;;:24;2337:10;2321:68;2358:30;2376:12;2358:15;:30;:::i;:::-;2321:68;;3163:25:1;;;3151:2;3136:18;2321:68:0;;;;;;;1824:573;;:::o;772:201::-;697:10;686:7;597;624:6;-1:-1:-1;;;;;624:6:0;;551:87;686:7;-1:-1:-1;;;;;686:21:0;;678:66;;;;-1:-1:-1;;;678:66:0;;4236:2:1;678:66:0;;;4218:21:1;;;4255:18;;;4248:30;4314:34;4294:18;;;4287:62;4366:18;;678:66:0;4034:356:1;678:66:0;-1:-1:-1;;;;;861:22:0;::::1;853:73;;;::::0;-1:-1:-1;;;853:73:0;;4597:2:1;853:73:0::1;::::0;::::1;4579:21:1::0;4636:2;4616:18;;;4609:30;4675:34;4655:18;;;4648:62;-1:-1:-1;;;4726:18:1;;;4719:36;4772:19;;853:73:0::1;4395:402:1::0;853:73:0::1;937:28;956:8;937:18;:28::i;:::-;772:201:::0;:::o;981:183::-;1047:16;1066:6;;-1:-1:-1;;;;;1083:17:0;;;-1:-1:-1;;;;;;1083:17:0;;;;;;1116:40;;1066:6;;;;;;;1116:40;;1047:16;1116:40;1036:128;981: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;929:248::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;-1:-1:-1;;1097:23:1;;;1167:2;1152:18;;;1139:32;;-1:-1:-1;929:248:1:o;1182:131::-;-1:-1:-1;;;;;1257:31:1;;1247:42;;1237:70;;1303:1;1300;1293:12;1318:247;1377:6;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1485:9;1472:23;1504:31;1529:5;1504:31;:::i;:::-;1554:5;1318:247;-1:-1:-1;;;1318:247:1:o;3199:251::-;3269:6;3322:2;3310:9;3301:7;3297:23;3293:32;3290:52;;;3338:1;3335;3328:12;3290:52;3370:9;3364:16;3389:31;3414:5;3389:31;:::i;3807:222::-;3872:9;;;3893:10;;;3890:133;;;3945:10;3940:3;3936:20;3933:1;3926:31;3980:4;3977:1;3970:15;4008:4;4005:1;3998:15;3890:133;3807:222;;;;:::o
Swarm Source
ipfs://c6628462d15714e80dacbe9929f4d8843d962ca86301ef54fcb31be8f71abc42
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.