More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x1802e517...8dD54f277 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.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-26 */ // 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"}]
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061007a575f3560e01c806396e839241161005857806396e8392414610130578063d56d229d14610145578063ec87682a1461016c578063f2fde38b1461017f575f80fd5b806301a5e1631461007e578063150b7a02146100d45780638da5cb5b1461010c575b5f80fd5b6100b061008c366004610692565b600160208190525f918252604090912080549101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100f36100e23660046106bd565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016100cb565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100cb565b61014361013e366004610692565b610192565b005b6101187f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d69081565b61014361017a366004610756565b610322565b61014361018d366004610776565b61056a565b5f81815260016020526040902080546001600160a01b031633146101fd5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420746865206f776e6572206f662074686973204e46540000000000000060448201526064015b60405180910390fd5b80600101544210156102515760405162461bcd60e51b815260206004820152601960248201527f4c6971756964697479206973207374696c6c206c6f636b65640000000000000060448201526064016101f4565b604051632142170760e11b8152306004820152336024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156102bc575f80fd5b505af11580156102ce573d5f803e3d5ffd5b5050505f83815260016020819052604080832080546001600160a01b03191681559091018290555184925033917fbc075837768dcd77a58731f7945fff3f5c9d285e3ade5c5b3c6f4fd15342457891a35050565b61012c81101561037f5760405162461bcd60e51b815260206004820152602260248201527f4d696e696d756d206c6f636b206475726174696f6e2069732035206d696e7574604482015261657360f01b60648201526084016101f4565b6040516331a9108f60e11b81526004810183905233906001600160a01b037f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6901690636352211e90602401602060405180830381865afa1580156103e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104089190610798565b6001600160a01b0316146104555760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016101f4565b604051632142170760e11b8152336004820152306024820152604481018390527f00000000000000000000000077dcc9b09c6ae94cdc726540735682a38e18d6906001600160a01b0316906342842e0e906064015f604051808303815f87803b1580156104c0575f80fd5b505af11580156104d2573d5f803e3d5ffd5b505060408051808201909152338152915050602081016104f283426107b3565b90525f838152600160208181526040909220835181546001600160a01b0319166001600160a01b03909116178155929091015191015581337fe3afae9ec63e6f2e914c17bab8493b603680a72d9e6dfacf25ac6a4806555d4161055584426107b3565b60405190815260200160405180910390a35050565b3361057c5f546001600160a01b031690565b6001600160a01b0316146105d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f4565b6001600160a01b0381166106375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f4565b61064081610643565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106a2575f80fd5b5035919050565b6001600160a01b0381168114610640575f80fd5b5f805f805f608086880312156106d1575f80fd5b85356106dc816106a9565b945060208601356106ec816106a9565b935060408601359250606086013567ffffffffffffffff81111561070e575f80fd5b8601601f8101881361071e575f80fd5b803567ffffffffffffffff811115610734575f80fd5b886020828401011115610745575f80fd5b959894975092955050506020019190565b5f8060408385031215610767575f80fd5b50508035926020909101359150565b5f60208284031215610786575f80fd5b8135610791816106a9565b9392505050565b5f602082840312156107a8575f80fd5b8151610791816106a9565b808201808211156107d257634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220dc1b667aa818fed1b5a8f58f46201b481c186c5f73b894e19d1dfd808584aee764736f6c634300081a0033
Deployed Bytecode Sourcemap
1272:1777:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1473:57:0;;;;;;;;;;-1:-1:-1;;;;;437:32:1;;;419:51;;501:2;486:18;;479:34;;;;392:18;1473:57:0;;;;;;;;2881:165;;;;;;:::i;:::-;-1:-1:-1;;;2881:165:0;;;;;;;;;;;-1:-1:-1;;;;;;1810:33:1;;;1792:52;;1780:2;1765:18;2881:165:0;1648:202:1;652:87:0;698:7;725:6;-1:-1:-1;;;;;725:6:0;652:87;;;-1:-1:-1;;;;;2019:32:1;;;2001:51;;1989:2;1974:18;652:87:0;1855: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;;3090:2:1;2537:66:0;;;3072:21:1;3129:2;3109:18;;;3102:30;3168:27;3148:18;;;3141:55;3213:18;;2537:66:0;;;;;;;;;2641:8;:19;;;2622:15;:38;;2614:76;;;;-1:-1:-1;;;2614:76:0;;3444:2:1;2614:76:0;;;3426:21:1;3483:2;3463:18;;;3456:30;3522:27;3502:18;;;3495:55;3567:18;;2614:76:0;3242:349:1;2614:76:0;2703:64;;-1:-1:-1;;;2703:64:0;;2740:4;2703:64;;;3798:51:1;2747:10:0;3865:18:1;;;3858:60;3934:18;;;3927:34;;;2703:11:0;-1:-1:-1;;;;;2703:28:0;;;;3771: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;;4174:2:1;1911:72:0;;;4156:21:1;4213:2;4193:18;;;4186:30;4252:34;4232:18;;;4225:62;-1:-1:-1;;;4303:18:1;;;4296:32;4345:19;;1911:72:0;3972:398:1;1911:72:0;2002:28;;-1:-1:-1;;;2002:28:0;;;;;4521:25:1;;;2034:10:0;;-1:-1:-1;;;;;2002:11:0;:19;;;;4494:18:1;;2002:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2002:42:0;;1994:75;;;;-1:-1:-1;;;1994:75:0;;5015:2:1;1994:75:0;;;4997:21:1;5054:2;5034:18;;;5027:30;-1:-1:-1;;;5073:18:1;;;5066:50;5133:18;;1994:75:0;4813:344:1;1994:75:0;2082:64;;-1:-1:-1;;;2082:64:0;;2111:10;2082:64;;;3798:51:1;2131:4:0;3865:18:1;;;3858:60;3934:18;;;3927:34;;;2082:11:0;-1:-1:-1;;;;;2082:28:0;;;;3771: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;;4521:25:1;;;4509:2;4494: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;;5591:2:1;779:66:0;;;5573:21:1;;;5610:18;;;5603:30;5669:34;5649:18;;;5642:62;5721:18;;779:66:0;5389:356:1;779:66:0;-1:-1:-1;;;;;962:22:0;::::1;954:73;;;::::0;-1:-1:-1;;;954:73:0;;5952:2:1;954:73:0::1;::::0;::::1;5934:21:1::0;5991:2;5971:18;;;5964:30;6030:34;6010:18;;;6003:62;-1:-1:-1;;;6081:18:1;;;6074:36;6127:19;;954:73:0::1;5750: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:226: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;187:23:1;;14:226;-1:-1:-1;14:226:1:o;524:131::-;-1:-1:-1;;;;;599:31:1;;589:42;;579:70;;645:1;642;635:12;660:983;757:6;765;773;781;789;842:3;830:9;821:7;817:23;813:33;810:53;;;859:1;856;849:12;810:53;898:9;885:23;917:31;942:5;917:31;:::i;:::-;967:5;-1:-1:-1;1024:2:1;1009:18;;996:32;1037:33;996:32;1037:33;:::i;:::-;1089:7;-1:-1:-1;1169:2:1;1154:18;;1141:32;;-1:-1:-1;1250:2:1;1235:18;;1222:32;1277:18;1266:30;;1263:50;;;1309:1;1306;1299:12;1263:50;1332:22;;1385:4;1377:13;;1373:27;-1:-1:-1;1363:55:1;;1414:1;1411;1404:12;1363:55;1454:2;1441:16;1480:18;1472:6;1469:30;1466:50;;;1512:1;1509;1502:12;1466:50;1557:7;1552:2;1543:6;1539:2;1535:15;1531:24;1528:37;1525:57;;;1578:1;1575;1568:12;1525:57;660:983;;;;-1:-1:-1;660:983:1;;-1:-1:-1;;;1609:2:1;1601:11;;1631:6;660:983::o;2285:346::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;-1:-1:-1;;2475:23:1;;;2595:2;2580:18;;;2567:32;;-1:-1:-1;2285:346:1:o;2636:247::-;2695:6;2748:2;2736:9;2727:7;2723:23;2719:32;2716:52;;;2764:1;2761;2754:12;2716:52;2803:9;2790:23;2822:31;2847:5;2822:31;:::i;:::-;2872:5;2636:247;-1:-1:-1;;;2636:247:1:o;4557:251::-;4627:6;4680:2;4668:9;4659:7;4655:23;4651:32;4648:52;;;4696:1;4693;4686:12;4648:52;4728:9;4722:16;4747:31;4772:5;4747:31;:::i;5162:222::-;5227:9;;;5248:10;;;5245:133;;;5300:10;5295:3;5291:20;5288:1;5281:31;5335:4;5332:1;5325:15;5363:4;5360:1;5353:15;5245:133;5162:222;;;;:::o
Swarm Source
ipfs://dc1b667aa818fed1b5a8f58f46201b481c186c5f73b894e19d1dfd808584aee7
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.