// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {RH} from "./RH.sol";
/// @notice Fixed 1B-supply ERC-20 for Uni V3 launches. Mint-once in constructor.
contract LaunchToken is ERC20 {
string private _metadataURI;
address public immutable creator;
constructor(string memory name_, string memory symbol_, string memory metadataURI_, address creator_)
ERC20(name_, symbol_)
{
require(creator_ != address(0), "creator=0");
creator = creator_;
_metadataURI = metadataURI_;
_mint(msg.sender, RH.TOTAL_SUPPLY);
}
function decimals() public pure override returns (uint8) {
return 18;
}
function metadataURI() external view returns (string memory) {
return _metadataURI;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI_",
"type": "string",
"internalType": "string"
},
{
"name": "creator_",
"type": "address",
"internalType": "address"
}
],
"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": "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": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "pure"
},
{
"name": "metadataURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"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"
}
]0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826302d05d3f146105f35750816303ee438c1461051857816306fdde031461043d578163095ea7b31461039557816318160ddd1461037757816323b872dd14610285578163313ce5671461026a57816370a082311461023457816395d89b411461011557508063a9059cbb146100e55763dd62ed3e14610099575f80fd5b346100e157806003193601126100e1576020906100b461067b565b6100bc610691565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b5f80fd5b50346100e157806003193601126100e15760209061010e61010461067b565b60243590336106a7565b5160018152f35b82346100e1575f3660031901126100e1578051905f835460018160011c906001831692831561022a575b6020938484108114610217578388529081156101fb57506001146101a7575b505050829003601f01601f191682019267ffffffffffffffff8411838510176101945750829182610190925282610634565b0390f35b604190634e487b7160e01b5f525260245ffd5b5f878152929350837f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8385106101e7575050505083010184808061015e565b8054888601830152930192849082016101d1565b60ff1916878501525050151560051b840101905084808061015e565b602289634e487b7160e01b5f525260245ffd5b91607f169161013f565b82346100e15760203660031901126100e1576020906001600160a01b0361025961067b565b165f525f8252805f20549051908152f35b82346100e1575f3660031901126100e1576020905160128152f35b9050346100e15760603660031901126100e1576102a061067b565b6102a8610691565b906044359260018060a01b038216805f526001602052855f20335f52602052855f2054915f1983036102e3575b60208761010e8888886106a7565b85831061034b57811561033557331561031f57505f9081526001602090815286822033835281529086902091859003909155829061010e6102d5565b6024905f885191634a1406b160e11b8352820152fd5b6024905f88519163e602df0560e01b8352820152fd5b8651637dc7a0d960e11b8152339181019182526020820193909352604081018690528291506060010390fd5b82346100e1575f3660031901126100e1576020906002549051908152f35b82346100e157806003193601126100e1576103ae61067b565b602435903315610427576001600160a01b03169081156104115760209350335f5260018452825f20825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8251634a1406b160e11b81525f81860152602490fd5b825163e602df0560e01b81525f81860152602490fd5b82346100e1575f3660031901126100e1578051905f60035460018160011c906001831692831561050e575b6020938484108114610217578388529081156101fb57506001146104b857505050829003601f01601f191682019267ffffffffffffffff8411838510176101945750829182610190925282610634565b60035f908152929350837fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106104fa575050505083010184808061015e565b8054888601830152930192849082016104e4565b91607f1691610468565b82346100e1575f3660031901126100e1578051905f60055460018160011c90600183169283156105e9575b6020938484108114610217578388529081156101fb575060011461059357505050829003601f01601f191682019267ffffffffffffffff8411838510176101945750829182610190925282610634565b60055f908152929350837f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8385106105d5575050505083010184808061015e565b8054888601830152930192849082016105bf565b91607f1691610543565b346100e1575f3660031901126100e1577f000000000000000000000000f57028d634621e8685d710217e3715039978c3d16001600160a01b03168152602090f35b602080825282518183018190529093925f5b82811061066757505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501610646565b600435906001600160a01b03821682036100e157565b602435906001600160a01b03821682036100e157565b916001600160a01b03808416928315610769571692831561075157825f525f60205260405f20549082821061071f5750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fdfea2646970667358221220e8a1b31dd79f75a90a6fba38b0f387fbe1a335904a4c0604837bd7d17a24f31264736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| 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 | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xba0351…73dd07 | 27 days agoSun, 19 Jul 2026 00:54:49 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…3e6a3809 data: 0x000000000000000000…6b0ead7e |
| 0xba0351…73dd07 | 27 days agoSun, 19 Jul 2026 00:54:49 UTC | Transfer | [0] 0x000000000000…9978c3d1 [1] 0x000000000000…d113f996 data: 0x000000000000000000…6b0ead7f |
| 0xf96200…352583 | 27 days agoSun, 19 Jul 2026 00:54:43 UTC | Approval | [0] 0x000000000000…9978c3d1 [1] 0x000000000000…b66337b5 data: 0xffffffffffffffffff…ffffffff |
| 0x264e0a…86d8ce | 31 days agoWed, 15 Jul 2026 12:05:41 UTC | Approval | [0] 0x000000000000…54e447d7 [1] 0x000000000000…34442049 data: 0xffffffffffffffffff…ffffffff |
| 0xc2209b…ba86b1 | 31 days agoWed, 15 Jul 2026 12:05:41 UTC | Transfer | [0] 0x000000000000…3e6a3809 [1] 0x000000000000…54e447d7 data: 0x000000000000000000…b1a0cac1 |
| 0x6d3e53…7e78f2 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | Transfer | [0] 0x000000000000…b5e2ec7c [1] 0x000000000000…9978c3d1 data: 0x000000000000000000…095f2d10 |
| 0x6d3e53…7e78f2 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | Transfer | [0] 0x000000000000…3e6a3809 [1] 0x000000000000…9978c3d1 data: 0x000000000000000000…61af806f |
| 0x6d3e53…7e78f2 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | Transfer | [0] 0x000000000000…b5e2ec7c [1] 0x000000000000…3e6a3809 data: 0x000000000000000000…dea0d2f0 |
| 0x6d3e53…7e78f2 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | Approval | [0] 0x000000000000…b5e2ec7c [1] 0x000000000000…638de0d3 data: 0x000000000000000000…e8000000 |
| 0x6d3e53…7e78f2 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…b5e2ec7c data: 0x000000000000000000…e8000000 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xf96200…352583 | Approve | 13,426,470 | 27 days agoSun, 19 Jul 2026 00:54:43 UTC | 0xf570…c3d1 | IN | hood | $0.000 ETH | 0.00000294 | |
| 0x264e0a…86d8ce | Approve | 10,379,269 | 31 days agoWed, 15 Jul 2026 12:05:41 UTC | 0xe8d5…47d7 | IN | hood | $0.000 ETH | 0.00000268 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 10,378,858 | 31 days agoWed, 15 Jul 2026 12:05:00 UTC | 0x6d3e53…7e78f2 | CREATE | createAndSeed | 0x6898…ec7c | IN | 0x66b6…66e2 | 0 ETH |