// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol";
import {IERC721} from "openzeppelin-contracts/contracts/token/ERC721/IERC721.sol";
import {ERC721Holder} from "openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol";
import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol";
import {Pausable} from "openzeppelin-contracts/contracts/utils/Pausable.sol";
import {AccessControl} from "openzeppelin-contracts/contracts/access/AccessControl.sol";
import {IStakingVault} from "../interfaces/IStakingVault.sol";
import {ITokenEscrowReserve} from "../interfaces/ITokenEscrowReserve.sol";
import {
ZeroAddress,
EmptyInventory,
NotInInventory,
SlippageExceeded,
InvalidRandomFee,
InvalidSpecificFee,
InsufficientSwapFee,
StalePrice,
InvalidPrice
} from "../libs/Errors.sol";
import {Events} from "../libs/Events.sol";
interface IAggregatorV3Minimal {
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
function decimals() external view returns (uint8);
}
contract NFTAMMVault is ERC721Holder, ReentrancyGuard, Pausable, AccessControl {
using SafeERC20 for IERC20;
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
bytes32 public constant GOVERNOR_ROLE = keccak256("GOVERNOR_ROLE");
bytes32 public constant INGEST_ROLE = keccak256("INGEST_ROLE");
uint16 public constant MAX_FEE_BPS = 1500; // 15% hard cap
uint16 public constant TOTAL_PROTOCOL_FEE_BPS = 50; // 0.5% total overhead on trades
uint16 public constant BASE_PROTOCOL_TREASURY_FEE_BPS = 10; // 0.1% treasury on Base
uint16 public constant BASE_PROTOCOL_BURN_FEE_BPS = 40; // 0.4% burn on Base
// Robinhood Chain (4663): flat ~$2 ETH fee per NFT swap, split $1/$1.
uint256 public constant ROBINHOOD_CHAIN_ID = 4663;
address public constant ROBINHOOD_TREASURY = 0xb668382cF44038a3E8140E789060F6A809787CDa;
address public constant ROBINHOOD_BOOSTER = 0x038a7F4E4E89448ad74e044337C9aC25C11e726B;
address public constant ROBINHOOD_ETH_USD_FEED = 0x6091E64eb7138EEF066a80FD3A0d7427B91f2721;
/// @dev $2.00 with 8 decimals (Chainlink USD convention).
uint256 public constant ROBINHOOD_SWAP_FEE_USD8 = 2e8;
uint256 public constant ROBINHOOD_PRICE_MAX_AGE = 48 hours;
event RobinhoodSwapFeePaid(address indexed payer, uint256 feeWei, address treasury, address booster);
IERC20 public immutable token;
IERC721 public immutable collection;
ITokenEscrowReserve public immutable escrow;
/// @notice Protocol treasury configured at deployment.
/// @dev Immutable per-vault; factory treasury changes do not retroactively update this address.
address public immutable treasury;
address public immutable burnWallet;
address public immutable stakingVault;
uint256 public immutable tokensPerNFT;
uint16 public immutable protocolTreasuryFeeBps;
uint16 public immutable protocolBurnFeeBps;
uint16 public randomFeeBps;
uint16 public specificFeeBps;
mapping(uint256 => bool) public inventory;
mapping(uint256 => uint256) private _nextTokenId;
mapping(uint256 => uint256) private _prevTokenId;
uint256 public oldestTokenId;
uint256 public newestTokenId;
uint256 public inventoryCount;
constructor(
address token_,
address collection_,
address escrow_,
address treasury_,
address burnWallet_,
address stakingVault_,
uint256 tokensPerNFT_,
uint16 randomFeeBps_,
uint16 specificFeeBps_
) {
if (
token_ == address(0) || collection_ == address(0) || escrow_ == address(0) || treasury_ == address(0)
|| stakingVault_ == address(0)
) revert ZeroAddress();
if (randomFeeBps_ > MAX_FEE_BPS) revert InvalidRandomFee();
if (specificFeeBps_ > MAX_FEE_BPS) revert InvalidSpecificFee();
if (specificFeeBps_ < randomFeeBps_) revert InvalidSpecificFee();
token = IERC20(token_);
collection = IERC721(collection_);
escrow = ITokenEscrowReserve(escrow_);
treasury = treasury_;
if (block.chainid == 8453) {
if (burnWallet_ == address(0)) revert ZeroAddress();
protocolTreasuryFeeBps = BASE_PROTOCOL_TREASURY_FEE_BPS;
protocolBurnFeeBps = BASE_PROTOCOL_BURN_FEE_BPS;
burnWallet = burnWallet_;
} else {
protocolTreasuryFeeBps = TOTAL_PROTOCOL_FEE_BPS;
protocolBurnFeeBps = 0;
burnWallet = burnWallet_;
}
stakingVault = stakingVault_;
tokensPerNFT = tokensPerNFT_;
randomFeeBps = randomFeeBps_;
specificFeeBps = specificFeeBps_;
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(PAUSER_ROLE, msg.sender);
}
function sellNFT(uint256 tokenId, uint256 minPayout) external payable nonReentrant whenNotPaused {
_collectRobinhoodSwapFee();
collection.safeTransferFrom(msg.sender, address(this), tokenId);
_pushInventory(tokenId);
(uint256 grossPayout, uint256 netPayout, uint256 stakerFee, uint256 protocolFee) = _sellQuote();
if (netPayout < minPayout) revert SlippageExceeded();
escrow.release(address(this), grossPayout, ITokenEscrowReserve.BucketType.AMM);
token.safeTransfer(msg.sender, netPayout);
_distributeProtocolAndBurnFees(protocolFee);
_distributeStakerRewards(stakerFee);
emit Events.NFTSold(msg.sender, tokenId, grossPayout, netPayout, protocolFee, stakerFee);
}
function buyRandomNFT(uint256 maxCost) external payable nonReentrant whenNotPaused {
_collectRobinhoodSwapFee();
if (inventoryCount == 0) revert EmptyInventory();
(uint256 totalCost, uint256 stakerFee, uint256 protocolFee, uint256 baseCost) = _randomBuyQuote();
if (totalCost > maxCost) revert SlippageExceeded();
token.safeTransferFrom(msg.sender, address(this), totalCost);
_routeIncomingBuy(baseCost, stakerFee, protocolFee);
uint256 tokenId = oldestTokenId;
_removeInventory(tokenId);
collection.safeTransferFrom(address(this), msg.sender, tokenId);
emit Events.NFTBought(msg.sender, tokenId, totalCost, baseCost, protocolFee, stakerFee, false);
}
function buySpecificNFT(uint256 tokenId, uint256 maxCost) external payable nonReentrant whenNotPaused {
_collectRobinhoodSwapFee();
if (!inventory[tokenId]) revert NotInInventory();
(uint256 totalCost, uint256 stakerFee, uint256 protocolFee, uint256 baseCost) = _specificBuyQuote();
if (totalCost > maxCost) revert SlippageExceeded();
token.safeTransferFrom(msg.sender, address(this), totalCost);
_routeIncomingBuy(baseCost, stakerFee, protocolFee);
_removeInventory(tokenId);
collection.safeTransferFrom(address(this), msg.sender, tokenId);
emit Events.NFTBought(msg.sender, tokenId, totalCost, baseCost, protocolFee, stakerFee, true);
}
/// @notice Native ETH required per NFT swap on Robinhood Chain ($2 at the Chainlink mark). Zero on other chains.
function robinhoodSwapFeeWei() public view returns (uint256) {
if (block.chainid != ROBINHOOD_CHAIN_ID) return 0;
return _robinhoodSwapFeeWei();
}
function quoteRandomBuy()
external
view
returns (
uint256 totalCost,
uint256 baseCost,
uint256 fee,
uint256 protocolFee,
uint256 inventorySize,
uint256 nextTokenId
)
{
(totalCost, fee, protocolFee, baseCost) = _randomBuyQuote();
inventorySize = inventoryCount;
nextTokenId = oldestTokenId;
}
function quoteSpecificBuy(uint256 tokenId)
external
view
returns (uint256 totalCost, uint256 baseCost, uint256 fee, uint256 protocolFee, bool available)
{
(totalCost, fee, protocolFee, baseCost) = _specificBuyQuote();
available = inventory[tokenId];
}
function quoteSellNFT()
external
view
returns (uint256 netPayout, uint256 grossPayout, uint256 fee, uint256 protocolFee)
{
(grossPayout, netPayout, fee, protocolFee) = _sellQuote();
}
function inventoryLength() external view returns (uint256) {
return inventoryCount;
}
/// @notice Returns the next tokenId in the FIFO linked list (decoded). Returns 0 if tail.
function getNextTokenId(uint256 tokenId) external view returns (uint256) {
uint256 encoded = _nextTokenId[tokenId];
return encoded == 0 ? 0 : _decodeTokenId(encoded);
}
function pause() external onlyRole(PAUSER_ROLE) {
_pause();
}
function unpause() external onlyRole(DEFAULT_ADMIN_ROLE) {
_unpause();
}
function setFees(uint16 randomFeeBps_, uint16 specificFeeBps_) external onlyRole(GOVERNOR_ROLE) {
if (randomFeeBps_ > MAX_FEE_BPS) revert InvalidRandomFee();
if (specificFeeBps_ > MAX_FEE_BPS) revert InvalidSpecificFee();
if (specificFeeBps_ < randomFeeBps_) revert InvalidSpecificFee();
randomFeeBps = randomFeeBps_;
specificFeeBps = specificFeeBps_;
emit Events.FeesUpdated(address(this), randomFeeBps_, specificFeeBps_);
}
function ingestNFT(uint256 tokenId) external onlyRole(INGEST_ROLE) {
require(collection.ownerOf(tokenId) == address(this), "NFT not held by vault");
if (inventory[tokenId]) return;
_pushInventory(tokenId);
}
/// @dev On Robinhood Chain, require ~$2 ETH and split $1 treasury / $1 StockBooster.
/// On other chains, refund any accidental msg.value so callers aren't bricked.
function _collectRobinhoodSwapFee() internal {
if (block.chainid != ROBINHOOD_CHAIN_ID) {
if (msg.value > 0) {
(bool refunded,) = msg.sender.call{value: msg.value}("");
require(refunded, "fee refund failed");
}
return;
}
uint256 feeWei = _robinhoodSwapFeeWei();
if (msg.value < feeWei) revert InsufficientSwapFee();
uint256 half = feeWei / 2;
uint256 toBooster = feeWei - half;
(bool okTreasury,) = ROBINHOOD_TREASURY.call{value: half}("");
require(okTreasury, "treasury fee failed");
(bool okBooster,) = ROBINHOOD_BOOSTER.call{value: toBooster}("");
require(okBooster, "booster fee failed");
emit RobinhoodSwapFeePaid(msg.sender, feeWei, ROBINHOOD_TREASURY, ROBINHOOD_BOOSTER);
uint256 excess = msg.value - feeWei;
if (excess > 0) {
(bool refunded,) = msg.sender.call{value: excess}("");
require(refunded, "fee refund failed");
}
}
function _robinhoodSwapFeeWei() internal view returns (uint256) {
(, int256 answer,, uint256 updatedAt,) = IAggregatorV3Minimal(ROBINHOOD_ETH_USD_FEED).latestRoundData();
if (answer <= 0) revert InvalidPrice();
if (block.timestamp > updatedAt + ROBINHOOD_PRICE_MAX_AGE) revert StalePrice();
uint8 feedDecimals = IAggregatorV3Minimal(ROBINHOOD_ETH_USD_FEED).decimals();
// feeWei = $2 * 1e18 / (price * 10^(18-feedDecimals)? wait: price has feedDecimals
// feeWei = USD8 * 1e18 / price(1e8) when feedDecimals==8 → (2e8 * 1e18) / answer
uint256 price = uint256(answer);
if (feedDecimals != 8) {
// Normalize to 8 decimals.
if (feedDecimals > 8) price = price / (10 ** (feedDecimals - 8));
else price = price * (10 ** (8 - feedDecimals));
}
return (ROBINHOOD_SWAP_FEE_USD8 * 1e18) / price;
}
/// @dev Routes buy-side token flows: returns base to escrow, sends staker fee to reward pool, protocol fee to treasury.
function _routeIncomingBuy(uint256 baseReturn, uint256 stakerFee, uint256 protocolFee) internal {
token.forceApprove(address(escrow), baseReturn);
escrow.returnTokens(baseReturn, ITokenEscrowReserve.BucketType.AMM);
_distributeStakerRewards(stakerFee);
_distributeProtocolAndBurnFees(protocolFee);
}
/// @dev Approves and pushes staker fee into the Synthetix-style reward pool. No-op when amount is zero.
function _distributeStakerRewards(uint256 amount) internal {
if (amount == 0) return;
token.forceApprove(stakingVault, amount);
IStakingVault(stakingVault).distributeRewards(amount);
}
/// @dev Splits protocol overhead between treasury and burn sink (Base) or routes all to treasury (other chains).
function _distributeProtocolAndBurnFees(uint256 amount) internal {
if (amount == 0) return;
if (protocolBurnFeeBps == 0) {
token.safeTransfer(treasury, amount);
return;
}
uint256 burnAmount = (amount * protocolBurnFeeBps) / TOTAL_PROTOCOL_FEE_BPS;
uint256 treasuryAmount = amount - burnAmount;
if (treasuryAmount > 0) {
token.safeTransfer(treasury, treasuryAmount);
}
if (burnAmount > 0) {
token.safeTransfer(burnWallet, burnAmount);
}
}
/// @dev Appends tokenId to the tail of the doubly-linked inventory list. Reverts if already tracked.
function _pushInventory(uint256 tokenId) internal {
require(!inventory[tokenId], "already tracked");
inventory[tokenId] = true;
if (inventoryCount == 0) {
oldestTokenId = tokenId;
newestTokenId = tokenId;
} else {
_nextTokenId[newestTokenId] = _encodeTokenId(tokenId);
_prevTokenId[tokenId] = _encodeTokenId(newestTokenId);
newestTokenId = tokenId;
}
inventoryCount += 1;
}
/// @dev Unlinks tokenId from the doubly-linked inventory list and clears its tracking state.
function _removeInventory(uint256 tokenId) internal {
if (!inventory[tokenId]) revert NotInInventory();
uint256 prevEncoded = _prevTokenId[tokenId];
uint256 nextEncoded = _nextTokenId[tokenId];
bool hasPrev = prevEncoded != 0;
bool hasNext = nextEncoded != 0;
uint256 prevId = hasPrev ? _decodeTokenId(prevEncoded) : 0;
uint256 nextId = hasNext ? _decodeTokenId(nextEncoded) : 0;
if (!hasPrev) {
oldestTokenId = nextId;
} else {
_nextTokenId[prevId] = hasNext ? _encodeTokenId(nextId) : 0;
}
if (!hasNext) {
newestTokenId = prevId;
} else {
_prevTokenId[nextId] = hasPrev ? _encodeTokenId(prevId) : 0;
}
delete _prevTokenId[tokenId];
delete _nextTokenId[tokenId];
delete inventory[tokenId];
inventoryCount -= 1;
if (inventoryCount == 0) {
oldestTokenId = 0;
newestTokenId = 0;
}
}
function _encodeTokenId(uint256 tokenId) private pure returns (uint256) {
return tokenId + 1;
}
/// @dev Reverses _encodeTokenId: (encoded - 1) recovers the original tokenId.
function _decodeTokenId(uint256 encodedTokenId) private pure returns (uint256) {
return encodedTokenId - 1;
}
/// @dev Computes sell-side fee decomposition: gross → net after staker + protocol fees.
function _sellQuote() internal view returns (uint256 grossPayout, uint256 netPayout, uint256 stakerFee, uint256 protocolFee) {
grossPayout = tokensPerNFT;
stakerFee = (tokensPerNFT * randomFeeBps) / 10_000;
protocolFee = (tokensPerNFT * TOTAL_PROTOCOL_FEE_BPS) / 10_000;
netPayout = grossPayout - stakerFee - protocolFee;
}
/// @dev Computes buy-side cost for a random (FIFO) NFT purchase including staker and protocol fees.
function _randomBuyQuote()
internal
view
returns (uint256 totalCost, uint256 stakerFee, uint256 protocolFee, uint256 baseCost)
{
baseCost = tokensPerNFT;
stakerFee = (tokensPerNFT * randomFeeBps) / 10_000;
protocolFee = (tokensPerNFT * TOTAL_PROTOCOL_FEE_BPS) / 10_000;
totalCost = baseCost + stakerFee + protocolFee;
}
/// @dev Computes buy-side cost for a specific tokenId purchase; uses specificFeeBps (higher than random).
function _specificBuyQuote()
internal
view
returns (uint256 totalCost, uint256 stakerFee, uint256 protocolFee, uint256 baseCost)
{
baseCost = tokensPerNFT;
stakerFee = (tokensPerNFT * specificFeeBps) / 10_000;
protocolFee = (tokensPerNFT * TOTAL_PROTOCOL_FEE_BPS) / 10_000;
totalCost = baseCost + stakerFee + protocolFee;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "token_",
"type": "address",
"internalType": "address"
},
{
"name": "collection_",
"type": "address",
"internalType": "address"
},
{
"name": "escrow_",
"type": "address",
"internalType": "address"
},
{
"name": "treasury_",
"type": "address",
"internalType": "address"
},
{
"name": "burnWallet_",
"type": "address",
"internalType": "address"
},
{
"name": "stakingVault_",
"type": "address",
"internalType": "address"
},
{
"name": "tokensPerNFT_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "randomFeeBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "specificFeeBps_",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AccessControlBadConfirmation",
"type": "error",
"inputs": []
},
{
"name": "AccessControlUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "neededRole",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "EmptyInventory",
"type": "error",
"inputs": []
},
{
"name": "EnforcedPause",
"type": "error",
"inputs": []
},
{
"name": "ExpectedPause",
"type": "error",
"inputs": []
},
{
"name": "InsufficientSwapFee",
"type": "error",
"inputs": []
},
{
"name": "InvalidPrice",
"type": "error",
"inputs": []
},
{
"name": "InvalidRandomFee",
"type": "error",
"inputs": []
},
{
"name": "InvalidSpecificFee",
"type": "error",
"inputs": []
},
{
"name": "NotInInventory",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "SlippageExceeded",
"type": "error",
"inputs": []
},
{
"name": "StalePrice",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "FeesUpdated",
"type": "event",
"inputs": [
{
"name": "vault",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "randomFeeBps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "specificFeeBps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "NFTBought",
"type": "event",
"inputs": [
{
"name": "buyer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "totalCost",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "baseCost",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "protocolFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "stakerFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "isSpecific",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "NFTSold",
"type": "event",
"inputs": [
{
"name": "seller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "grossPayout",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "netPayout",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "protocolFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "stakerFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Paused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RobinhoodSwapFeePaid",
"type": "event",
"inputs": [
{
"name": "payer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "feeWei",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "treasury",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "booster",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RoleAdminChanged",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "previousAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "newAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "RoleGranted",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RoleRevoked",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Unpaused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "BASE_PROTOCOL_BURN_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "BASE_PROTOCOL_TREASURY_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_ADMIN_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "GOVERNOR_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "INGEST_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "MAX_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "PAUSER_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_BOOSTER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_CHAIN_ID",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_ETH_USD_FEED",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_PRICE_MAX_AGE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_SWAP_FEE_USD8",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_TREASURY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_PROTOCOL_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "burnWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "buyRandomNFT",
"type": "function",
"inputs": [
{
"name": "maxCost",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "buySpecificNFT",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxCost",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "collection",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC721"
}
],
"stateMutability": "view"
},
{
"name": "escrow",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ITokenEscrowReserve"
}
],
"stateMutability": "view"
},
{
"name": "getNextTokenId",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getRoleAdmin",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "grantRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "hasRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "ingestNFT",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "inventory",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "inventoryCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "inventoryLength",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "newestTokenId",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "oldestTokenId",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "pause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "paused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "protocolBurnFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "protocolTreasuryFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "quoteRandomBuy",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "totalCost",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "baseCost",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "protocolFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "inventorySize",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "nextTokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteSellNFT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "netPayout",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "grossPayout",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "protocolFee",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteSpecificBuy",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "totalCost",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "baseCost",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "protocolFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "available",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "randomFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "renounceRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "callerConfirmation",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "revokeRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "robinhoodSwapFeeWei",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "sellNFT",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minPayout",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "setFees",
"type": "function",
"inputs": [
{
"name": "randomFeeBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "specificFeeBps_",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "specificFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "stakingVault",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
},
{
"name": "tokensPerNFT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "treasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "unpause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a7146112f25750806304bfe0e4146112ce578063062287491461128a57806314ab78d01461126d578063150b7a02146111df5780631d4f1045146111c4578063248a9ca31461119957806324e7964a146111555780632768cf221461113a5780632f2ff15d146110fa57806333945c66146110bc5780633559952b14610f3057806336568abe14610eeb5780633f4ba83a14610e545780634272ee1814610e2557806349db9b1314610d8d5780634fef2dcf14610ce25780635854863614610d3b5780635afcc2f514610d005780635b98c83d14610ce25780635c975abb14610cc057806361d027b314610c7b5780636a068acd14610c5f578063722a094114610c1c57806377accfcb14610bd75780637de1e53614610b9257806380fa02f714610b755780638456cb5914610aac5780638702cab614610a8a5780638b913b4914610a6c57806391a48a1e1461087e57806391d148541461083457806391e8b63f146108055780639ef833d4146106d25780639f7b2f0b146106b3578063a217fddf14610697578063aef6b09914610668578063b3da098a1461062d578063b78fcec11461060f578063ccc57490146105d4578063d062b2ea146105a5578063d547741f1461055d578063d55be8c614610540578063e2fdcc17146104fb578063e63ab1e9146104c0578063e690ea6e1461049d578063e7a8304a14610310578063f3ca5d4d146102ca578063f41d0d4f1461028b5763fc0c546a14610244575f80fd5b346102885780600319360112610288576040517f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e31300315586001600160a01b03168152602090f35b80fd5b5034610288578060031936011261028857602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000032168152f35b503461028857806003193601126102885760c06102e561211b565b91906008549160065493604051958652602086015260408501526060840152608083015260a0820152f35b506020366003190112610288576103256115be565b61032d6115f6565b6103356116ae565b6008541561048e5761034561211b565b929190600435831161047f5761037d8330337f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e31300315586118f2565b610388818386611984565b6006549361039585611a37565b857f00000000000000000000000008dc7cb3f4ccc8eea782e2924d151e2130f22b286001600160a01b0316803b1561047b57604051632142170760e11b8152306004820152336024820152604481018890529082908290606490829084905af1801561047057610457575b50506040519384526020840152604083015260608201528260808201527fb5efbeab556b17cacd1e111b6dee840d9d3bfeabc055edb46ce2b991b8c5867360a03392a360015f805160206122458339815191525580f35b8161046191611371565b61046c57855f610400565b8580fd5b6040513d84823e3d90fd5b5080fd5b638199f5f360e01b8552600485fd5b63c5144d6560e01b8152600490fd5b503461028857806003193601126102885760206104b86114e0565b604051908152f35b503461028857806003193601126102885760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b50346102885780600319360112610288576040517f000000000000000000000000a63f6bf644f90f317d69089b47d422ce449adda66001600160a01b03168152602090f35b503461028857806003193601126102885760206040516105dc8152f35b5034610288576040366003190112610288576105a160043561057d61135b565b9061059c610597825f526001602052600160405f20015490565b6114f8565b611b59565b5080f35b5034610288578060031936011261028857602060405173038a7f4e4e89448ad74e044337c9ac25c11e726b8152f35b503461028857806003193601126102885760206040517f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f558152f35b50346102885780600319360112610288576020600654604051908152f35b503461028857806003193601126102885760206040517f87c306c89c065519d253b8920dd3ee1da03dd54df2b529e2429a9d59a22423b18152f35b50346102885780600319360112610288576020604051736091e64eb7138eef066a80fd3a0d7427b91f27218152f35b5034610288578060031936011261028857602090604051908152f35b50346102885780600319360112610288576020604051630bebc2008152f35b50346102885760403660031901126102885760043561ffff811680910361047b5760243561ffff811690818103610801577f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f558452600160209081526040808620335f908152925290205460ff16156107ca576105dc83116107bb576105dc82116107ac578282106107ac578263ffff00006002549260101b169163ffffffff1916171760025560405191825260208201527ff44d9b22cdd87e55b71b9245548303c18d17a3c912a4e0b135ea1330351a1fc160403092a280f35b63de15b9d760e01b8452600484fd5b63d4cdb40560e01b8452600484fd5b63e2517d3f60e01b8452336004527f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55602452604484fd5b8380fd5b5034610288578060031936011261028857602060405173b668382cf44038a3e8140e789060f6a809787cda8152f35b503461028857604036600319011261028857604061085061135b565b9160043581526001602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b50610888366113c3565b6108906115be565b6108986115f6565b6108a06116ae565b827f00000000000000000000000008dc7cb3f4ccc8eea782e2924d151e2130f22b286001600160a01b0316803b1561047b57604051632142170760e11b8152336004820152306024820152604481018590529082908290606490829084905af1801561047057610a53575b505061091682611bdd565b61091e611c9d565b919092938110610a4457857f000000000000000000000000a63f6bf644f90f317d69089b47d422ce449adda66001600160a01b0316803b1561047b5781809160646040518094819363e41e0f8f60e01b83523060048401528b60248401528160448401525af1801561047057610a2f575b5050610a187ff6ba9b3ae5ce11a745e929565d46b19f01279e1f49a3faca1d6c1e608151c494936109e183337f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e3130031558611cf6565b6109ea84611d4e565b6109f381611e8d565b6040519384933397859094939260609260808301968352602083015260408201520152565b0390a360015f805160206122458339815191525580f35b81610a3991611371565b61046c57855f61098f565b638199f5f360e01b8652600486fd5b81610a5d91611371565b610a6857825f61090b565b8280fd5b50346102885780600319360112610288576020600754604051908152f35b5034610288578060031936011261028857602061ffff60025416604051908152f35b50346102885780600319360112610288577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152600160209081526040808320335f908152925290205460ff1615610b3e57610b066115f6565b600160ff198254161781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b63e2517d3f60e01b8152336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a602452604490fd5b503461028857806003193601126102885760206040516112378152f35b50346102885780600319360112610288576040517f00000000000000000000000008dc7cb3f4ccc8eea782e2924d151e2130f22b286001600160a01b03168152602090f35b5034610288578060031936011261028857610c18610bf3611c9d565b6040805193845260208401949094529282015260608101919091529081906080820190565b0390f35b503461028857602036600319011261028857602090600435815260048252604081205480155f14610c505750604051908152f35b610c5a915061167f565b6104b8565b50346102885780600319360112610288576020604051600a8152f35b50346102885780600319360112610288576040517f000000000000000000000000b668382cf44038a3e8140e789060f6a809787cda6001600160a01b03168152602090f35b503461028857806003193601126102885760ff60209154166040519015158152f35b50346102885780600319360112610288576020600854604051908152f35b503461028857806003193601126102885760206040517f00000000000000000000000000000000000000000000d3c21bcecceda10000008152f35b50346102885760203660031901126102885760a090610d58611895565b6004929192358552600360205260ff604086205416936040519550855260208501526040840152606083015215156080820152f35b5034610288576020366003190112610288577f87c306c89c065519d253b8920dd3ee1da03dd54df2b529e2429a9d59a22423b18152600160209081526040808320335f908152925290205460ff1615610dee57610deb6004356113d9565b80f35b63e2517d3f60e01b8152336004527f87c306c89c065519d253b8920dd3ee1da03dd54df2b529e2429a9d59a22423b1602452604490fd5b50346102885760203660031901126102885760ff60406020926004358152600384522054166040519015158152f35b5034610288578060031936011261028857808052600160209081526040808320335f908152925290205460ff1615610ed357805460ff811615610ec45760ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b63e2517d3f60e01b8152336004526024819052604490fd5b503461028857604036600319011261028857610f0561135b565b336001600160a01b03821603610f21576105a190600435611b59565b63334bd91960e11b8252600482fd5b50610f3a366113c3565b610f426115be565b610f4a6115f6565b610f526116ae565b815f52600360205260ff60405f205416156110ad57610f6f611895565b90919293841161109e57610fa58430337f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e31300315586118f2565b610fb0828483611984565b610fb985611a37565b7f00000000000000000000000008dc7cb3f4ccc8eea782e2924d151e2130f22b286001600160a01b0316803b1561109a57604051632142170760e11b815230600482015233602482015260448101879052905f908290606490829084905af1801561108f5761107a575b50604051938452602084015260408301526060820152600160808201527fb5efbeab556b17cacd1e111b6dee840d9d3bfeabc055edb46ce2b991b8c5867360a03392a360015f805160206122458339815191525580f35b6110879196505f90611371565b5f945f611023565b6040513d5f823e3d90fd5b5f80fd5b638199f5f360e01b5f5260045ffd5b631544738d60e21b5f5260045ffd5b3461109a575f36600319011261109a57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461109a57604036600319011261109a5761113860043561111961135b565b90611133610597825f526001602052600160405f20015490565b611532565b005b3461109a575f36600319011261109a57602060405160288152f35b3461109a575f36600319011261109a576040517f0000000000000000000000003b7c56c6f31ec58e652af5e1cc5c12671e5c699b6001600160a01b03168152602090f35b3461109a57602036600319011261109a5760206104b86004355f526001602052600160405f20015490565b3461109a575f36600319011261109a57602060405160328152f35b3461109a57608036600319011261109a576111f8611345565b5061120161135b565b5060643567ffffffffffffffff811161109a573660238201121561109a5780600401359061122e826113a7565b9161123c6040519384611371565b808352366024828401011161109a575f928160246020940184830137010152604051630a85bd0160e11b8152602090f35b3461109a575f36600319011261109a5760206040516202a3008152f35b3461109a575f36600319011261109a576040517f000000000000000000000000b668382cf44038a3e8140e789060f6a809787cda6001600160a01b03168152602090f35b3461109a575f36600319011261109a57602061ffff60025460101c16604051908152f35b3461109a57602036600319011261109a576004359063ffffffff60e01b821680920361109a57602091637965db0b60e01b8114908115611334575b5015158152f35b6301ffc9a760e01b1490508361132d565b600435906001600160a01b038216820361109a57565b602435906001600160a01b038216820361109a57565b90601f8019910116810190811067ffffffffffffffff82111761139357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161139357601f01601f191660200190565b604090600319011261109a576004359060243590565b6040516331a9108f60e11b8152600481018290526020816024817f00000000000000000000000008dc7cb3f4ccc8eea782e2924d151e2130f22b286001600160a01b03165afa90811561108f575f9161149e575b50306001600160a01b039091160361146157805f52600360205260ff60405f20541661145e5761145c90611bdd565b565b50565b60405162461bcd60e51b8152602060048201526015602482015274139195081b9bdd081a195b1908189e481d985d5b1d605a1b6044820152606490fd5b90506020813d6020116114d8575b816114b960209383611371565b8101031261109a57516001600160a01b038116810361109a575f61142d565b3d91506114ac565b61123746036114f4576114f1611f4e565b90565b5f90565b5f81815260016020908152604080832033845290915290205460ff161561151c5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff166115b8575f8181526001602081815260408084206001600160a01b0396909616808552959091528220805460ff19169091179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b60025f8051602061224583398151915254146115e75760025f8051602061224583398151915255565b633ee5aeb560e01b5f5260045ffd5b60ff5f541661160157565b63d93c066560e01b5f5260045ffd5b3d1561163a573d90611621826113a7565b9161162f6040519384611371565b82523d5f602084013e565b606090565b1561164657565b60405162461bcd60e51b8152602060048201526011602482015270199959481c99599d5b990819985a5b1959607a1b6044820152606490fd5b5f1981019190821161168d57565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161168d57565b6112374603611837576116bf611f4e565b803410611828578060011c5f8080806116d885876116a1565b9473b668382cf44038a3e8140e789060f6a809787cda5af16116f8611610565b50156117ed575f8080809373038a7f4e4e89448ad74e044337c9ac25c11e726b5af1611722611610565b50156117b3576117929060405181815273b668382cf44038a3e8140e789060f6a809787cda602082015273038a7f4e4e89448ad74e044337c9ac25c11e726b60408201527f5b3759dffc4fa0cd2f11bb4bb0a11122abc82c62464f79a53ef203a71475140460603392a2346116a1565b8061179a5750565b5f80808061145c94335af16117ad611610565b5061163f565b60405162461bcd60e51b8152602060048201526012602482015271189bdbdcdd195c881999594819985a5b195960721b6044820152606490fd5b60405162461bcd60e51b81526020600482015260136024820152721d1c99585cdd5c9e481999594819985a5b1959606a1b6044820152606490fd5b636a5a00d160e11b5f5260045ffd5b3461183e57565b61145c5f80808034335af16117ad611610565b9060328202918083046032149015171561168d57565b8181029291811591840414171561168d57565b906001820180921161168d57565b9190820180921161168d57565b7f00000000000000000000000000000000000000000000d3c21bcecceda10000006127106118cc61ffff60025460101c1683611867565b04906127106118da82611851565b04906118ef826118ea8584611888565b611888565b93565b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af19060015f5114821615611963575b6040525f606052156119435750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b90600181151661197b57823b15153d15161690611934565b503d5f823e3d90fd5b7f000000000000000000000000a63f6bf644f90f317d69089b47d422ce449adda66001600160a01b03169291906119dc81857f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e313003155861214f565b833b1561109a575f936044859260405196879384926339b2097760e21b845260048401528160248401525af190811561108f5761145c93611a2292611a27575b50611e8d565b611d4e565b5f611a3191611371565b5f611a1c565b805f52600360205260ff60405f205416156110ad57805f52600560205260405f2054815f52600460205260405f2054811591821590821590811590835f14611b5157611a829061167f565b935b8115611b4957611a939061167f565b945b15611b235750836006555b15611afa5750600755505b5f9081526005602090815260408083208390556004825280832083905560039091529020805460ff191690556008545f19810190811161168d578060085515611af057565b5f6006555f600755565b15611b1b57611b089061187a565b905b5f52600560205260405f2055611aab565b505f90611b0a565b15611b4357611b318461187a565b835f52600460205260405f2055611aa0565b5f611b31565b505f94611a95565b505f93611a84565b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff16156115b8575f8181526001602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b805f52600360205260ff60405f205416611c66575f818152600360205260409020805460ff19166001179055600854611c2b57806006556007555b6008546001810180911161168d57600855565b611c348161187a565b6007545f52600460205260405f20556007546001810180911161168d57815f52600560205260405f2055600755611c18565b60405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481d1c9858dad959608a1b6044820152606490fd5b7f00000000000000000000000000000000000000000000d3c21bcecceda100000090612710611cd261ffff6002541684611867565b04612710611cdf84611851565b04611cf381611cee84876116a1565b6116a1565b92565b916040519163a9059cbb60e01b5f5260018060a01b031660045260245260205f60448180865af19060015f5114821615611d36575b604052156119435750565b90600181151661197b57823b15153d15161690611d2b565b801561145e5761ffff7f0000000000000000000000000000000000000000000000000000000000000000168015611e41576032611d8e611d969284611867565b0480926116a1565b80611df0575b5080611da55750565b61145c907f000000000000000000000000b668382cf44038a3e8140e789060f6a809787cda7f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e3130031558611cf6565b611e3b907f000000000000000000000000b668382cf44038a3e8140e789060f6a809787cda7f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e3130031558611cf6565b5f611d9c565b5061145c907f000000000000000000000000b668382cf44038a3e8140e789060f6a809787cda7f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e3130031558611cf6565b801561145e577f0000000000000000000000003b7c56c6f31ec58e652af5e1cc5c12671e5c699b611edf82827f000000000000000000000000f33b89c958b12b0c8be77c6d65a59e313003155861214f565b6001600160a01b031690813b1561109a575f91602483926040519485938492630b32e9c760e31b845260048401525af1801561108f57611f1c5750565b5f61145c91611371565b519069ffffffffffffffffffff8216820361109a57565b60ff16604d811161168d57600a0a90565b604051633fabe5a360e21b815260a081600481736091e64eb7138eef066a80fd3a0d7427b91f27215afa801561108f575f915f916120c7575b505f8213156120b9576202a300810180911161168d5742116120aa5760405163313ce56760e01b815290602082600481736091e64eb7138eef066a80fd3a0d7427b91f27215afa91821561108f575f9261206c575b509060ff16816007198201612018575b50508015612004576aa56fa5b99019a5c80000000490565b634e487b7160e01b5f52601260045260245ffd5b600882111561204757506007190160ff811161168d5761203790611f3d565b90811561200457045b5f80611fec565b91506008039060ff821161168d5761206161206792611f3d565b90611867565b612040565b9091506020813d6020116120a2575b8161208860209383611371565b8101031261109a575160ff8116810361109a57905f611fdc565b3d915061207b565b630cd5fa0760e11b5f5260045ffd5b62bfc92160e01b5f5260045ffd5b91505060a0813d60a011612113575b816120e360a09383611371565b8101031261109a576120f481611f26565b50602081015161210b608060608401519301611f26565b50905f611f87565b3d91506120d6565b7f00000000000000000000000000000000000000000000d3c21bcecceda10000006127106118cc61ffff6002541683611867565b916040519163095ea7b360e01b5f5260018060a01b031691826004528160245260205f60448180885af19060015f5114821615612235575b6040521561219457505050565b60405163095ea7b360e01b5f52826004525f60245260205f60448180885af19060015f511482161561221d575b604052156121ff576040519163095ea7b360e01b5f5260045260245260205f60448180865af19060015f5114821615611d3657604052156119435750565b635274afe760e01b5f9081526001600160a01b038416600452602490fd5b90600181151661197b57843b15153d151616906121c1565b90843b15153d1516169061218756fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220b0189add462bc87af0c94d7748754c2b1a0261bcbd67ee2f2fc7cd441efb194a64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| pyopyopyopyo (PYO) | PYO | 777 | — | — |
| RHOD (cn) | cn | 1 | — | — |
| RHOD (cn) | cn | 1 | — | — |
| Clock In $COIN (CI) | CI | 1 | — | — |
| RHOD (Ci) | Ci | 1 | — | — |
| THE BUNKER (Tb) | Tb | 1 | — | — |
| RHOD 02 (Rho) | Rho | 1 | — | — |
| RHOD (Ra) | Ra | 1 | — | — |
| RHOD 01 (Rh) | Rh | 1 | — | — |
| RHOD 03 (Ro) | Ro | 1 | — | — |
| RHOD 04 (Roh) | Roh | 1 | — | — |
| 10kWaysToDie (Wy) | Wy | 1 | — | — |
| Pufflings (Pf) | Pf | 1 | — | — |
| Robin Tedies (RT) | RT | 1 | — | — |
| Derp (Derp) | Derp | 1 | — | — |
| The Bunker (Bunker) | Bunker | 1 | — | — |
| RHOD (Cn) | Cn | 1 | — | — |
| CANDLE BROKER (CB) | CB | 1 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x7c00ec…aabf26 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0xb5efbe…8673 | [0] 0x000000000000…23573b2a [1] 0x000000000000…00000c46 data: 0x000000000000000000…00000001 |
| 0x7c00ec…aabf26 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x5b3759…1404 | [0] 0x000000000000…23573b2a data: 0x000000000000000000…c11e726b |
| 0xd04dbe…b2c4aa | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0xb5efbe…8673 | [0] 0x000000000000…16cd1727 [1] 0x000000000000…0000025d data: 0x000000000000000000…00000001 |
| 0xd04dbe…b2c4aa | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x5b3759…1404 | [0] 0x000000000000…16cd1727 data: 0x000000000000000000…c11e726b |
| 0xfabdd6…3a0b6a | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…a03e9ca9 [1] 0x000000000000…0000025d data: 0x000000000000000000…92000000 |
| 0xfabdd6…3a0b6a | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x5b3759…1404 | [0] 0x000000000000…a03e9ca9 data: 0x000000000000000000…c11e726b |
| 0x57e8f7…111a23 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…a03e9ca9 [1] 0x000000000000…000000cd data: 0x000000000000000000…92000000 |
| 0x57e8f7…111a23 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x5b3759…1404 | [0] 0x000000000000…a03e9ca9 data: 0x000000000000000000…c11e726b |
| 0x019a0a…9764ed | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…11693e35 [1] 0x000000000000…00000a2c data: 0x000000000000000000…92000000 |
| 0x019a0a…9764ed | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x5b3759…1404 | [0] 0x000000000000…11693e35 data: 0x000000000000000000…c11e726b |
| 0x7228c1…f19436 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…11693e35 [1] 0x000000000000…00000f02 data: 0x000000000000000000…92000000 |
| 0x7228c1…f19436 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x5b3759…1404 | [0] 0x000000000000…11693e35 data: 0x000000000000000000…c11e726b |
| 0x8267ec…48f6f2 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…bc704778 [1] 0x000000000000…00000b52 data: 0x000000000000000000…92000000 |
| 0x8267ec…48f6f2 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x5b3759…1404 | [0] 0x000000000000…bc704778 data: 0x000000000000000000…c11e726b |
| 0x23e9b3…cfc94b | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0xb5efbe…8673 | [0] 0x000000000000…a92394b4 [1] 0x000000000000…0000109a data: 0x000000000000000000…00000001 |
| 0x23e9b3…cfc94b | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x5b3759…1404 | [0] 0x000000000000…a92394b4 data: 0x000000000000000000…c11e726b |
| 0x34adee…d4c063 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…a92394b4 [1] 0x000000000000…00000b45 data: 0x000000000000000000…92000000 |
| 0x34adee…d4c063 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x5b3759…1404 | [0] 0x000000000000…a92394b4 data: 0x000000000000000000…c11e726b |
| 0xef0131…0bb31f | 1 day agoSun, 16 Aug 2026 20:10:09 UTC | 0xf6ba9b…c494 | [0] 0x000000000000…820b2f5c [1] 0x000000000000…00001021 data: 0x000000000000000000…92000000 |
| 0xef0131…0bb31f | 1 day agoSun, 16 Aug 2026 20:10:09 UTC | 0x5b3759…1404 | [0] 0x000000000000…820b2f5c data: 0x000000000000000000…c11e726b |
| 0x894732…4d2636 | 1 day agoSun, 16 Aug 2026 12:14:17 UTC | 0xb5efbe…8673 | [0] 0x000000000000…dd2f8660 [1] 0x000000000000…00000d64 data: 0x000000000000000000…00000001 |
| 0x894732…4d2636 | 1 day agoSun, 16 Aug 2026 12:14:17 UTC | 0x5b3759…1404 | [0] 0x000000000000…dd2f8660 data: 0x000000000000000000…c11e726b |
| 0x05056f…c79b5f | 1 day agoSun, 16 Aug 2026 11:55:15 UTC | 0xb5efbe…8673 | [0] 0x000000000000…0f0fe05f [1] 0x000000000000…000010da data: 0x000000000000000000…00000001 |
| 0x05056f…c79b5f | 1 day agoSun, 16 Aug 2026 11:55:15 UTC | 0x5b3759…1404 | [0] 0x000000000000…0f0fe05f data: 0x000000000000000000…c11e726b |
| 0x832fbf…d53a56 | 1 day agoSun, 16 Aug 2026 11:36:06 UTC | 0xb5efbe…8673 | [0] 0x000000000000…0f0fe05f [1] 0x000000000000…00000905 data: 0x000000000000000000…00000001 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7c00ec…aabf26 | buySpecificNFT | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x0bd5…3b2a | IN | NFTAMMVault | $2.040.00107 ETH | 0.00000554 | |
| 0xd04dbe…b2c4aa | buySpecificNFT | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x2c8b…1727 | IN | NFTAMMVault | $2.020.00106 ETH | 0.00000559 | |
| 0xfabdd6…3a0b6a | sellNFT | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x0b53…9ca9 | IN | NFTAMMVault | $2.020.00106 ETH | 0.00000635 | |
| 0x57e8f7…111a23 | sellNFT | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x0b53…9ca9 | IN | NFTAMMVault | $2.020.00106 ETH | 0.00000642 | |
| 0x019a0a…9764ed | sellNFT | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x891d…3e35 | IN | NFTAMMVault | $3.990.00210 ETH | 0.00000630 | |
| 0x7228c1…f19436 | sellNFT | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x891d…3e35 | IN | NFTAMMVault | $4.050.00213 ETH | 0.00000635 | |
| 0x23e9b3…cfc94b | buySpecificNFT | 38,255,952 | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x7f29…94b4 | IN | NFTAMMVault | $2.060.00108 ETH | 0.00000535 | |
| 0x34adee…d4c063 | sellNFT | 38,253,414 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x7f29…94b4 | IN | NFTAMMVault | $2.060.00108 ETH | 0.00000599 | |
| 0xef0131…0bb31f | sellNFT | 38,251,796 | 1 day agoSun, 16 Aug 2026 20:10:09 UTC | 0xc430…2f5c | IN | NFTAMMVault | $2.060.00108 ETH | 0.00000668 | |
| 0x894732…4d2636 | buySpecificNFT | 37,967,282 | 1 day agoSun, 16 Aug 2026 12:14:17 UTC | 0xd2b4…8660 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000592 | |
| 0x05056f…c79b5f | buySpecificNFT | 37,955,894 | 1 day agoSun, 16 Aug 2026 11:55:15 UTC | 0xc6b4…e05f | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000573 | |
| 0x832fbf…d53a56 | buySpecificNFT | 37,944,461 | 1 day agoSun, 16 Aug 2026 11:36:06 UTC | 0xc6b4…e05f | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000568 | |
| 0x36b081…c12eff | buyRandomNFT | 37,922,223 | 1 day agoSun, 16 Aug 2026 10:58:52 UTC | 0x2fb1…58a2 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000598 | |
| 0x64cebb…9bb4db | sellNFT | 37,898,474 | 1 day agoSun, 16 Aug 2026 10:19:06 UTC | 0x0b53…9ca9 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000664 | |
| 0xbdec69…ca9230 | buyRandomNFT | 37,691,343 | 2 days agoSun, 16 Aug 2026 04:32:22 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000697 | |
| 0x3c9edf…f951c2 | buyRandomNFT | 37,673,133 | 2 days agoSun, 16 Aug 2026 04:01:53 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000721 | |
| 0x7585b1…d40a50 | buyRandomNFT | 37,672,231 | 2 days agoSun, 16 Aug 2026 04:00:24 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000702 | |
| 0x2ac581…d4fc1a | buyRandomNFT | 37,671,595 | 2 days agoSun, 16 Aug 2026 03:59:20 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000710 | |
| 0x797d93…40fd82 | buyRandomNFT | 37,671,140 | 2 days agoSun, 16 Aug 2026 03:58:34 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000703 | |
| 0xd6d88b…de0bae | buyRandomNFT | 37,670,584 | 2 days agoSun, 16 Aug 2026 03:57:38 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000704 | |
| 0xced707…11f4a8 | buyRandomNFT | 37,670,103 | 2 days agoSun, 16 Aug 2026 03:56:49 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000710 | |
| 0xb6bf11…705241 | buyRandomNFT | 37,669,493 | 2 days agoSun, 16 Aug 2026 03:55:48 UTC | 0x9305…1192 | IN | NFTAMMVault | $2.050.00108 ETH | 0.00000706 | |
| 0x2e6782…0eaa2f | sellNFT | 37,574,639 | 2 days agoSun, 16 Aug 2026 01:17:09 UTC | 0x891d…3e35 | IN | NFTAMMVault | $4.030.00212 ETH | 0.00000851 | |
| 0xecffa1…9dce13 | sellNFT | 37,230,005 | 2 days agoSat, 15 Aug 2026 15:41:17 UTC | 0x891d…3e35 | IN | NFTAMMVault | $4.030.00212 ETH | 0.00000952 | |
| 0x1c1013…e1e17f | sellNFT | 37,161,287 | 2 days agoSat, 15 Aug 2026 13:46:29 UTC | 0x891d…3e35 | IN | NFTAMMVault | $4.040.00213 ETH | 0.00000978 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7c00ec12…aabf26 | Transfer | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0x7c00ec12…aabf26 | Transfer | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 120,000 MTH | MATCHA (MTH) | |
| 0x7c00ec12…aabf26 | Transfer | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x4e07…8451 | OUT | 0xa63f…dda6 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0x7c00ec12…aabf26 | Transfer | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x0bd5…3b2a | IN | 0x4e07…8451 | 1,125,000.000000 MTH | MATCHA (MTH) | |
| 0xd04dbefe…b2c4aa | Transfer | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0xd04dbefe…b2c4aa | Transfer | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 120,000 MTH | MATCHA (MTH) | |
| 0xd04dbefe…b2c4aa | Transfer | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x4e07…8451 | OUT | 0xa63f…dda6 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0xd04dbefe…b2c4aa | Transfer | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x2c8b…1727 | IN | 0x4e07…8451 | 1,125,000.000000 MTH | MATCHA (MTH) | |
| 0xfabdd642…3a0b6a | Transfer | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 80,000 MTH | MATCHA (MTH) | |
| 0xfabdd642…3a0b6a | Transfer | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0xfabdd642…3a0b6a | Transfer | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x4e07…8451 | OUT | 0x0b53…9ca9 | 915,000.000000 MTH | MATCHA (MTH) | |
| 0xfabdd642…3a0b6a | Transfer | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0xa63f…dda6 | IN | 0x4e07…8451 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0x57e8f7bf…111a23 | Transfer | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 80,000 MTH | MATCHA (MTH) | |
| 0x57e8f7bf…111a23 | Transfer | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0x57e8f7bf…111a23 | Transfer | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x4e07…8451 | OUT | 0x0b53…9ca9 | 915,000.000000 MTH | MATCHA (MTH) | |
| 0x57e8f7bf…111a23 | Transfer | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0xa63f…dda6 | IN | 0x4e07…8451 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0x019a0a4b…9764ed | Transfer | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 80,000 MTH | MATCHA (MTH) | |
| 0x019a0a4b…9764ed | Transfer | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0x019a0a4b…9764ed | Transfer | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x4e07…8451 | OUT | 0x891d…3e35 | 915,000.000000 MTH | MATCHA (MTH) | |
| 0x019a0a4b…9764ed | Transfer | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0xa63f…dda6 | IN | 0x4e07…8451 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0x7228c19d…f19436 | Transfer | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 80,000 MTH | MATCHA (MTH) | |
| 0x7228c19d…f19436 | Transfer | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x4e07…8451 | OUT | 0xb668…7cda | 5,000 MTH | MATCHA (MTH) | |
| 0x7228c19d…f19436 | Transfer | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x4e07…8451 | OUT | 0x891d…3e35 | 915,000.000000 MTH | MATCHA (MTH) | |
| 0x7228c19d…f19436 | Transfer | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0xa63f…dda6 | IN | 0x4e07…8451 | 999,999.999999 MTH | MATCHA (MTH) | |
| 0x8267ecc7…48f6f2 | Transfer | 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x4e07…8451 | OUT | 0x3b7c…699b | 80,000 MTH | MATCHA (MTH) |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xdf0f6bc3…170db6 | Transfer | 39,540,855 | 29 mins agoTue, 18 Aug 2026 08:05:13 UTC | 0x4914…d566 | IN | 0x4e07…8451 | Transfer | Pufflings (Pf) #1 | |
| 0x7c00ec12…aabf26 | Transfer | 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x4e07…8451 | OUT | 0x0bd5…3b2a | Transfer | pyopyopyopyo (PYO) #3142 | |
| 0xd04dbefe…b2c4aa | Transfer | 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0x4e07…8451 | OUT | 0x2c8b…1727 | Transfer | pyopyopyopyo (PYO) #605 | |
| 0xfabdd642…3a0b6a | Transfer | 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0x0b53…9ca9 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #605 | |
| 0x57e8f7bf…111a23 | Transfer | 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x0b53…9ca9 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #205 | |
| 0xd1a72e99…8099ca | Transfer | 38,738,735 | 22 hrs agoMon, 17 Aug 2026 09:44:41 UTC | 0x4d8a…1616 | IN | 0x4e07…8451 | Transfer | CANDLE BROKER (CB) #1 | |
| 0x019a0a4b…9764ed | Transfer | 38,675,222 | 1 day agoMon, 17 Aug 2026 07:58:24 UTC | 0x891d…3e35 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #2604 | |
| 0x7e87a21f…14c40c | Transfer | 38,669,703 | 1 day agoMon, 17 Aug 2026 07:49:10 UTC | 0x4d8a…1616 | IN | 0x4e07…8451 | Transfer | The Bunker (Bunker) #1 | |
| 0xd76bd00d…9f7155 | Transfer | 38,651,132 | 1 day agoMon, 17 Aug 2026 07:18:06 UTC | 0x4d8a…1616 | IN | 0x4e07…8451 | Transfer | Derp (Derp) #1 | |
| 0x7228c19d…f19436 | Transfer | 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x891d…3e35 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #3842 | |
| 0x8267ecc7…48f6f2 | Transfer | 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x7890…4778 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #2898 | |
| 0x23e9b3c0…cfc94b | Transfer | 38,255,952 | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x4e07…8451 | OUT | 0x7f29…94b4 | Transfer | pyopyopyopyo (PYO) #4250 | |
| 0x34adeee3…d4c063 | Transfer | 38,253,414 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x7f29…94b4 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #2885 | |
| 0xef0131e9…0bb31f | Transfer | 38,251,796 | 1 day agoSun, 16 Aug 2026 20:10:09 UTC | 0xc430…2f5c | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #4129 | |
| 0x8947327a…4d2636 | Transfer | 37,967,282 | 1 day agoSun, 16 Aug 2026 12:14:17 UTC | 0x4e07…8451 | OUT | 0xd2b4…8660 | Transfer | pyopyopyopyo (PYO) #3428 | |
| 0x05056f71…c79b5f | Transfer | 37,955,894 | 1 day agoSun, 16 Aug 2026 11:55:15 UTC | 0x4e07…8451 | OUT | 0xc6b4…e05f | Transfer | pyopyopyopyo (PYO) #4314 | |
| 0x832fbf16…d53a56 | Transfer | 37,944,461 | 1 day agoSun, 16 Aug 2026 11:36:06 UTC | 0x4e07…8451 | OUT | 0xc6b4…e05f | Transfer | pyopyopyopyo (PYO) #2309 | |
| 0x36b0819b…c12eff | Transfer | 37,922,223 | 1 day agoSun, 16 Aug 2026 10:58:52 UTC | 0x4e07…8451 | OUT | 0x2fb1…58a2 | Transfer | pyopyopyopyo (PYO) #1912 | |
| 0x64cebb1e…9bb4db | Transfer | 37,898,474 | 1 day agoSun, 16 Aug 2026 10:19:06 UTC | 0x0b53…9ca9 | IN | 0x4e07…8451 | Transfer | pyopyopyopyo (PYO) #935 | |
| 0x23719c28…2f289b | Transfer | 37,882,570 | 1 day agoSun, 16 Aug 2026 09:52:30 UTC | 0x2454…b610 | IN | 0x4e07…8451 | Transfer | Robin Tedies (RT) #1 | |
| 0xbdec694a…ca9230 | Transfer | 37,691,343 | 2 days agoSun, 16 Aug 2026 04:32:22 UTC | 0x4e07…8451 | OUT | 0x9305…1192 | Transfer | pyopyopyopyo (PYO) #1969 | |
| 0x3c9edf61…f951c2 | Transfer | 37,673,133 | 2 days agoSun, 16 Aug 2026 04:01:53 UTC | 0x4e07…8451 | OUT | 0x9305…1192 | Transfer | pyopyopyopyo (PYO) #1842 | |
| 0x7585b15c…d40a50 | Transfer | 37,672,231 | 2 days agoSun, 16 Aug 2026 04:00:24 UTC | 0x4e07…8451 | OUT | 0x9305…1192 | Transfer | pyopyopyopyo (PYO) #1844 | |
| 0x2ac581c1…d4fc1a | Transfer | 37,671,595 | 2 days agoSun, 16 Aug 2026 03:59:20 UTC | 0x4e07…8451 | OUT | 0x9305…1192 | Transfer | pyopyopyopyo (PYO) #1818 | |
| 0x797d9353…40fd82 | Transfer | 37,671,140 | 2 days agoSun, 16 Aug 2026 03:58:34 UTC | 0x4e07…8451 | OUT | 0x9305…1192 | Transfer | pyopyopyopyo (PYO) #1813 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x7c00ec…aabf26 | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x0bd5…3b2a | 0.00002 ETH |
| 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x7c00ec…aabf26 | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00052 ETH |
| 39,353,371 | 5 hrs agoTue, 18 Aug 2026 02:51:39 UTC | 0x7c00ec…aabf26 | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00052 ETH |
| 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0xd04dbe…b2c4aa | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x2c8b…1727 | 0.00002 ETH |
| 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0xd04dbe…b2c4aa | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00052 ETH |
| 39,263,349 | 8 hrs agoTue, 18 Aug 2026 00:21:13 UTC | 0xd04dbe…b2c4aa | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00052 ETH |
| 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0xfabdd6…3a0b6a | CALL | sellNFT | 0x4e07…8451 | OUT | 0x0b53…9ca9 | 0.00002 ETH |
| 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0xfabdd6…3a0b6a | CALL | sellNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00052 ETH |
| 39,235,739 | 9 hrs agoMon, 17 Aug 2026 23:35:07 UTC | 0xfabdd6…3a0b6a | CALL | sellNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00052 ETH |
| 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x57e8f7…111a23 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x0b53…9ca9 | 0.00002 ETH |
| 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x57e8f7…111a23 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00052 ETH |
| 39,234,114 | 9 hrs agoMon, 17 Aug 2026 23:32:24 UTC | 0x57e8f7…111a23 | CALL | sellNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00052 ETH |
| 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x7228c1…f19436 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x891d…3e35 | 0.00106 ETH |
| 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x7228c1…f19436 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00053 ETH |
| 38,309,492 | 1 day agoSun, 16 Aug 2026 21:46:34 UTC | 0x7228c1…f19436 | CALL | sellNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00053 ETH |
| 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x8267ec…48f6f2 | CALL | executeBatch | 0x4e07…8451 | OUT | 0x7890…4778 | 0.00010 ETH |
| 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x8267ec…48f6f2 | CALL | executeBatch | 0x4e07…8451 | OUT | 0x038a…726b | 0.00053 ETH |
| 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x8267ec…48f6f2 | CALL | executeBatch | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00053 ETH |
| 38,291,754 | 1 day agoSun, 16 Aug 2026 21:16:56 UTC | 0x8267ec…48f6f2 | CALL | executeBatch | 0x7890…4778 | IN | 0x4e07…8451 | 0.00116 ETH |
| 38,255,952 | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x23e9b3…cfc94b | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x7f29…94b4 | 0.00002 ETH |
| 38,255,952 | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x23e9b3…cfc94b | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00053 ETH |
| 38,255,952 | 1 day agoSun, 16 Aug 2026 20:17:06 UTC | 0x23e9b3…cfc94b | CALL | buySpecificNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00053 ETH |
| 38,253,414 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x34adee…d4c063 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x7f29…94b4 | 0.00002 ETH |
| 38,253,414 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x34adee…d4c063 | CALL | sellNFT | 0x4e07…8451 | OUT | 0x038a…726b | 0.00053 ETH |
| 38,253,414 | 1 day agoSun, 16 Aug 2026 20:12:52 UTC | 0x34adee…d4c063 | CALL | sellNFT | 0x4e07…8451 | OUT | 0xb668…7cda | 0.00053 ETH |