// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {Ownable2Step, Ownable} from "@openzeppelin/contracts/access/Ownable2Step.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
/// @notice Deposit FishBroker NFTs into one of three xSTOCK reward pools
/// (SPCX / NVDA / AAPL) and accrue that pool's reward token continuously,
/// mirroring src/lib/xstock-pools.ts's `accruedAmount()` formula:
/// depositedCount * emissionPerNftPerSecond * elapsedSeconds. Rate changes
/// are checkpointed via a per-pool cumulative index (see `_updateIndex`) so
/// an emission-rate change only ever affects time *after* the change —
/// never retroactively repriced for stale users. Reward tokens are
/// pre-funded into this contract by the owner (`fundPool`) — the contract
/// never pulls from any external treasury allowance.
contract FishBrokerNftEarn is Ownable2Step, ReentrancyGuard {
using SafeERC20 for IERC20;
using EnumerableSet for EnumerableSet.UintSet;
enum PoolId {
SPCX,
NVDA,
AAPL
}
/// @dev Generous ceiling purely to catch fat-fingered/decimal-mistake
/// rate entry before it reaches storage — not a realistic target rate.
/// 1e24 wei/NFT/second is already an absurdly high emission rate for
/// any 18-decimal token.
uint256 public constant MAX_EMISSION_PER_NFT_PER_SECOND = 1e24;
struct PoolConfig {
IERC20 rewardToken;
uint256 emissionPerNftPerSecond;
uint256 maxDepositPerWallet;
uint256 cooldownSeconds;
}
struct PoolIndex {
uint256 cumulativeIndex;
uint256 lastUpdateTimestamp;
}
struct UserPoolState {
uint256 accruedUnclaimed;
uint256 indexSnapshot;
}
struct Deposit {
address owner;
PoolId pool;
uint256 depositedAt;
uint256 cooldownSeconds; // snapshotted at deposit time
}
IERC721 public immutable fishBroker;
mapping(PoolId => PoolConfig) public pools;
mapping(PoolId => PoolIndex) public poolIndex;
mapping(PoolId => mapping(address => UserPoolState)) public userState;
mapping(PoolId => mapping(address => EnumerableSet.UintSet)) private userTokens;
mapping(uint256 => Deposit) public deposits;
mapping(PoolId => uint256) public totalAccruedUnclaimed;
event PoolConfigured(
PoolId indexed poolId,
address rewardToken,
uint256 emissionPerNftPerSecond,
uint256 maxDepositPerWallet,
uint256 cooldownSeconds
);
event EmissionRateSet(PoolId indexed poolId, uint256 emissionPerNftPerSecond);
event MaxDepositSet(PoolId indexed poolId, uint256 maxDepositPerWallet);
event CooldownSet(PoolId indexed poolId, uint256 cooldownSeconds);
event PoolFunded(PoolId indexed poolId, uint256 amount);
event Deposited(address indexed user, PoolId indexed poolId, uint256 indexed tokenId);
event Withdrawn(address indexed user, PoolId indexed poolId, uint256 indexed tokenId);
event Claimed(address indexed user, PoolId indexed poolId, uint256 amount);
event NftRescued(uint256 indexed tokenId, address indexed to);
constructor(address initialOwner, address fishBrokerAddress) Ownable(initialOwner) {
require(fishBrokerAddress != address(0), "FishBrokerNftEarn: nft contract required");
fishBroker = IERC721(fishBrokerAddress);
}
/* --------------------------------------------------------- owner admin */
/// @notice One-time setup for a pool. Reverts if the pool already has a
/// reward token configured — use `setEmissionRate`/`setMaxDepositPerWallet`/
/// `setCooldown` to adjust an existing pool instead, so the reward
/// token backing already-accrued balances can never be silently
/// repointed underneath live deposits.
function configurePool(
PoolId poolId,
address rewardToken,
uint256 emissionPerNftPerSecond,
uint256 maxDepositPerWallet,
uint256 cooldownSeconds
) external onlyOwner {
require(address(pools[poolId].rewardToken) == address(0), "FishBrokerNftEarn: pool already configured");
require(rewardToken != address(0), "FishBrokerNftEarn: reward token required");
require(emissionPerNftPerSecond <= MAX_EMISSION_PER_NFT_PER_SECOND, "FishBrokerNftEarn: rate too high");
pools[poolId] = PoolConfig({
rewardToken: IERC20(rewardToken),
emissionPerNftPerSecond: emissionPerNftPerSecond,
maxDepositPerWallet: maxDepositPerWallet,
cooldownSeconds: cooldownSeconds
});
poolIndex[poolId].lastUpdateTimestamp = block.timestamp;
emit PoolConfigured(poolId, rewardToken, emissionPerNftPerSecond, maxDepositPerWallet, cooldownSeconds);
}
function setEmissionRate(PoolId poolId, uint256 emissionPerNftPerSecond) external onlyOwner {
_requireConfigured(poolId);
require(emissionPerNftPerSecond <= MAX_EMISSION_PER_NFT_PER_SECOND, "FishBrokerNftEarn: rate too high");
// Checkpoint accrual under the OLD rate before it changes, so the
// new rate only ever applies going forward.
_updateIndex(poolId);
pools[poolId].emissionPerNftPerSecond = emissionPerNftPerSecond;
emit EmissionRateSet(poolId, emissionPerNftPerSecond);
}
function setMaxDepositPerWallet(PoolId poolId, uint256 maxDepositPerWallet) external onlyOwner {
_requireConfigured(poolId);
pools[poolId].maxDepositPerWallet = maxDepositPerWallet;
emit MaxDepositSet(poolId, maxDepositPerWallet);
}
/// @notice Only affects NFTs deposited *after* this call — each
/// deposit snapshots the cooldown active at the time, so raising this
/// later can never retroactively lock an already-deposited NFT.
function setCooldown(PoolId poolId, uint256 cooldownSeconds) external onlyOwner {
_requireConfigured(poolId);
pools[poolId].cooldownSeconds = cooldownSeconds;
emit CooldownSet(poolId, cooldownSeconds);
}
/// @notice Top up a pool's reward balance. Caller (owner/treasury) must
/// have approved this contract for `amount` beforehand — a deliberate,
/// one-off, owner-initiated pull, never a standing allowance the
/// contract draws from on its own.
function fundPool(PoolId poolId, uint256 amount) external onlyOwner {
_requireConfigured(poolId);
pools[poolId].rewardToken.safeTransferFrom(msg.sender, address(this), amount);
emit PoolFunded(poolId, amount);
}
/// @notice Sweep an ERC-20 balance out of this contract (e.g. a token
/// mistakenly sent here). If `token` is a configured pool's reward
/// token, the remaining balance after the sweep must still cover that
/// pool's total unclaimed accrued rewards.
function sweepToken(address token, address to, uint256 amount) external onlyOwner {
uint256 owed = _owedForToken(token);
if (owed > 0) {
uint256 remaining = IERC20(token).balanceOf(address(this)) - amount;
require(remaining >= owed, "FishBrokerNftEarn: would under-collateralize a pool");
}
IERC20(token).safeTransfer(to, amount);
}
/// @notice Recover an NFT that ended up in this contract without going
/// through `depositNfts` (e.g. a direct `transferFrom` bypassing the
/// deposit bookkeeping). Reverts if the token has a real tracked
/// deposit — this can never be used to take a properly-deposited
/// user's NFT.
function rescueUnregisteredNft(uint256 tokenId, address to) external onlyOwner {
require(deposits[tokenId].owner == address(0), "FishBrokerNftEarn: token has an active deposit");
fishBroker.transferFrom(address(this), to, tokenId);
emit NftRescued(tokenId, to);
}
/* ------------------------------------------------------------ deposit */
function depositNfts(PoolId poolId, uint256[] calldata tokenIds) external nonReentrant {
require(tokenIds.length > 0, "FishBrokerNftEarn: no tokens");
_requireConfigured(poolId);
PoolConfig storage pool = pools[poolId];
_accrue(poolId, msg.sender);
EnumerableSet.UintSet storage owned = userTokens[poolId][msg.sender];
require(owned.length() + tokenIds.length <= pool.maxDepositPerWallet, "FishBrokerNftEarn: exceeds max deposit");
for (uint256 i = 0; i < tokenIds.length; i++) {
uint256 tokenId = tokenIds[i];
deposits[tokenId] = Deposit({
owner: msg.sender,
pool: poolId,
depositedAt: block.timestamp,
cooldownSeconds: pool.cooldownSeconds
});
owned.add(tokenId);
fishBroker.transferFrom(msg.sender, address(this), tokenId);
emit Deposited(msg.sender, poolId, tokenId);
}
}
function withdrawNfts(PoolId poolId, uint256[] calldata tokenIds) external nonReentrant {
require(tokenIds.length > 0, "FishBrokerNftEarn: no tokens");
// Accrue before removing tokens so withdrawing never forfeits
// rewards already earned up to this moment.
_accrue(poolId, msg.sender);
EnumerableSet.UintSet storage owned = userTokens[poolId][msg.sender];
for (uint256 i = 0; i < tokenIds.length; i++) {
uint256 tokenId = tokenIds[i];
Deposit memory d = deposits[tokenId];
require(d.owner == msg.sender && d.pool == poolId, "FishBrokerNftEarn: not your deposit");
require(block.timestamp >= d.depositedAt + d.cooldownSeconds, "FishBrokerNftEarn: cooldown active");
delete deposits[tokenId];
owned.remove(tokenId);
fishBroker.transferFrom(address(this), msg.sender, tokenId);
emit Withdrawn(msg.sender, poolId, tokenId);
}
}
function claim(PoolId poolId) external nonReentrant {
_requireConfigured(poolId);
_accrue(poolId, msg.sender);
UserPoolState storage state = userState[poolId][msg.sender];
uint256 amount = state.accruedUnclaimed;
require(amount > 0, "FishBrokerNftEarn: nothing to claim");
state.accruedUnclaimed = 0;
totalAccruedUnclaimed[poolId] -= amount;
pools[poolId].rewardToken.safeTransfer(msg.sender, amount);
emit Claimed(msg.sender, poolId, amount);
}
/* ----------------------------------------------------------- internal */
function _requireConfigured(PoolId poolId) internal view {
require(address(pools[poolId].rewardToken) != address(0), "FishBrokerNftEarn: pool not configured");
}
/// @dev Advances the pool's cumulative index using the rate that was
/// live for the time elapsed since the last update — must be called
/// before any rate change so old periods stay priced at the old rate.
function _updateIndex(PoolId poolId) internal {
PoolIndex storage idx = poolIndex[poolId];
uint256 last = idx.lastUpdateTimestamp;
if (last == 0) {
idx.lastUpdateTimestamp = block.timestamp;
return;
}
uint256 elapsed = block.timestamp - last;
if (elapsed > 0) {
idx.cumulativeIndex += pools[poolId].emissionPerNftPerSecond * elapsed;
}
idx.lastUpdateTimestamp = block.timestamp;
}
function _accrue(PoolId poolId, address user) internal {
_updateIndex(poolId);
UserPoolState storage state = userState[poolId][user];
uint256 currentIndex = poolIndex[poolId].cumulativeIndex;
uint256 count = userTokens[poolId][user].length();
if (count > 0) {
uint256 pending = count * (currentIndex - state.indexSnapshot);
if (pending > 0) {
state.accruedUnclaimed += pending;
totalAccruedUnclaimed[poolId] += pending;
}
}
state.indexSnapshot = currentIndex;
}
/// @dev Sums across every pool using this token, not just the first
/// match — a token could in principle be reused across pools even
/// though the intended design keeps SPCX/NVDA/AAPL distinct.
function _owedForToken(address token) internal view returns (uint256) {
uint256 owed;
PoolId[3] memory ids = [PoolId.SPCX, PoolId.NVDA, PoolId.AAPL];
for (uint256 i = 0; i < ids.length; i++) {
if (address(pools[ids[i]].rewardToken) == token) {
owed += totalAccruedUnclaimed[ids[i]];
}
}
return owed;
}
/* ------------------------------------------------------------- views */
function pendingRewards(PoolId poolId, address user) external view returns (uint256) {
UserPoolState memory state = userState[poolId][user];
uint256 count = userTokens[poolId][user].length();
if (count == 0) return state.accruedUnclaimed;
PoolIndex memory idx = poolIndex[poolId];
uint256 elapsed = idx.lastUpdateTimestamp == 0 ? 0 : block.timestamp - idx.lastUpdateTimestamp;
uint256 projectedIndex = idx.cumulativeIndex + pools[poolId].emissionPerNftPerSecond * elapsed;
return state.accruedUnclaimed + count * (projectedIndex - state.indexSnapshot);
}
function depositedTokensOf(PoolId poolId, address user) external view returns (uint256[] memory) {
return userTokens[poolId][user].values();
}
function depositedCountOf(PoolId poolId, address user) external view returns (uint256) {
return userTokens[poolId][user].length();
}
function cooldownEndFor(uint256 tokenId) external view returns (uint256) {
Deposit memory d = deposits[tokenId];
if (d.owner == address(0)) return 0;
return d.depositedAt + d.cooldownSeconds;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
},
{
"name": "fishBrokerAddress",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "Claimed",
"type": "event",
"inputs": [
{
"name": "user",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CooldownSet",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Deposited",
"type": "event",
"inputs": [
{
"name": "user",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EmissionRateSet",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "emissionPerNftPerSecond",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MaxDepositSet",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "maxDepositPerWallet",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "NftRescued",
"type": "event",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferStarted",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PoolConfigured",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "rewardToken",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "emissionPerNftPerSecond",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "maxDepositPerWallet",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "PoolFunded",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Withdrawn",
"type": "event",
"inputs": [
{
"name": "user",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "poolId",
"type": "uint8",
"indexed": true,
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MAX_EMISSION_PER_NFT_PER_SECOND",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "claim",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "configurePool",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "rewardToken",
"type": "address",
"internalType": "address"
},
{
"name": "emissionPerNftPerSecond",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxDepositPerWallet",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "cooldownEndFor",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "depositNfts",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "tokenIds",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "depositedCountOf",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "depositedTokensOf",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "deposits",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "depositedAt",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "fishBroker",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC721"
}
],
"stateMutability": "view"
},
{
"name": "fundPool",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingOwner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingRewards",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poolIndex",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
}
],
"outputs": [
{
"name": "cumulativeIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "lastUpdateTimestamp",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "pools",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
}
],
"outputs": [
{
"name": "rewardToken",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "emissionPerNftPerSecond",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxDepositPerWallet",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueUnregisteredNft",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setCooldown",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "cooldownSeconds",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setEmissionRate",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "emissionPerNftPerSecond",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxDepositPerWallet",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "maxDepositPerWallet",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sweepToken",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "totalAccruedUnclaimed",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "userState",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "accruedUnclaimed",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "indexSnapshot",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "withdrawNfts",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "uint8",
"internalType": "enum FishBrokerNftEarn.PoolId"
},
{
"name": "tokenIds",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60a060405234801561000f575f5ffd5b5060405161254b38038061254b83398101604081905261002e9161018a565b816001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610104565b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b0381166100f25760405162461bcd60e51b815260206004820152602860248201527f4669736842726f6b65724e66744561726e3a206e667420636f6e7472616374206044820152671c995c5d5a5c995960c21b6064820152608401610054565b6001600160a01b0316608052506101bb565b600180546001600160a01b031916905561011d81610120565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610185575f5ffd5b919050565b5f5f6040838503121561019b575f5ffd5b6101a48361016f565b91506101b26020840161016f565b90509250929050565b6080516123636101e85f395f8181610302015281816109f101528181610e92015261133301526123635ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80638da5cb5b116100d9578063bf842cb911610093578063f2fde38b1161006e578063f2fde38b146103ce578063f3258c3e146103e1578063fb87a635146103f4578063fee52b931461045e575f5ffd5b8063bf842cb91461038a578063d63a9b26146103aa578063e30c3978146103bd575f5ffd5b80638da5cb5b146102b357806395d4063f146102d75780639d069409146102ea5780639d0a45e6146102fd578063b02c43d014610324578063bf7fc73514610377575f5ffd5b806364aff9ec1161014457806379eb2d5b1161011f57806379eb2d5b1461025d5780637a4f83891461026e5780637ba8affc146102815780637ee86ae2146102a0575f5ffd5b806364aff9ec1461023a578063715018a61461024d57806379ba509714610255575f5ffd5b80630619f7b71461018b578063196b4bdb146101a05780631cde8325146101c65780632b902710146101d9578063529df5941461021457806353f3e40314610227575b5f5ffd5b61019e610199366004612003565b61048f565b005b6101b36101ae366004612041565b61058c565b6040519081526020015b60405180910390f35b61019e6101d4366004612072565b610757565b6101ff6101e73660046120f3565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152016101bd565b61019e610222366004612003565b610ab4565b61019e610235366004612003565b610b42565b61019e61024836600461210c565b610bcf565b61019e610ce7565b61019e610cfa565b6101b369d3c21bcecceda100000081565b6101b361027c366004612146565b610d3e565b6101b361028f3660046120f3565b60076020525f908152604090205481565b61019e6102ae36600461215d565b610de3565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016101bd565b61019e6102e53660046120f3565b610f22565b61019e6102f8366004612072565b6110d4565b6102bf7f000000000000000000000000000000000000000000000000000000000000000081565b610367610332366004612146565b60066020525f90815260409020805460018201546002909201546001600160a01b03821692600160a01b90920460ff16919084565b6040516101bd9493929190612192565b61019e610385366004612003565b6113f1565b61039d610398366004612041565b611491565b6040516101bd91906121d9565b61019e6103b836600461221b565b6114ef565b6001546001600160a01b03166102bf565b61019e6103dc366004612264565b61179a565b6101b36103ef366004612041565b61180a565b6104346104023660046120f3565b600260208190525f918252604090912080546001820154928201546003909201546001600160a01b0390911692919084565b604080516001600160a01b03909516855260208501939093529183015260608201526080016101bd565b6101ff61046c366004612041565b600460209081525f92835260408084209091529082529020805460019091015482565b610497611867565b6104a082611893565b69d3c21bcecceda10000008111156104ff5760405162461bcd60e51b815260206004820181905260248201527f4669736842726f6b65724e66744561726e3a207261746520746f6f206869676860448201526064015b60405180910390fd5b6105088261192e565b8060025f84600281111561051e5761051e61217e565b600281111561052f5761052f61217e565b815260208101919091526040015f20600101558160028111156105545761055461217e565b6040518281527f08a220f43b839a6fc038dcaffcc3a8770740cb836a0e9a94b86eb5c456a24b8d906020015b60405180910390a25050565b5f5f60045f8560028111156105a3576105a361217e565b60028111156105b4576105b461217e565b815260208082019290925260409081015f9081206001600160a01b038716825283528181208251808401909352805483526001015492820192909252915061064e60058287600281111561060a5761060a61217e565b600281111561061b5761061b61217e565b81526020019081526020015f205f866001600160a01b03166001600160a01b031681526020019081526020015f206119f6565b9050805f036106605750519050610751565b5f60035f8760028111156106765761067661217e565b60028111156106875761068761217e565b815260208082019290925260409081015f9081208251808401909352805483526001015492820183905290925090156106ce5760208201516106c99042612291565b6106d0565b5f5b90505f8160025f8a60028111156106e9576106e961217e565b60028111156106fa576106fa61217e565b81526020019081526020015f206001015461071591906122a4565b835161072191906122bb565b90508460200151816107339190612291565b61073d90856122a4565b855161074991906122bb565b955050505050505b92915050565b61075f6119ff565b806107ac5760405162461bcd60e51b815260206004820152601c60248201527f4669736842726f6b65724e66744561726e3a206e6f20746f6b656e730000000060448201526064016104f6565b6107b68333611a1a565b5f60055f8560028111156107cc576107cc61217e565b60028111156107dd576107dd61217e565b815260208082019290925260409081015f908120338252909252812091505b82811015610a97575f848483818110610817576108176122ce565b602090810292909201355f81815260068452604080822081516080810190925280546001600160a01b03811683529396509194909350909190830190600160a01b900460ff16600281111561086e5761086e61217e565b600281111561087f5761087f61217e565b81526001820154602082015260029091015460409091015280519091506001600160a01b0316331480156108d857508660028111156108c0576108c061217e565b816020015160028111156108d6576108d661217e565b145b6109305760405162461bcd60e51b815260206004820152602360248201527f4669736842726f6b65724e66744561726e3a206e6f7420796f7572206465706f6044820152621cda5d60ea1b60648201526084016104f6565b8060600151816040015161094491906122bb565b42101561099e5760405162461bcd60e51b815260206004820152602260248201527f4669736842726f6b65724e66744561726e3a20636f6f6c646f776e2061637469604482015261766560f01b60648201526084016104f6565b5f82815260066020526040812080546001600160a81b031916815560018101829055600201556109ce8483611b5a565b506040516323b872dd60e01b8152306004820152336024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064015f604051808303815f87803b158015610a3a575f5ffd5b505af1158015610a4c573d5f5f3e3d5ffd5b5050505081876002811115610a6357610a6361217e565b60405133907f83637d0d125e3dae88720b1ad229ce05c339c065b6282caf315dcb35a999d6d4905f90a450506001016107fc565b5050610aaf60015f51602061230e5f395f51905f5255565b505050565b610abc611867565b610ac582611893565b8060025f846002811115610adb57610adb61217e565b6002811115610aec57610aec61217e565b81526020019081526020015f2060020181905550816002811115610b1257610b1261217e565b6040518281527f4e23711852701c7a3bcd802d14e4850905611c0c4c430a345f88f723ad44eb2790602001610580565b610b4a611867565b610b5382611893565b8060025f846002811115610b6957610b6961217e565b6002811115610b7a57610b7a61217e565b815260208101919091526040015f2060030155816002811115610b9f57610b9f61217e565b6040518281527f8c8dac47f93ed6d5911e135cf00c1b012275dcc9b647abc2078f8d4b8adc58df90602001610580565b610bd7611867565b5f610be184611b65565b90508015610ccd576040516370a0823160e01b81523060048201525f9083906001600160a01b038716906370a0823190602401602060405180830381865afa158015610c2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5391906122e2565b610c5d9190612291565b905081811015610ccb5760405162461bcd60e51b815260206004820152603360248201527f4669736842726f6b65724e66744561726e3a20776f756c6420756e6465722d636044820152721bdb1b185d195c985b1a5e994818481c1bdbdb606a1b60648201526084016104f6565b505b610ce16001600160a01b0385168484611c80565b50505050565b610cef611867565b610cf85f611cb5565b565b60015433906001600160a01b03168114610d325760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f6565b610d3b81611cb5565b50565b5f81815260066020908152604080832081516080810190925280546001600160a01b03811683528493830190600160a01b900460ff166002811115610d8557610d8561217e565b6002811115610d9657610d9661217e565b81526001820154602082015260029091015460409091015280519091506001600160a01b0316610dc857505f92915050565b80606001518160400151610ddc91906122bb565b9392505050565b610deb611867565b5f828152600660205260409020546001600160a01b031615610e665760405162461bcd60e51b815260206004820152602e60248201527f4669736842726f6b65724e66744561726e3a20746f6b656e2068617320616e2060448201526d1858dd1a5d994819195c1bdcda5d60921b60648201526084016104f6565b6040516323b872dd60e01b81523060048201526001600160a01b038281166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064015f604051808303815f87803b158015610ed3575f5ffd5b505af1158015610ee5573d5f5f3e3d5ffd5b50506040516001600160a01b03841692508491507f403eae2c2920f0a94ee68ad8f92e721f00575ae2bc35d89b2169096a25aceb9c905f90a35050565b610f2a6119ff565b610f3381611893565b610f3d8133611a1a565b5f60045f836002811115610f5357610f5361217e565b6002811115610f6457610f6461217e565b815260208082019290925260409081015f9081203382529092529020805490915080610fde5760405162461bcd60e51b815260206004820152602360248201527f4669736842726f6b65724e66744561726e3a206e6f7468696e6720746f20636c60448201526261696d60e81b60648201526084016104f6565b5f8083558190600790856002811115610ff957610ff961217e565b600281111561100a5761100a61217e565b81526020019081526020015f205f8282546110259190612291565b909155506110759050338260025f87828111156110445761104461217e565b60028111156110555761105561217e565b815260208101919091526040015f20546001600160a01b03169190611c80565b8260028111156110875761108761217e565b60405182815233907fc73092756e22756fd0b15b2f803bd49db35ee23e7ae171c4d414ab7a61fa8b7c9060200160405180910390a35050610d3b60015f51602061230e5f395f51905f5255565b6110dc6119ff565b806111295760405162461bcd60e51b815260206004820152601c60248201527f4669736842726f6b65724e66744561726e3a206e6f20746f6b656e730000000060448201526064016104f6565b61113283611893565b5f60025f8560028111156111485761114861217e565b60028111156111595761115961217e565b81526020019081526020015f2090506111728433611a1a565b5f60055f8660028111156111885761118861217e565b60028111156111995761119961217e565b815260208082019290925260409081015f90812033825290925290206002830154909150836111c7836119f6565b6111d191906122bb565b111561122e5760405162461bcd60e51b815260206004820152602660248201527f4669736842726f6b65724e66744561726e3a2065786365656473206d61782064604482015265195c1bdcda5d60d21b60648201526084016104f6565b5f5b838110156113d8575f85858381811061124b5761124b6122ce565b9050602002013590506040518060800160405280336001600160a01b031681526020018860028111156112805761128061217e565b81524260208083019190915260038701546040928301525f8481526006825291909120825181546001600160a01b039091166001600160a01b031982168117835592840151919283916001600160a81b03191617600160a01b8360028111156112eb576112eb61217e565b0217905550604082015160018201556060909101516002909101556113108382611cce565b506040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064015f604051808303815f87803b15801561137c575f5ffd5b505af115801561138e573d5f5f3e3d5ffd5b50505050808760028111156113a5576113a561217e565b60405133907f1d0787aee899a49ef81d0b11da9aca5455b46aefed042a41bd398d74619cab00905f90a450600101611230565b505050610aaf60015f51602061230e5f395f51905f5255565b6113f9611867565b61140282611893565b61144f33308360025f87600281111561141d5761141d61217e565b600281111561142e5761142e61217e565b815260208101919091526040015f20546001600160a01b0316929190611cd9565b8160028111156114615761146161217e565b6040518281527f9b152ddc797c68ff43a1dac95e028ac251a8a26afbd8ebf9d2beafe06f19597790602001610580565b6060610ddc60055f8560028111156114ab576114ab61217e565b60028111156114bc576114bc61217e565b81526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f20611d0f565b6114f7611867565b5f600281878281111561150c5761150c61217e565b600281111561151d5761151d61217e565b815260208101919091526040015f20546001600160a01b0316146115965760405162461bcd60e51b815260206004820152602a60248201527f4669736842726f6b65724e66744561726e3a20706f6f6c20616c72656164792060448201526918dbdb999a59dd5c995960b21b60648201526084016104f6565b6001600160a01b0384166115fd5760405162461bcd60e51b815260206004820152602860248201527f4669736842726f6b65724e66744561726e3a2072657761726420746f6b656e206044820152671c995c5d5a5c995960c21b60648201526084016104f6565b69d3c21bcecceda10000008311156116575760405162461bcd60e51b815260206004820181905260248201527f4669736842726f6b65724e66744561726e3a207261746520746f6f206869676860448201526064016104f6565b6040518060800160405280856001600160a01b031681526020018481526020018381526020018281525060025f8760028111156116965761169661217e565b60028111156116a7576116a761217e565b815260208082019290925260409081015f908120845181546001600160a01b0319166001600160a01b03909116178155928401516001840155908301516002808401919091556060909301516003928301554292889081111561170c5761170c61217e565b600281111561171d5761171d61217e565b815260208101919091526040015f20600101558460028111156117425761174261217e565b604080516001600160a01b038716815260208101869052908101849052606081018390527f603ad8c21db5f7dbaff4378aebb7332884f556840cad1885099b49db83b52c739060800160405180910390a25050505050565b6117a2611867565b600180546001600160a01b0383166001600160a01b031990911681179091556117d25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f610ddc60055f8560028111156118235761182361217e565b60028111156118345761183461217e565b81526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f206119f6565b5f546001600160a01b03163314610cf85760405163118cdaa760e01b81523360048201526024016104f6565b5f60028183828111156118a8576118a861217e565b60028111156118b9576118b961217e565b815260208101919091526040015f20546001600160a01b031603610d3b5760405162461bcd60e51b815260206004820152602660248201527f4669736842726f6b65724e66744561726e3a20706f6f6c206e6f7420636f6e666044820152651a59dd5c995960d21b60648201526084016104f6565b5f60035f8360028111156119445761194461217e565b60028111156119555761195561217e565b81526020019081526020015f2090505f81600101549050805f0361197e57504260019091015550565b5f6119898242612291565b905080156119ea578060025f8660028111156119a7576119a761217e565b60028111156119b8576119b861217e565b81526020019081526020015f20600101546119d391906122a4565b835f015f8282546119e491906122bb565b90915550505b50504260019091015550565b5f610751825490565b611a07611d1b565b60025f51602061230e5f395f51905f5255565b611a238261192e565b5f60045f846002811115611a3957611a3961217e565b6002811115611a4a57611a4a61217e565b815260208082019290925260409081015f9081206001600160a01b038616825290925281209150600381856002811115611a8657611a8661217e565b6002811115611a9757611a9761217e565b81526020019081526020015f205f015490505f611ac260055f87600281111561060a5761060a61217e565b90508015611b4f575f836001015483611adb9190612291565b611ae590836122a4565b90508015611b4d5780845f015f828254611aff91906122bb565b9091555081905060075f886002811115611b1b57611b1b61217e565b6002811115611b2c57611b2c61217e565b81526020019081526020015f205f828254611b4791906122bb565b90915550505b505b506001909101555050565b5f610ddc8383611d4a565b5f5f5f60405180606001604052805f6002811115611b8557611b8561217e565b6002811115611b9657611b9661217e565b8152602001600181526020016002905290505f5b6003811015611c7757846001600160a01b031660025f848460038110611bd257611bd26122ce565b60200201516002811115611be857611be861217e565b6002811115611bf957611bf961217e565b815260208101919091526040015f20546001600160a01b031603611c6f5760075f838360038110611c2c57611c2c6122ce565b60200201516002811115611c4257611c4261217e565b6002811115611c5357611c5361217e565b81526020019081526020015f205483611c6c91906122bb565b92505b600101611baa565b50909392505050565b611c8d8383836001611e2d565b610aaf57604051635274afe760e01b81526001600160a01b03841660048201526024016104f6565b600180546001600160a01b0319169055610d3b81611e8f565b5f610ddc8383611ede565b611ce7848484846001611f2a565b610ce157604051635274afe760e01b81526001600160a01b03851660048201526024016104f6565b60605f610ddc83611f97565b5f51602061230e5f395f51905f5254600203610cf857604051633ee5aeb560e01b815260040160405180910390fd5b5f8181526001830160205260408120548015611e24575f611d6c600183612291565b85549091505f90611d7f90600190612291565b9050808214611dde575f865f018281548110611d9d57611d9d6122ce565b905f5260205f200154905080875f018481548110611dbd57611dbd6122ce565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611def57611def6122f9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610751565b5f915050610751565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611e83578383151615611e77573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f818152600183016020526040812054611f2357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610751565b505f610751565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611f86578383151615611f7a573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015611fe457602002820191905f5260205f20905b815481526020019060010190808311611fd0575b50505050509050919050565b803560038110611ffe575f5ffd5b919050565b5f5f60408385031215612014575f5ffd5b61201d83611ff0565b946020939093013593505050565b80356001600160a01b0381168114611ffe575f5ffd5b5f5f60408385031215612052575f5ffd5b61205b83611ff0565b91506120696020840161202b565b90509250929050565b5f5f5f60408486031215612084575f5ffd5b61208d84611ff0565b9250602084013567ffffffffffffffff8111156120a8575f5ffd5b8401601f810186136120b8575f5ffd5b803567ffffffffffffffff8111156120ce575f5ffd5b8660208260051b84010111156120e2575f5ffd5b939660209190910195509293505050565b5f60208284031215612103575f5ffd5b610ddc82611ff0565b5f5f5f6060848603121561211e575f5ffd5b6121278461202b565b92506121356020850161202b565b929592945050506040919091013590565b5f60208284031215612156575f5ffd5b5035919050565b5f5f6040838503121561216e575f5ffd5b823591506120696020840161202b565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b038516815260808101600385106121be57634e487b7160e01b5f52602160045260245ffd5b84602083015283604083015282606083015295945050505050565b602080825282518282018190525f918401906040840190835b818110156122105783518352602093840193909201916001016121f2565b509095945050505050565b5f5f5f5f5f60a0868803121561222f575f5ffd5b61223886611ff0565b94506122466020870161202b565b94979496505050506040830135926060810135926080909101359150565b5f60208284031215612274575f5ffd5b610ddc8261202b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107515761075161227d565b80820281158282048414176107515761075161227d565b808201808211156107515761075161227d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156122f2575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122085a97717cd739c49083028b7f6300d01a7c8a16d9eb3b75ddb3765cb3ad6183964736f6c634300081c003300000000000000000000000057ff7e3527e1e0f75de60bd13c90c1fac8a9004f00000000000000000000000093ceba2125e8c2115943e865674a9109cb38f99a
0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80638da5cb5b116100d9578063bf842cb911610093578063f2fde38b1161006e578063f2fde38b146103ce578063f3258c3e146103e1578063fb87a635146103f4578063fee52b931461045e575f5ffd5b8063bf842cb91461038a578063d63a9b26146103aa578063e30c3978146103bd575f5ffd5b80638da5cb5b146102b357806395d4063f146102d75780639d069409146102ea5780639d0a45e6146102fd578063b02c43d014610324578063bf7fc73514610377575f5ffd5b806364aff9ec1161014457806379eb2d5b1161011f57806379eb2d5b1461025d5780637a4f83891461026e5780637ba8affc146102815780637ee86ae2146102a0575f5ffd5b806364aff9ec1461023a578063715018a61461024d57806379ba509714610255575f5ffd5b80630619f7b71461018b578063196b4bdb146101a05780631cde8325146101c65780632b902710146101d9578063529df5941461021457806353f3e40314610227575b5f5ffd5b61019e610199366004612003565b61048f565b005b6101b36101ae366004612041565b61058c565b6040519081526020015b60405180910390f35b61019e6101d4366004612072565b610757565b6101ff6101e73660046120f3565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152016101bd565b61019e610222366004612003565b610ab4565b61019e610235366004612003565b610b42565b61019e61024836600461210c565b610bcf565b61019e610ce7565b61019e610cfa565b6101b369d3c21bcecceda100000081565b6101b361027c366004612146565b610d3e565b6101b361028f3660046120f3565b60076020525f908152604090205481565b61019e6102ae36600461215d565b610de3565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016101bd565b61019e6102e53660046120f3565b610f22565b61019e6102f8366004612072565b6110d4565b6102bf7f00000000000000000000000093ceba2125e8c2115943e865674a9109cb38f99a81565b610367610332366004612146565b60066020525f90815260409020805460018201546002909201546001600160a01b03821692600160a01b90920460ff16919084565b6040516101bd9493929190612192565b61019e610385366004612003565b6113f1565b61039d610398366004612041565b611491565b6040516101bd91906121d9565b61019e6103b836600461221b565b6114ef565b6001546001600160a01b03166102bf565b61019e6103dc366004612264565b61179a565b6101b36103ef366004612041565b61180a565b6104346104023660046120f3565b600260208190525f918252604090912080546001820154928201546003909201546001600160a01b0390911692919084565b604080516001600160a01b03909516855260208501939093529183015260608201526080016101bd565b6101ff61046c366004612041565b600460209081525f92835260408084209091529082529020805460019091015482565b610497611867565b6104a082611893565b69d3c21bcecceda10000008111156104ff5760405162461bcd60e51b815260206004820181905260248201527f4669736842726f6b65724e66744561726e3a207261746520746f6f206869676860448201526064015b60405180910390fd5b6105088261192e565b8060025f84600281111561051e5761051e61217e565b600281111561052f5761052f61217e565b815260208101919091526040015f20600101558160028111156105545761055461217e565b6040518281527f08a220f43b839a6fc038dcaffcc3a8770740cb836a0e9a94b86eb5c456a24b8d906020015b60405180910390a25050565b5f5f60045f8560028111156105a3576105a361217e565b60028111156105b4576105b461217e565b815260208082019290925260409081015f9081206001600160a01b038716825283528181208251808401909352805483526001015492820192909252915061064e60058287600281111561060a5761060a61217e565b600281111561061b5761061b61217e565b81526020019081526020015f205f866001600160a01b03166001600160a01b031681526020019081526020015f206119f6565b9050805f036106605750519050610751565b5f60035f8760028111156106765761067661217e565b60028111156106875761068761217e565b815260208082019290925260409081015f9081208251808401909352805483526001015492820183905290925090156106ce5760208201516106c99042612291565b6106d0565b5f5b90505f8160025f8a60028111156106e9576106e961217e565b60028111156106fa576106fa61217e565b81526020019081526020015f206001015461071591906122a4565b835161072191906122bb565b90508460200151816107339190612291565b61073d90856122a4565b855161074991906122bb565b955050505050505b92915050565b61075f6119ff565b806107ac5760405162461bcd60e51b815260206004820152601c60248201527f4669736842726f6b65724e66744561726e3a206e6f20746f6b656e730000000060448201526064016104f6565b6107b68333611a1a565b5f60055f8560028111156107cc576107cc61217e565b60028111156107dd576107dd61217e565b815260208082019290925260409081015f908120338252909252812091505b82811015610a97575f848483818110610817576108176122ce565b602090810292909201355f81815260068452604080822081516080810190925280546001600160a01b03811683529396509194909350909190830190600160a01b900460ff16600281111561086e5761086e61217e565b600281111561087f5761087f61217e565b81526001820154602082015260029091015460409091015280519091506001600160a01b0316331480156108d857508660028111156108c0576108c061217e565b816020015160028111156108d6576108d661217e565b145b6109305760405162461bcd60e51b815260206004820152602360248201527f4669736842726f6b65724e66744561726e3a206e6f7420796f7572206465706f6044820152621cda5d60ea1b60648201526084016104f6565b8060600151816040015161094491906122bb565b42101561099e5760405162461bcd60e51b815260206004820152602260248201527f4669736842726f6b65724e66744561726e3a20636f6f6c646f776e2061637469604482015261766560f01b60648201526084016104f6565b5f82815260066020526040812080546001600160a81b031916815560018101829055600201556109ce8483611b5a565b506040516323b872dd60e01b8152306004820152336024820152604481018390527f00000000000000000000000093ceba2125e8c2115943e865674a9109cb38f99a6001600160a01b0316906323b872dd906064015f604051808303815f87803b158015610a3a575f5ffd5b505af1158015610a4c573d5f5f3e3d5ffd5b5050505081876002811115610a6357610a6361217e565b60405133907f83637d0d125e3dae88720b1ad229ce05c339c065b6282caf315dcb35a999d6d4905f90a450506001016107fc565b5050610aaf60015f51602061230e5f395f51905f5255565b505050565b610abc611867565b610ac582611893565b8060025f846002811115610adb57610adb61217e565b6002811115610aec57610aec61217e565b81526020019081526020015f2060020181905550816002811115610b1257610b1261217e565b6040518281527f4e23711852701c7a3bcd802d14e4850905611c0c4c430a345f88f723ad44eb2790602001610580565b610b4a611867565b610b5382611893565b8060025f846002811115610b6957610b6961217e565b6002811115610b7a57610b7a61217e565b815260208101919091526040015f2060030155816002811115610b9f57610b9f61217e565b6040518281527f8c8dac47f93ed6d5911e135cf00c1b012275dcc9b647abc2078f8d4b8adc58df90602001610580565b610bd7611867565b5f610be184611b65565b90508015610ccd576040516370a0823160e01b81523060048201525f9083906001600160a01b038716906370a0823190602401602060405180830381865afa158015610c2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5391906122e2565b610c5d9190612291565b905081811015610ccb5760405162461bcd60e51b815260206004820152603360248201527f4669736842726f6b65724e66744561726e3a20776f756c6420756e6465722d636044820152721bdb1b185d195c985b1a5e994818481c1bdbdb606a1b60648201526084016104f6565b505b610ce16001600160a01b0385168484611c80565b50505050565b610cef611867565b610cf85f611cb5565b565b60015433906001600160a01b03168114610d325760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f6565b610d3b81611cb5565b50565b5f81815260066020908152604080832081516080810190925280546001600160a01b03811683528493830190600160a01b900460ff166002811115610d8557610d8561217e565b6002811115610d9657610d9661217e565b81526001820154602082015260029091015460409091015280519091506001600160a01b0316610dc857505f92915050565b80606001518160400151610ddc91906122bb565b9392505050565b610deb611867565b5f828152600660205260409020546001600160a01b031615610e665760405162461bcd60e51b815260206004820152602e60248201527f4669736842726f6b65724e66744561726e3a20746f6b656e2068617320616e2060448201526d1858dd1a5d994819195c1bdcda5d60921b60648201526084016104f6565b6040516323b872dd60e01b81523060048201526001600160a01b038281166024830152604482018490527f00000000000000000000000093ceba2125e8c2115943e865674a9109cb38f99a16906323b872dd906064015f604051808303815f87803b158015610ed3575f5ffd5b505af1158015610ee5573d5f5f3e3d5ffd5b50506040516001600160a01b03841692508491507f403eae2c2920f0a94ee68ad8f92e721f00575ae2bc35d89b2169096a25aceb9c905f90a35050565b610f2a6119ff565b610f3381611893565b610f3d8133611a1a565b5f60045f836002811115610f5357610f5361217e565b6002811115610f6457610f6461217e565b815260208082019290925260409081015f9081203382529092529020805490915080610fde5760405162461bcd60e51b815260206004820152602360248201527f4669736842726f6b65724e66744561726e3a206e6f7468696e6720746f20636c60448201526261696d60e81b60648201526084016104f6565b5f8083558190600790856002811115610ff957610ff961217e565b600281111561100a5761100a61217e565b81526020019081526020015f205f8282546110259190612291565b909155506110759050338260025f87828111156110445761104461217e565b60028111156110555761105561217e565b815260208101919091526040015f20546001600160a01b03169190611c80565b8260028111156110875761108761217e565b60405182815233907fc73092756e22756fd0b15b2f803bd49db35ee23e7ae171c4d414ab7a61fa8b7c9060200160405180910390a35050610d3b60015f51602061230e5f395f51905f5255565b6110dc6119ff565b806111295760405162461bcd60e51b815260206004820152601c60248201527f4669736842726f6b65724e66744561726e3a206e6f20746f6b656e730000000060448201526064016104f6565b61113283611893565b5f60025f8560028111156111485761114861217e565b60028111156111595761115961217e565b81526020019081526020015f2090506111728433611a1a565b5f60055f8660028111156111885761118861217e565b60028111156111995761119961217e565b815260208082019290925260409081015f90812033825290925290206002830154909150836111c7836119f6565b6111d191906122bb565b111561122e5760405162461bcd60e51b815260206004820152602660248201527f4669736842726f6b65724e66744561726e3a2065786365656473206d61782064604482015265195c1bdcda5d60d21b60648201526084016104f6565b5f5b838110156113d8575f85858381811061124b5761124b6122ce565b9050602002013590506040518060800160405280336001600160a01b031681526020018860028111156112805761128061217e565b81524260208083019190915260038701546040928301525f8481526006825291909120825181546001600160a01b039091166001600160a01b031982168117835592840151919283916001600160a81b03191617600160a01b8360028111156112eb576112eb61217e565b0217905550604082015160018201556060909101516002909101556113108382611cce565b506040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000093ceba2125e8c2115943e865674a9109cb38f99a6001600160a01b0316906323b872dd906064015f604051808303815f87803b15801561137c575f5ffd5b505af115801561138e573d5f5f3e3d5ffd5b50505050808760028111156113a5576113a561217e565b60405133907f1d0787aee899a49ef81d0b11da9aca5455b46aefed042a41bd398d74619cab00905f90a450600101611230565b505050610aaf60015f51602061230e5f395f51905f5255565b6113f9611867565b61140282611893565b61144f33308360025f87600281111561141d5761141d61217e565b600281111561142e5761142e61217e565b815260208101919091526040015f20546001600160a01b0316929190611cd9565b8160028111156114615761146161217e565b6040518281527f9b152ddc797c68ff43a1dac95e028ac251a8a26afbd8ebf9d2beafe06f19597790602001610580565b6060610ddc60055f8560028111156114ab576114ab61217e565b60028111156114bc576114bc61217e565b81526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f20611d0f565b6114f7611867565b5f600281878281111561150c5761150c61217e565b600281111561151d5761151d61217e565b815260208101919091526040015f20546001600160a01b0316146115965760405162461bcd60e51b815260206004820152602a60248201527f4669736842726f6b65724e66744561726e3a20706f6f6c20616c72656164792060448201526918dbdb999a59dd5c995960b21b60648201526084016104f6565b6001600160a01b0384166115fd5760405162461bcd60e51b815260206004820152602860248201527f4669736842726f6b65724e66744561726e3a2072657761726420746f6b656e206044820152671c995c5d5a5c995960c21b60648201526084016104f6565b69d3c21bcecceda10000008311156116575760405162461bcd60e51b815260206004820181905260248201527f4669736842726f6b65724e66744561726e3a207261746520746f6f206869676860448201526064016104f6565b6040518060800160405280856001600160a01b031681526020018481526020018381526020018281525060025f8760028111156116965761169661217e565b60028111156116a7576116a761217e565b815260208082019290925260409081015f908120845181546001600160a01b0319166001600160a01b03909116178155928401516001840155908301516002808401919091556060909301516003928301554292889081111561170c5761170c61217e565b600281111561171d5761171d61217e565b815260208101919091526040015f20600101558460028111156117425761174261217e565b604080516001600160a01b038716815260208101869052908101849052606081018390527f603ad8c21db5f7dbaff4378aebb7332884f556840cad1885099b49db83b52c739060800160405180910390a25050505050565b6117a2611867565b600180546001600160a01b0383166001600160a01b031990911681179091556117d25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f610ddc60055f8560028111156118235761182361217e565b60028111156118345761183461217e565b81526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f206119f6565b5f546001600160a01b03163314610cf85760405163118cdaa760e01b81523360048201526024016104f6565b5f60028183828111156118a8576118a861217e565b60028111156118b9576118b961217e565b815260208101919091526040015f20546001600160a01b031603610d3b5760405162461bcd60e51b815260206004820152602660248201527f4669736842726f6b65724e66744561726e3a20706f6f6c206e6f7420636f6e666044820152651a59dd5c995960d21b60648201526084016104f6565b5f60035f8360028111156119445761194461217e565b60028111156119555761195561217e565b81526020019081526020015f2090505f81600101549050805f0361197e57504260019091015550565b5f6119898242612291565b905080156119ea578060025f8660028111156119a7576119a761217e565b60028111156119b8576119b861217e565b81526020019081526020015f20600101546119d391906122a4565b835f015f8282546119e491906122bb565b90915550505b50504260019091015550565b5f610751825490565b611a07611d1b565b60025f51602061230e5f395f51905f5255565b611a238261192e565b5f60045f846002811115611a3957611a3961217e565b6002811115611a4a57611a4a61217e565b815260208082019290925260409081015f9081206001600160a01b038616825290925281209150600381856002811115611a8657611a8661217e565b6002811115611a9757611a9761217e565b81526020019081526020015f205f015490505f611ac260055f87600281111561060a5761060a61217e565b90508015611b4f575f836001015483611adb9190612291565b611ae590836122a4565b90508015611b4d5780845f015f828254611aff91906122bb565b9091555081905060075f886002811115611b1b57611b1b61217e565b6002811115611b2c57611b2c61217e565b81526020019081526020015f205f828254611b4791906122bb565b90915550505b505b506001909101555050565b5f610ddc8383611d4a565b5f5f5f60405180606001604052805f6002811115611b8557611b8561217e565b6002811115611b9657611b9661217e565b8152602001600181526020016002905290505f5b6003811015611c7757846001600160a01b031660025f848460038110611bd257611bd26122ce565b60200201516002811115611be857611be861217e565b6002811115611bf957611bf961217e565b815260208101919091526040015f20546001600160a01b031603611c6f5760075f838360038110611c2c57611c2c6122ce565b60200201516002811115611c4257611c4261217e565b6002811115611c5357611c5361217e565b81526020019081526020015f205483611c6c91906122bb565b92505b600101611baa565b50909392505050565b611c8d8383836001611e2d565b610aaf57604051635274afe760e01b81526001600160a01b03841660048201526024016104f6565b600180546001600160a01b0319169055610d3b81611e8f565b5f610ddc8383611ede565b611ce7848484846001611f2a565b610ce157604051635274afe760e01b81526001600160a01b03851660048201526024016104f6565b60605f610ddc83611f97565b5f51602061230e5f395f51905f5254600203610cf857604051633ee5aeb560e01b815260040160405180910390fd5b5f8181526001830160205260408120548015611e24575f611d6c600183612291565b85549091505f90611d7f90600190612291565b9050808214611dde575f865f018281548110611d9d57611d9d6122ce565b905f5260205f200154905080875f018481548110611dbd57611dbd6122ce565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611def57611def6122f9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610751565b5f915050610751565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611e83578383151615611e77573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f818152600183016020526040812054611f2357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610751565b505f610751565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611f86578383151615611f7a573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015611fe457602002820191905f5260205f20905b815481526020019060010190808311611fd0575b50505050509050919050565b803560038110611ffe575f5ffd5b919050565b5f5f60408385031215612014575f5ffd5b61201d83611ff0565b946020939093013593505050565b80356001600160a01b0381168114611ffe575f5ffd5b5f5f60408385031215612052575f5ffd5b61205b83611ff0565b91506120696020840161202b565b90509250929050565b5f5f5f60408486031215612084575f5ffd5b61208d84611ff0565b9250602084013567ffffffffffffffff8111156120a8575f5ffd5b8401601f810186136120b8575f5ffd5b803567ffffffffffffffff8111156120ce575f5ffd5b8660208260051b84010111156120e2575f5ffd5b939660209190910195509293505050565b5f60208284031215612103575f5ffd5b610ddc82611ff0565b5f5f5f6060848603121561211e575f5ffd5b6121278461202b565b92506121356020850161202b565b929592945050506040919091013590565b5f60208284031215612156575f5ffd5b5035919050565b5f5f6040838503121561216e575f5ffd5b823591506120696020840161202b565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b038516815260808101600385106121be57634e487b7160e01b5f52602160045260245ffd5b84602083015283604083015282606083015295945050505050565b602080825282518282018190525f918401906040840190835b818110156122105783518352602093840193909201916001016121f2565b509095945050505050565b5f5f5f5f5f60a0868803121561222f575f5ffd5b61223886611ff0565b94506122466020870161202b565b94979496505050506040830135926060810135926080909101359150565b5f60208284031215612274575f5ffd5b610ddc8261202b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107515761075161227d565b80820281158282048414176107515761075161227d565b808201808211156107515761075161227d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156122f2575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122085a97717cd739c49083028b7f6300d01a7c8a16d9eb3b75ddb3765cb3ad6183964736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
Apple • Robinhood Token (AAPL) | AAPL | 0.004974 | $306.17 | $1.52 |
NVIDIA • Robinhood Token (NVDA) | NVDA | 0.000053 | $224.31 | $0.01 |
| FishBroker (FSHB-NFT) | FSHB-NFT | 405 | — | — |
Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | SPCX | 0.000418 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x55ba6b…2d5a4f | 1 hr agoTue, 18 Aug 2026 08:27:50 UTC | 0x83637d…d6d4 | [0] 0x000000000000…97c473d4 [1] 0x000000000000…00000000 [2] 0x000000000000…00000772 |
| 0x69f54c…8bddb5 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x1d0787…ab00 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 [2] 0x000000000000…000007b4 |
| 0x69f54c…8bddb5 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x1d0787…ab00 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 [2] 0x000000000000…000007b3 |
| 0x69f54c…8bddb5 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x1d0787…ab00 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 [2] 0x000000000000…000007b2 |
| 0x69f54c…8bddb5 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x1d0787…ab00 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 [2] 0x000000000000…00000485 |
| 0x30e729…f6dcb1 | 3 hrs agoTue, 18 Aug 2026 06:46:31 UTC | 0x83637d…d6d4 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000000 [2] 0x000000000000…000007b2 |
| 0x30e729…f6dcb1 | 3 hrs agoTue, 18 Aug 2026 06:46:31 UTC | 0x83637d…d6d4 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000000 [2] 0x000000000000…000007b3 |
| 0x129640…df0533 | 3 hrs agoTue, 18 Aug 2026 06:46:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000001 [2] 0x000000000000…00000485 |
| 0x129640…df0533 | 3 hrs agoTue, 18 Aug 2026 06:46:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000001 [2] 0x000000000000…000007b4 |
| 0xbf2b63…7cb7a8 | 3 hrs agoTue, 18 Aug 2026 06:45:49 UTC | 0xc73092…8b7c | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 data: 0x000000000000000000…cb0a4a0e |
| 0xf49a77…55f057 | 7 hrs agoTue, 18 Aug 2026 02:19:41 UTC | 0xc73092…8b7c | [0] 0x000000000000…daac6cbb [1] 0x000000000000…00000002 data: 0x000000000000000000…bcdd14fa |
| 0x79e089…95994c | 1 day agoMon, 17 Aug 2026 00:20:50 UTC | 0xc73092…8b7c | [0] 0x000000000000…2efd0ff7 [1] 0x000000000000…00000002 data: 0x000000000000000000…0543e660 |
| 0x73c531…59e6d8 | 1 day agoSun, 16 Aug 2026 18:19:25 UTC | 0xc73092…8b7c | [0] 0x000000000000…7a604350 [1] 0x000000000000…00000002 data: 0x000000000000000000…aa58e968 |
| 0x258d6d…0571bf | 2 days agoSun, 16 Aug 2026 07:18:43 UTC | 0xc73092…8b7c | [0] 0x000000000000…fc37c2d1 [1] 0x000000000000…00000002 data: 0x000000000000000000…46928fcd |
| 0x7d8eba…0599f5 | 2 days agoSun, 16 Aug 2026 05:04:08 UTC | 0x1d0787…ab00 | [0] 0x000000000000…1bac489a [1] 0x000000000000…00000000 [2] 0x000000000000…00000569 |
| 0xa0874d…15e980 | 2 days agoSun, 16 Aug 2026 05:01:39 UTC | 0x83637d…d6d4 | [0] 0x000000000000…1bac489a [1] 0x000000000000…00000002 [2] 0x000000000000…00000569 |
| 0xf8db92…9291fc | 2 days agoSun, 16 Aug 2026 05:00:07 UTC | 0xc73092…8b7c | [0] 0x000000000000…1bac489a [1] 0x000000000000…00000002 data: 0x000000000000000000…1808af56 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…00000210 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…000006a1 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…00000208 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…000002f9 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…0000044d |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…000006d8 |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…0000025e |
| 0xab3cd9…007d60 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x83637d…d6d4 | [0] 0x000000000000…3b665657 [1] 0x000000000000…00000002 [2] 0x000000000000…00000264 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| !0xad7a78…2298bb | claim | 39,576,169 | 1 hr agoTue, 18 Aug 2026 09:04:15 UTC | 0x9e0e…7bcf | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000173 | |
| 0x55ba6b…2d5a4f | withdrawNfts | 39,554,379 | 1 hr agoTue, 18 Aug 2026 08:27:50 UTC | 0x790b…73d4 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000239 | |
| 0x69f54c…8bddb5 | depositNfts | 39,494,010 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x9136…c2d1 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00001198 | |
| 0x30e729…f6dcb1 | withdrawNfts | 39,493,796 | 3 hrs agoTue, 18 Aug 2026 06:46:31 UTC | 0x9136…c2d1 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000276 | |
| 0x129640…df0533 | withdrawNfts | 39,493,679 | 3 hrs agoTue, 18 Aug 2026 06:46:19 UTC | 0x9136…c2d1 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000303 | |
| 0xbf2b63…7cb7a8 | claim | 39,493,377 | 3 hrs agoTue, 18 Aug 2026 06:45:49 UTC | 0x9136…c2d1 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000192 | |
| !0x84af40…4e24c4 | claim | 39,334,793 | 7 hrs agoTue, 18 Aug 2026 02:20:36 UTC | 0x65a3…6cbb | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000170 | |
| !0xf3ab08…92c714 | claim | 39,334,465 | 7 hrs agoTue, 18 Aug 2026 02:20:03 UTC | 0x65a3…6cbb | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000170 | |
| 0xf49a77…55f057 | claim | 39,334,246 | 7 hrs agoTue, 18 Aug 2026 02:19:41 UTC | 0x65a3…6cbb | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000226 | |
| !0x08411b…3aea59 | claim | 38,547,675 | 1 day agoMon, 17 Aug 2026 04:25:00 UTC | 0xacc2…adad | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000204 | |
| !0x1e92b7…312ca2 | claim | 38,546,808 | 1 day agoMon, 17 Aug 2026 04:23:33 UTC | 0xacc2…adad | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000203 | |
| 0x79e089…95994c | claim | 38,401,729 | 1 day agoMon, 17 Aug 2026 00:20:50 UTC | 0xdd11…0ff7 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000191 | |
| 0x73c531…59e6d8 | claim | 38,185,557 | 1 day agoSun, 16 Aug 2026 18:19:25 UTC | 0xe831…4350 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000194 | |
| 0x258d6d…0571bf | claim | 37,790,735 | 2 days agoSun, 16 Aug 2026 07:18:43 UTC | 0x9136…c2d1 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000229 | |
| !0xe87387…1ac61d | claim | 37,711,446 | 2 days agoSun, 16 Aug 2026 05:05:59 UTC | 0xc536…2723 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000254 | |
| !0xce2591…be09b7 | claim | 37,711,328 | 2 days agoSun, 16 Aug 2026 05:05:47 UTC | 0xc536…2723 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000255 | |
| 0x7d8eba…0599f5 | depositNfts | 37,710,339 | 2 days agoSun, 16 Aug 2026 05:04:08 UTC | 0xa5b4…489a | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000562 | |
| 0xa0874d…15e980 | withdrawNfts | 37,708,857 | 2 days agoSun, 16 Aug 2026 05:01:39 UTC | 0xa5b4…489a | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000264 | |
| 0xf8db92…9291fc | claim | 37,707,938 | 2 days agoSun, 16 Aug 2026 05:00:07 UTC | 0xa5b4…489a | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000281 | |
| 0xab3cd9…007d60 | withdrawNfts | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000982 | |
| 0x71327b…259563 | claim | 37,653,513 | 2 days agoSun, 16 Aug 2026 03:29:04 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000251 | |
| 0x217a71…adf2de | claim | 37,644,204 | 2 days agoSun, 16 Aug 2026 03:13:30 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000249 | |
| 0x0be227…c8a2c1 | claim | 37,581,293 | 2 days agoSun, 16 Aug 2026 01:28:16 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000260 | |
| 0xba25f5…58a08f | claim | 37,518,030 | 2 days agoSat, 15 Aug 2026 23:42:31 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000265 | |
| 0x9cbcd3…445c47 | claim | 37,498,658 | 2 days agoSat, 15 Aug 2026 23:10:09 UTC | 0x5206…5657 | IN | FishBrokerNftEarn | $0.000 ETH | 0.00000316 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xbf2b63ed…7cb7a8 | Transfer | 39,493,377 | 3 hrs agoTue, 18 Aug 2026 06:45:49 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | $0.100.000319 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xf49a776a…55f057 | Transfer | 39,334,246 | 7 hrs agoTue, 18 Aug 2026 02:19:41 UTC | 0xbc3b…069e | OUT | 0x65a3…6cbb | $1.850.006043 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x79e0894a…95994c | Transfer | 38,401,729 | 1 day agoMon, 17 Aug 2026 00:20:50 UTC | 0xbc3b…069e | OUT | 0xdd11…0ff7 | $1.080.003512 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x73c531a0…59e6d8 | Transfer | 38,185,557 | 1 day agoSun, 16 Aug 2026 18:19:25 UTC | 0xbc3b…069e | OUT | 0xe831…4350 | $0.120.000404 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x258d6d01…0571bf | Transfer | 37,790,735 | 2 days agoSun, 16 Aug 2026 07:18:43 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | $0.050.000149 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xf8db9218…9291fc | Transfer | 37,707,938 | 2 days agoSun, 16 Aug 2026 05:00:07 UTC | 0xbc3b…069e | OUT | 0xa5b4…489a | $0.280.000917 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x71327b05…259563 | Transfer | 37,653,513 | 2 days agoSun, 16 Aug 2026 03:29:04 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.000.000015 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x217a7149…adf2de | Transfer | 37,644,204 | 2 days agoSun, 16 Aug 2026 03:13:30 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.030.000106 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x0be227fd…c8a2c1 | Transfer | 37,581,293 | 2 days agoSun, 16 Aug 2026 01:28:16 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.030.000106 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xba25f587…58a08f | Transfer | 37,518,030 | 2 days agoSat, 15 Aug 2026 23:42:31 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.010.000032 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x9cbcd39e…445c47 | Transfer | 37,498,658 | 2 days agoSat, 15 Aug 2026 23:10:09 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.050.000149 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xffc3040a…64ec02 | Transfer | 37,412,647 | 2 days agoSat, 15 Aug 2026 20:46:22 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.040.000122 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x91d4b6a0…55169b | Transfer | 37,378,130 | 2 days agoSat, 15 Aug 2026 19:48:39 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.050.000147 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x8767606d…b10906 | Transfer | 37,336,693 | 2 days agoSat, 15 Aug 2026 18:39:22 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.050.000165 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xfeddd2bc…6b19e5 | Transfer | 37,290,017 | 2 days agoSat, 15 Aug 2026 17:21:31 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.400.001309 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xd3335abe…5feb40 | Transfer | 37,177,042 | 2 days agoSat, 15 Aug 2026 14:12:49 UTC | 0xbc3b…069e | OUT | 0xdd11…0ff7 | $0.590.001932 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xcd9cf395…d48ff9 | Transfer | 37,106,680 | 2 days agoSat, 15 Aug 2026 12:15:13 UTC | 0xbc3b…069e | OUT | 0xe831…4350 | $0.040.000123 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xe9416910…af669d | Transfer | 36,995,513 | 3 days agoSat, 15 Aug 2026 09:09:16 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | $0.030.000104 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xe81fdd4c…ca39b1 | Transfer | 36,922,353 | 3 days agoSat, 15 Aug 2026 07:06:50 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.070.000226 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x6f79abf5…30119e | Transfer | 36,858,713 | 3 days agoSat, 15 Aug 2026 05:20:21 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.090.000280 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x052f51b5…c7830e | Transfer | 36,777,770 | 3 days agoSat, 15 Aug 2026 03:05:02 UTC | 0xbc3b…069e | OUT | 0xe831…4350 | $0.190.000632 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x8eebb706…49f709 | Transfer | 36,777,572 | 3 days agoSat, 15 Aug 2026 03:04:43 UTC | 0xbc3b…069e | OUT | 0xe831…4350 | 0.000000 SPCX | Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | |
| 0x2d4b3a24…ac30a3 | Transfer | 36,769,920 | 3 days agoSat, 15 Aug 2026 02:51:56 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.130.000428 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x58e982b2…fbf9e7 | Transfer | 36,541,183 | 3 days agoFri, 14 Aug 2026 20:30:07 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | $0.080.000277 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x705c9a22…68d3cf | Transfer | 36,438,540 | 3 days agoFri, 14 Aug 2026 17:38:49 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | $0.020.000056 AAPL | Apple • Robinhood Token (AAPL) |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x55ba6b81…2d5a4f | Transfer | 39,554,379 | 1 hr agoTue, 18 Aug 2026 08:27:50 UTC | 0xbc3b…069e | OUT | 0x790b…73d4 | Transfer | FishBroker (FSHB-NFT) #1906 | |
| 0x69f54c35…8bddb5 | Transfer | 39,494,010 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x9136…c2d1 | IN | 0xbc3b…069e | Transfer | FishBroker (FSHB-NFT) #1972 | |
| 0x69f54c35…8bddb5 | Transfer | 39,494,010 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x9136…c2d1 | IN | 0xbc3b…069e | Transfer | FishBroker (FSHB-NFT) #1971 | |
| 0x69f54c35…8bddb5 | Transfer | 39,494,010 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x9136…c2d1 | IN | 0xbc3b…069e | Transfer | FishBroker (FSHB-NFT) #1970 | |
| 0x69f54c35…8bddb5 | Transfer | 39,494,010 | 3 hrs agoTue, 18 Aug 2026 06:46:52 UTC | 0x9136…c2d1 | IN | 0xbc3b…069e | Transfer | FishBroker (FSHB-NFT) #1157 | |
| 0x30e729f8…f6dcb1 | Transfer | 39,493,796 | 3 hrs agoTue, 18 Aug 2026 06:46:31 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | Transfer | FishBroker (FSHB-NFT) #1970 | |
| 0x30e729f8…f6dcb1 | Transfer | 39,493,796 | 3 hrs agoTue, 18 Aug 2026 06:46:31 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | Transfer | FishBroker (FSHB-NFT) #1971 | |
| 0x12964080…df0533 | Transfer | 39,493,679 | 3 hrs agoTue, 18 Aug 2026 06:46:19 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | Transfer | FishBroker (FSHB-NFT) #1157 | |
| 0x12964080…df0533 | Transfer | 39,493,679 | 3 hrs agoTue, 18 Aug 2026 06:46:19 UTC | 0xbc3b…069e | OUT | 0x9136…c2d1 | Transfer | FishBroker (FSHB-NFT) #1972 | |
| 0x7d8eba05…0599f5 | Transfer | 37,710,339 | 2 days agoSun, 16 Aug 2026 05:04:08 UTC | 0xa5b4…489a | IN | 0xbc3b…069e | Transfer | FishBroker (FSHB-NFT) #1385 | |
| 0xa0874def…15e980 | Transfer | 37,708,857 | 2 days agoSun, 16 Aug 2026 05:01:39 UTC | 0xbc3b…069e | OUT | 0xa5b4…489a | Transfer | FishBroker (FSHB-NFT) #1385 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #528 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1697 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #520 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #761 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1101 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1752 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #606 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #612 | |
| 0xab3cd949…007d60 | Transfer | 37,653,664 | 2 days agoSun, 16 Aug 2026 03:29:19 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1936 | |
| 0x1cabf86d…22ba2c | Transfer | 37,415,385 | 2 days agoSat, 15 Aug 2026 20:50:57 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1995 | |
| 0x1cabf86d…22ba2c | Transfer | 37,415,385 | 2 days agoSat, 15 Aug 2026 20:50:57 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1452 | |
| 0x1cabf86d…22ba2c | Transfer | 37,415,385 | 2 days agoSat, 15 Aug 2026 20:50:57 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #1894 | |
| 0x1cabf86d…22ba2c | Transfer | 37,415,385 | 2 days agoSat, 15 Aug 2026 20:50:57 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #256 | |
| 0x1cabf86d…22ba2c | Transfer | 37,415,385 | 2 days agoSat, 15 Aug 2026 20:50:57 UTC | 0xbc3b…069e | OUT | 0x5206…5657 | Transfer | FishBroker (FSHB-NFT) #255 |