// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
interface ILauncherERC20 {
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
}
interface ILauncherOwnable {
function transferOwnership(address newOwner) external;
}
interface ILauncherOfficialPool {
function configureOfficialPool(address pool) external;
}
interface ILauncherV3Factory {
function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);
}
interface ILauncherV3Pool {
function slot0() external view returns (
uint160 sqrtPriceX96,
int24 tick,
uint16 observationIndex,
uint16 observationCardinality,
uint16 observationCardinalityNext,
uint8 feeProtocol,
bool unlocked
);
}
interface ILauncherPositionManager {
struct MintParams {
address token0;
address token1;
uint24 fee;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
uint256 amount0Min;
uint256 amount1Min;
address recipient;
uint256 deadline;
}
function factory() external view returns (address);
function createAndInitializePoolIfNecessary(
address token0,
address token1,
uint24 fee,
uint160 sqrtPriceX96
) external payable returns (address pool);
function mint(MintParams calldata params) external payable returns (
uint256 tokenId,
uint128 liquidity,
uint256 amount0,
uint256 amount1
);
function ownerOf(uint256 tokenId) external view returns (address);
}
contract pizza_funLaunchFactory {
bytes32 public constant launchFingerprint = 0xe7a465be341020b8b4a1130584c8d7a43d2c1c1b1af7534bceca851c804e6b54;
error Unauthorized();
error AlreadyLaunched();
error Create2DeploymentFailed();
error UnexpectedTokenAddress();
error InvalidLaunchParameters();
error TokenApprovalFailed();
error TokenTransferFailed();
error PoolAddressUnavailable();
error PoolPriceMismatch();
error PositionMismatch();
error TokenOwnershipTransferFailed();
struct BandParams {
int24 tickLower;
int24 tickUpper;
uint256 amount0;
}
struct LaunchParams {
bytes tokenInitCode;
bytes32 salt;
address expectedToken;
uint24 fee;
uint160 sqrtPriceX96;
uint256 tokenLiquidity;
bool transferTokenOwnership;
bool configureOfficialPool;
BandParams[] bands;
address recipient;
uint256 deadline;
}
address public immutable owner;
address public immutable positionManager;
address public immutable weth;
bool public launched;
event AtomicLaunch(
address indexed token,
address indexed pool,
uint256 bandCount,
uint256 totalAmount0,
uint160 sqrtPriceX96
);
event BandMinted(
address indexed token,
uint256 indexed tokenId,
uint256 indexed bandIndex,
uint128 liquidity,
uint256 amount0,
int24 tickLower,
int24 tickUpper
);
constructor(address positionManager_, address weth_) {
if (positionManager_ == address(0) || weth_ == address(0)) revert InvalidLaunchParameters();
owner = msg.sender;
positionManager = positionManager_;
weth = weth_;
}
modifier onlyOwner() {
if (msg.sender != owner) revert Unauthorized();
_;
}
function launch(LaunchParams calldata params) external onlyOwner returns (
address token,
address pool,
uint256 totalAmount0
) {
if (launched) revert AlreadyLaunched();
if (
params.tokenInitCode.length == 0
|| params.expectedToken == address(0)
|| params.expectedToken == weth
|| params.tokenLiquidity == 0
|| params.bands.length == 0
|| params.bands.length > 15
|| params.sqrtPriceX96 == 0
|| params.recipient == address(0)
|| params.deadline < block.timestamp
) revert InvalidLaunchParameters();
launched = true;
bytes memory initCode = params.tokenInitCode;
bytes32 salt = params.salt;
assembly ("memory-safe") {
token := create2(0, add(initCode, 0x20), mload(initCode), salt)
}
if (token == address(0)) revert Create2DeploymentFailed();
if (token != params.expectedToken) revert UnexpectedTokenAddress();
if (token >= weth) revert UnexpectedTokenAddress();
address token0 = token;
address token1 = weth;
if (!ILauncherERC20(token).approve(positionManager, params.tokenLiquidity)) revert TokenApprovalFailed();
ILauncherPositionManager manager = ILauncherPositionManager(positionManager);
manager.createAndInitializePoolIfNecessary(token0, token1, params.fee, params.sqrtPriceX96);
pool = ILauncherV3Factory(manager.factory()).getPool(token0, token1, params.fee);
if (pool == address(0)) revert PoolAddressUnavailable();
(uint160 observedSqrtPriceX96, int24 observedTick,,,,,) = ILauncherV3Pool(pool).slot0();
if (observedSqrtPriceX96 != params.sqrtPriceX96) revert PoolPriceMismatch();
uint256 totalDesired;
for (uint256 index = 0; index < params.bands.length; index++) {
BandParams calldata band = params.bands[index];
if (
band.amount0 == 0
|| band.tickLower >= band.tickUpper
|| (index == 0 && band.tickLower <= observedTick)
|| (index > 0 && params.bands[index - 1].tickUpper != band.tickLower)
) revert InvalidLaunchParameters();
totalDesired += band.amount0;
}
if (totalDesired != params.tokenLiquidity) revert InvalidLaunchParameters();
for (uint256 index = 0; index < params.bands.length; index++) {
BandParams calldata band = params.bands[index];
uint256 amount0Min = band.amount0 * 99 / 100;
(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) = manager.mint(
ILauncherPositionManager.MintParams({
token0: token0,
token1: token1,
fee: params.fee,
tickLower: band.tickLower,
tickUpper: band.tickUpper,
amount0Desired: band.amount0,
amount1Desired: 0,
amount0Min: amount0Min,
amount1Min: 0,
recipient: params.recipient,
deadline: params.deadline
})
);
if (
liquidity == 0
|| manager.ownerOf(tokenId) != params.recipient
|| amount0 < amount0Min
|| amount1 != 0
) revert PositionMismatch();
totalAmount0 += amount0;
emit BandMinted(token, tokenId, index, liquidity, amount0, band.tickLower, band.tickUpper);
}
if (totalAmount0 < params.tokenLiquidity * 99 / 100) revert PositionMismatch();
if (params.configureOfficialPool) {
try ILauncherOfficialPool(token).configureOfficialPool(pool) {
// The typed launchpad token is now bound to this exact pool.
} catch {
revert InvalidLaunchParameters();
}
}
uint256 creatorBalance = ILauncherERC20(token).balanceOf(address(this));
if (creatorBalance > 0 && !ILauncherERC20(token).transfer(owner, creatorBalance)) revert TokenTransferFailed();
if (params.transferTokenOwnership) {
try ILauncherOwnable(token).transferOwnership(owner) {
// The optional token-specific owner is now the launch deployer.
} catch {
revert TokenOwnershipTransferFailed();
}
}
emit AtomicLaunch(token, pool, params.bands.length, totalAmount0, params.sqrtPriceX96);
}
function rescueToken(address token, uint256 amount) external onlyOwner {
if (!ILauncherERC20(token).transfer(owner, amount)) revert TokenTransferFailed();
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "positionManager_",
"type": "address",
"internalType": "address"
},
{
"name": "weth_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyLaunched",
"type": "error",
"inputs": []
},
{
"name": "Create2DeploymentFailed",
"type": "error",
"inputs": []
},
{
"name": "InvalidLaunchParameters",
"type": "error",
"inputs": []
},
{
"name": "PoolAddressUnavailable",
"type": "error",
"inputs": []
},
{
"name": "PoolPriceMismatch",
"type": "error",
"inputs": []
},
{
"name": "PositionMismatch",
"type": "error",
"inputs": []
},
{
"name": "TokenApprovalFailed",
"type": "error",
"inputs": []
},
{
"name": "TokenOwnershipTransferFailed",
"type": "error",
"inputs": []
},
{
"name": "TokenTransferFailed",
"type": "error",
"inputs": []
},
{
"name": "Unauthorized",
"type": "error",
"inputs": []
},
{
"name": "UnexpectedTokenAddress",
"type": "error",
"inputs": []
},
{
"name": "AtomicLaunch",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "bandCount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "totalAmount0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sqrtPriceX96",
"type": "uint160",
"indexed": false,
"internalType": "uint160"
}
],
"anonymous": false
},
{
"name": "BandMinted",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "bandIndex",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "liquidity",
"type": "uint128",
"indexed": false,
"internalType": "uint128"
},
{
"name": "amount0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tickLower",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"indexed": false,
"internalType": "int24"
}
],
"anonymous": false
},
{
"name": "launch",
"type": "function",
"inputs": [
{
"name": "params",
"type": "tuple",
"components": [
{
"name": "tokenInitCode",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "expectedToken",
"type": "address",
"internalType": "address"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "sqrtPriceX96",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "tokenLiquidity",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "transferTokenOwnership",
"type": "bool",
"internalType": "bool"
},
{
"name": "configureOfficialPool",
"type": "bool",
"internalType": "bool"
},
{
"name": "bands",
"type": "tuple[]",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "amount0",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct pizza_funLaunchFactory.BandParams[]"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct pizza_funLaunchFactory.LaunchParams"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "totalAmount0",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "launchFingerprint",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "launched",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "rescueToken",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
}
]0x60e03461010157601f61133038819003918201601f19168301916001600160401b0383118484101761010557808492604094855283398101031261010157610052602061004b83610119565b9201610119565b906001600160a01b0381161580156100f0575b6100e1573360805260a05260c052604051611202908161012e823960805181818160800152818161014f01528181610adc01528181610b730152610f9b015260a05181818160ea01526102aa015260c05181818161026c01528181610341015281816103fa015281816106a901528181610ec20152610f440152f35b63bd637c4760e01b5f5260045ffd5b506001600160a01b03821615610065565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101015756fe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632aedc7b71461105e5750806333f3d62814610f735780633fc8cef314610f2f5780634b948d4e14610119578063791b98bc146100d45780638091f3bf146100b257638da5cb5b1461006b575f80fd5b346100af57806003193601126100af576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346100af57806003193601126100af5760ff60209154166040519015158152f35b50346100af57806003193601126100af576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346109915760203660031901126109915767ffffffffffffffff600435116109915761016060043536036003190112610991577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610f21575f905f5460ff8116610f12576101976004803501806110c5565b9050158015610ef4575b8015610eb1575b8015610ea3575b8015610e85575b8015610e65575b8015610e47575b8015610e28575b8015610e18575b6105205760ff19166001175f556101ed6004803501806110c5565b67ffffffffffffffff811161099d5760405190610214601f8201601f191660200183611096565b8082526020820192368282011161099157815f92602092863783010152516001600160a01b03916004356024013591905ff5168015610e09576001600160a01b036102636004356044016110f8565b168103610dfa577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811015610dfa5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811660048084019190915260a490350135602483015293906020816044815f875af1908115610933575f91610dc0575b5015610db157610315606460043501611142565b6103236084600435016110f8565b6040516309f56ab160e11b8152600481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015262ffffff939093166044820152908216606482015290602090829060849082905f908a165af1801561093357610d94575b5060405163c45a015560e01b81526020816004816001600160a01b0389165afa908115610933575f91610d75575b50602062ffffff60646103dc8160043501611142565b604051630b4c774160e11b8152600481018890526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301529390911660448201529384928391165afa908115610933575f91610d56575b506001600160a01b03811615610d4757604051633850c7bd60e01b81529260e0846004816001600160a01b0386165afa938415610933575f905f95610cb1575b506001600160a01b036104966004356084016110f8565b166001600160a01b0390911603610ca2575f95865b6104c06101046004350160043560040161110c565b90508810156105e2576104e8886104e26101046004350160043560040161110c565b90611180565b60408101351580156105be575b801561059c575b801561052f575b610520576001916040610518920135906111b2565b9701966104ab565b63bd637c4760e01b5f5260045ffd5b508815158015610503575061054f6101046004350160043560040161110c565b5f198b01918b8311610588576105719260209261056b92611180565b016111a4565b61057a826111a4565b60020b9060020b1415610503565b634e487b7160e01b5f52601160045260245ffd5b50881580156104fc57506105af816111a4565b8760020b9060020b13156104fc565b506105c8816111a4565b6105d4602083016111a4565b60020b9060020b12156104f5565b869060a4600435013503610520575f945b6106086101046004350160043560040161110c565b90508610156109b15761062a866104e26101046004350160043560040161110c565b95604087013591606383028381046063148415171561058857610651606460043501611142565b61065a8a6111a4565b61066660208c016111a4565b91610676610124600435016110f8565b9160405193610160850185811067ffffffffffffffff82111761099d576040528b85526020850198600160a01b600190037f0000000000000000000000000000000000000000000000000000000000000000168a52604086019362ffffff168452606086019260020b8352608086019160020b825260a0860190815260c08601915f835260e08701936064890485526101008801955f8752610120890197600160a01b6001900316885261014089019860043561014401358a526040519d8e91634418b22b60e11b8352600160a01b600190039051166004830152600160a01b6001900390511690602401525162ffffff1660448d01525160020b60648c01525160020b60848b01525160a48a01525160c48901525160e488015251610104870152600160a01b60019003905116610124860152516101448501528380600160a01b6001900388165a925f61016492608095f18015610933575f915f915f965f9161093e575b506001600160801b038316159182156108a1575b8215610893575b508115610889575b5061087a577f960358c139c42029f5f5160a511cb393e7ad9b6d377d55372ae4f5c9e4f98240608089928761083760019989986111b2565b9d61084d6020610846836111a4565b92016111a4565b916001600160801b0360405194168452602084015260020b604083015260020b6060820152a401946105f3565b6333d51c3560e21b5f5260045ffd5b905015158b6107ff565b60649004871091508c6107f7565b6040516331a9108f60e11b8152600481018690529092506020816024816001600160a01b038e165afa908115610933575f91610905575b506001600160a01b036108f0600435610124016110f8565b6001600160a01b0390921691161415916107f0565b610926915060203d811161092c575b61091e8183611096565b810190611152565b8d6108d8565b503d610914565b6040513d5f823e3d90fd5b9650509150506080843d8211610995575b8161095c60809383611096565b81010312610991578351936020810151916001600160801b03831683036109915760606040830151920151959291958c6107dc565b5f80fd5b3d915061094f565b634e487b7160e01b5f52604160045260245ffd5b9093909150606360a460043501358181029181830414901517156105885760649004821061087a576109e760e4600435016111bf565b610c41575b6040516370a0823160e01b8152306004820152602081602481875afa908115610c04578591610c0f575b508015159081610b64575b50610b5557610a3460c4600435016111bf565b610ac6575b60609350610a526101046004350160043560040161110c565b9050610a626084600435016110f8565b60408051928352602083018590526001600160a01b039182169083015282169084907ff099a3635b5952e853c68687c0b676f29c5fe0a4b480aca6e77aaf218575ff44908790a3604080519384526001600160a01b03919091166020840152820152f35b823b15610b515760405163f2fde38b60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015284808260248183895af19182610b38575b5050610b2f57631327276760e21b8452600484fd5b60609350610a39565b81610b4291611096565b610b4d578486610b1a565b8480fd5b8380fd5b63022e258160e11b8452600484fd5b60405163a9059cbb60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526024810191909152905060208160448188885af1908115610c04578591610bca575b501585610a21565b90506020813d602011610bfc575b81610be560209383611096565b81010312610b4d57610bf6906110b8565b85610bc2565b3d9150610bd8565b6040513d87823e3d90fd5b90506020813d602011610c39575b81610c2a60209383611096565b81010312610b4d575185610a16565b3d9150610c1d565b823b156109915760405163b81c727560e01b81526001600160a01b03821660048201525f8160248183885af19081610c8d575b50610c885763bd637c4760e01b8452600484fd5b6109ec565b610c9a9195505f90611096565b5f9385610c74565b6334c4589960e01b5f5260045ffd5b94505060e0843d60e011610d3f575b81610ccd60e09383611096565b810103126109915783516001600160a01b0381168103610991576020850151948560020b860361099157610d0360408201611171565b50610d1060608201611171565b50610d1d60808201611171565b5060a081015160ff8116036109915760c0610d3891016110b8565b505f61047f565b3d9150610cc0565b630e7f493960e11b5f5260045ffd5b610d6f915060203d60201161092c5761091e8183611096565b5f61043f565b610d8e915060203d60201161092c5761091e8183611096565b5f6103c6565b610dac9060203d60201161092c5761091e8183611096565b610398565b632d4de02b60e01b5f5260045ffd5b90506020813d602011610df2575b81610ddb60209383611096565b8101031261099157610dec906110b8565b5f610301565b3d9150610dce565b63fb41475f60e01b5f5260045ffd5b6334bf455960e01b5f5260045ffd5b50426101446004350135106101d2565b506001600160a01b03610e40600435610124016110f8565b16156101cb565b506001600160a01b03610e5e6004356084016110f8565b16156101c4565b50600f610e7d6101046004350160043560040161110c565b9050116101bd565b50610e9b6101046004350160043560040161110c565b9050156101b6565b5060a46004350135156101af565b50610ec06044600435016110f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146101a8565b506001600160a01b03610f0b6004356044016110f8565b16156101a1565b6319f4db0f60e31b5f5260045ffd5b6282b42960e81b5f5260045ffd5b34610991575f366003190112610991576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610991576040366003190112610991576004356001600160a01b03811690819003610991577f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0382163303610f215760405163a9059cbb60e01b81526001600160a01b039290921660048301526024803590830152602090829060449082905f905af1908115610933575f91611024575b501561101557005b63022e258160e11b5f5260045ffd5b90506020813d602011611056575b8161103f60209383611096565b8101031261099157611050906110b8565b8161100d565b3d9150611032565b34610991575f36600319011261099157807fe7a465be341020b8b4a1130584c8d7a43d2c1c1b1af7534bceca851c804e6b5460209252f35b90601f8019910116810190811067ffffffffffffffff82111761099d57604052565b5190811515820361099157565b903590601e1981360301821215610991570180359067ffffffffffffffff82116109915760200191813603831361099157565b356001600160a01b03811681036109915790565b903590601e1981360301821215610991570180359067ffffffffffffffff82116109915760200191606082023603831361099157565b3562ffffff811681036109915790565b9081602091031261099157516001600160a01b03811681036109915790565b519061ffff8216820361099157565b9190811015611190576060020190565b634e487b7160e01b5f52603260045260245ffd5b358060020b81036109915790565b9190820180921161058857565b358015158103610991579056fea26469706673582212202dd27e3e7d259b78d9fdf7a7d96d9340deb35efa2427c8f239e63b90964a3f5864736f6c6343000823003300000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d30000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73
0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632aedc7b71461105e5750806333f3d62814610f735780633fc8cef314610f2f5780634b948d4e14610119578063791b98bc146100d45780638091f3bf146100b257638da5cb5b1461006b575f80fd5b346100af57806003193601126100af576040517f000000000000000000000000bbda9491bbc6acd8693004f2775aa3daa9b2248e6001600160a01b03168152602090f35b80fd5b50346100af57806003193601126100af5760ff60209154166040519015158152f35b50346100af57806003193601126100af576040517f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03168152602090f35b50346109915760203660031901126109915767ffffffffffffffff600435116109915761016060043536036003190112610991577f000000000000000000000000bbda9491bbc6acd8693004f2775aa3daa9b2248e6001600160a01b03163303610f21575f905f5460ff8116610f12576101976004803501806110c5565b9050158015610ef4575b8015610eb1575b8015610ea3575b8015610e85575b8015610e65575b8015610e47575b8015610e28575b8015610e18575b6105205760ff19166001175f556101ed6004803501806110c5565b67ffffffffffffffff811161099d5760405190610214601f8201601f191660200183611096565b8082526020820192368282011161099157815f92602092863783010152516001600160a01b03916004356024013591905ff5168015610e09576001600160a01b036102636004356044016110f8565b168103610dfa577f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316811015610dfa5760405163095ea7b360e01b81527f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03811660048084019190915260a490350135602483015293906020816044815f875af1908115610933575f91610dc0575b5015610db157610315606460043501611142565b6103236084600435016110f8565b6040516309f56ab160e11b8152600481018590526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738116602483015262ffffff939093166044820152908216606482015290602090829060849082905f908a165af1801561093357610d94575b5060405163c45a015560e01b81526020816004816001600160a01b0389165afa908115610933575f91610d75575b50602062ffffff60646103dc8160043501611142565b604051630b4c774160e11b8152600481018890526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73811660248301529390911660448201529384928391165afa908115610933575f91610d56575b506001600160a01b03811615610d4757604051633850c7bd60e01b81529260e0846004816001600160a01b0386165afa938415610933575f905f95610cb1575b506001600160a01b036104966004356084016110f8565b166001600160a01b0390911603610ca2575f95865b6104c06101046004350160043560040161110c565b90508810156105e2576104e8886104e26101046004350160043560040161110c565b90611180565b60408101351580156105be575b801561059c575b801561052f575b610520576001916040610518920135906111b2565b9701966104ab565b63bd637c4760e01b5f5260045ffd5b508815158015610503575061054f6101046004350160043560040161110c565b5f198b01918b8311610588576105719260209261056b92611180565b016111a4565b61057a826111a4565b60020b9060020b1415610503565b634e487b7160e01b5f52601160045260245ffd5b50881580156104fc57506105af816111a4565b8760020b9060020b13156104fc565b506105c8816111a4565b6105d4602083016111a4565b60020b9060020b12156104f5565b869060a4600435013503610520575f945b6106086101046004350160043560040161110c565b90508610156109b15761062a866104e26101046004350160043560040161110c565b95604087013591606383028381046063148415171561058857610651606460043501611142565b61065a8a6111a4565b61066660208c016111a4565b91610676610124600435016110f8565b9160405193610160850185811067ffffffffffffffff82111761099d576040528b85526020850198600160a01b600190037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73168a52604086019362ffffff168452606086019260020b8352608086019160020b825260a0860190815260c08601915f835260e08701936064890485526101008801955f8752610120890197600160a01b6001900316885261014089019860043561014401358a526040519d8e91634418b22b60e11b8352600160a01b600190039051166004830152600160a01b6001900390511690602401525162ffffff1660448d01525160020b60648c01525160020b60848b01525160a48a01525160c48901525160e488015251610104870152600160a01b60019003905116610124860152516101448501528380600160a01b6001900388165a925f61016492608095f18015610933575f915f915f965f9161093e575b506001600160801b038316159182156108a1575b8215610893575b508115610889575b5061087a577f960358c139c42029f5f5160a511cb393e7ad9b6d377d55372ae4f5c9e4f98240608089928761083760019989986111b2565b9d61084d6020610846836111a4565b92016111a4565b916001600160801b0360405194168452602084015260020b604083015260020b6060820152a401946105f3565b6333d51c3560e21b5f5260045ffd5b905015158b6107ff565b60649004871091508c6107f7565b6040516331a9108f60e11b8152600481018690529092506020816024816001600160a01b038e165afa908115610933575f91610905575b506001600160a01b036108f0600435610124016110f8565b6001600160a01b0390921691161415916107f0565b610926915060203d811161092c575b61091e8183611096565b810190611152565b8d6108d8565b503d610914565b6040513d5f823e3d90fd5b9650509150506080843d8211610995575b8161095c60809383611096565b81010312610991578351936020810151916001600160801b03831683036109915760606040830151920151959291958c6107dc565b5f80fd5b3d915061094f565b634e487b7160e01b5f52604160045260245ffd5b9093909150606360a460043501358181029181830414901517156105885760649004821061087a576109e760e4600435016111bf565b610c41575b6040516370a0823160e01b8152306004820152602081602481875afa908115610c04578591610c0f575b508015159081610b64575b50610b5557610a3460c4600435016111bf565b610ac6575b60609350610a526101046004350160043560040161110c565b9050610a626084600435016110f8565b60408051928352602083018590526001600160a01b039182169083015282169084907ff099a3635b5952e853c68687c0b676f29c5fe0a4b480aca6e77aaf218575ff44908790a3604080519384526001600160a01b03919091166020840152820152f35b823b15610b515760405163f2fde38b60e01b81527f000000000000000000000000bbda9491bbc6acd8693004f2775aa3daa9b2248e6001600160a01b0316600482015284808260248183895af19182610b38575b5050610b2f57631327276760e21b8452600484fd5b60609350610a39565b81610b4291611096565b610b4d578486610b1a565b8480fd5b8380fd5b63022e258160e11b8452600484fd5b60405163a9059cbb60e01b81527f000000000000000000000000bbda9491bbc6acd8693004f2775aa3daa9b2248e6001600160a01b031660048201526024810191909152905060208160448188885af1908115610c04578591610bca575b501585610a21565b90506020813d602011610bfc575b81610be560209383611096565b81010312610b4d57610bf6906110b8565b85610bc2565b3d9150610bd8565b6040513d87823e3d90fd5b90506020813d602011610c39575b81610c2a60209383611096565b81010312610b4d575185610a16565b3d9150610c1d565b823b156109915760405163b81c727560e01b81526001600160a01b03821660048201525f8160248183885af19081610c8d575b50610c885763bd637c4760e01b8452600484fd5b6109ec565b610c9a9195505f90611096565b5f9385610c74565b6334c4589960e01b5f5260045ffd5b94505060e0843d60e011610d3f575b81610ccd60e09383611096565b810103126109915783516001600160a01b0381168103610991576020850151948560020b860361099157610d0360408201611171565b50610d1060608201611171565b50610d1d60808201611171565b5060a081015160ff8116036109915760c0610d3891016110b8565b505f61047f565b3d9150610cc0565b630e7f493960e11b5f5260045ffd5b610d6f915060203d60201161092c5761091e8183611096565b5f61043f565b610d8e915060203d60201161092c5761091e8183611096565b5f6103c6565b610dac9060203d60201161092c5761091e8183611096565b610398565b632d4de02b60e01b5f5260045ffd5b90506020813d602011610df2575b81610ddb60209383611096565b8101031261099157610dec906110b8565b5f610301565b3d9150610dce565b63fb41475f60e01b5f5260045ffd5b6334bf455960e01b5f5260045ffd5b50426101446004350135106101d2565b506001600160a01b03610e40600435610124016110f8565b16156101cb565b506001600160a01b03610e5e6004356084016110f8565b16156101c4565b50600f610e7d6101046004350160043560040161110c565b9050116101bd565b50610e9b6101046004350160043560040161110c565b9050156101b6565b5060a46004350135156101af565b50610ec06044600435016110f8565b7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b039081169116146101a8565b506001600160a01b03610f0b6004356044016110f8565b16156101a1565b6319f4db0f60e31b5f5260045ffd5b6282b42960e81b5f5260045ffd5b34610991575f366003190112610991576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b34610991576040366003190112610991576004356001600160a01b03811690819003610991577f000000000000000000000000bbda9491bbc6acd8693004f2775aa3daa9b2248e906001600160a01b0382163303610f215760405163a9059cbb60e01b81526001600160a01b039290921660048301526024803590830152602090829060449082905f905af1908115610933575f91611024575b501561101557005b63022e258160e11b5f5260045ffd5b90506020813d602011611056575b8161103f60209383611096565b8101031261099157611050906110b8565b8161100d565b3d9150611032565b34610991575f36600319011261099157807fe7a465be341020b8b4a1130584c8d7a43d2c1c1b1af7534bceca851c804e6b5460209252f35b90601f8019910116810190811067ffffffffffffffff82111761099d57604052565b5190811515820361099157565b903590601e1981360301821215610991570180359067ffffffffffffffff82116109915760200191813603831361099157565b356001600160a01b03811681036109915790565b903590601e1981360301821215610991570180359067ffffffffffffffff82116109915760200191606082023603831361099157565b3562ffffff811681036109915790565b9081602091031261099157516001600160a01b03811681036109915790565b519061ffff8216820361099157565b9190811015611190576060020190565b634e487b7160e01b5f52603260045260245ffd5b358060020b81036109915790565b9190820180921161058857565b358015158103610991579056fea26469706673582212202dd27e3e7d259b78d9fdf7a7d96d9340deb35efa2427c8f239e63b90964a3f5864736f6c63430008230033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0xf099a3…ff44 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…276292a4 data: 0x000000000000000000…416060c4 |
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x960358…8240 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…0005fcc4 [2] 0x000000000000…00000004 data: 0x000000000000000000…000d89a0 |
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x960358…8240 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…0005fcc3 [2] 0x000000000000…00000003 data: 0x000000000000000000…fffdc8d0 |
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x960358…8240 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…0005fcc2 [2] 0x000000000000…00000002 data: 0x000000000000000000…fffd8a50 |
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x960358…8240 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…0005fcc1 [2] 0x000000000000…00000001 data: 0x000000000000000000…fffd5468 |
| 0x327764…3d19cb | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x960358…8240 | [0] 0x000000000000…13f3a6bc [1] 0x000000000000…0005fcc0 [2] 0x000000000000…00000000 data: 0x000000000000000000…fffd24c0 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x327764…3d19cb | launch | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0xbbda…248e | IN | pizza_funLaunchFactory | $0.000 ETH | 0.00049310 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x327764…3d19cb | CREATE2 | launch | 0x41d1…69c1 | OUT | 0x0835…a6bc | 0 ETH |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0xbbda…248e | 0.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0x5c75…92a4 | 610,000,000.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0x5c75…92a4 | 110,000,000.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0x5c75…92a4 | 100,000,000.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0x5c75…92a4 | 100,000,000.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x41d1…69c1 | OUT | 0x5c75…92a4 | 80,000,000.000000 pizza.fun | pizza.fun (pizza.fun) | |
| 0x32776482…3d19cb | Transfer | 19,366,959 | 23 days agoSat, 25 Jul 2026 22:25:37 UTC | 0x0000…0000 | IN | 0x41d1…69c1 | 1,000,000,000.000000 pizza.fun | pizza.fun (pizza.fun) |