S Price: $0.730464 (+0.40%)

Contract

0xA8A971a480898aB8999B2FA71044FA91Cebbe0FE

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Lock Liquidity103451592025-02-26 17:31:5618 hrs ago1740591116IN
0xA8A971a4...1Cebbe0FE
0 S0.0096683355.01
Unlock Liquidity103358952025-02-26 16:36:1519 hrs ago1740587775IN
0xA8A971a4...1Cebbe0FE
0 S0.0057088855.01
Lock Liquidity103342492025-02-26 16:26:5219 hrs ago1740587212IN
0xA8A971a4...1Cebbe0FE
0 S0.0102343955.01
Unlock Liquidity103336472025-02-26 16:23:1919 hrs ago1740586999IN
0xA8A971a4...1Cebbe0FE
0 S0.0057088855.01
Lock Liquidity103322732025-02-26 16:15:3820 hrs ago1740586538IN
0xA8A971a4...1Cebbe0FE
0 S0.0102343955.01

Parent Transaction Hash Block From To
View All Internal 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

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *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

Contract ABI

[{"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

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.