// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {IERC721ReceiverLike, INonfungiblePositionManagerLike, IPeepsFactory} from "./interfaces/IPeepsV3.sol";
/**
* @title PeepsLocker
* @notice Permanently holds launch position NFTs and distributes accrued fees.
* The contract intentionally exposes no position withdrawal or arbitrary-call
* function, so registered launch liquidity cannot be removed by an administrator.
*/
contract PeepsLocker is Ownable2Step, ReentrancyGuard, IERC721ReceiverLike {
using SafeERC20 for IERC20;
uint256 public constant MAX_PROTOCOL_FEE_SHARE = 50;
error NotFactory();
error NotAuthorized();
error NotDeployer();
error TokenNotFound();
error PositionNotHeld();
error PositionAlreadyLocked();
error NoFeesToCollect();
error InvalidProtocolFee();
error AlreadyInitialized();
error ZeroAddress();
error NotifyFeesFailed();
event FactoryUpdated(address indexed factory);
event PositionLocked(
address indexed token,
address indexed deployer,
uint256 indexed dexId,
address pairToken,
uint256 positionId,
address positionManager
);
event FeesClaimed(
address indexed token,
address indexed caller,
address token0,
address token1,
uint256 recipientAmount0,
uint256 recipientAmount1,
uint256 protocolAmount0,
uint256 protocolAmount1
);
event FeeRedirectUpdated(address indexed token, address indexed newFeeWallet);
event FeeCollectorUpdated(address indexed collector, bool enabled);
event ProtocolFeeRecipientUpdated(address recipient);
event ProtocolFeeUpdated(uint256 share);
address public factory;
address public protocolFeeRecipient;
uint256 public protocolFeeShare;
mapping(address collector => bool enabled) public feeCollectors;
mapping(address token => address recipient) public feeRedirects;
mapping(address token => uint256 share) public tokenProtocolFeeShares;
mapping(address deployer => address[] tokens) public deployerTokens;
mapping(address recipient => address[] tokens) public feeRecipientTokens;
mapping(address token => uint256 indexPlusOne) private _feeRecipientTokenIndexes;
mapping(address token => bool locked) private _lockedTokens;
/**
* @param initialOwner Administrative owner for fee policy and collectors.
* @param initialProtocolFeeRecipient Recipient of the protocol fee share.
* @param initialProtocolFeeShare Percentage from 0 through 100.
*/
constructor(address initialOwner, address initialProtocolFeeRecipient, uint256 initialProtocolFeeShare)
Ownable(initialOwner)
{
if (initialProtocolFeeRecipient == address(0)) revert ZeroAddress();
if (initialProtocolFeeShare > MAX_PROTOCOL_FEE_SHARE) revert InvalidProtocolFee();
protocolFeeRecipient = initialProtocolFeeRecipient;
protocolFeeShare = initialProtocolFeeShare;
}
modifier onlyFactory() {
if (msg.sender != factory) revert NotFactory();
_;
}
/**
* @notice Binds the locker to one immutable launch factory.
*/
function initialize(address factory_) external onlyOwner {
if (factory != address(0)) revert AlreadyInitialized();
if (factory_ == address(0)) revert ZeroAddress();
factory = factory_;
emit FactoryUpdated(factory_);
}
/**
* @notice Accepts only launch NFTs transferred by the configured factory.
*/
function onERC721Received(address operator, address from, uint256, bytes calldata) external view returns (bytes4) {
if (operator != factory || from != factory) revert NotFactory();
return IERC721ReceiverLike.onERC721Received.selector;
}
/**
* @notice Registers and verifies permanent custody of a launched position.
*/
function lockPosition(address token) external onlyFactory {
if (_lockedTokens[token]) revert PositionAlreadyLocked();
IPeepsFactory.LaunchedToken memory launched = IPeepsFactory(factory).getLaunchedToken(token);
if (!launched.exists || launched.token != token) revert TokenNotFound();
address nftOwner = INonfungiblePositionManagerLike(launched.positionManager).ownerOf(launched.positionId);
if (nftOwner != address(this)) revert PositionNotHeld();
_lockedTokens[token] = true;
tokenProtocolFeeShares[token] = protocolFeeShare;
deployerTokens[launched.deployer].push(token);
emit PositionLocked(
token,
launched.deployer,
launched.dexId,
launched.pairedToken,
launched.positionId,
launched.positionManager
);
}
/**
* @notice Collects V3 fees and splits both assets under the configured policy.
*/
function collectFees(address token) external nonReentrant returns (uint256 amount0, uint256 amount1) {
IPeepsFactory.LaunchedToken memory launched = getLaunchedToken(token);
if (!launched.exists || !_lockedTokens[token]) revert TokenNotFound();
address recipient = feeRedirects[token];
if (recipient == address(0)) recipient = launched.deployer;
if (
msg.sender != owner() && msg.sender != launched.deployer && msg.sender != recipient
&& !feeCollectors[msg.sender]
) {
revert NotAuthorized();
}
INonfungiblePositionManagerLike manager = INonfungiblePositionManagerLike(launched.positionManager);
address token0;
address token1;
(,, token0, token1,,,,,,,,) = manager.positions(launched.positionId);
(amount0, amount1) = manager.collect(
INonfungiblePositionManagerLike.CollectParams({
tokenId: launched.positionId,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
})
);
if (amount0 == 0 && amount1 == 0) revert NoFeesToCollect();
uint256 tokenProtocolFeeShare = tokenProtocolFeeShares[token];
uint256 protocolAmount0 = (amount0 * tokenProtocolFeeShare) / 100;
uint256 protocolAmount1 = (amount1 * tokenProtocolFeeShare) / 100;
uint256 recipientAmount0 = amount0 - protocolAmount0;
uint256 recipientAmount1 = amount1 - protocolAmount1;
_transferIfPositive(token0, protocolFeeRecipient, protocolAmount0);
_transferIfPositive(token1, protocolFeeRecipient, protocolAmount1);
_transferIfPositive(token0, recipient, recipientAmount0);
_transferIfPositive(token1, recipient, recipientAmount1);
// Exact amounts: fee router attributes only this collect's protocol share.
// Require success when recipient is a contract (fee router); EOAs skip.
if ((protocolAmount0 > 0 || protocolAmount1 > 0) && protocolFeeRecipient.code.length > 0) {
(bool success,) = protocolFeeRecipient.call(
abi.encodeWithSignature(
"notifyFees(address,address,address,uint256,uint256)",
token,
token0,
token1,
protocolAmount0,
protocolAmount1
)
);
if (!success) revert NotifyFeesFailed();
}
emit FeesClaimed(
token, msg.sender, token0, token1, recipientAmount0, recipientAmount1, protocolAmount0, protocolAmount1
);
}
/**
* @notice Returns the factory record for a launch token.
*/
function getLaunchedToken(address token) public view returns (IPeepsFactory.LaunchedToken memory) {
if (factory == address(0)) revert TokenNotFound();
return IPeepsFactory(factory).getLaunchedToken(token);
}
/**
* @notice Redirects the creator share for one token.
* @dev Callable by the launch deployer or the factory during launch setup.
*/
function setFeeRedirect(address token, address newFeeWallet) external {
IPeepsFactory.LaunchedToken memory launched = getLaunchedToken(token);
if (!launched.exists) revert TokenNotFound();
if (msg.sender != launched.deployer && msg.sender != factory) revert NotDeployer();
_setFeeRedirect(token, newFeeWallet);
}
/**
* @notice Grants or revokes fee collection permission.
*/
function setFeeCollector(address collector, bool enabled) external onlyOwner {
if (collector == address(0)) revert ZeroAddress();
feeCollectors[collector] = enabled;
emit FeeCollectorUpdated(collector, enabled);
}
/**
* @notice Changes the protocol fee recipient.
*/
function setProtocolFeeRecipient(address recipient) external onlyOwner {
if (recipient == address(0)) revert ZeroAddress();
protocolFeeRecipient = recipient;
emit ProtocolFeeRecipientUpdated(recipient);
}
/**
* @notice Changes the fee share snapshotted by future token launches.
*/
function setProtocolFeeShare(uint256 share) external onlyOwner {
if (share > MAX_PROTOCOL_FEE_SHARE) revert InvalidProtocolFee();
protocolFeeShare = share;
emit ProtocolFeeUpdated(share);
}
/**
* @notice Returns the number of tokens indexed for one deployer.
*/
function deployerTokenCount(address deployer_) external view returns (uint256) {
return deployerTokens[deployer_].length;
}
/**
* @notice Returns the number of tokens indexed for one fee recipient.
*/
function feeRecipientTokenCount(address recipient_) external view returns (uint256) {
return feeRecipientTokens[recipient_].length;
}
/**
* @notice Stores a creator-fee redirect and indexes the recipient for Profile reads.
*/
function _setFeeRedirect(address token, address newFeeWallet) private {
address previousFeeWallet = feeRedirects[token];
if (previousFeeWallet == newFeeWallet) return;
uint256 previousIndexPlusOne = _feeRecipientTokenIndexes[token];
if (previousFeeWallet != address(0) && previousIndexPlusOne != 0) {
address[] storage previousTokens = feeRecipientTokens[previousFeeWallet];
uint256 previousIndex = previousIndexPlusOne - 1;
uint256 lastIndex = previousTokens.length - 1;
if (previousIndex != lastIndex) {
address movedToken = previousTokens[lastIndex];
previousTokens[previousIndex] = movedToken;
_feeRecipientTokenIndexes[movedToken] = previousIndex + 1;
}
previousTokens.pop();
delete _feeRecipientTokenIndexes[token];
}
feeRedirects[token] = newFeeWallet;
if (newFeeWallet != address(0)) {
feeRecipientTokens[newFeeWallet].push(token);
_feeRecipientTokenIndexes[token] = feeRecipientTokens[newFeeWallet].length;
}
emit FeeRedirectUpdated(token, newFeeWallet);
}
function _transferIfPositive(address token, address recipient, uint256 amount) private {
if (amount != 0) IERC20(token).safeTransfer(recipient, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
},
{
"name": "initialProtocolFeeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "initialProtocolFeeShare",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyInitialized",
"type": "error",
"inputs": []
},
{
"name": "InvalidProtocolFee",
"type": "error",
"inputs": []
},
{
"name": "NoFeesToCollect",
"type": "error",
"inputs": []
},
{
"name": "NotAuthorized",
"type": "error",
"inputs": []
},
{
"name": "NotDeployer",
"type": "error",
"inputs": []
},
{
"name": "NotFactory",
"type": "error",
"inputs": []
},
{
"name": "NotifyFeesFailed",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "PositionAlreadyLocked",
"type": "error",
"inputs": []
},
{
"name": "PositionNotHeld",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "TokenNotFound",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "FactoryUpdated",
"type": "event",
"inputs": [
{
"name": "factory",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FeeCollectorUpdated",
"type": "event",
"inputs": [
{
"name": "collector",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "enabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "FeeRedirectUpdated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newFeeWallet",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FeesClaimed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "caller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "token0",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "token1",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "recipientAmount0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "recipientAmount1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "protocolAmount0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "protocolAmount1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferStarted",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PositionLocked",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "deployer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "dexId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "pairToken",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "positionId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "positionManager",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ProtocolFeeRecipientUpdated",
"type": "event",
"inputs": [
{
"name": "recipient",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ProtocolFeeUpdated",
"type": "event",
"inputs": [
{
"name": "share",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MAX_PROTOCOL_FEE_SHARE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "collectFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "amount0",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amount1",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "deployerTokenCount",
"type": "function",
"inputs": [
{
"name": "deployer_",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "deployerTokens",
"type": "function",
"inputs": [
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tokens",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "feeCollectors",
"type": "function",
"inputs": [
{
"name": "collector",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "enabled",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "feeRecipientTokenCount",
"type": "function",
"inputs": [
{
"name": "recipient_",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feeRecipientTokens",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tokens",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "feeRedirects",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getLaunchedToken",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "pairedToken",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager",
"type": "address",
"internalType": "address"
},
{
"name": "positionId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "dexId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "launchConfigId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "restrictionsEndBlock",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "supply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "isToken0",
"type": "bool",
"internalType": "bool"
},
{
"name": "poolFee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "exists",
"type": "bool",
"internalType": "bool"
},
{
"name": "initialBuyAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct IPeepsFactory.LaunchedToken"
}
],
"stateMutability": "view"
},
{
"name": "initialize",
"type": "function",
"inputs": [
{
"name": "factory_",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "lockPosition",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingOwner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "protocolFeeRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "protocolFeeShare",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFeeCollector",
"type": "function",
"inputs": [
{
"name": "collector",
"type": "address",
"internalType": "address"
},
{
"name": "enabled",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFeeRedirect",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "newFeeWallet",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProtocolFeeRecipient",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProtocolFeeShare",
"type": "function",
"inputs": [
{
"name": "share",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "tokenProtocolFeeShares",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "share",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60803461014957601f61177d38819003918201601f19168301916001600160401b0383118484101761014d578084926060946040528339810103126101495761004781610161565b604061005560208401610161565b9201516001600160a01b0390911691821561013657600180546001600160a01b03199081169091555f80549182168517815560405194916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b03168015610127576032821161011857600380546001600160a01b03191691909117905560045561160790816101768239f35b631752ff0760e31b5f5260045ffd5b63d92e233d60e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101495756fe6080806040526004361015610012575f80fd5b5f3560e01c908163150b7a0214611000575080633cf28b5a14610f285780634d133a6d14610eaa57806364df049e14610e82578063715018a614610e1f57806372d852ed14610bf057806379ba509714610b6b5780638da5cb5b14610b4457806394f543e714610b0c578063960b26a214610aef5780639a4a3b9014610a6b5780639b81a8ba14610a22578063a480ca79146104c4578063be3d42441461048c578063c45a015514610464578063c4d66de8146103de578063cb5cd391146103a1578063dce780c214610361578063e30c397814610339578063e521cb92146102b9578063f1c8f3c014610281578063f2fde38b14610214578063f742919b146101b0578063f87981f01461014e5763fb73e3e81461012f575f80fd5b3461014a575f36600319011261014a57602060405160328152f35b5f80fd5b3461014a57604036600319011261014a576101676110a2565b6001600160a01b03165f9081526009602052604090208054602435919082101561014a57602091610197916110ce565b905460405160039290921b1c6001600160a01b03168152f35b3461014a57602036600319011261014a576004356101cc611538565b60328111610205576020817fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de4092600455604051908152a1005b631752ff0760e31b5f5260045ffd5b3461014a57602036600319011261014a5761022d6110a2565b610235611538565b60018060a01b0316806001600160601b0360a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b3461014a57602036600319011261014a576001600160a01b036102a26110a2565b165f526007602052602060405f2054604051908152f35b3461014a57602036600319011261014a576102d26110a2565b6102da611538565b6001600160a01b0316801561032a576020817fc1b5345cce283376356748dc57f2dfa7120431d016fc7ca9ba641bc65f91411d926001600160601b0360a01b6003541617600355604051908152a1005b63d92e233d60e01b5f5260045ffd5b3461014a575f36600319011261014a576001546040516001600160a01b039091168152602090f35b3461014a57602036600319011261014a576001600160a01b036103826110a2565b165f526006602052602060018060a01b0360405f205416604051908152f35b3461014a57602036600319011261014a576001600160a01b036103c26110a2565b165f526005602052602060ff60405f2054166040519015158152f35b3461014a57602036600319011261014a576103f76110a2565b6103ff611538565b600254906001600160a01b038216610456576001600160a01b031690811561032a576001600160a01b03191681176002557f24cd1310c8883cbeaf5b805ab13586ce018b79c022827158ff3e8df14d3449365f80a2005b62dc149f60e41b5f5260045ffd5b3461014a575f36600319011261014a576002546040516001600160a01b039091168152602090f35b3461014a57602036600319011261014a576001600160a01b036104ad6110a2565b165f526009602052602060405f2054604051908152f35b3461014a57602036600319011261014a576104dd6110a2565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414610a135760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005561053381611239565b906101608201511580156109f1575b6109e2576001600160a01b039081165f818152600660205260409020549092911680156109ce575b5f546001600160a01b0316331415806109b7575b806109a4575b8061098d575b61097e57608060018060a01b036060840151169201928351906040519163133f757160e31b8352600483015261018082602481875afa9485156108b7575f925f966108c2575b5051604051608081019181831067ffffffffffffffff84111761082e576040928352815230602082019081526001600160801b0382840181815260608401828152855163fc6f786560e01b81529451600486015292516001600160a01b031660248501525181166044840152905116606482015294859060849082905f905af19283156108b7575f945f9461087c575b50841580610874575b61086557815f52600760205260405f205460646106928161068a848a61136e565b04928761136e565b049161069e8288611395565b6106eb6106ab8589611395565b80936106c28660018060a01b03600354168b61154b565b6003546106da9088906001600160a01b03168e61154b565b6106e584828b61154b565b8b61154b565b821580159061085c575b80610847575b610785575b604080516001600160a01b039788168152969099166020870152858901526060850152608084015260a083015233917f1547f2bd1a244399782ebde22047e2ede698ecdc4d6c7d4b3c4e2435f1e47f7a9060c090a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6003546040516316099a8d60e21b60208201908152602482018890526001600160a01b0389811660448401528c811660648401526084830187905260a480840189905283525f9384939116919083906107df60c482611114565b51925af13d15610842573d67ffffffffffffffff811161082e5760405190610811601f8201601f191660200183611114565b81525f60203d92013e5b61070057637093fc0760e11b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61081b565b506003546001600160a01b03163b15156106fb565b508315156106f5565b631a93aa7960e21b5f5260045ffd5b508315610669565b945092506040843d6040116108af575b8161089960409383611114565b8101031261014a57602084519401519286610660565b3d915061088c565b6040513d5f823e3d90fd5b92509450610180823d8211610976575b816108e06101809383611114565b8101031261014a5781516001600160601b0381160361014a5761090560208301611136565b5061091260408301611136565b61096d61016061092460608601611136565b9461093160808201611157565b5061093e60a0820161134c565b5061094b60c0820161134c565b5061095860e0820161135a565b50610966610140820161135a565b500161135a565b509194866105d0565b3d91506108d2565b63ea8e4eb560e01b5f5260045ffd5b50335f52600560205260ff60405f2054161561058a565b50336001600160a01b0382161415610584565b5060208201516001600160a01b031633141561057e565b5060208101516001600160a01b031661056a565b630cbdb7b360e41b5f5260045ffd5b506001600160a01b0381165f908152600b602052604090205460ff1615610542565b633ee5aeb560e01b5f5260045ffd5b3461014a57604036600319011261014a57610a3b6110a2565b6001600160a01b03165f9081526008602052604090208054602435919082101561014a57602091610197916110ce565b3461014a57604036600319011261014a57610a846110a2565b6024359081151580920361014a57610a9a611538565b6001600160a01b031690811561032a5760207f7012a31b5f655fa379216a38cb9d43e11a0bbc71f686407d18a5d186729b4cbe91835f526005825260405f2060ff1981541660ff8316179055604051908152a2005b3461014a575f36600319011261014a576020600454604051908152f35b3461014a57602036600319011261014a576001600160a01b03610b2d6110a2565b165f526008602052602060405f2054604051908152f35b3461014a575f36600319011261014a575f546040516001600160a01b039091168152602090f35b3461014a575f36600319011261014a57600154336001600160a01b0390911603610bdd57600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b3461014a57602036600319011261014a57610c096110a2565b6002546001600160a01b03169033829003610e10576001600160a01b0381165f818152600b602052604090205460ff16610e01576101a060249360405194858092631e7945ad60e11b82528560048301525afa9283156108b7575f93610dd0575b50610160830151158015610dbc575b6109e257606083019160018060a01b03835116906080850191602083516024604051809481936331a9108f60e11b835260048301525afa9081156108b7575f91610d82575b50306001600160a01b0390911603610d73577ff3fabcec8f79e4c84abcb646b5b7eb0af5fa1fcc77977e928d8b87562cc9690491606091845f52600b60205260405f20600160ff19825416179055600454855f52600760205260405f2055610d3e602088019160018060a01b038351165f52600860205260405f206112fe565b5160a08701516040978801519251965188516001600160a01b03948516815260208101989098528316978701979097521693a4005b6335a4e4a560e11b5f5260045ffd5b90506020813d602011610db4575b81610d9d60209383611114565b8101031261014a57610dae90611136565b86610cbe565b3d9150610d90565b5082516001600160a01b0316811415610c79565b610df39193506101a03d8111610dfa575b610deb8183611114565b810190611167565b9183610c6a565b503d610de1565b637f184cdb60e11b5f5260045ffd5b631966391b60e11b5f5260045ffd5b3461014a575f36600319011261014a57610e37611538565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014a575f36600319011261014a576003546040516001600160a01b039091168152602090f35b3461014a57604036600319011261014a57610ec36110a2565b610ecb6110b8565b610ed482611239565b610160810151156109e257602001516001600160a01b031633141580610f13575b610f0457610f02916113a2565b005b638b906c9760e01b5f5260045ffd5b506002546001600160a01b0316331415610ef5565b3461014a57602036600319011261014a576101a0610f4c610f476110a2565b611239565b6101806040519160018060a01b03815116835260018060a01b03602082015116602084015260018060a01b03604082015116604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e0840152610100810151610100840152610120810151151561012084015262ffffff6101408201511661014084015261016081015115156101608401520151610180820152f35b3461014a57608036600319011261014a576110196110a2565b6110216110b8565b9060643567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a573691016024011161014a576002546001600160a01b03908116911681148015929061108e575b5050610e1057630a85bd0160e11b8152602090f35b6001600160a01b0316141590508280611079565b600435906001600160a01b038216820361014a57565b602435906001600160a01b038216820361014a57565b80548210156110e3575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6101a0810190811067ffffffffffffffff82111761082e57604052565b90601f8019910116810190811067ffffffffffffffff82111761082e57604052565b51906001600160a01b038216820361014a57565b5190811515820361014a57565b519062ffffff8216820361014a57565b90816101a091031261014a5761018060405191611183836110f7565b61118c81611136565b835261119a60208201611136565b60208401526111ab60408201611136565b60408401526111bc60608201611136565b60608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e0840152610100810151610100840152611202610120820161114a565b6101208401526112156101408201611157565b610140840152611228610160820161114a565b610160840152015161018082015290565b5f610180604051611249816110f7565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152015260018060a01b03600254169081156109e257604051631e7945ad60e11b81526001600160a01b039091166004820152906101a090829060249082905afa9081156108b7575f916112e2575090565b6112fb91506101a03d8111610dfa57610deb8183611114565b90565b908154916801000000000000000083101561082e578261132691600161134a950181556110ce565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b565b51908160020b820361014a57565b51906001600160801b038216820361014a57565b8181029291811591840414171561138157565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161138157565b6001600160a01b038181165f81815260066020526040902054938216939092911683811461153257825f52600a60205260405f20549080151580611529575b611467575b50505f82815260066020526040902080546001600160a01b0319168417905582611432575b507f193b011c939ecb21a86f5a35de0149b61c53a0a2f825b8620b463b702b3a8dc65f80a3565b61144790835f52600960205260405f206112fe565b815f52600960205260405f2054815f52600a60205260405f20555f61140b565b5f52600960205260405f20905f1981018181116113815782545f198101908111611381578082036114e9575b505050805480156114d5575f1901906114ac82826110ce565b81549060018060a01b039060031b1b1916905555815f52600a6020525f60408120555f806113e6565b634e487b7160e01b5f52603160045260245ffd5b611326916114fa61151592866110ce565b905460039190911b1c6001600160a01b0316928391866110ce565b5f52600a60205260405f20555f8080611493565b508115156113e1565b50505050565b5f546001600160a01b03163303610bdd57565b8261155557505050565b60405163a9059cbb60e01b5f9081526001600160a01b0393841660045260249490945291169160209060448180865af19060015f51148216156115b0575b6040521561159e5750565b635274afe760e01b5f5260045260245ffd5b9060018115166115c857823b15153d15161690611593565b503d5f823e3d90fdfea2646970667358221220096fa1ea0308367f2b4c266b60a96a3f133ed0f94ebf451d67a784e12e0ba92164736f6c63430008230033000000000000000000000000d13e31e26cfe3235ccdc988e824a573aa6cb0a0e000000000000000000000000a2e60d09a03444b60a1164e5fe1dcebeb2e03248000000000000000000000000000000000000000000000000000000000000001e
0x6080806040526004361015610012575f80fd5b5f3560e01c908163150b7a0214611000575080633cf28b5a14610f285780634d133a6d14610eaa57806364df049e14610e82578063715018a614610e1f57806372d852ed14610bf057806379ba509714610b6b5780638da5cb5b14610b4457806394f543e714610b0c578063960b26a214610aef5780639a4a3b9014610a6b5780639b81a8ba14610a22578063a480ca79146104c4578063be3d42441461048c578063c45a015514610464578063c4d66de8146103de578063cb5cd391146103a1578063dce780c214610361578063e30c397814610339578063e521cb92146102b9578063f1c8f3c014610281578063f2fde38b14610214578063f742919b146101b0578063f87981f01461014e5763fb73e3e81461012f575f80fd5b3461014a575f36600319011261014a57602060405160328152f35b5f80fd5b3461014a57604036600319011261014a576101676110a2565b6001600160a01b03165f9081526009602052604090208054602435919082101561014a57602091610197916110ce565b905460405160039290921b1c6001600160a01b03168152f35b3461014a57602036600319011261014a576004356101cc611538565b60328111610205576020817fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de4092600455604051908152a1005b631752ff0760e31b5f5260045ffd5b3461014a57602036600319011261014a5761022d6110a2565b610235611538565b60018060a01b0316806001600160601b0360a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b3461014a57602036600319011261014a576001600160a01b036102a26110a2565b165f526007602052602060405f2054604051908152f35b3461014a57602036600319011261014a576102d26110a2565b6102da611538565b6001600160a01b0316801561032a576020817fc1b5345cce283376356748dc57f2dfa7120431d016fc7ca9ba641bc65f91411d926001600160601b0360a01b6003541617600355604051908152a1005b63d92e233d60e01b5f5260045ffd5b3461014a575f36600319011261014a576001546040516001600160a01b039091168152602090f35b3461014a57602036600319011261014a576001600160a01b036103826110a2565b165f526006602052602060018060a01b0360405f205416604051908152f35b3461014a57602036600319011261014a576001600160a01b036103c26110a2565b165f526005602052602060ff60405f2054166040519015158152f35b3461014a57602036600319011261014a576103f76110a2565b6103ff611538565b600254906001600160a01b038216610456576001600160a01b031690811561032a576001600160a01b03191681176002557f24cd1310c8883cbeaf5b805ab13586ce018b79c022827158ff3e8df14d3449365f80a2005b62dc149f60e41b5f5260045ffd5b3461014a575f36600319011261014a576002546040516001600160a01b039091168152602090f35b3461014a57602036600319011261014a576001600160a01b036104ad6110a2565b165f526009602052602060405f2054604051908152f35b3461014a57602036600319011261014a576104dd6110a2565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414610a135760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005561053381611239565b906101608201511580156109f1575b6109e2576001600160a01b039081165f818152600660205260409020549092911680156109ce575b5f546001600160a01b0316331415806109b7575b806109a4575b8061098d575b61097e57608060018060a01b036060840151169201928351906040519163133f757160e31b8352600483015261018082602481875afa9485156108b7575f925f966108c2575b5051604051608081019181831067ffffffffffffffff84111761082e576040928352815230602082019081526001600160801b0382840181815260608401828152855163fc6f786560e01b81529451600486015292516001600160a01b031660248501525181166044840152905116606482015294859060849082905f905af19283156108b7575f945f9461087c575b50841580610874575b61086557815f52600760205260405f205460646106928161068a848a61136e565b04928761136e565b049161069e8288611395565b6106eb6106ab8589611395565b80936106c28660018060a01b03600354168b61154b565b6003546106da9088906001600160a01b03168e61154b565b6106e584828b61154b565b8b61154b565b821580159061085c575b80610847575b610785575b604080516001600160a01b039788168152969099166020870152858901526060850152608084015260a083015233917f1547f2bd1a244399782ebde22047e2ede698ecdc4d6c7d4b3c4e2435f1e47f7a9060c090a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6003546040516316099a8d60e21b60208201908152602482018890526001600160a01b0389811660448401528c811660648401526084830187905260a480840189905283525f9384939116919083906107df60c482611114565b51925af13d15610842573d67ffffffffffffffff811161082e5760405190610811601f8201601f191660200183611114565b81525f60203d92013e5b61070057637093fc0760e11b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61081b565b506003546001600160a01b03163b15156106fb565b508315156106f5565b631a93aa7960e21b5f5260045ffd5b508315610669565b945092506040843d6040116108af575b8161089960409383611114565b8101031261014a57602084519401519286610660565b3d915061088c565b6040513d5f823e3d90fd5b92509450610180823d8211610976575b816108e06101809383611114565b8101031261014a5781516001600160601b0381160361014a5761090560208301611136565b5061091260408301611136565b61096d61016061092460608601611136565b9461093160808201611157565b5061093e60a0820161134c565b5061094b60c0820161134c565b5061095860e0820161135a565b50610966610140820161135a565b500161135a565b509194866105d0565b3d91506108d2565b63ea8e4eb560e01b5f5260045ffd5b50335f52600560205260ff60405f2054161561058a565b50336001600160a01b0382161415610584565b5060208201516001600160a01b031633141561057e565b5060208101516001600160a01b031661056a565b630cbdb7b360e41b5f5260045ffd5b506001600160a01b0381165f908152600b602052604090205460ff1615610542565b633ee5aeb560e01b5f5260045ffd5b3461014a57604036600319011261014a57610a3b6110a2565b6001600160a01b03165f9081526008602052604090208054602435919082101561014a57602091610197916110ce565b3461014a57604036600319011261014a57610a846110a2565b6024359081151580920361014a57610a9a611538565b6001600160a01b031690811561032a5760207f7012a31b5f655fa379216a38cb9d43e11a0bbc71f686407d18a5d186729b4cbe91835f526005825260405f2060ff1981541660ff8316179055604051908152a2005b3461014a575f36600319011261014a576020600454604051908152f35b3461014a57602036600319011261014a576001600160a01b03610b2d6110a2565b165f526008602052602060405f2054604051908152f35b3461014a575f36600319011261014a575f546040516001600160a01b039091168152602090f35b3461014a575f36600319011261014a57600154336001600160a01b0390911603610bdd57600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b3461014a57602036600319011261014a57610c096110a2565b6002546001600160a01b03169033829003610e10576001600160a01b0381165f818152600b602052604090205460ff16610e01576101a060249360405194858092631e7945ad60e11b82528560048301525afa9283156108b7575f93610dd0575b50610160830151158015610dbc575b6109e257606083019160018060a01b03835116906080850191602083516024604051809481936331a9108f60e11b835260048301525afa9081156108b7575f91610d82575b50306001600160a01b0390911603610d73577ff3fabcec8f79e4c84abcb646b5b7eb0af5fa1fcc77977e928d8b87562cc9690491606091845f52600b60205260405f20600160ff19825416179055600454855f52600760205260405f2055610d3e602088019160018060a01b038351165f52600860205260405f206112fe565b5160a08701516040978801519251965188516001600160a01b03948516815260208101989098528316978701979097521693a4005b6335a4e4a560e11b5f5260045ffd5b90506020813d602011610db4575b81610d9d60209383611114565b8101031261014a57610dae90611136565b86610cbe565b3d9150610d90565b5082516001600160a01b0316811415610c79565b610df39193506101a03d8111610dfa575b610deb8183611114565b810190611167565b9183610c6a565b503d610de1565b637f184cdb60e11b5f5260045ffd5b631966391b60e11b5f5260045ffd5b3461014a575f36600319011261014a57610e37611538565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014a575f36600319011261014a576003546040516001600160a01b039091168152602090f35b3461014a57604036600319011261014a57610ec36110a2565b610ecb6110b8565b610ed482611239565b610160810151156109e257602001516001600160a01b031633141580610f13575b610f0457610f02916113a2565b005b638b906c9760e01b5f5260045ffd5b506002546001600160a01b0316331415610ef5565b3461014a57602036600319011261014a576101a0610f4c610f476110a2565b611239565b6101806040519160018060a01b03815116835260018060a01b03602082015116602084015260018060a01b03604082015116604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e0840152610100810151610100840152610120810151151561012084015262ffffff6101408201511661014084015261016081015115156101608401520151610180820152f35b3461014a57608036600319011261014a576110196110a2565b6110216110b8565b9060643567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a573691016024011161014a576002546001600160a01b03908116911681148015929061108e575b5050610e1057630a85bd0160e11b8152602090f35b6001600160a01b0316141590508280611079565b600435906001600160a01b038216820361014a57565b602435906001600160a01b038216820361014a57565b80548210156110e3575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6101a0810190811067ffffffffffffffff82111761082e57604052565b90601f8019910116810190811067ffffffffffffffff82111761082e57604052565b51906001600160a01b038216820361014a57565b5190811515820361014a57565b519062ffffff8216820361014a57565b90816101a091031261014a5761018060405191611183836110f7565b61118c81611136565b835261119a60208201611136565b60208401526111ab60408201611136565b60408401526111bc60608201611136565b60608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e0840152610100810151610100840152611202610120820161114a565b6101208401526112156101408201611157565b610140840152611228610160820161114a565b610160840152015161018082015290565b5f610180604051611249816110f7565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152015260018060a01b03600254169081156109e257604051631e7945ad60e11b81526001600160a01b039091166004820152906101a090829060249082905afa9081156108b7575f916112e2575090565b6112fb91506101a03d8111610dfa57610deb8183611114565b90565b908154916801000000000000000083101561082e578261132691600161134a950181556110ce565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b565b51908160020b820361014a57565b51906001600160801b038216820361014a57565b8181029291811591840414171561138157565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161138157565b6001600160a01b038181165f81815260066020526040902054938216939092911683811461153257825f52600a60205260405f20549080151580611529575b611467575b50505f82815260066020526040902080546001600160a01b0319168417905582611432575b507f193b011c939ecb21a86f5a35de0149b61c53a0a2f825b8620b463b702b3a8dc65f80a3565b61144790835f52600960205260405f206112fe565b815f52600960205260405f2054815f52600a60205260405f20555f61140b565b5f52600960205260405f20905f1981018181116113815782545f198101908111611381578082036114e9575b505050805480156114d5575f1901906114ac82826110ce565b81549060018060a01b039060031b1b1916905555815f52600a6020525f60408120555f806113e6565b634e487b7160e01b5f52603160045260245ffd5b611326916114fa61151592866110ce565b905460039190911b1c6001600160a01b0316928391866110ce565b5f52600a60205260405f20555f8080611493565b508115156113e1565b50505050565b5f546001600160a01b03163303610bdd57565b8261155557505050565b60405163a9059cbb60e01b5f9081526001600160a01b0393841660045260249490945291169160209060448180865af19060015f51148216156115b0575b6040521561159e5750565b635274afe760e01b5f5260045260245ffd5b9060018115166115c857823b15153d15161690611593565b503d5f823e3d90fdfea2646970667358221220096fa1ea0308367f2b4c266b60a96a3f133ed0f94ebf451d67a784e12e0ba92164736f6c63430008230033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Uniswap V3 Positions NFT-V1 (UNI-V3-POS) | UNI-V3-POS | 21 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xe1ccd0…ec7b96 | 15 days agoSat, 01 Aug 2026 04:40:36 UTC | 0xf3fabc…6904 | [0] 0x000000000000…711147aa [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x39daa6…d1e856 | 15 days agoSat, 01 Aug 2026 04:40:34 UTC | 0xf3fabc…6904 | [0] 0x000000000000…fd10031f [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xb8345c…8e4461 | 15 days agoSat, 01 Aug 2026 04:40:21 UTC | 0xf3fabc…6904 | [0] 0x000000000000…67544562 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x559268…519957 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x1547f2…7f7a | [0] 0x000000000000…cacff005 [1] 0x000000000000…002a1679 data: 0x000000000000000000…596140ff |
| 0x65dacf…9de2d6 | 15 days agoSat, 01 Aug 2026 04:40:11 UTC | 0xf3fabc…6904 | [0] 0x000000000000…cacff005 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x38e80f…f295c5 | 15 days agoSat, 01 Aug 2026 04:39:20 UTC | 0xf3fabc…6904 | [0] 0x000000000000…b8dbbae0 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x15f8fb…78c622 | 15 days agoSat, 01 Aug 2026 04:39:19 UTC | 0xf3fabc…6904 | [0] 0x000000000000…368c6865 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x65f541…dfd980 | 15 days agoSat, 01 Aug 2026 04:39:06 UTC | 0xf3fabc…6904 | [0] 0x000000000000…193731d7 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xdbaeaf…c1b4eb | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x1547f2…7f7a | [0] 0x000000000000…548fe33f [1] 0x000000000000…002a1679 data: 0x000000000000000000…75598b87 |
| 0x52da8f…4882a6 | 15 days agoSat, 01 Aug 2026 04:38:49 UTC | 0xf3fabc…6904 | [0] 0x000000000000…548fe33f [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x3eeb80…2544f0 | 15 days agoSat, 01 Aug 2026 04:37:33 UTC | 0xf3fabc…6904 | [0] 0x000000000000…2294478d [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x482ee7…4eb96b | 15 days agoSat, 01 Aug 2026 04:36:59 UTC | 0xf3fabc…6904 | [0] 0x000000000000…35798a7e [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x13eb9f…de58a0 | 15 days agoSat, 01 Aug 2026 04:36:58 UTC | 0xf3fabc…6904 | [0] 0x000000000000…a8685d97 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x4a0615…6ad525 | 15 days agoSat, 01 Aug 2026 04:36:52 UTC | 0xf3fabc…6904 | [0] 0x000000000000…b3d1f247 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xacdc56…b43098 | 15 days agoSat, 01 Aug 2026 04:36:45 UTC | 0xf3fabc…6904 | [0] 0x000000000000…e8175278 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x13735a…0f31b6 | 15 days agoSat, 01 Aug 2026 04:35:57 UTC | 0x1547f2…7f7a | [0] 0x000000000000…4a51462d [1] 0x000000000000…002a1679 data: 0x000000000000000000…00000000 |
| 0x5701bb…407ad9 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x1547f2…7f7a | [0] 0x000000000000…bae39485 [1] 0x000000000000…002a1679 data: 0x000000000000000000…cfd3febd |
| 0x79eae3…13af4a | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x1547f2…7f7a | [0] 0x000000000000…06f0d317 [1] 0x000000000000…002a1679 data: 0x000000000000000000…1cb38f60 |
| 0xaa2697…71747c | 15 days agoSat, 01 Aug 2026 04:34:43 UTC | 0xf3fabc…6904 | [0] 0x000000000000…7301352d [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x2b31a6…b6f0cc | 15 days agoSat, 01 Aug 2026 04:34:41 UTC | 0xf3fabc…6904 | [0] 0x000000000000…01f1ec53 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xeca213…6bc5e9 | 15 days agoSat, 01 Aug 2026 04:34:37 UTC | 0xf3fabc…6904 | [0] 0x000000000000…a89a149b [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xd9c204…d775e3 | 15 days agoSat, 01 Aug 2026 04:34:30 UTC | 0xf3fabc…6904 | [0] 0x000000000000…4a51462d [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0xe40d4e…74c034 | 15 days agoSat, 01 Aug 2026 04:33:49 UTC | 0xf3fabc…6904 | [0] 0x000000000000…a419982a [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x793adc…ab52cd | 15 days agoSat, 01 Aug 2026 04:33:47 UTC | 0xf3fabc…6904 | [0] 0x000000000000…709cde4d [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| 0x00b63b…69a216 | 15 days agoSat, 01 Aug 2026 04:33:43 UTC | 0xf3fabc…6904 | [0] 0x000000000000…bae39485 [1] 0x000000000000…002a1679 [2] 0x000000000000…00000000 data: 0x000000000000000000…638de0d3 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x559268…519957 | collectFees | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x0877…1679 | IN | PeepsLocker | $0.000 ETH | 0.00000957 | |
| 0xdbaeaf…c1b4eb | collectFees | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x0877…1679 | IN | PeepsLocker | $0.000 ETH | 0.00000949 | |
| 0x13735a…0f31b6 | collectFees | 24,756,675 | 15 days agoSat, 01 Aug 2026 04:35:57 UTC | 0x0877…1679 | IN | PeepsLocker | $0.000 ETH | 0.00000520 | |
| 0x5701bb…407ad9 | collectFees | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x0877…1679 | IN | PeepsLocker | $0.000 ETH | 0.00000781 | |
| 0x79eae3…13af4a | collectFees | 24,756,665 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x0877…1679 | IN | PeepsLocker | $0.000 ETH | 0.00001009 | |
| 0x764340…5c79f2 | initialize | 24,720,955 | 15 days agoSat, 01 Aug 2026 03:36:11 UTC | 0xd13e…0a0e | IN | PeepsLocker | $0.000 ETH | 0.00000095 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe1ccd09f…ec7b96 | Transfer | 24,759,460 | 15 days agoSat, 01 Aug 2026 04:40:36 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538915 | |
| 0x39daa607…d1e856 | Transfer | 24,759,441 | 15 days agoSat, 01 Aug 2026 04:40:34 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538914 | |
| 0xb8345cc3…8e4461 | Transfer | 24,759,312 | 15 days agoSat, 01 Aug 2026 04:40:21 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538912 | |
| 0x65dacfe2…9de2d6 | Transfer | 24,759,212 | 15 days agoSat, 01 Aug 2026 04:40:11 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538903 | |
| 0x38e80fcd…f295c5 | Transfer | 24,758,705 | 15 days agoSat, 01 Aug 2026 04:39:20 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538898 | |
| 0x15f8fbec…78c622 | Transfer | 24,758,694 | 15 days agoSat, 01 Aug 2026 04:39:19 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538897 | |
| 0x65f5412d…dfd980 | Transfer | 24,758,566 | 15 days agoSat, 01 Aug 2026 04:39:06 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538895 | |
| 0x52da8f69…4882a6 | Transfer | 24,758,388 | 15 days agoSat, 01 Aug 2026 04:38:49 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538892 | |
| 0x3eeb80a9…2544f0 | Transfer | 24,757,634 | 15 days agoSat, 01 Aug 2026 04:37:33 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538879 | |
| 0x482ee7d2…4eb96b | Transfer | 24,757,293 | 15 days agoSat, 01 Aug 2026 04:36:59 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538873 | |
| 0x13eb9f63…de58a0 | Transfer | 24,757,282 | 15 days agoSat, 01 Aug 2026 04:36:58 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538872 | |
| 0x4a061563…6ad525 | Transfer | 24,757,227 | 15 days agoSat, 01 Aug 2026 04:36:52 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538870 | |
| 0xacdc569f…b43098 | Transfer | 24,757,157 | 15 days agoSat, 01 Aug 2026 04:36:45 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538869 | |
| 0xaa2697d7…71747c | Transfer | 24,755,938 | 15 days agoSat, 01 Aug 2026 04:34:43 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538853 | |
| 0x2b31a66f…b6f0cc | Transfer | 24,755,926 | 15 days agoSat, 01 Aug 2026 04:34:41 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538852 | |
| 0xeca21355…6bc5e9 | Transfer | 24,755,882 | 15 days agoSat, 01 Aug 2026 04:34:37 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538851 | |
| 0xd9c2049e…d775e3 | Transfer | 24,755,812 | 15 days agoSat, 01 Aug 2026 04:34:30 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538849 | |
| 0xe40d4e9a…74c034 | Transfer | 24,755,404 | 15 days agoSat, 01 Aug 2026 04:33:49 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538845 | |
| 0x793adc67…ab52cd | Transfer | 24,755,390 | 15 days agoSat, 01 Aug 2026 04:33:47 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538844 | |
| 0x00b63b97…69a216 | Transfer | 24,755,341 | 15 days agoSat, 01 Aug 2026 04:33:43 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538843 | |
| 0xde86afdf…65606f | Transfer | 24,755,270 | 15 days agoSat, 01 Aug 2026 04:33:35 UTC | 0x6c92…023d | IN | 0x855f…9c78 | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #538841 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 0.000001 WETH | WETH (WETH) | |
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 254.919355 N2068 | E2E Normal (N2068) | |
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 0.000000 WETH | WETH (WETH) | |
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 109.251152 N2068 | E2E Normal (N2068) | |
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0xf217…1c6a | IN | 0x855f…9c78 | 0.000001 WETH | WETH (WETH) | |
| 0x55926878…519957 | Transfer | 24,759,287 | 15 days agoSat, 01 Aug 2026 04:40:18 UTC | 0xf217…1c6a | IN | 0x855f…9c78 | 364.170507 N2068 | E2E Normal (N2068) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 254.919355 N0150 | E2E Normal (N0150) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 0.000001 WETH | WETH (WETH) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 109.251152 N0150 | E2E Normal (N0150) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 0.000000 WETH | WETH (WETH) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0xf3d0…ef5d | IN | 0x855f…9c78 | 364.170507 N0150 | E2E Normal (N0150) | |
| 0xdbaeaf2e…c1b4eb | Transfer | 24,758,538 | 15 days agoSat, 01 Aug 2026 04:39:03 UTC | 0xf3d0…ef5d | IN | 0x855f…9c78 | 0.000001 WETH | WETH (WETH) | |
| 0x13735ab8…0f31b6 | Transfer | 24,756,675 | 15 days agoSat, 01 Aug 2026 04:35:57 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 0.000000 WETH | WETH (WETH) | |
| 0x13735ab8…0f31b6 | Transfer | 24,756,675 | 15 days agoSat, 01 Aug 2026 04:35:57 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 0.000000 WETH | WETH (WETH) | |
| 0x13735ab8…0f31b6 | Transfer | 24,756,675 | 15 days agoSat, 01 Aug 2026 04:35:57 UTC | 0x58de…538d | IN | 0x855f…9c78 | 0.000000 WETH | WETH (WETH) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 305.880947 F3752 | E2E FullCut (F3752) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 0.000002 WETH | WETH (WETH) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 131.091834 F3752 | E2E FullCut (F3752) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 0.000000 WETH | WETH (WETH) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0xe6df…dd4b | IN | 0x855f…9c78 | 436.972782 F3752 | E2E FullCut (F3752) | |
| 0x5701bb34…407ad9 | Transfer | 24,756,670 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0xe6df…dd4b | IN | 0x855f…9c78 | 0.000002 WETH | WETH (WETH) | |
| 0x79eae317…13af4a | Transfer | 24,756,665 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 511.004379 N6606 | E2E Normal (N6606) | |
| 0x79eae317…13af4a | Transfer | 24,756,665 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0x0877…1679 | 0.000003 WETH | WETH (WETH) | |
| 0x79eae317…13af4a | Transfer | 24,756,665 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 219.001876 N6606 | E2E Normal (N6606) | |
| 0x79eae317…13af4a | Transfer | 24,756,665 | 15 days agoSat, 01 Aug 2026 04:35:56 UTC | 0x855f…9c78 | OUT | 0xa2e6…3248 | 0.000001 WETH | WETH (WETH) |