| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| 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 |
|---|---|---|---|
| 0x75ae1f…d616ac | 1 day agoSun, 16 Aug 2026 23:22:17 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…7a3e4874 data: 0x000000000000000000…602c438b |
| 0x85156d…e4f11a | 1 day agoSun, 16 Aug 2026 23:22:16 UTC | Transfer | [0] 0x000000000000…461b974b [1] 0x000000000000…3df2695e data: 0x000000000000000000…0000514d |
| 0x85156d…e4f11a | 1 day agoSun, 16 Aug 2026 23:22:16 UTC | Transfer | [0] 0x000000000000…461b974b [1] 0x000000000000…43e40951 data: 0x000000000000000000…adffaeb3 |
| 0x85156d…e4f11a | 1 day agoSun, 16 Aug 2026 23:22:16 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…3df2695e data: 0x000000000000000000…3a000000 |
| 0x85156d…e4f11a | 1 day agoSun, 16 Aug 2026 23:22:16 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…461b974b data: 0x000000000000000000…ae000000 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/**
* @title PumpToken
* @notice Fixed-supply, admin-less ERC-20 minted in one shot by an ImortalHoodPad.
*
* The whole supply exists at construction and is split there: `creatorBps`
* to whoever created the coin, the remainder to the pad, which places it as
* single-sided liquidity it can never withdraw. No mint function, no owner,
* no pause, no blacklist, no transfer tax, no upgrade path.
*
* Metadata is carried by the token itself rather than by the pad, so an
* explorer or bot that only has the token address can still draw its card.
* The five fields match the `Meta` struct the rest of this site already
* speaks, so the Pinata/IPFS upload path feeds them unchanged.
*
* Only the URL is stored on-chain, never the file: a real image costs gas in
* proportion to its bytes. Readers call `imageURI()` or `getTokenInfo()` and
* render whatever comes back. There is no setter — a dead host cannot be
* repaired, so pin the content or serve it from somewhere you control.
*/
contract PumpToken is ERC20 {
/// @notice One billion, 18 decimals. Every token from this venue is identical here.
uint256 public constant TOTAL_SUPPLY = 1_000_000_000e18;
/// @notice The pad that minted this token and holds its locked liquidity.
/// The fee hook reads this to decide who may register the token's pool,
/// which is what lets many independent pads share one hook safely.
address public immutable launcher;
/// @notice Wallet that received the creator slice at mint.
address public immutable creator;
/// @notice Creator slice in basis points of TOTAL_SUPPLY.
uint256 public immutable creatorBps;
/// @notice Block timestamp of the launch.
uint256 public immutable deployedAt;
string public imageURI;
string public description;
string public website;
string public twitter;
string public telegram;
/// @notice Identifies the contract family, so an indexer can pick these out
/// without matching bytecode.
string public constant STACK_ID = "imortal-hood-v1";
struct Meta {
string image;
string description;
string website;
string twitter;
string telegram;
}
constructor(string memory name_, string memory symbol_, address creator_, uint256 creatorBps_, Meta memory meta)
ERC20(name_, symbol_)
{
require(creator_ != address(0), "zero creator");
require(creatorBps_ <= 10_000, "creator > 100%");
launcher = msg.sender;
creator = creator_;
creatorBps = creatorBps_;
deployedAt = block.timestamp;
imageURI = meta.image;
description = meta.description;
website = meta.website;
twitter = meta.twitter;
telegram = meta.telegram;
uint256 creatorAmount = (TOTAL_SUPPLY * creatorBps_) / 10_000;
// The pad's slice is minted first so the pool-facing balance is in place
// before anything else can observe the token.
_mint(msg.sender, TOTAL_SUPPLY - creatorAmount);
if (creatorAmount > 0) _mint(creator_, creatorAmount);
}
/// @notice Everything a listing card needs in one call, so a reader does not have
/// to make six round trips. Socials are read individually — they are the
/// fields most likely to be long, and a card draws without them.
function getTokenInfo()
external
view
returns (
string memory name_,
string memory symbol_,
string memory imageURI_,
string memory description_,
address creator_,
uint256 creatorBps_,
uint256 deployedAt_
)
{
return (name(), symbol(), imageURI, description, creator, creatorBps, deployedAt);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "creator_",
"type": "address",
"internalType": "address"
},
{
"name": "creatorBps_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "meta",
"type": "tuple",
"components": [
{
"name": "image",
"type": "string",
"internalType": "string"
},
{
"name": "description",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "telegram",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct PumpToken.Meta"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"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": "STACK_ID",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"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": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "creator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "creatorBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "deployedAt",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "description",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "getTokenInfo",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "imageURI_",
"type": "string",
"internalType": "string"
},
{
"name": "description_",
"type": "string",
"internalType": "string"
},
{
"name": "creator_",
"type": "address",
"internalType": "address"
},
{
"name": "creatorBps_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deployedAt_",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "imageURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "launcher",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"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": "telegram",
"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"
},
{
"name": "twitter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "website",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
}
]0x6080806040526004361015610012575f80fd5b5f3560e01c90816302d05d3f146108955750806306fdde031461087a578063095ea7b3146107f8578063135d088d146107dd57806316eebd1e1461079957806318160ddd1461077c57806323b872dd1461069c578063313ce5671461068157806347ecb665146105c657806370a082311461058f5780637284e41614610574578063902d55a51461054e57806395d89b4114610533578063a9059cbb14610502578063abb1dc4414610408578063abfaeee01461034d578063b29b86af146102d7578063beb0a416146101cb578063dd62ed3e1461017b578063de90e29b146101415763eae4c19f14610103575f80fd5b3461013d575f36600319011261013d5760206040517f000000000000000000000000000000000000000000000000000000006a8246288152f35b5f80fd5b3461013d575f36600319011261013d5760206040517f00000000000000000000000000000000000000000000000000000000000009c48152f35b3461013d57604036600319011261013d576101946108fa565b61019c610910565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461013d575f36600319011261013d576040515f6007548060011c906001811680156102cd575b6020831081146102b9578285529081156102955750600114610237575b6102338361021f81850382610926565b6040519182916020835260208301906108d6565b0390f35b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b80821061027b5750909150810160200161021f61020f565b919260018160209254838588010152019101909291610263565b60ff191660208086019190915291151560051b8401909101915061021f905061020f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101f2565b3461013d575f36600319011261013d57604051604081019080821067ffffffffffffffff8311176103395761023391604052600f81526e696d6f7274616c2d686f6f642d763160881b60208201526040519182916020835260208301906108d6565b634e487b7160e01b5f52604160045260245ffd5b3461013d575f36600319011261013d576040515f6008548060011c906001811680156103fe575b6020831081146102b95782855290811561029557506001146103a0576102338361021f81850382610926565b60085f9081527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3939250905b8082106103e45750909150810160200161021f61020f565b9192600181602092548385880101520191019092916103cc565b91607f1691610374565b3461013d575f36600319011261013d57610459610423610948565b61048361042e610b6e565b610475610439610a16565b610467610444610ac2565b9360405197889760e0895260e08901906108d6565b9087820360208901526108d6565b9085820360408701526108d6565b9083820360608501526108d6565b7f00000000000000000000000048a4e8e79fc41d5bc7063d6788464b643df2695e6001600160a01b031660808301527f00000000000000000000000000000000000000000000000000000000000009c460a08301527f000000000000000000000000000000000000000000000000000000006a82462860c08301520390f35b3461013d57604036600319011261013d5761052861051e6108fa565b6024359033610c1a565b602060405160018152f35b3461013d575f36600319011261013d5761023361021f610b6e565b3461013d575f36600319011261013d5760206040516b033b2e3c9fd0803ce80000008152f35b3461013d575f36600319011261013d5761023361021f610ac2565b3461013d57602036600319011261013d576001600160a01b036105b06108fa565b165f525f602052602060405f2054604051908152f35b3461013d575f36600319011261013d576040515f6009548060011c90600181168015610677575b6020831081146102b9578285529081156102955750600114610619576102338361021f81850382610926565b60095f9081527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af939250905b80821061065d5750909150810160200161021f61020f565b919260018160209254838588010152019101909291610645565b91607f16916105ed565b3461013d575f36600319011261013d57602060405160128152f35b3461013d57606036600319011261013d576106b56108fa565b6106bd610910565b6001600160a01b0382165f8181526001602081815260408084203385529091529091205491936044359392909181016106fc575b506105289350610c1a565b83811061076157841561074e57331561073b57610528945f52600160205260405f2060018060a01b0333165f526020528360405f2091039055846106f1565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b3461013d575f36600319011261013d576020600254604051908152f35b3461013d575f36600319011261013d576040517f000000000000000000000000bd16b9b1328b789187de7cfec4cd9ec1461b974b6001600160a01b03168152602090f35b3461013d575f36600319011261013d5761023361021f610a16565b3461013d57604036600319011261013d576108116108fa565b60243590331561074e576001600160a01b031690811561073b57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013d575f36600319011261013d5761023361021f610948565b3461013d575f36600319011261013d577f00000000000000000000000048a4e8e79fc41d5bc7063d6788464b643df2695e6001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361013d57565b602435906001600160a01b038216820361013d57565b90601f8019910116810190811067ffffffffffffffff82111761033957604052565b604051905f6003548060011c9160018216918215610a0c575b6020841083146102b95783865285929081156109ed575060011461098e575b61098c92500383610926565b565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109d157505090602061098c92820101610980565b60209193508060019154838589010152019101909184926109b9565b6020925061098c94915060ff191682840152151560051b820101610980565b92607f1692610961565b604051905f6005548060011c9160018216918215610ab8575b6020841083146102b95783865285929081156109ed5750600114610a595761098c92500383610926565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b818310610a9c57505090602061098c92820101610980565b6020919350806001915483858901015201910190918492610a84565b92607f1692610a2f565b604051905f6006548060011c9160018216918215610b64575b6020841083146102b95783865285929081156109ed5750600114610b055761098c92500383610926565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310610b4857505090602061098c92820101610980565b6020919350806001915483858901015201910190918492610b30565b92607f1692610adb565b604051905f6004548060011c9160018216918215610c10575b6020841083146102b95783865285929081156109ed5750600114610bb15761098c92500383610926565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b818310610bf457505090602061098c92820101610980565b6020919350806001915483858901015201910190918492610bdc565b92607f1692610b87565b6001600160a01b0316908115610cc4576001600160a01b0316918215610cb157815f525f60205260405f2054818110610c9857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffdfea2646970667358221220e42e32328a6e9b180d3d71362c558e2c91b417b6191a3df51192297618f17c4564736f6c634300081c0033
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| no transactions indexed for this address yet | |||||||||