// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/// @title QuiverToken
/// @notice Fixed-supply ERC20 launched by the Quiver factory on Robinhood Chain.
/// Deliberately minimal — no owner functions, no mint, no permit/votes,
/// no transfer hooks — so security scanners and decompilers see a plain
/// ERC20 with nothing to flag. Image/metadata/context are set once at
/// construction; the app reads them from the TokenCreated event, the
/// getters below are an on-chain convenience.
/// @dev Constructor signature is shared with the previous token version so
/// QuiverDeployer works unchanged.
contract QuiverToken is ERC20 {
address private immutable _originalAdmin;
string private _metadata;
string private _context;
string private _image;
constructor(
string memory name_,
string memory symbol_,
uint256 maxSupply_,
address admin_,
string memory image_,
string memory metadata_,
string memory context_,
uint256 initialSupplyChainId_
) ERC20(name_, symbol_) {
_originalAdmin = admin_;
_image = image_;
_metadata = metadata_;
_context = context_;
// Only mint initial supply on a single chain
if (block.chainid == initialSupplyChainId_) {
_mint(msg.sender, maxSupply_);
}
}
/// @notice Kept for ABI compatibility — the creator; there is no mutable admin.
function admin() external view returns (address) {
return _originalAdmin;
}
function originalAdmin() external view returns (address) {
return _originalAdmin;
}
function imageUrl() external view returns (string memory) {
return _image;
}
function metadata() external view returns (string memory) {
return _metadata;
}
function context() external view returns (string memory) {
return _context;
}
// convenience function to get all data in one call
function allData()
external
view
returns (
address originalAdmin,
address admin,
string memory image,
string memory metadata,
string memory context
)
{
return (_originalAdmin, _originalAdmin, _image, _metadata, _context);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "maxSupply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "admin_",
"type": "address",
"internalType": "address"
},
{
"name": "image_",
"type": "string",
"internalType": "string"
},
{
"name": "metadata_",
"type": "string",
"internalType": "string"
},
{
"name": "context_",
"type": "string",
"internalType": "string"
},
{
"name": "initialSupplyChainId_",
"type": "uint256",
"internalType": "uint256"
}
],
"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": "admin",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "allData",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "originalAdmin",
"type": "address",
"internalType": "address"
},
{
"name": "admin",
"type": "address",
"internalType": "address"
},
{
"name": "image",
"type": "string",
"internalType": "string"
},
{
"name": "metadata",
"type": "string",
"internalType": "string"
},
{
"name": "context",
"type": "string",
"internalType": "string"
}
],
"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": "context",
"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": "imageUrl",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "metadata",
"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": "originalAdmin",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"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"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610837578063095ea7b3146107a857806318160ddd1461078b5780631c7b2ff4146100be57806323b872dd14610615578063313ce567146105fa578063392f37e91461051757806370a08231146104d357806395d89b41146103ad578063a9059cbb1461037c578063aba8315014610361578063b974b0a314610168578063d0496d6a14610135578063dd62ed3e146100c35763f851a440146100be575f80fd5b610985565b34610131576040600319360112610131576100dc61093f565b73ffffffffffffffffffffffffffffffffffffffff6100f9610962565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b34610131575f60031936011261013157610164610150610ad8565b60405191829160208352602083019061091a565b0390f35b34610131575f600319360112610131576101806109d5565b604051905f600554908160011c60018316928315610357575b60208210841461032a5781865285939081156102e8575060011461028c575b5003601f01601f1916820167ffffffffffffffff81118382101761025f5761024392610164916040526102516101ec610ad8565b9160405195869573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000515e7bce44baa5f6e42d16d4b5f27768e7f2f8cc16808852602088015260a0604088015260a087019061091a565b90858203606087015261091a565b90838203608085015261091a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60055f90815291507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106102cc5750508101602001601f196101b8565b60209193508060019154838589010152019101909184926102b6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f1990506101b8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610199565b34610131575f600319360112610131576101646101506109d5565b34610131576040600319360112610131576103a261039861093f565b6024359033610b98565b602060405160018152f35b34610131575f600319360112610131576040515f600454908160011c600183169283156104c9575b60208210841461032a578185528493908115610487575060011461042b575b5003601f01601f191681019067ffffffffffffffff82118183101761025f576040829052602080835282916101649183019061091a565b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061046b5750508101602001601f196103f4565b6020919350806001915483858801015201910190918392610455565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f1990506103f4565b90607f16906103d5565b346101315760206003193601126101315773ffffffffffffffffffffffffffffffffffffffff61050161093f565b165f525f602052602060405f2054604051908152f35b34610131575f600319360112610131576040515f600554908160011c600183169283156105f0575b60208210841461032a5781855284939081156104875750600114610594575003601f01601f191681019067ffffffffffffffff82118183101761025f576040829052602080835282916101649183019061091a565b60055f90815291507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106105d45750508101602001601f196103f4565b60209193508060019154838588010152019101909183926105be565b90607f169061053f565b34610131575f60031936011261013157602060405160128152f35b346101315760606003193601126101315761062e61093f565b610636610962565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106106b2575b506103a29350610b98565b83811061075757841561072b5733156106ff576103a2945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f2091039055846106a7565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610131575f600319360112610131576020600254604051908152f35b34610131576040600319360112610131576107c161093f565b60243590331561072b5773ffffffffffffffffffffffffffffffffffffffff169081156106ff57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610131575f600319360112610131576040515f600354908160011c60018316928315610910575b60208210841461032a57818552849390811561048757506001146108b4575003601f01601f191681019067ffffffffffffffff82118183101761025f576040829052602080835282916101649183019061091a565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106108f45750508101602001601f196103f4565b60209193508060019154838588010152019101909183926108de565b90607f169061085f565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013157565b34610131575f60031936011261013157602060405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000515e7bce44baa5f6e42d16d4b5f27768e7f2f8cc168152f35b604051905f600754908160011c60018316928315610ace575b60208210841461032a578186528593908115610a8c5750600114610a30575b5003601f01601f1916820167ffffffffffffffff81118382101761025f57604052565b60075f90815291507fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b818310610a705750508101602001601f19610a0d565b6020919350806001915483858901015201910190918492610a5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f199050610a0d565b90607f16906109ee565b604051905f600654908160011c60018316928315610b8e575b60208210841461032a578186528593908115610a8c5750600114610b32575003601f01601f1916820167ffffffffffffffff81118382101761025f57604052565b60065f90815291507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310610b725750508101602001601f19610a0d565b6020919350806001915483858901015201910190918492610b5c565b90607f1690610af1565b73ffffffffffffffffffffffffffffffffffffffff16908115610c8e5773ffffffffffffffffffffffffffffffffffffffff16918215610c6257815f525f60205260405f2054818110610c3057817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd
| 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 |
|---|---|---|---|
| 0x66a151…6a2bd0 | 34 days agoWed, 15 Jul 2026 04:30:15 UTC | Transfer | [0] 0x000000000000…e7f2f8cc [1] 0x000000000000…43dfbd6e data: 0x000000000000000000…22da4fe8 |
| 0xba3ade…c2fea1 | 34 days agoWed, 15 Jul 2026 04:30:15 UTC | Approval | [0] 0x000000000000…e7f2f8cc [1] 0x000000000000…262c40dc data: 0xffffffffffffffffff…ffffffff |
| 0xd46fe8…8a2e7a | 34 days agoWed, 15 Jul 2026 04:27:08 UTC | Transfer | [0] 0x000000000000…43dfbd6e [1] 0x000000000000…e7f2f8cc data: 0x000000000000000000…22da4fe8 |
| 0x777a50…ab26a1 | 34 days agoWed, 15 Jul 2026 04:26:02 UTC | Transfer | [0] 0x000000000000…d94a03c8 [1] 0x000000000000…0000dead data: 0x000000000000000000…00001e71 |
| 0x777a50…ab26a1 | 34 days agoWed, 15 Jul 2026 04:26:02 UTC | Transfer | [0] 0x000000000000…d94a03c8 [1] 0x000000000000…43dfbd6e data: 0x000000000000000000…e7ffe18f |
| 0x777a50…ab26a1 | 34 days agoWed, 15 Jul 2026 04:26:02 UTC | Transfer | [0] 0x000000000000…bcd5e26a [1] 0x000000000000…d94a03c8 data: 0x000000000000000000…e8000000 |
| 0x777a50…ab26a1 | 34 days agoWed, 15 Jul 2026 04:26:02 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…bcd5e26a 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 | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xba3ade…c2fea1 | Approve | 10,105,565 | 34 days agoWed, 15 Jul 2026 04:30:15 UTC | 0x515e…f8cc | IN | HOOD | $0.000 ETH | 0.00000234 |
| 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 | |
|---|---|---|---|---|---|---|---|---|
| 10,103,068 | 34 days agoWed, 15 Jul 2026 04:26:02 UTC | 0x777a50…ab26a1 | CREATE2 | deployToken | 0x8ad6…e26a | IN | 0x08a7…a21e | 0 ETH |