// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/**
* @title HoodTokenWeb
* @notice Identical to HoodToken — fixed supply, minted once to the launchpad,
* no owner, no mint, no pause, no upgrade — with one addition: it
* carries the launch site address on-chain as ERC-7572 `contractURI`.
* @dev A separate contract on purpose. The older launchpads construct HoodToken
* with three arguments; changing that contract would have broken every one
* of them.
*/
contract HoodTokenWeb is ERC20 {
address public immutable launchpad;
/// @notice Set once at creation and never mutable, so nobody — including
/// the launchpad owner — can repoint it at something else later.
string public contractURI;
constructor(
string memory name_,
string memory symbol_,
uint256 supply_,
string memory contractURI_
) ERC20(name_, symbol_) {
launchpad = msg.sender;
contractURI = contractURI_;
_mint(msg.sender, supply_);
}
/// @notice Burn caller's tokens voluntarily.
function burn(uint256 amount) external {
_burn(msg.sender, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "supply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "contractURI_",
"type": "string",
"internalType": "string"
}
],
"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": "burn",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "contractURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "launchpad",
"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": "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"
}
]0x608080604052600436101561001357600080fd5b60003560e01c90816302669b52146106a65750806306fdde03146105ce578063095ea7b31461054857806318160ddd1461052a57806323b872dd1461043d578063313ce5671461042157806342966c681461037b57806370a082311461034157806395d89b411461024d578063a9059cbb1461021c578063dd62ed3e146101cb5763e8a3d485146100a357600080fd5b346101c65760003660031901126101c65760405160006005548060011c906001811680156101bc575b6020831081146101a85782855290811561018c5750600114610135575b50819003601f01601f191681019067ffffffffffffffff82118183101761011f576040829052819061011b90826106e8565b0390f35b634e487b7160e01b600052604160045260246000fd5b600560009081529091507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828210610176575060209150820101386100e9565b6001816020925483858801015201910190610161565b90506020925060ff191682840152151560051b820101386100e9565b634e487b7160e01b84526022600452602484fd5b91607f16916100cc565b600080fd5b346101c65760403660031901126101c6576101e4610731565b6101ec610747565b6001600160a01b039182166000908152600160209081526040808320949093168252928352819020549051908152f35b346101c65760403660031901126101c657610242610238610731565b602435903361075d565b602060405160018152f35b346101c65760003660031901126101c65760405160006004548060011c90600181168015610337575b6020831081146101a85782855290811561031b57506001146102c45750819003601f01601f191681019067ffffffffffffffff82118183101761011f576040829052819061011b90826106e8565b600460009081529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828210610305575060209150820101826100e9565b60018160209254838588010152019101906102f0565b90506020925060ff191682840152151560051b820101826100e9565b91607f1691610276565b346101c65760203660031901126101c6576001600160a01b03610362610731565b1660005260006020526020604060002054604051908152f35b346101c65760203660031901126101c657600435331561040b576000338152806020526040812054918083106103f2578082933384528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a380f35b60649263391434e360e21b835233600452602452604452fd5b634b637e8f60e11b600052600060045260246000fd5b346101c65760003660031901126101c657602060405160128152f35b346101c65760603660031901126101c657610456610731565b61045e610747565b6001600160a01b038216600081815260016020908152604080832033845290915290205490926044359291600019811061049e575b50610242935061075d565b83811061050d5784156104f75733156104e157610242946000526001602052604060002060018060a01b0333166000526020528360406000209103905584610493565b634a1406b160e11b600052600060045260246000fd5b63e602df0560e01b600052600060045260246000fd5b8390637dc7a0d960e11b6000523360045260245260445260646000fd5b346101c65760003660031901126101c6576020600254604051908152f35b346101c65760403660031901126101c657610561610731565b6024359033156104f7576001600160a01b03169081156104e157336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101c65760003660031901126101c65760405160006003548060011c9060018116801561069c575b6020831081146101a85782855290811561031b57506001146106455750819003601f01601f191681019067ffffffffffffffff82118183101761011f576040829052819061011b90826106e8565b600360009081529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828210610686575060209150820101826100e9565b6001816020925483858801015201910190610671565b91607f16916105f7565b346101c65760003660031901126101c6577f000000000000000000000000ca3e30704e2402a74254fedc580d2394ea9a32486001600160a01b03168152602090f35b91909160208152825180602083015260005b81811061071b575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016106fa565b600435906001600160a01b03821682036101c657565b602435906001600160a01b03821682036101c657565b6001600160a01b031690811561040b576001600160a01b03169182156107f65760008281528060205260408120548281106107dc5791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b63ec442f0560e01b600052600060045260246000fdfea164736f6c634300081c000a
| 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 |
|---|---|---|---|
| 0xb5f250…205c49 | 1 day agoSun, 16 Aug 2026 23:09:21 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…7a3e4874 data: 0x000000000000000000…693c9913 |
| 0x4a4df4…67d59f | 1 day agoSun, 16 Aug 2026 23:09:21 UTC | Transfer | [0] 0x000000000000…ea9a3248 [1] 0x000000000000…43e40951 data: 0x000000000000000000…1fffc386 |
| 0x4a4df4…67d59f | 1 day agoSun, 16 Aug 2026 23:09:21 UTC | Transfer | [0] 0x000000000000…ea9a3248 [1] 0x000000000000…3df2695e data: 0x000000000000000000…c8000000 |
| 0x4a4df4…67d59f | 1 day agoSun, 16 Aug 2026 23:09:21 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…ea9a3248 data: 0x000000000000000000…e8000000 |
| 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 | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| no transactions indexed for this address yet | |||||||||