| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {ERC20} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";
import {ERC20Permit} from "openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol";
import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol";
import {IERC7572, ICircusTokenV3, ICircusTransferExemption} from "./CircusTokenV3.sol";
/// @title CircusQuoteTokenV3
/// @notice Fixed-supply launch token for STOCK-QUOTED launches on the circus bonding-curve launchpad.
/// Functionally identical to CircusTokenV3 — same reassignable-creator / metadata-controller
/// surface (community takeover, epoch nonce, protocol metadata moderation).
///
/// The only distinction is which lane the launchpad deploys it for (its quote asset is a tokenized
/// stock, and it graduates into a TOKEN/STOCK pool). The `ICircusTransferExemption` view is shared
/// (imported from CircusTokenV3) rather than redeclared.
///
/// Because the constructor signature is identical to CircusTokenV3's, the launchpad deploys this
/// token via the same CREATE3 + SSTORE2-blueprint machinery as the ETH lane (no separate CREATE2
/// deployer): the ground address is a function of `(launchpad, salt)` only, so vanity grinding
/// and address prediction are shared with the ETH lane.
contract CircusQuoteTokenV3 is ERC20, ERC20Permit, IERC7572, IERC165, ICircusTokenV3 {
/// @notice The launchpad that deployed this token and controls the transfer lock + metadata init.
address public immutable launchpad;
/// @notice The CtoManager trusted for community-takeover reassignment of `creator`. Fixed at
/// deployment (injected by the launchpad); logic changes happen behind its UUPS proxy.
address public immutable ctoManager;
/// @notice The MetadataController trusted to update this token's metadata URI (in addition to the
/// creator). Fixed at deployment (injected by the launchpad); logic changes happen behind
/// its UUPS proxy.
address public immutable metadataController;
/// @notice The coin's creator — the only account (besides the CtoManager) allowed to edit the
/// metadata URI and collect creator economics. Reassignable via `setCreator`. address(0)
/// until `initMetadata`.
address public creator;
/// @notice Monotonic epoch counter, bumped on every creator change (CTO or self-transfer). Consumed
/// by CtoManager to scope votes so a creator change invalidates the whole vote board.
uint64 public creatorNonce;
/// @notice Once true, transfers are unrestricted (set by the launchpad at graduation).
bool public unlocked;
/// @dev The opaque metadata pointer. Read via tokenURI()/contractURI()/metaURI(); written by the
/// launchpad once (initMetadata) then by the creator/metadataController (setTokenURI).
string private _metadataURI;
error TransfersLocked();
error OnlyLaunchpad();
error OnlyCreator();
error AlreadyInitialized();
error OnlyCreatorOrCtoManager();
error InvalidCreator();
event CreatorChanged(address indexed oldCreator, address indexed newCreator, uint64 nonce);
constructor(
string memory name_,
string memory symbol_,
address launchpad_,
uint256 supply_,
address ctoManager_,
address metadataController_
) ERC20(name_, symbol_) ERC20Permit(name_) {
launchpad = launchpad_;
ctoManager = ctoManager_;
metadataController = metadataController_;
_mint(launchpad_, supply_);
}
/// @notice One-shot metadata initializer, called by the launchpad in the same tx as deployment to
/// set the creator and the initial metadata URI. Idempotency is guarded by `creator`: once
/// set (non-zero) it cannot be re-initialized. Does NOT bump `creatorNonce`.
function initMetadata(address creator_, string calldata uri_) external {
if (msg.sender != launchpad) revert OnlyLaunchpad();
if (creator != address(0)) revert AlreadyInitialized();
creator = creator_;
_metadataURI = uri_;
emit ContractURIUpdated();
}
/// @notice Launch-token generation tag — `"v3"`.
function version() external pure returns (string memory) {
return "v3";
}
/*//////////////////////////////////////////////////////////////////////
CREATOR
//////////////////////////////////////////////////////////////////////*/
/// @notice Reassign the creator role. Callable by the current creator (wallet rotation) or the
/// CtoManager (community takeover). Bumps `creatorNonce`, orphaning any in-flight vote board.
function setCreator(address newCreator) external {
if (msg.sender != creator && msg.sender != ctoManager) revert OnlyCreatorOrCtoManager();
if (newCreator == address(0) || newCreator == creator) revert InvalidCreator();
address old = creator;
creator = newCreator;
unchecked {
creatorNonce += 1;
}
emit CreatorChanged(old, newCreator, creatorNonce);
}
/*//////////////////////////////////////////////////////////////////////
METADATA
//////////////////////////////////////////////////////////////////////*/
/// @notice The coin's metadata URI (ERC-721-style alias). On-chain this is just an opaque string.
function tokenURI() external view returns (string memory) {
return _metadataURI;
}
/// @notice ERC-7572 contract-level metadata URI (canonical name for marketplaces/indexers).
function contractURI() external view returns (string memory) {
return _metadataURI;
}
/// @notice The coin's metadata URI (alternate alias used by some launchpad indexers).
function metaURI() external view returns (string memory) {
return _metadataURI;
}
/// @notice Update the metadata URI. Callable by the coin's `creator` or the `metadataController`
/// (protocol moderation). Emits ERC-7572 `ContractURIUpdated`.
function setTokenURI(string calldata uri_) public {
if (msg.sender != creator && msg.sender != metadataController) revert OnlyCreator();
_metadataURI = uri_;
emit ContractURIUpdated();
}
/// @notice ERC-7572-style alias for `setTokenURI`. Same access.
function setContractURI(string calldata uri_) external {
setTokenURI(uri_);
}
/// @inheritdoc IERC165
function supportsInterface(bytes4 interfaceId) external pure override returns (bool) {
return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC7572).interfaceId;
}
/*//////////////////////////////////////////////////////////////////////
TRANSFER LOCK
//////////////////////////////////////////////////////////////////////*/
/// @notice Enable free transfers. Idempotent-safe; only the launchpad may call it (once, at graduation).
function unlock() external {
if (msg.sender != launchpad) revert OnlyLaunchpad();
unlocked = true;
}
/// @dev While locked: allow mint (`from == 0`), any move touching the launchpad, and any move where a
/// launchpad-exempt address is an endpoint. The launchpad-exempt staticcall is ordered last so the
/// constructor mint and plain curve legs never pay for it. After unlock: standard ERC20 semantics.
function _update(address from, address to, uint256 value) internal override {
if (
!unlocked && from != address(0) && from != launchpad && to != launchpad
&& !ICircusTransferExemption(launchpad).isCurveTransferExempt(from, to)
) {
revert TransfersLocked();
}
super._update(from, to, value);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "launchpad_",
"type": "address",
"internalType": "address"
},
{
"name": "supply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "ctoManager_",
"type": "address",
"internalType": "address"
},
{
"name": "metadataController_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyInitialized",
"type": "error",
"inputs": []
},
{
"name": "ECDSAInvalidSignature",
"type": "error",
"inputs": []
},
{
"name": "ECDSAInvalidSignatureLength",
"type": "error",
"inputs": [
{
"name": "length",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ECDSAInvalidSignatureS",
"type": "error",
"inputs": [
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"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": "ERC2612ExpiredSignature",
"type": "error",
"inputs": [
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC2612InvalidSigner",
"type": "error",
"inputs": [
{
"name": "signer",
"type": "address",
"internalType": "address"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "InvalidAccountNonce",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "currentNonce",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "InvalidCreator",
"type": "error",
"inputs": []
},
{
"name": "InvalidShortString",
"type": "error",
"inputs": []
},
{
"name": "OnlyCreator",
"type": "error",
"inputs": []
},
{
"name": "OnlyCreatorOrCtoManager",
"type": "error",
"inputs": []
},
{
"name": "OnlyLaunchpad",
"type": "error",
"inputs": []
},
{
"name": "StringTooLong",
"type": "error",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
},
{
"name": "TransfersLocked",
"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": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ContractURIUpdated",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "CreatorChanged",
"type": "event",
"inputs": [
{
"name": "oldCreator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newCreator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "nonce",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"name": "EIP712DomainChanged",
"type": "event",
"inputs": [],
"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": "DOMAIN_SEPARATOR",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"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": "contractURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "creator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "creatorNonce",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "ctoManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "eip712Domain",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "fields",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "version",
"type": "string",
"internalType": "string"
},
{
"name": "chainId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "verifyingContract",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "extensions",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "initMetadata",
"type": "function",
"inputs": [
{
"name": "creator_",
"type": "address",
"internalType": "address"
},
{
"name": "uri_",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "launchpad",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "metaURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "metadataController",
"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": "",
"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": "setContractURI",
"type": "function",
"inputs": [
{
"name": "uri_",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setCreator",
"type": "function",
"inputs": [
{
"name": "newCreator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTokenURI",
"type": "function",
"inputs": [
{
"name": "uri_",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "tokenURI",
"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": "unlock",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "unlocked",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "version",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "pure"
}
]0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cb95750806302669b5214610c7557806302d05d3f14610c4d57806306fdde0314610ba8578063095ea7b314610b8257806318160ddd14610b6557806323b872dd14610a86578063313ce56714610a6b5780633644e51514610a495780633c130d901461015b5780633f516018146109235780635201b472146108df57806354fd4d501461089b57806365932a38146106a4578063676057871461015b5780636a5e26501461067f57806370a08231146106485780637ecebe001461061057806384b0196e14610518578063938e3d7b1461016057806395d89b4114610436578063a69df4b5146103d2578063a9059cbb146103a1578063d505accf1461025e578063d8f7bace14610234578063dd62ed3e146101e4578063de7250aa146101a0578063e0df5b6f146101605763e8a3d4851461015b575f80fd5b610d5c565b3461019c57602036600319011261019c5760043567ffffffffffffffff811161019c5761019461019a913690600401610dee565b90610ef7565b005b5f80fd5b3461019c575f36600319011261019c576040517f00000000000000000000000074d4b708e6ce0748e4b968403e115dd69e60be8f6001600160a01b03168152602090f35b3461019c57604036600319011261019c576101fd610d30565b610205610d46565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461019c575f36600319011261019c57602067ffffffffffffffff60085460a01c16604051908152f35b3461019c5760e036600319011261019c57610277610d30565b61027f610d46565b604435906064359260843560ff8116810361019c5784421161038e5761035361035c9160018060a01b03841696875f52600760205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261032160e082610ed5565b51902061032c6112a4565b906040519161190160f01b83526002830152602282015260c43591604260a43592206114bd565b9092919261153f565b6001600160a01b0316848103610377575061019a93506113c0565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461019c57604036600319011261019c576103c76103bd610d30565b602435903361109b565b602060405160018152f35b3461019c575f36600319011261019c577f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b03163303610427576008805460ff60e01b1916600160e01b179055005b63236deb5b60e01b5f5260045ffd5b3461019c575f36600319011261019c576040515f60045461045681610e1c565b80845290600181169081156104f45750600114610496575b6104928361047e81850382610ed5565b604051918291602083526020830190610d0c565b0390f35b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106104da5750909150810160200161047e61046e565b9192600181602092548385880101520191019092916104c2565b60ff191660208086019190915291151560051b8401909101915061047e905061046e565b3461019c575f36600319011261019c576105b46105547f546865206265676761720000000000000000000000000000000000000000000a611423565b61057d7f3100000000000000000000000000000000000000000000000000000000000001611486565b60206105c2604051926105908385610ed5565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190610d0c565b908582036040870152610d0c565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106105f957505050500390f35b8351855286955093810193928101926001016105ea565b3461019c57602036600319011261019c576001600160a01b03610631610d30565b165f526007602052602060405f2054604051908152f35b3461019c57602036600319011261019c576001600160a01b03610669610d30565b165f525f602052602060405f2054604051908152f35b3461019c575f36600319011261019c57602060ff60085460e01c166040519015158152f35b3461019c57604036600319011261019c576106bd610d30565b60243567ffffffffffffffff811161019c576106dd903690600401610dee565b90917f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b0316330361042757600854906001600160a01b03821661088d576001600160a01b03166001600160a01b0319919091161760085567ffffffffffffffff811161087957610755600954610e1c565b601f8111610822575b505f601f82116001146107ba5781925f926107af575b50508160011b915f199060031b1c1916176009555b7fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad9625f80a1005b013590508280610774565b601f198216925f5160206115b45f395f51905f52915f5b85811061080a575083600195106107f1575b505050811b01600955610789565b01355f19600384901b60f8161c191690558280806107e3565b909260206001819286860135815501940191016107d1565b8181111561075e57601f820160051c9060208310610871575b601f82910160051c03905f5b82811061085557505061075e565b5f8282015f5160206115b45f395f51905f520155600101610847565b5f915061083b565b634e487b7160e01b5f52604160045260245ffd5b62dc149f60e41b5f5260045ffd5b3461019c575f36600319011261019c576104926040516108bc604082610ed5565b6002815261763360f01b6020820152604051918291602083526020830190610d0c565b3461019c575f36600319011261019c576040517f0000000000000000000000007d687dd0e3bf5025fbac010042a5943300c8463a6001600160a01b03168152602090f35b3461019c57602036600319011261019c5761093c610d30565b600854906001600160a01b038216903382141580610a16575b610a07576001600160a01b031691821580156109fe575b6109ef5760207f5905a6d5f4eb2f990e88a85822a892f03abaf25ef6a2a3b05c138f78d7def1f8918467ffffffffffffffff60a01b600167ffffffffffffffff836bffffffffffffffffffffffff60a01b86161760a01c160160a01b169163ffffffff60e01b1617178060085567ffffffffffffffff6040519160a01c168152a3005b6332db94d160e21b5f5260045ffd5b5081831461096c565b632fc687a760e01b5f5260045ffd5b50337f0000000000000000000000007d687dd0e3bf5025fbac010042a5943300c8463a6001600160a01b03161415610955565b3461019c575f36600319011261019c576020610a636112a4565b604051908152f35b3461019c575f36600319011261019c57602060405160128152f35b3461019c57606036600319011261019c57610a9f610d30565b610aa7610d46565b6001600160a01b0382165f818152600160209081526040808320338452909152902054909260443592915f198110610ae5575b506103c7935061109b565b838110610b4a578415610b37573315610b24576103c7945f52600160205260405f2060018060a01b0333165f526020528360405f209103905584610ada565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b3461019c575f36600319011261019c576020600254604051908152f35b3461019c57604036600319011261019c576103c7610b9e610d30565b60243590336113c0565b3461019c575f36600319011261019c576040515f600354610bc881610e1c565b80845290600181169081156104f45750600114610bef576104928361047e81850382610ed5565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210610c335750909150810160200161047e61046e565b919260018160209254838588010152019101909291610c1b565b3461019c575f36600319011261019c576008546040516001600160a01b039091168152602090f35b3461019c575f36600319011261019c576040517f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b03168152602090f35b3461019c57602036600319011261019c576004359063ffffffff60e01b821680920361019c576020916301ffc9a760e01b8114908115610cfb575b5015158152f35b63e8a3d48560e01b14905083610cf4565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361019c57565b602435906001600160a01b038216820361019c57565b3461019c575f36600319011261019c576040515f600954610d7c81610e1c565b80845290600181169081156104f45750600114610da3576104928361047e81850382610ed5565b60095f9081525f5160206115b45f395f51905f52939250905b808210610dd45750909150810160200161047e61046e565b919260018160209254838588010152019101909291610dbc565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b90600182811c92168015610e4a575b6020831014610e3657565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e2b565b5f9291815491610e6383610e1c565b8083529260018116908115610eb85750600114610e7f57505050565b5f9081526020812093945091925b838310610e9e575060209250010190565b600181602092949394548385870101520191019190610e8d565b915050602093945060ff929192191683830152151560051b010190565b90601f8019910116810190811067ffffffffffffffff82111761087957604052565b919060018060a01b036008541633141580611068575b6110595767ffffffffffffffff811161087957610f2b600954610e1c565b601f8111610ffe575b505f601f8211600114610f91578192935f92610f86575b50508160011b915f199060031b1c1916176009555b7fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad9625f80a1565b013590505f80610f4b565b601f1982169360095f525f5160206115b45f395f51905f52915f5b868110610fe65750836001959610610fcd575b505050811b01600955610f60565b01355f19600384901b60f8161c191690555f8080610fbf565b90926020600181928686013581550194019101610fac565b81811115610f345760095f52601f820160051c9060208310611051575b601f82910160051c03905f5b828110611035575050610f34565b5f8282015f5160206115b45f395f51905f520155600101611027565b5f915061101b565b6308f78f9960e31b5f5260045ffd5b50337f00000000000000000000000074d4b708e6ce0748e4b968403e115dd69e60be8f6001600160a01b03161415610f0d565b6001600160a01b0316908115611291576001600160a01b031691821561127e5760ff60085460e01c161580611276575b80611243575b80611210575b80611167575b61115857815f525f60205260405f205481811061113f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b6336e278fd60e21b5f5260045ffd5b50604051633cfbfda960e21b815260048101839052602481018490526020816044817f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b03165afa908115611205575f916111ca575b50156110dd565b90506020813d6020116111fd575b816111e560209383610ed5565b8101031261019c5751801515810361019c575f6111c3565b3d91506111d8565b6040513d5f823e3d90fd5b507f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b03168314156110d7565b507f000000000000000000000000b7fa26c6fcb8801cabc538b82a6e80ae1c43cb006001600160a01b03168214156110d1565b5060016110cb565b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b307f000000000000000000000000697ae812c2ba7741bf57970d128286dee9a524f76001600160a01b03161480611397575b156112ff577f6f9e73c6b95b8b604900d7dcc74cb4ae7e74fcd7fe21f041ad284d8db730bd0190565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527fe2aada36c3fa4a859776110cc769525602cc54bd2ed3c53fd55927ba772dca1c60408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815261139160c082610ed5565b51902090565b507f000000000000000000000000000000000000000000000000000000000000123746146112d6565b6001600160a01b0316908115610b37576001600160a01b0316918215610b245760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60ff81146114695760ff811690601f821161145a5760405191611447604084610ed5565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b506040516114838161147c816005610e54565b0382610ed5565b90565b60ff81146114aa5760ff811690601f821161145a5760405191611447604084610ed5565b506040516114838161147c816006610e54565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611534579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611205575f516001600160a01b0381161561152a57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561159f5780611551575050565b600181036115685763f645eedf60e01b5f5260045ffd5b60028103611583575063fce698f760e01b5f5260045260245ffd5b60031461158d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffdfe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa264697066735822122092d0fb33b6fedaa8d96a4c5ef64abd4e0661ab4a43a97894c3d818134dac4f3e64736f6c63430008230033
| 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 | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x4373e2…696877 | 20 days agoTue, 28 Jul 2026 15:58:23 UTC | Transfer | [0] 0x000000000000…2f1c18dd [1] 0x000000000000…1c43cb00 data: 0x000000000000000000…f489f215 |
| 0xbc1480…5cb023 | 20 days agoTue, 28 Jul 2026 15:58:23 UTC | Approval | [0] 0x000000000000…2f1c18dd [1] 0x000000000000…1c43cb00 data: 0xffffffffffffffffff…ffffffff |
| 0x327f48…d82f9e | 20 days agoTue, 28 Jul 2026 15:58:06 UTC | Transfer | [0] 0x000000000000…1c43cb00 [1] 0x000000000000…2f1c18dd data: 0x000000000000000000…f489f215 |
| 0x327f48…d82f9e | 20 days agoTue, 28 Jul 2026 15:58:06 UTC | 0xa5d409…d962 | |
| 0x327f48…d82f9e | 20 days agoTue, 28 Jul 2026 15:58:06 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…1c43cb00 data: 0x000000000000000000…e8000000 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xbc1480…5cb023 | Approve | 21,717,622 | 20 days agoTue, 28 Jul 2026 15:58:23 UTC | 0xdfe7…18dd | IN | The beggar | $0.000 ETH | 0.00000143 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 21,717,455 | 20 days agoTue, 28 Jul 2026 15:58:06 UTC | 0x327f48…d82f9e | CREATE | createToken | 0x68b9…bc3f | IN | 0x697a…24f7 | 0 ETH |