Documentation
Reward Streams
ERC-5D distributes rewards to NFT holders through two independent and simultaneous streams: ETH accumulated from trading activity, and PAWN tokens from the Phalanx reserve. Both streams are denominated in different assets, distributed in the same epoch transaction, and weighted by the same tier rotation weights. Rewards accumulate in on-chain accumulators; holders must call claim() on PawnTreasury within 24 hours of each epoch distribution to receive them.
Stream 1: ETH from trading
Every trade on the liquidity pool incurs a tax that is routed to the PawnTreasury contract as ETH. The tax rate is 10% for the first 15 buys, then drops permanently to 3%. Wallet-to-wallet transfers are not taxed. This ETH accumulates in the Treasury over the course of each epoch. When the epoch is distributed, the accumulated ETH for that epoch is split proportionally across all qualifying NFT holders, weighted by the tier rotation weight in effect for each holder's tier.
The ETH stream is inherently variable: it depends on the volume of trading activity during the epoch. High-volume epochs produce more ETH rewards; quiet epochs produce less. This variability is a direct reflection of protocol activity and creates a natural alignment between holder rewards and ecosystem growth.
ETH rewards are paid in native Ether when a holder calls claim() on PawnTreasury. No wrapping, no intermediate token. The ETH is transferred on-chain in the same transaction as the PAWN rewards. Rewards do not auto-pay; call claim() within the 24-hour window after each epoch distribution. See Epochs & Claiming for full details.
Stream 2: PAWN from the Phalanx reserve
The Phalanx is the on-chain PAWN reserve held inside the PawnTreasury contract (tracked as phalanxReserve). It is seeded via the owner calling feedPhalanx(), which transfers PAWN into the treasury. Each epoch, the Phalanx distributes a configured quantity of PAWN to qualifying NFT holders, using the same weighted-by-tier accounting as the ETH stream.
The emission model is a flat fixed amount per epoch, set by the owner via setPhalanxEmission(). Each epoch releases exactly min(phalanxEmissionPerEpoch, phalanxReserve) PAWN. The rate does not decay automatically over time. The owner can adjust the emission rate at any time. When the reserve balance reaches zero, PAWN emissions stop until the owner tops up the reserve again.
The remaining Phalanx balance is readable on-chain at any time. All PAWN in the Phalanx is available for distribution.
PAWN rewards are distributed as standard ERC-20 token transfers on claim. They arrive in the claiming wallet as liquid PAWN tokens, immediately tradeable, transferable, or held for continued reward participation if converted into whole-token NFT-triggering balances.
Reward accounting model
Both reward streams use a MasterChef-style per-holder accumulator for O(1) computation at claim time. This means reward calculation does not require iterating over all holders. The contract computes each holder's entitlement from two stored values: the per-NFT accumulated reward at distribution time, and the holder's NFT count at that moment.
At each epoch distribution, the contract snapshots the total weighted NFT count across all active holders and computes the per-NFT reward unit (total ETH and total PAWN divided by total weighted NFT count). This per-NFT reward unit is recorded for each epoch. Individual holder entitlements are then computed on demand as: holder_weighted_nfts × per_nft_reward_unit.
The weighting factor for each holder is the sum of their tier rates across their NFT holdings in the current epoch. A holder with 2 Tier I NFTs and 1 Tier IV NFT in an epoch where Tier I carries 0.5% and Tier IV carries 1% has a total weight of (2 × 0.5) + (1 × 1) = 2.
Viewing reward data
Real-time pending rewards for any address are available through the pendingRewards(address) view function on PawnTreasury. This function returns the current pending ETH and PAWN as a tuple of uint256 values, accounting only for epochs within their 24-hour claim windows.
The dashboard at /app displays pending rewards for connected wallets in real time, cross-referencing the live contract view with the indexed API data for accuracy. Historical claim data is available through the claim history table on each holder's public profile.