// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {IFlapFloorToken} from "./interfaces/Interfaces.sol";
/// @title FloorVaultV2 — the floor, for the Flap-launched FLOOR token.
/// @notice Holds SGOV (tokenized 0-3mo US T-bills). Any FLOOR holder may
/// redeem FLOOR here and receive their pro-rata share of the vault IN-KIND,
/// minus a redemption fee that STAYS in the vault, so every exit raises
/// the floor for everyone who remains.
///
/// The Flap token (FlapTaxTokenV3) has no burn function, so redemption
/// LOCKS the redeemed FLOOR in this vault forever instead of burning it.
/// No function in this bytecode can ever move the vault's FLOOR out.
/// The invariant this contract exists to uphold:
///
/// effectiveSupply = floor.totalSupply() - floor.balanceOf(vault)
/// floorPerToken = sgov.balanceOf(vault) * 1e18 / effectiveSupply
/// NEVER decreases.
///
/// Why redemption is in-kind: no oracle, no swap, no liquidity dependency
/// in the money path. Chainlink prices the floor for the UI only; frozen
/// weekend feeds cannot touch solvency. The vault is solvent by
/// construction at every block.
///
/// There is no owner, no pause, no upgrade, no parameter setter. The
/// constructor is the entire configuration surface.
contract FloorVaultV2 is ReentrancyGuard {
using SafeERC20 for IERC20;
IFlapFloorToken public immutable floor;
IERC20 public immutable sgov;
/// @notice Fee retained by the vault on redemption, in bps. Capped at 10%.
uint16 public immutable redemptionFeeBps;
uint256 private constant BPS = 10_000;
event Redeemed(
address indexed caller,
address indexed receiver,
uint256 floorLocked,
uint256 sgovOut,
uint256 sgovFeeRetained
);
event Donated(address indexed from, uint256 sgovAmount);
error ZeroAmount();
error NothingToRedeem();
error FeeTooHigh();
constructor(address _floor, address _sgov, uint16 _redemptionFeeBps) {
if (_redemptionFeeBps > 1_000) revert FeeTooHigh();
floor = IFlapFloorToken(_floor);
sgov = IERC20(_sgov);
redemptionFeeBps = _redemptionFeeBps;
}
/// @notice The redeemable supply: total supply minus the FLOOR this
/// vault has locked forever. This is the denominator of the floor.
function effectiveSupply() public view returns (uint256) {
return floor.totalSupply() - floor.balanceOf(address(this));
}
/// @notice SGOV owed for redeeming `floorAmount`, after the fee.
function previewRedeem(uint256 floorAmount) public view returns (uint256 sgovOut) {
uint256 supply = effectiveSupply();
if (supply == 0) return 0;
uint256 grossOut = sgov.balanceOf(address(this)) * floorAmount / supply;
sgovOut = grossOut - (grossOut * redemptionFeeBps / BPS);
}
/// @notice SGOV per redeemable FLOOR (1e18-scaled), before the
/// redemption fee. This is the number that only ever rises.
function floorPerToken() external view returns (uint256) {
uint256 supply = effectiveSupply();
if (supply == 0) return 0;
return sgov.balanceOf(address(this)) * 1e18 / supply;
}
function sgovBalance() external view returns (uint256) {
return sgov.balanceOf(address(this));
}
/// @notice Redeem `floorAmount` FLOOR from the caller (requires prior
/// approval of the vault on the FLOOR token). The FLOOR is pulled into
/// the vault and locked forever; the pro-rata SGOV share, minus the
/// retained fee, goes to `receiver`.
function redeem(uint256 floorAmount, address receiver)
external
nonReentrant
returns (uint256 sgovOut)
{
return _redeem(floorAmount, receiver);
}
/// @notice EIP-2612 convenience: permit + redeem in one transaction.
function redeemWithPermit(
uint256 floorAmount,
address receiver,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external nonReentrant returns (uint256 sgovOut) {
// Tolerate a front-run permit: if the allowance is already in place
// the permit call may revert on a used nonce. The transferFrom below
// is the real gate either way.
try floor.permit(msg.sender, address(this), floorAmount, deadline, v, r, s) {} catch {}
return _redeem(floorAmount, receiver);
}
/// @notice Attributed donation. A plain SGOV transfer to this contract
/// works identically; balances are read live, so there is no sync()
/// and none is needed. Donations only ever raise the floor.
function donate(uint256 sgovAmount) external {
if (sgovAmount == 0) revert ZeroAmount();
sgov.safeTransferFrom(msg.sender, address(this), sgovAmount);
emit Donated(msg.sender, sgovAmount);
}
function _redeem(uint256 floorAmount, address receiver) internal returns (uint256 sgovOut) {
if (floorAmount == 0) revert ZeroAmount();
// effectiveSupply BEFORE the pull: pulling raises the vault's FLOOR
// balance, so reading after would misprice the payout. Truncating
// division rounds in the vault's favor.
uint256 supply = effectiveSupply();
// Received-delta accounting: the payout is keyed to what actually
// arrived, so even a hypothetical transfer skim on the token could
// never over-pay the redeemer or lower the floor.
uint256 balBefore = floor.balanceOf(address(this));
IERC20(address(floor)).safeTransferFrom(msg.sender, address(this), floorAmount);
uint256 received = floor.balanceOf(address(this)) - balBefore;
uint256 grossOut = sgov.balanceOf(address(this)) * received / supply;
uint256 fee = grossOut * redemptionFeeBps / BPS;
sgovOut = grossOut - fee;
if (sgovOut == 0) revert NothingToRedeem();
sgov.safeTransfer(receiver, sgovOut);
emit Redeemed(msg.sender, receiver, received, sgovOut, fee);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_floor",
"type": "address",
"internalType": "address"
},
{
"name": "_sgov",
"type": "address",
"internalType": "address"
},
{
"name": "_redemptionFeeBps",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "nonpayable"
},
{
"name": "FeeTooHigh",
"type": "error",
"inputs": []
},
{
"name": "NothingToRedeem",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ZeroAmount",
"type": "error",
"inputs": []
},
{
"name": "Donated",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sgovAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Redeemed",
"type": "event",
"inputs": [
{
"name": "caller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "floorLocked",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sgovOut",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sgovFeeRetained",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "donate",
"type": "function",
"inputs": [
{
"name": "sgovAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "effectiveSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "floor",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IFlapFloorToken"
}
],
"stateMutability": "view"
},
{
"name": "floorPerToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "previewRedeem",
"type": "function",
"inputs": [
{
"name": "floorAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "sgovOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "redeem",
"type": "function",
"inputs": [
{
"name": "floorAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "sgovOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "redeemWithPermit",
"type": "function",
"inputs": [
{
"name": "floorAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "v",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "r",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "sgovOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "redemptionFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "sgov",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
},
{
"name": "sgovBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}
]0x60e03461012657601f610c9438819003918201601f19168301916001600160401b0383118484101761012a57808492606094604052833981010312610126576100478161013e565b9060406100566020830161013e565b9101519161ffff8316808403610126576103e89060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005511610117576001600160a01b039081166080521660a05260c052604051610b41908161015382396080518181816102350152818161037d0152818161067801526107df015260a05181818160aa0152818161013c015281816103c1015281816104c5015281816105a60152610878015260c0518181816101dc0152818161060001526108dc0152f35b63cd4e616760e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101265756fe60806040526004361015610011575f80fd5b5f803560e01c8063046b18fc146103f057806314441cb6146103ac57806340695363146103685780634cdad5061461034a5780637bde82f21461031c5780638fc47093146102fa578063b086726b14610200578063d68002f3146101c1578063d7cf46c51461010f5763f14faf6f14610088575f80fd5b3461010c57602036600319011261010c5760043580156100fd576100ce8130337f0000000000000000000000000000000000000000000000000000000000000000610a79565b6040519081527f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e54360203392a280f35b631f2a200560e01b8252600482fd5b80fd5b503461010c578060031936011261010c576040516370a0823160e01b8152306004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101b5579061017e575b602090604051908152f35b506020813d6020116101ad575b8161019860209383610420565b810103126101a95760209051610173565b5f80fd5b3d915061018b565b604051903d90823e3d90fd5b503461010c578060031936011261010c57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a95760c03660031901126101a95760043561021c61040a565b6064359060ff82168092036101a95761023361075a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b156101a9575f8060209560e46102be96604051948593849263d505accf60e01b84523360048501523060248501528860448501526044356064850152608484015260843560a484015260a43560c48401525af16102ea575b506107b8565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051908152f35b5f6102f491610420565b5f6102b8565b346101a9575f3660031901126101a9576020610314610669565b604051908152f35b346101a95760403660031901126101a95760206102be61033a61040a565b61034261075a565b6004356107b8565b346101a95760203660031901126101a957602061031460043561057c565b346101a9575f3660031901126101a9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101a9575f3660031901126101a9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101a9575f3660031901126101a957602061031461049b565b602435906001600160a01b03821682036101a957565b90601f8019910116810190811067ffffffffffffffff82111761044257604052565b634e487b7160e01b5f52604160045260245ffd5b8181029291811591840414171561046957565b634e487b7160e01b5f52601160045260245ffd5b8115610487570490565b634e487b7160e01b5f52601260045260245ffd5b6104a3610669565b801561056a576040516370a0823160e01b8152306004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561055f575f9261052b575b50670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610469576105289161047d565b90565b9091506020813d602011610557575b8161054760209383610420565b810103126101a95751905f6104fd565b3d915061053a565b6040513d5f823e3d90fd5b505f90565b9190820391821161046957565b610584610669565b908115610663576040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561055f575f9161062d575b50916105f06105f59261052894610456565b61047d565b61271061062661ffff7f00000000000000000000000000000000000000000000000000000000000000001683610456565b049061056f565b9290506020833d60201161065b575b8161064960209383610420565b810103126101a95791516105f06105de565b3d915061063c565b50505f90565b6040516318160ddd60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa91821561055f575f92610725575b50906020602492604051938480926370a0823160e01b82523060048301525afa90811561055f575f916106ef575b610528925061056f565b90506020823d60201161071d575b8161070a60209383610420565b810103126101a9576105289151906106e5565b3d91506106fd565b91506020823d602011610752575b8161074060209383610420565b810103126101a95790519060206106b7565b3d9150610733565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146107a95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b91908215610a6a576107c8610669565b6040516370a0823160e01b815230600482015290937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602082602481865afa91821561055f575f92610a35575b50602492610832602092303384610a79565b6040516370a0823160e01b815230600482015293849182905afa801561055f575f90610a01575b610863925061056f565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381169590939291906020826024818a5afa801561055f5783925f916109c8575b506108cd926105f091610456565b9061090a61271061090261ffff7f00000000000000000000000000000000000000000000000000000000000000001685610456565b04809361056f565b9586156109b9576040519363a9059cbb60e01b5f5260018060a01b031694856004528760245260205f60448180855af19060015f511482161561099a575b5084604052156109885750825284602083015260408201527f764aeeb2d1ec3f2945d6486e2f7e3fae9ac5fe11aa56b7a9d90c92212e33050c60603392a3565b635274afe760e01b5f5260045260245ffd5b60018215166109b0573b15153d1516165f610948565b853d5f823e3d90fd5b6304c4857b60e51b5f5260045ffd5b9250506020823d6020116109f9575b816109e460209383610420565b810103126101a95790518291906108cd6108bf565b3d91506109d7565b506020823d602011610a2d575b81610a1b60209383610420565b810103126101a9576108639151610859565b3d9150610a0e565b9091506020813d602011610a62575b81610a5160209383610420565b810103126101a95751906024610820565b3d9150610a44565b631f2a200560e01b5f5260045ffd5b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af19060015f5114821615610aea575b6040525f60605215610aca5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b906001811516610b0257823b15153d15161690610abb565b503d5f823e3d90fdfea2646970667358221220c7652dc434f4c76cba339f30595bd9c9147635ab808804583c5696eeda684b0764736f6c634300081a0033000000000000000000000000c21538328c2b4db8d215e8d646ac1d1e14ca777700000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b500000000000000000000000000000000000000000000000000000000000000c8
0x60806040526004361015610011575f80fd5b5f803560e01c8063046b18fc146103f057806314441cb6146103ac57806340695363146103685780634cdad5061461034a5780637bde82f21461031c5780638fc47093146102fa578063b086726b14610200578063d68002f3146101c1578063d7cf46c51461010f5763f14faf6f14610088575f80fd5b3461010c57602036600319011261010c5760043580156100fd576100ce8130337f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b5610a79565b6040519081527f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e54360203392a280f35b631f2a200560e01b8252600482fd5b80fd5b503461010c578060031936011261010c576040516370a0823160e01b8152306004820152906020826024817f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b56001600160a01b03165afa9081156101b5579061017e575b602090604051908152f35b506020813d6020116101ad575b8161019860209383610420565b810103126101a95760209051610173565b5f80fd5b3d915061018b565b604051903d90823e3d90fd5b503461010c578060031936011261010c57602060405161ffff7f00000000000000000000000000000000000000000000000000000000000000c8168152f35b346101a95760c03660031901126101a95760043561021c61040a565b6064359060ff82168092036101a95761023361075a565b7f000000000000000000000000c21538328c2b4db8d215e8d646ac1d1e14ca77776001600160a01b031692833b156101a9575f8060209560e46102be96604051948593849263d505accf60e01b84523360048501523060248501528860448501526044356064850152608484015260843560a484015260a43560c48401525af16102ea575b506107b8565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051908152f35b5f6102f491610420565b5f6102b8565b346101a9575f3660031901126101a9576020610314610669565b604051908152f35b346101a95760403660031901126101a95760206102be61033a61040a565b61034261075a565b6004356107b8565b346101a95760203660031901126101a957602061031460043561057c565b346101a9575f3660031901126101a9576040517f000000000000000000000000c21538328c2b4db8d215e8d646ac1d1e14ca77776001600160a01b03168152602090f35b346101a9575f3660031901126101a9576040517f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b56001600160a01b03168152602090f35b346101a9575f3660031901126101a957602061031461049b565b602435906001600160a01b03821682036101a957565b90601f8019910116810190811067ffffffffffffffff82111761044257604052565b634e487b7160e01b5f52604160045260245ffd5b8181029291811591840414171561046957565b634e487b7160e01b5f52601160045260245ffd5b8115610487570490565b634e487b7160e01b5f52601260045260245ffd5b6104a3610669565b801561056a576040516370a0823160e01b8152306004820152906020826024817f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b56001600160a01b03165afa91821561055f575f9261052b575b50670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610469576105289161047d565b90565b9091506020813d602011610557575b8161054760209383610420565b810103126101a95751905f6104fd565b3d915061053a565b6040513d5f823e3d90fd5b505f90565b9190820391821161046957565b610584610669565b908115610663576040516370a0823160e01b81523060048201526020816024817f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b56001600160a01b03165afa90811561055f575f9161062d575b50916105f06105f59261052894610456565b61047d565b61271061062661ffff7f00000000000000000000000000000000000000000000000000000000000000c81683610456565b049061056f565b9290506020833d60201161065b575b8161064960209383610420565b810103126101a95791516105f06105de565b3d915061063c565b50505f90565b6040516318160ddd60e01b81527f000000000000000000000000c21538328c2b4db8d215e8d646ac1d1e14ca77776001600160a01b0316602082600481845afa91821561055f575f92610725575b50906020602492604051938480926370a0823160e01b82523060048301525afa90811561055f575f916106ef575b610528925061056f565b90506020823d60201161071d575b8161070a60209383610420565b810103126101a9576105289151906106e5565b3d91506106fd565b91506020823d602011610752575b8161074060209383610420565b810103126101a95790519060206106b7565b3d9150610733565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146107a95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b91908215610a6a576107c8610669565b6040516370a0823160e01b815230600482015290937f000000000000000000000000c21538328c2b4db8d215e8d646ac1d1e14ca77776001600160a01b03169190602082602481865afa91821561055f575f92610a35575b50602492610832602092303384610a79565b6040516370a0823160e01b815230600482015293849182905afa801561055f575f90610a01575b610863925061056f565b6040516370a0823160e01b81523060048201527f00000000000000000000000092fd66527192e3e61d4ddd13322aa222de86f9b56001600160a01b0381169590939291906020826024818a5afa801561055f5783925f916109c8575b506108cd926105f091610456565b9061090a61271061090261ffff7f00000000000000000000000000000000000000000000000000000000000000c81685610456565b04809361056f565b9586156109b9576040519363a9059cbb60e01b5f5260018060a01b031694856004528760245260205f60448180855af19060015f511482161561099a575b5084604052156109885750825284602083015260408201527f764aeeb2d1ec3f2945d6486e2f7e3fae9ac5fe11aa56b7a9d90c92212e33050c60603392a3565b635274afe760e01b5f5260045260245ffd5b60018215166109b0573b15153d1516165f610948565b853d5f823e3d90fd5b6304c4857b60e51b5f5260045ffd5b9250506020823d6020116109f9575b816109e460209383610420565b810103126101a95790518291906108cd6108bf565b3d91506109d7565b506020823d602011610a2d575b81610a1b60209383610420565b810103126101a9576108639151610859565b3d9150610a0e565b9091506020813d602011610a62575b81610a5160209383610420565b810103126101a95751906024610820565b3d9150610a44565b631f2a200560e01b5f5260045ffd5b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af19060015f5114821615610aea575b6040525f60605215610aca5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b906001811516610b0257823b15153d15161690610abb565b503d5f823e3d90fdfea2646970667358221220c7652dc434f4c76cba339f30595bd9c9147635ab808804583c5696eeda684b0764736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| FLOOR | 366,767,549.002563 | $0.00000687 | $2,518.63 | |
| DIH | 1 | $0.0000102 | $0 | |
iShares 0-3 Month Treasury Bond • Robinhood Token (SGOV) | SGOV | 48.980452 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xd4255a…3a85cd | redeem | 25,252,885 | 16 days agoSat, 01 Aug 2026 18:25:52 UTC | 0xa80f…dca9 | IN | FloorVaultV2 | $0.000 ETH | 0.00000355 | |
| 0x577261…ddb1e4 | redeem | 22,591,361 | 19 days agoWed, 29 Jul 2026 16:18:35 UTC | 0xab1e…4dd9 | IN | FloorVaultV2 | $0.000 ETH | 0.00000370 | |
| 0x9f2b06…99760e | redeem | 16,730,668 | 26 days agoWed, 22 Jul 2026 20:58:01 UTC | 0xfc19…ae75 | IN | FloorVaultV2 | $0.000 ETH | 0.00001942 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xd4255a…3a85cd | 16 days agoSat, 01 Aug 2026 18:25:52 UTC | 0x764aee…050c | [0] 0x000000000000…bf0ddca9 [1] 0x000000000000…bf0ddca9 data: 0x000000000000000000…d797e310 |
| 0x577261…ddb1e4 | 19 days agoWed, 29 Jul 2026 16:18:35 UTC | 0x764aee…050c | [0] 0x000000000000…c3bb4dd9 [1] 0x000000000000…c3bb4dd9 data: 0x000000000000000000…ed6dde2a |
| 0x9f2b06…99760e | 26 days agoWed, 22 Jul 2026 20:58:01 UTC | 0x764aee…050c | [0] 0x000000000000…b49fae75 [1] 0x000000000000…b49fae75 data: 0x000000000000000000…c4e7129f |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||