// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
/// ----------------------------------------------------------------------
/// PrecisionPad — a minimal launchpad on top of PrecisionPoolFactory.
///
/// * launch() deploys a fixed-supply ERC20, seeds a PrecisionPool with
/// 100% of the supply (tokens-only at the launch price), and keeps the
/// LP tokens locked in this contract forever. No rug path exists.
/// * The Pad is the pool's feeRecipient. Anyone can call claimFees();
/// accrued creator fees are split between the token creator and the
/// Pad treasury at an immutable ratio.
/// * An optional dev-buy: send ETH with launch() and the Pad buys the
/// fresh pool in the same transaction, tokens go to the creator.
/// * Each launch stores a logo URI + metadata for front-ends.
/// ----------------------------------------------------------------------
interface IPPF {
struct Market {
address token0;
address token1;
uint256 sqrtPLow;
uint256 sqrtPHigh;
uint256 fee;
address hook;
address feeRecipient;
uint256 creatorFeeBps;
}
function createAndSeed(
Market calldata m,
uint256 sqrtPriceInit,
uint256 amount0,
uint256 amount1,
uint256 minLP,
address to
) external payable returns (address pool, uint256 lp, uint256 used0, uint256 used1);
}
interface IPool {
function collectCreatorFees(address to) external returns (uint256 a0, uint256 a1);
function swapExactIn(address tokenIn, uint256 amountIn, uint256 minOut, address to)
external
payable
returns (uint256 amountOut);
}
interface IERC20 {
function approve(address, uint256) external returns (bool);
function transfer(address, uint256) external returns (bool);
function balanceOf(address) external view returns (uint256);
}
/// @notice Fixed-supply, 18-decimals ERC20. No owner, no mint, no tax.
contract PadToken {
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
constructor(string memory _name, string memory _symbol, uint256 _supply) {
name = _name;
symbol = _symbol;
totalSupply = _supply;
balanceOf[msg.sender] = _supply;
emit Transfer(address(0), msg.sender, _supply);
}
function approve(address spender, uint256 value) external returns (bool) {
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transfer(address to, uint256 value) external returns (bool) {
return _transfer(msg.sender, to, value);
}
function transferFrom(address from, address to, uint256 value) external returns (bool) {
uint256 a = allowance[from][msg.sender];
if (a != type(uint256).max) {
require(a >= value, "allowance");
allowance[from][msg.sender] = a - value;
}
return _transfer(from, to, value);
}
function _transfer(address from, address to, uint256 value) internal returns (bool) {
require(balanceOf[from] >= value, "balance");
unchecked {
balanceOf[from] -= value;
balanceOf[to] += value;
}
emit Transfer(from, to, value);
return true;
}
}
contract PrecisionPad {
// --------------------------------------------------------------- config
/// @notice The PrecisionPoolFactory this pad launches on.
address public immutable factory;
/// @notice Treasury receiving the pad's share of creator fees.
address public immutable treasury;
/// @notice Pad share of collected creator fees, in bps of the claim.
uint256 public immutable padFeeBps;
uint256 internal constant BPS = 10_000;
uint256 internal constant MAX_PAD_FEE = 5_000; // pad can never take >50%
// --------------------------------------------------------------- state
struct Launch {
address token;
address pool;
address creator;
uint64 createdAt;
string logoURI;
}
Launch[] internal _launches;
mapping(address => uint256) internal _indexByToken; // index+1, 0 = none
mapping(address => uint256) internal _indexByPool; // index+1, 0 = none
// --------------------------------------------------------------- events
event Launched(
address indexed token,
address indexed pool,
address indexed creator,
uint256 supply,
uint256 lp,
string logoURI
);
event FeesClaimed(
address indexed pool,
address indexed creator,
uint256 creator0,
uint256 creator1,
uint256 pad0,
uint256 pad1
);
// --------------------------------------------------------------- errors
error BadParams();
error UnknownPool();
error EthTransferFailed();
constructor(address _factory, address _treasury, uint256 _padFeeBps) {
if (_factory == address(0) || _treasury == address(0) || _padFeeBps > MAX_PAD_FEE) revert BadParams();
factory = _factory;
treasury = _treasury;
padFeeBps = _padFeeBps;
}
/// @dev Accept native refunds from the factory and fee payouts from pools.
receive() external payable {}
// --------------------------------------------------------------- launch
/// @notice Deploy a token and open its market. 100% of supply is seeded;
/// LP stays locked in the Pad forever.
/// @param supply Total supply in wei units (18 decimals).
/// @param sqrtPLow Band floor sqrt price (sqrt(tokens-per-ETH) * 1e18).
/// @param sqrtPHigh Band top = launch sqrt price.
/// @param feePips Swap fee in pips (10_000 = 1%).
/// @param creatorFeeBps Creator fee share of the swap fee, <= 5_000.
/// @param minLP Slippage floor for the seed.
/// @param minDevBuyOut Slippage floor for the optional msg.value dev-buy.
/// @param logoURI http(s)/ipfs image for front-ends (can be empty).
function launch(
string calldata name,
string calldata symbol,
uint256 supply,
uint256 sqrtPLow,
uint256 sqrtPHigh,
uint256 feePips,
uint256 creatorFeeBps,
uint256 minLP,
uint256 minDevBuyOut,
string calldata logoURI
) external payable returns (address token, address pool, uint256 lp) {
if (supply == 0 || sqrtPLow == 0 || sqrtPLow >= sqrtPHigh) revert BadParams();
// 1. token — full supply minted to the Pad.
token = address(new PadToken(name, symbol, supply));
// 2. create + seed. Pad is feeRecipient, LP minted to the Pad.
IERC20(token).approve(factory, supply);
IPPF.Market memory m = IPPF.Market({
token0: address(0),
token1: token,
sqrtPLow: sqrtPLow,
sqrtPHigh: sqrtPHigh,
fee: feePips,
hook: address(0),
feeRecipient: address(this),
creatorFeeBps: creatorFeeBps
});
uint256 used1;
(pool,, , used1) = _create(m, sqrtPHigh, supply, minLP);
lp = IERC20(pool).balanceOf(address(this));
// 3. register.
_launches.push(
Launch({token: token, pool: pool, creator: msg.sender, createdAt: uint64(block.timestamp), logoURI: logoURI})
);
_indexByToken[token] = _launches.length;
_indexByPool[pool] = _launches.length;
// 4. optional dev-buy with msg.value; proceeds go to the creator.
if (msg.value != 0) {
IPool(pool).swapExactIn{value: msg.value}(address(0), msg.value, minDevBuyOut, msg.sender);
}
// 5. sweep any seed dust to the creator (tokens-only seeds normally use all).
if (used1 < supply) {
uint256 dust = IERC20(token).balanceOf(address(this));
if (dust != 0) IERC20(token).transfer(msg.sender, dust);
}
emit Launched(token, pool, msg.sender, supply, lp, logoURI);
}
/// @dev Split out to avoid stack-too-deep.
function _create(IPPF.Market memory m, uint256 sqrtInit, uint256 amount1, uint256 minLP)
internal
returns (address pool, uint256 lp, uint256 used0, uint256 used1)
{
(pool, lp, used0, used1) = IPPF(factory).createAndSeed(m, sqrtInit, 0, amount1, minLP, address(this));
}
// ----------------------------------------------------------------- fees
/// @notice Collect a pool's accrued creator fees and split them between
/// the token creator and the Pad treasury. Anyone may call.
function claimFees(address pool) external returns (uint256 a0, uint256 a1) {
uint256 idx = _indexByPool[pool];
if (idx == 0) revert UnknownPool();
address creator = _launches[idx - 1].creator;
(a0, a1) = IPool(pool).collectCreatorFees(address(this));
uint256 pad0 = (a0 * padFeeBps) / BPS;
uint256 pad1 = (a1 * padFeeBps) / BPS;
if (pad0 != 0) _payEth(treasury, pad0);
if (a0 - pad0 != 0) _payEth(creator, a0 - pad0);
address token = _launches[idx - 1].token;
if (pad1 != 0) IERC20(token).transfer(treasury, pad1);
if (a1 - pad1 != 0) IERC20(token).transfer(creator, a1 - pad1);
emit FeesClaimed(pool, creator, a0 - pad0, a1 - pad1, pad0, pad1);
}
function _payEth(address to, uint256 amount) internal {
(bool ok,) = to.call{value: amount}("");
if (!ok) revert EthTransferFailed();
}
// ------------------------------------------------------------ discovery
function launchCount() external view returns (uint256) {
return _launches.length;
}
function launchAt(uint256 i) external view returns (Launch memory) {
return _launches[i];
}
/// @notice Newest-last slice for front-ends.
function launchesSlice(uint256 start, uint256 count) external view returns (Launch[] memory out) {
uint256 n = _launches.length;
if (start >= n) return new Launch[](0);
uint256 end = start + count;
if (end > n) end = n;
out = new Launch[](end - start);
for (uint256 i = start; i < end; ++i) {
out[i - start] = _launches[i];
}
}
function launchForToken(address token) external view returns (Launch memory l) {
uint256 idx = _indexByToken[token];
if (idx != 0) l = _launches[idx - 1];
}
function launchForPool(address pool) external view returns (Launch memory l) {
uint256 idx = _indexByPool[pool];
if (idx != 0) l = _launches[idx - 1];
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_name",
"type": "string",
"internalType": "string"
},
{
"name": "_symbol",
"type": "string",
"internalType": "string"
},
{
"name": "_supply",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146103e9578063095ea7b31461037057806318160ddd1461035357806323b872dd14610273578063313ce5671461025857806370a082311461022057806395d89b4114610102578063a9059cbb146100d05763dd62ed3e1461007c575f80fd5b346100cc5760403660031901126100cc576100956104e5565b61009d6104fb565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100cc5760403660031901126100cc5760206100f86100ee6104e5565b6024359033610511565b6040519015158152f35b346100cc575f3660031901126100cc576040515f6001548060011c90600181168015610216575b602083108114610202578285529081156101e65750600114610190575b50819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60015f9081529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8282106101d057506020915082010182610146565b60018160209254838588010152019101906101bb565b90506020925060ff191682840152151560051b82010182610146565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610129565b346100cc5760203660031901126100cc576001600160a01b036102416104e5565b165f526003602052602060405f2054604051908152f35b346100cc575f3660031901126100cc57602060405160128152f35b346100cc5760603660031901126100cc5761028c6104e5565b6102946104fb565b6001600160a01b0382165f8181526004602090815260408083203384529091529020546044359391600182016102d2575b60206100f8868686610511565b929093918285106103225782850394851161030e575f9384526004602090815260408086203387528252909420949094559092909182906102c5565b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b8152602060048201526009602482015268616c6c6f77616e636560b81b6044820152606490fd5b346100cc575f3660031901126100cc576020600254604051908152f35b346100cc5760403660031901126100cc576103896104e5565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100cc575f3660031901126100cc576040515f80548060011c906001811680156104b1575b602083108114610202578285529081156101e6575060011461045d5750819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b5f8080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b82821061049b57506020915082010182610146565b6001816020925483858801015201910190610486565b91607f169161040f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100cc57565b602435906001600160a01b03821682036100cc57565b60018060a01b031690815f5260036020528260405f2054106105885760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91835f526003825260405f2085815403905560018060a01b031693845f526003825260405f20818154019055604051908152a3600190565b60405162461bcd60e51b815260206004820152600760248201526662616c616e636560c81b6044820152606490fdfea2646970667358221220a46017d367dfa0f4a8b3500a9dbc081f1d45edd28337b55a1e73991a4675f75264736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb10b1e…17ba79 | 17 hrs agoMon, 17 Aug 2026 13:33:17 UTC | Transfer | [0] 0x000000000000…e902889e [1] 0x000000000000…05db34cf data: 0x000000000000000000…437eff01 |
| 0x891e29…40963b | 17 hrs agoMon, 17 Aug 2026 13:18:48 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…ec3b16d6 data: 0x000000000000000000…437eff01 |
| 0x891e29…40963b | 17 hrs agoMon, 17 Aug 2026 13:18:48 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…e902889e data: 0x000000000000000000…437eff01 |
| 0x891e29…40963b | 17 hrs agoMon, 17 Aug 2026 13:18:48 UTC | Transfer | [0] 0x000000000000…05db34cf [1] 0x000000000000…ad5c00b4 data: 0x000000000000000000…86fdfe02 |
| 0xaac96a…967bb0 | 1 day agoSun, 16 Aug 2026 21:16:00 UTC | Transfer | [0] 0x000000000000…e902889e [1] 0x000000000000…05db34cf data: 0x000000000000000000…bb3738e9 |
| 0xdf9d28…d2e957 | 1 day agoSun, 16 Aug 2026 20:49:03 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…ec3b16d6 data: 0x000000000000000000…bb3738e9 |
| 0xdf9d28…d2e957 | 1 day agoSun, 16 Aug 2026 20:49:03 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…e902889e data: 0x000000000000000000…bb3738e9 |
| 0xdf9d28…d2e957 | 1 day agoSun, 16 Aug 2026 20:49:03 UTC | Transfer | [0] 0x000000000000…05db34cf [1] 0x000000000000…ad5c00b4 data: 0x000000000000000000…766e71d2 |
| 0xf83b0e…d918b3 | 3 days agoFri, 14 Aug 2026 18:27:47 UTC | Transfer | [0] 0x000000000000…e902889e [1] 0x000000000000…05db34cf data: 0x000000000000000000…4324764e |
| 0x4a35ad…7d4a6f | 3 days agoFri, 14 Aug 2026 18:18:14 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…ec3b16d6 data: 0x000000000000000000…4324764f |
| 0x4a35ad…7d4a6f | 3 days agoFri, 14 Aug 2026 18:18:14 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…e902889e data: 0x000000000000000000…4324764e |
| 0x4a35ad…7d4a6f | 3 days agoFri, 14 Aug 2026 18:18:14 UTC | Transfer | [0] 0x000000000000…05db34cf [1] 0x000000000000…ad5c00b4 data: 0x000000000000000000…8648ec9d |
| 0xa3eb98…58bfbf | 3 days agoFri, 14 Aug 2026 12:46:02 UTC | Transfer | [0] 0x000000000000…e902889e [1] 0x000000000000…05db34cf data: 0x000000000000000000…747c6da6 |
| 0xe038df…2d955d | 4 days agoFri, 14 Aug 2026 01:45:59 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…ec3b16d6 data: 0x000000000000000000…747c6da7 |
| 0xe038df…2d955d | 4 days agoFri, 14 Aug 2026 01:45:59 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…e902889e data: 0x000000000000000000…747c6da6 |
| 0xe038df…2d955d | 4 days agoFri, 14 Aug 2026 01:45:59 UTC | Transfer | [0] 0x000000000000…05db34cf [1] 0x000000000000…ad5c00b4 data: 0x000000000000000000…e8f8db4d |
| 0x54a889…b79b3b | 4 days agoThu, 13 Aug 2026 21:05:40 UTC | Transfer | [0] 0x000000000000…ec3b16d6 [1] 0x000000000000…05db34cf data: 0x000000000000000000…809ad4eb |
| 0x342e83…7295fe | 4 days agoThu, 13 Aug 2026 21:05:40 UTC | Approval | [0] 0x000000000000…ec3b16d6 [1] 0x000000000000…262c40dc data: 0x000000000000000000…809ad4eb |
| 0xdac45d…d23f51 | 4 days agoThu, 13 Aug 2026 19:12:04 UTC | Transfer | [0] 0x000000000000…e902889e [1] 0x000000000000…05db34cf data: 0x000000000000000000…809ad4ea |
| 0x8daf24…803154 | 4 days agoThu, 13 Aug 2026 19:04:05 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…ec3b16d6 data: 0x000000000000000000…809ad4eb |
| 0x8daf24…803154 | 4 days agoThu, 13 Aug 2026 19:04:05 UTC | Transfer | [0] 0x000000000000…ad5c00b4 [1] 0x000000000000…e902889e data: 0x000000000000000000…809ad4ea |
| 0x8daf24…803154 | 4 days agoThu, 13 Aug 2026 19:04:05 UTC | Transfer | [0] 0x000000000000…05db34cf [1] 0x000000000000…ad5c00b4 data: 0x000000000000000000…0135a9d5 |
| 0xb755f2…0151a6 | 4 days agoThu, 13 Aug 2026 17:42:46 UTC | Transfer | [0] 0x000000000000…34847b49 [1] 0x000000000000…05db34cf data: 0x000000000000000000…4d8bdda9 |
| 0xe19f8d…4d4a8b | 4 days agoThu, 13 Aug 2026 17:42:46 UTC | Approval | [0] 0x000000000000…34847b49 [1] 0x000000000000…72c22734 data: 0xffffffffffffffffff…ffffffff |
| 0x945026…553d2d | 4 days agoThu, 13 Aug 2026 17:42:44 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…34847b49 data: 0x000000000000000000…4d8a92cf |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x342e83…7295fe | Approve | 35,700,112 | 4 days agoThu, 13 Aug 2026 21:05:40 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000199 | |
| 0xe19f8d…4d4a8b | Approve | 35,578,606 | 4 days agoThu, 13 Aug 2026 17:42:46 UTC | 0x9ec5…7b49 | IN | catycat | $0.000 ETH | 0.00000203 | |
| 0xf9aeac…7257f4 | Approve | 35,488,987 | 4 days agoThu, 13 Aug 2026 15:13:04 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000208 | |
| 0xf8a3c0…1f9589 | Approve | 35,433,901 | 4 days agoThu, 13 Aug 2026 13:41:03 UTC | 0x67e7…911a | IN | catycat | $0.000 ETH | 0.00000209 | |
| 0x684289…efa409 | Approve | 35,409,861 | 4 days agoThu, 13 Aug 2026 13:00:53 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000206 | |
| 0x600e2b…0d11bd | Approve | 35,220,727 | 4 days agoThu, 13 Aug 2026 07:44:25 UTC | 0x6f51…1f08 | IN | catycat | $0.000 ETH | 0.00000227 | |
| 0x18c854…6f073c | Approve | 35,217,454 | 4 days agoThu, 13 Aug 2026 07:38:56 UTC | 0xf5c4…6157 | IN | catycat | $0.000 ETH | 0.00000229 | |
| 0xd5069c…c1c869 | Approve | 35,201,167 | 4 days agoThu, 13 Aug 2026 07:11:43 UTC | 0xad01…fce5 | IN | catycat | $0.000 ETH | 0.00000229 | |
| 0x574373…1cfb22 | Approve | 35,023,715 | 5 days agoThu, 13 Aug 2026 02:15:01 UTC | 0xceab…889e | IN | catycat | $0.000 ETH | 0.00000246 | |
| 0x20c814…8b969e | Approve | 34,944,300 | 5 days agoThu, 13 Aug 2026 00:02:27 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000246 | |
| 0xaa3269…672f89 | Approve | 34,926,492 | 5 days agoWed, 12 Aug 2026 23:32:43 UTC | 0x03ad…976a | IN | catycat | $0.000 ETH | 0.00000244 | |
| 0x6c5fa6…a5b4d3 | Approve | 34,920,691 | 5 days agoWed, 12 Aug 2026 23:23:03 UTC | 0xd255…b97b | IN | catycat | $0.000 ETH | 0.00000130 | |
| 0x7679b3…868b25 | Approve | 34,916,906 | 5 days agoWed, 12 Aug 2026 23:16:45 UTC | 0x1088…86a0 | IN | catycat | $0.000 ETH | 0.00000248 | |
| 0x229a56…fc345d | Approve | 34,915,220 | 5 days agoWed, 12 Aug 2026 23:13:55 UTC | 0x5d81…3f9b | IN | catycat | $0.000 ETH | 0.00000244 | |
| 0x0cfac2…747a97 | Approve | 34,908,983 | 5 days agoWed, 12 Aug 2026 23:03:32 UTC | 0x9d72…f76f | IN | catycat | $0.000 ETH | 0.00000241 | |
| 0x22dc8e…356381 | Approve | 34,908,979 | 5 days agoWed, 12 Aug 2026 23:03:31 UTC | 0x3b35…7c59 | IN | catycat | $0.000 ETH | 0.00000246 | |
| 0x87f4b4…9d1f78 | Approve | 34,904,755 | 5 days agoWed, 12 Aug 2026 22:56:29 UTC | 0x3fba…044d | IN | catycat | $0.000 ETH | 0.00000246 | |
| 0x6e545e…8a23da | Approve | 34,904,145 | 5 days agoWed, 12 Aug 2026 22:55:28 UTC | 0x8f20…c3db | IN | catycat | $0.000 ETH | 0.00000241 | |
| 0xe6e1d9…6fa748 | Approve | 34,903,165 | 5 days agoWed, 12 Aug 2026 22:53:49 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000242 | |
| 0x6de398…fd4a63 | Approve | 34,902,702 | 5 days agoWed, 12 Aug 2026 22:53:06 UTC | 0x02a7…e5d0 | IN | catycat | $0.000 ETH | 0.00000240 | |
| 0x5c3650…74a26b | Approve | 34,902,702 | 5 days agoWed, 12 Aug 2026 22:53:06 UTC | 0x2894…4f04 | IN | catycat | $0.000 ETH | 0.00000240 | |
| 0x38d7e3…5e723f | Approve | 34,902,702 | 5 days agoWed, 12 Aug 2026 22:53:06 UTC | 0xbcde…32f6 | IN | catycat | $0.000 ETH | 0.00000240 | |
| 0xb896b5…8ba6e7 | Approve | 34,902,220 | 5 days agoWed, 12 Aug 2026 22:52:17 UTC | 0x6a29…16d6 | IN | catycat | $0.000 ETH | 0.00000243 | |
| 0x5194f6…cb485f | Approve | 34,902,120 | 5 days agoWed, 12 Aug 2026 22:52:07 UTC | 0x3fba…044d | IN | catycat | $0.000 ETH | 0.00000243 | |
| 0xa02373…4aa2a4 | Approve | 34,899,853 | 5 days agoWed, 12 Aug 2026 22:48:19 UTC | 0xe331…d177 | IN | catycat | $0.000 ETH | 0.00000245 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 34,897,360 | 5 days agoWed, 12 Aug 2026 22:44:11 UTC | 0x254c66…d42e2e | CREATE | 0xa5b4cb87 | 0x87b9…00b4 | IN | 0xfd33…4adc | 0 ETH |