How RNFT works
A token's creator fees are routed to an on-chain vault, and any NFT holder can burn their item for an exact pro-rata share of it. This page covers every mechanic behind that: the fee routing, the vault math, the full launch to redeem lifecycle, and why it's fully non-custodial.
01 · START
Overview
RNFT is an NFT protocol built on top of pons.family (Robinhood Chain). Every token launched through it arrives with a generated NFT collection attached, and the trading fees that token earns become that collection's redeemable floor -- a balance of ETH that any holder can withdraw their share of, at any time, by burning their NFT.
Nothing about that sentence is a promise. It is a consequence of where the fees are pointed on-chain, and of arithmetic that a holder can check for themselves. The rest of this page explains both, in order.
THE INPUT
Trading fees
pons.family creator fees on every buy and sell
THE STORE
A collection vault
set as fee wallet at launch; immutable on V1
THE EXIT
Burn to redeem
vault / circulating, paid in ETH
02 · START
The core mechanic
pons.family accrues creator fees to a fee wallet address set at token creation time. That is the entire hinge of this design. Most launchpads set the fee wallet to the deployer's personal wallet. RNFT sets it to the collection's vault contract.
The two highlighted stages are the ones nobody can redirect; everything left of them is ordinary trading, everything right of them is arithmetic.
Because the fee wallet is set at token creation and is immutable on V1, the destination of the fee stream is fixed the moment the token exists. The deployer cannot change it afterwards. Neither can RNFT. The only account that can ever claim from the fee locker is the vault itself, which is why sweeping is safe to leave open to anybody.
WHY THIS IS THE WHOLE DESIGN
Every other property of the protocol falls out of this one choice. The floor is real because the ETH is really there. The floor rises because trading really accrues fees. Sweeping is permissionless because the money has nowhere else it could go.
03 · START
Lifecycle
- Creator deploys vault + collection via the RNFT factory
- Creator launches token on pons.family with vault as fee wallet
- Trading begins; 70% of swap fees flow to the vault as WETH + tokens
- Anyone calls
sweep()to credit new WETH to the internal balance (5% protocol fee deducted) - Users burn tokens to mint NFTs from the collection
- Each NFT's redeemable value = vault balance / circulating NFTs
- Any holder burns their NFT to atomically receive their share
04 · MECHANICS
The vault
RNFTVault is a Solidity contract deployed per collection. It receives WETH and token fees passively from the pons.family fee locker (via Uniswap V3 collect()). It tracks its balance using internal accounting, not address(this).balance.
The sweep()function reads the actual WETH balance, subtracts what's already accounted for, deducts the protocol fee from the new amount, and credits the remainder to the internal balance. This is the only way WETH enters the redeemable pool.
function _sweep() internal {
uint256 actualWETH = IERC20(weth).balanceOf(address(this));
uint256 totalAccountedFor = _internalWETHBalance + _accruedProtocolFees;
if (actualWETH > totalAccountedFor) {
uint256 newWETH = actualWETH - totalAccountedFor;
uint256 protocolCut = (newWETH * protocolFeeBps) / 10000;
_accruedProtocolFees += protocolCut;
_internalWETHBalance += (newWETH - protocolCut);
}
}The creator can withdraw accumulated tokens (the paired token, not WETH) via withdrawTokens(). They cannot withdraw WETH. The protocol fee recipient can withdraw accrued protocol fees. The redeemable pool is untouchable by anyone except NFT holders burning their NFTs.
05 · MECHANICS
Backed floor math
The backed floor price is:
internalWETHBalance is the WETH credited by sweeps minus WETH paid out by redemptions. totalSupply is the number of NFTs currently in circulation (minted minus burned). Both are on-chain values anyone can read.
Division rounds down (Solidity default). This means each redeemer gets slightly less than exact; the dust stays in the vault and benefits remaining holders. Over many redemptions, this dust accumulates -- the last redeemer always gets everything remaining.
06 · MECHANICS
The invariant
Redeeming preserves the floor for everyone else. If the vault holds V and there are c NFTs circulating, each worth V/c:
Before: floor = V / c
One holder redeems: receives V/c, vault now has V - V/c = V(c-1)/c
After: floor = [V(c-1)/c] / (c-1) = V/c
The floor is unchanged. In practice it may tick up by a few wei due to rounding, but it never decreases from redemption. This is mathematically guaranteed by the pro-rata formula.
08 · MECHANICS
Fees
- pons.family split: 70% of swap fees go to the fee wallet (the vault), 30% to the pons.family protocol. 1% fee on every trade.
- RNFT protocol fee: 5% of newly swept WETH. Deducted on each
sweep()call. Capped at 20% max. Configurable per vault at deployment. - Effective rate: of every 1 ETH in swap fees, 0.70 goes to the vault, 0.035 (5% of 0.70) goes to the RNFT protocol, leaving 0.665 for NFT holders.
09 · FLOWS
Launching
- Go to the Launch page and fill in: token address, mint price, max supply, name, symbol
- Click "Deploy Collection" and confirm the transaction
- The factory deploys two contracts:
RNFTVaultandRNFTCollection - Copy the vault address from the success screen
- On pons.family, set the vault address as your token's fee wallet
- Trading fees now flow to your vault automatically
10 · FLOWS
Minting
Minting burns a fixed amount of the paired token. No ETH enters the vault from minting. The tokens are transferred to the dead address (0x...dEaD) and permanently destroyed.
This is intentional: the vault is funded exclusively by trading fees, not by mint proceeds. Minting is a supply sink for the token, which may increase trading activity and therefore fees.
MINT DILUTION
Each new mint increases totalSupply without adding WETH, so the floor per NFT decreases. Once the collection is minted out (max supply reached), no further dilution is possible and the floor can only increase as fees accumulate.
11 · FLOWS
Sweeping
sweep()is permissionless. Anyone can call it. It reads the vault's actual WETH balance, compares it to what's already accounted for, and credits the difference (minus the protocol fee) to the internal balance.
Sweep is called automatically on every mint and redeem. The keeper bot also calls it periodically to keep the displayed floor price current between user interactions.
12 · FLOWS
Redeeming
Burning an NFT pays out internalWETHBalance / totalSupply in WETH to the holder. This happens in one atomic transaction:
sweep()is called to credit any pending WETH- Payout is calculated (rounds down)
- The NFT is burned (totalSupply decreases)
- WETH is transferred from vault to the holder
No server signature is needed. No custodian approves it. The contract enforces it. This is the key improvement over PNFT's v1, which requires server-side redemption.
13 · REFERENCE
Worked example
# Setup
mint_price = 1000 tokens
max_supply = 10
protocol_fee = 5%
# Alice and Bob mint
Alice burns 1000 tokens -> NFT #1
Bob burns 1000 tokens -> NFT #2
supply = 2, vault = 0 ETH, floor = 0
# Trading generates 10 ETH in fees
vault receives 10 ETH (WETH)
sweep(): protocol takes 0.5 ETH (5%), internal = 9.5 ETH
floor = 9.5 / 2 = 4.75 ETH per NFT
# Alice redeems
Alice burns NFT #1, receives 4.75 ETH
vault internal = 4.75 ETH, supply = 1
floor = 4.75 / 1 = 4.75 ETH (unchanged!)
# More fees arrive: 3 ETH
sweep(): protocol takes 0.15 ETH, internal += 2.85
vault internal = 7.60 ETH, supply = 1
floor = 7.60 ETH
# Bob redeems
Bob burns NFT #2, receives 7.60 ETH
vault = 0, supply = 0
# Accounting check
Total in: 13 ETH fees
Protocol: 0.65 ETH
Alice: 4.75 ETH
Bob: 7.60 ETH
Sum: 13.00 ETH ✓
14 · REFERENCE
Architecture
Factory deploys vault + collection pairs. Vault holds WETH and tracks the floor. Collection is ERC-721 with mint (burn tokens) and redeem (burn NFT, receive ETH).
15 · REFERENCE
Trust model
What is trustless vs what requires trust:
Fully on-chain (trustless)
- Fee accrual (enforced by pons.family)
- Sweep accounting (anyone can call, math is public)
- Redemption (atomic burn + pay, no server signature)
- Floor calculation (read-only view function)
- Protocol fee cap (max 20%, enforced in constructor)
Requires trust
- Token-to-WETH swaps (owner-only, could set bad slippage)
- Art generation (off-chain, IPFS pinning)
- Frontend availability (can always interact via contract directly)
VS PNFT
PNFT v1 requires a server-held master secret for redemption. Vault keypairs are derived from that secret. Redemption is executed server-side. RNFT has no server component for any financial operation. Every ETH movement is an on-chain transaction the user signs.
16 · REFERENCE
Glossary
17 · REFERENCE
FAQ
Can the creator steal the vault's ETH?
No. The creator can withdraw accumulated tokens (the paired token) but not WETH. The WETH is only accessible via NFT redemption or protocol fee withdrawal.
What happens if nobody sweeps?
The WETH sits in the vault's ERC-20 balance but isn't counted toward the floor until sweep() is called. Sweep is called automatically on every mint and redeem, so the floor updates whenever anyone interacts.
Can I redeem if the floor is 0?
Yes. The transaction succeeds but pays out 0 ETH. Your NFT is still burned.
What if someone sends WETH directly to the vault?
It inflates the floor for all holders. The sender loses the WETH, holders benefit. This is a donation, not an exploit.
Is the code audited?
The contracts have 56 passing tests including fuzz tests and reentrancy tests. No formal audit has been conducted yet. The contracts are verified on Blockscout.
What chain is this on?
Robinhood Chain, an Arbitrum Orbit L2 (chain ID 4663 mainnet, 46630 testnet). Gas fees are very low.