// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {ERC20} from "solady/tokens/ERC20.sol";
/// @title HoodlToken
/// @notice The ERC-20 minted for every Hoodl launch. Deliberately plain: fixed 1B supply, 18 decimals,
/// **no transfer tax / no hooks** (the fee model lives entirely in the Uniswap V3 pool + FeeManager,
/// not in the token — so aggregator routing never breaks; see brief §2). The full supply is minted
/// once, to `mintTo` (the LaunchFactory), which seeds the locked single-sided V3 position and any
/// optional dev-buy. The token itself has no owner and no mint after construction.
contract HoodlToken is ERC20 {
/// @notice Fixed total supply for every Hoodl token: 1,000,000,000 * 1e18.
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 ether;
string private _name;
string private _symbol;
/// @notice The address that launched this token (informational; not a privileged role).
address public immutable launcher;
constructor(string memory name_, string memory symbol_, address mintTo, address launcher_) {
require(mintTo != address(0), "HOODL: mintTo=0");
_name = name_;
_symbol = symbol_;
launcher = launcher_;
_mint(mintTo, TOTAL_SUPPLY);
}
function name() public view override returns (string memory) {
return _name;
}
function symbol() public view override returns (string memory) {
return _symbol;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "mintTo",
"type": "address",
"internalType": "address"
},
{
"name": "launcher_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AllowanceOverflow",
"type": "error",
"inputs": []
},
{
"name": "AllowanceUnderflow",
"type": "error",
"inputs": []
},
{
"name": "InsufficientAllowance",
"type": "error",
"inputs": []
},
{
"name": "InsufficientBalance",
"type": "error",
"inputs": []
},
{
"name": "InvalidPermit",
"type": "error",
"inputs": []
},
{
"name": "Permit2AllowanceIsFixedAtInfinity",
"type": "error",
"inputs": []
},
{
"name": "PermitExpired",
"type": "error",
"inputs": []
},
{
"name": "TotalSupplyOverflow",
"type": "error",
"inputs": []
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"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": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DOMAIN_SEPARATOR",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "result",
"type": "bytes32",
"internalType": "bytes32"
}
],
"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": "result",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "result",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"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": "nonces",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "result",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "permit",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "v",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "r",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "result",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"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": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
}
]0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c806370a082311161008857806395d89b411161006357806395d89b411461020a578063a9059cbb14610212578063d505accf14610225578063dd62ed3e1461023a575f5ffd5b806370a08231146101ad5780637ecebe00146101d2578063902d55a5146101f7575f5ffd5b806318160ddd116100c357806318160ddd1461016957806323b872dd14610183578063313ce567146101965780633644e515146101a5575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806316eebd1e1461012a575b5f5ffd5b6100f161024d565b6040516100fe9190610725565b60405180910390f35b61011a610115366004610775565b6102dc565b60405190151581526020016100fe565b6101517f00000000000000000000000081c9e1372145c277698b21fd7dfa29a635e592a081565b6040516001600160a01b0390911681526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a61019136600461079d565b61035c565b604051601281526020016100fe565b61017561042b565b6101756101bb3660046107d7565b6387a211a2600c9081525f91909152602090205490565b6101756101e03660046107d7565b6338377508600c9081525f91909152602090205490565b6101756b033b2e3c9fd0803ce800000081565b6100f16104a7565b61011a610220366004610775565b6104b6565b6102386102333660046107f7565b61052d565b005b610175610248366004610864565b6106e1565b60605f805461025b90610895565b80601f016020809104026020016040519081016040528092919081815260200182805461028790610895565b80156102d25780601f106102a9576101008083540402835291602001916102d2565b820191905f5260205f20905b8154815290600101906020018083116102b557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761030d57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103b15733602052637f5e9f208117600c526034600c2080548019156103ae57808511156103a8576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103d75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060019392505050565b5f8061043561024d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60606001805461025b90610895565b5f6387a211a2600c52335f526020600c208054808411156104de5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba3188519151761055d57633f68539a5f526004601cfd5b5f61056661024d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156105a557631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d511461068d5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b0383160161070a57505f19610356565b50602052637f5e9f20600c9081525f91909152603490205490565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610770575f5ffd5b919050565b5f5f60408385031215610786575f5ffd5b61078f8361075a565b946020939093013593505050565b5f5f5f606084860312156107af575f5ffd5b6107b88461075a565b92506107c66020850161075a565b929592945050506040919091013590565b5f602082840312156107e7575f5ffd5b6107f08261075a565b9392505050565b5f5f5f5f5f5f5f60e0888a03121561080d575f5ffd5b6108168861075a565b96506108246020890161075a565b95506040880135945060608801359350608088013560ff81168114610847575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610875575f5ffd5b61087e8361075a565b915061088c6020840161075a565b90509250929050565b600181811c908216806108a957607f821691505b6020821081036108c757634e487b7160e01b5f52602260045260245ffd5b5091905056fea164736f6c634300081c000a
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x44b46e…6b6302 | 36 days agoSat, 11 Jul 2026 23:30:30 UTC | Transfer | [0] 0x000000000000…f2e42ce7 [1] 0x000000000000…991bb42c data: 0x000000000000000000…425e72b9 |
| 0x44b46e…6b6302 | 36 days agoSat, 11 Jul 2026 23:30:30 UTC | Approval | [0] 0x000000000000…f2e42ce7 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…425e72b9 |
| 0x44b46e…6b6302 | 36 days agoSat, 11 Jul 2026 23:30:30 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…f2e42ce7 data: 0x000000000000000000…425e72b9 |
| 0x7d08ef…f46012 | 37 days agoSat, 11 Jul 2026 19:38:50 UTC | Transfer | [0] 0x000000000000…35e592a0 [1] 0x000000000000…991bb42c data: 0x000000000000000000…5ef00000 |
| 0x7e6a47…3b3b11 | 37 days agoSat, 11 Jul 2026 19:38:44 UTC | Approval | [0] 0x000000000000…35e592a0 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…5ef00000 |
| 0x3bbd78…fb81b8 | 37 days agoSat, 11 Jul 2026 18:17:33 UTC | Transfer | [0] 0x000000000000…9c9b5c42 [1] 0x000000000000…991bb42c data: 0x000000000000000000…6b840000 |
| 0x8fdf4c…54f85e | 37 days agoSat, 11 Jul 2026 17:45:13 UTC | Approval | [0] 0x000000000000…9c9b5c42 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…7e6c0000 |
| 0xe46fc2…d6fac0 | 37 days agoSat, 11 Jul 2026 17:45:00 UTC | Transfer | [0] 0x000000000000…9c9b5c42 [1] 0x000000000000…991bb42c data: 0x000000000000000000…6b840000 |
| 0x208be7…55dc72 | 37 days agoSat, 11 Jul 2026 17:44:55 UTC | Approval | [0] 0x000000000000…9c9b5c42 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…6b840000 |
| 0x6a1a20…a7eb0c | 37 days agoSat, 11 Jul 2026 17:44:34 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…9c9b5c42 data: 0x000000000000000000…cd0410ef |
| 0x6c3303…1092fd | 37 days agoSat, 11 Jul 2026 17:40:28 UTC | Transfer | [0] 0x000000000000…35e592a0 [1] 0x000000000000…991bb42c data: 0x000000000000000000…d7bc0000 |
| 0xb294e4…b112a2 | 37 days agoSat, 11 Jul 2026 17:40:23 UTC | Approval | [0] 0x000000000000…35e592a0 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…d7bc0000 |
| 0xfdcf96…17a0a3 | 37 days agoSat, 11 Jul 2026 17:39:39 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…35e592a0 data: 0x000000000000000000…e1f29ee4 |
| 0xd38f43…95d3a4 | 37 days agoSat, 11 Jul 2026 17:30:00 UTC | Transfer | [0] 0x000000000000…35e592a0 [1] 0x000000000000…991bb42c data: 0x000000000000000000…e5cc0000 |
| 0xf9c352…1f63cd | 37 days agoSat, 11 Jul 2026 17:29:56 UTC | Approval | [0] 0x000000000000…35e592a0 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…e5cc0000 |
| 0xe2807b…06f624 | 37 days agoSat, 11 Jul 2026 17:25:18 UTC | Transfer | [0] 0x000000000000…35e592a0 [1] 0x000000000000…991bb42c data: 0x000000000000000000…b6bc0000 |
| 0xf4fab7…6d5c5e | 37 days agoSat, 11 Jul 2026 17:25:11 UTC | Approval | [0] 0x000000000000…35e592a0 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…b6bc0000 |
| 0xb22527…ac2b38 | 37 days agoSat, 11 Jul 2026 17:24:55 UTC | Transfer | [0] 0x000000000000…00ca390e [1] 0x000000000000…991bb42c data: 0x000000000000000000…42a8d06a |
| 0x1d66f9…340819 | 37 days agoSat, 11 Jul 2026 17:24:55 UTC | Approval | [0] 0x000000000000…00ca390e [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x09eead…d64db3 | 37 days agoSat, 11 Jul 2026 17:24:54 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…00ca390e data: 0x000000000000000000…58a5cdce |
| 0x40776e…fd46b0 | 37 days agoSat, 11 Jul 2026 17:24:45 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…35e592a0 data: 0x000000000000000000…8135d0ff |
| 0x3331c0…1fa257 | 37 days agoSat, 11 Jul 2026 17:11:12 UTC | Approval | [0] 0x000000000000…8d3ee6e6 [1] 0x000000000000…018d237c data: 0xffffffffffffffffff…ffffffff |
| 0x227d60…1c8857 | 37 days agoSat, 11 Jul 2026 17:11:12 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…8d3ee6e6 data: 0x000000000000000000…17ddd124 |
| 0x5a0b05…4132cf | 37 days agoSat, 11 Jul 2026 17:10:35 UTC | Transfer | [0] 0x000000000000…991bb42c [1] 0x000000000000…35e592a0 data: 0x000000000000000000…db3a1952 |
| 0x5a0b05…4132cf | 37 days agoSat, 11 Jul 2026 17:10:35 UTC | Transfer | [0] 0x000000000000…397decff [1] 0x000000000000…991bb42c data: 0x000000000000000000…e7ffd018 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7e6a47…3b3b11 | Approve | 7,200,700 | 37 days agoSat, 11 Jul 2026 19:38:44 UTC | 0x81c9…92a0 | IN | Cash Cat | $0.000 ETH | 0.00000277 | |
| 0x8fdf4c…54f85e | Approve | 7,132,655 | 37 days agoSat, 11 Jul 2026 17:45:13 UTC | 0x860e…5c42 | IN | Cash Cat | $0.000 ETH | 0.00000273 | |
| 0x208be7…55dc72 | Approve | 7,132,480 | 37 days agoSat, 11 Jul 2026 17:44:55 UTC | 0x860e…5c42 | IN | Cash Cat | $0.000 ETH | 0.00000275 | |
| 0xb294e4…b112a2 | Approve | 7,129,771 | 37 days agoSat, 11 Jul 2026 17:40:23 UTC | 0x81c9…92a0 | IN | Cash Cat | $0.000 ETH | 0.00000274 | |
| 0xf9c352…1f63cd | Approve | 7,123,491 | 37 days agoSat, 11 Jul 2026 17:29:56 UTC | 0x81c9…92a0 | IN | Cash Cat | $0.000 ETH | 0.00000276 | |
| 0xf4fab7…6d5c5e | Approve | 7,120,646 | 37 days agoSat, 11 Jul 2026 17:25:11 UTC | 0x81c9…92a0 | IN | Cash Cat | $0.000 ETH | 0.00000273 | |
| 0x1d66f9…340819 | Approve | 7,120,478 | 37 days agoSat, 11 Jul 2026 17:24:55 UTC | 0xedb3…390e | IN | Cash Cat | $0.000 ETH | 0.00000277 | |
| 0x3331c0…1fa257 | Approve | 7,112,258 | 37 days agoSat, 11 Jul 2026 17:11:12 UTC | 0xcce6…e6e6 | IN | Cash Cat | $0.000 ETH | 0.00000283 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xdd2e28f2…3566f9 | Transfer | 19,837,172 | 22 days agoSun, 26 Jul 2026 11:32:27 UTC | 0xcaf7…5d11 | IN | 0x4221…bfbf | $0.001 DIH |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 7,111,884 | 37 days agoSat, 11 Jul 2026 17:10:35 UTC | 0x5a0b05…4132cf | CREATE2 | createToken | 0x4e87…ecff | IN | 0x4221…bfbf | 0 ETH |