Documentation Index
Fetch the complete documentation index at: https://docs.areal.finance/llms.txt
Use this file to discover all available pages before exploring further.
UpdateMay 3, 2026
Overview
The Yield & Reward Distribution architecture page and the matching block in the Architecture Overview are rewritten to describe the actual OT-revenue distribution flow that the contracts implement. The Initial Release version of these pages described an entirely different mechanism (50 / 50 split into RWT and USDY, deployed into the RWT/USDY master pool for 12 months, daily withdrawal) that does not exist in any contract — neither incontracts/yield-distribution.mdx, nor in contracts/ownership-token.mdx, nor in the on-chain code.
This is a docs-catches-up-to-code alignment, not a protocol change. The actual flow has been documented contract-by-contract for some time (in contracts/ownership-token.mdx and contracts/yield-distribution.mdx); only the high-level architecture pages were stuck on the old model.
What the actual flow is
After this rewrite, both pages describe the flow as it really runs:- OT
distribute_revenueis called by a permissionless crank when the cooldown and minimum-balance conditions are met. - 0.25% Areal protocol fee is deducted first (to the Areal Treasury USDC ATA).
- The remainder is split per the project’s configured destinations (defaults: 70 / 20 / 10, configurable via
batch_update_destinations):- 70% → per-OT YD Accumulator (USDC), the staging account that funds the merkle reward stream
- 20% → the project’s OT Treasury (multi-token PDA wallet, governed by Futarchy)
- 10% → routed into the Liquidity Nexus via a crank-driven
nexus_deposit(USDC lane)
yield_distribution::convert_to_rwtis called by a permissionless crank. In a single atomic instruction it: (a) swaps USDC into RWT on the Native DEX up to the NAV price, (b) mints the remainder viarwt_engine::mint_rwtat NAV, (c) deducts a 0.25% YD protocol fee in RWT, (d) deposits the rest into the per-OT reward vault and extends the merkle distributor’s vesting state.- Per-second vesting. Each holder’s claimable RWT vests linearly over
vesting_period_secs(default 365 days). Each new fund event extends vesting on the unvested remainder; previously vested amounts stay claimable. - Holders claim at any time via a merkle proof. The off-chain publisher uses a per-deposit snapshot algorithm so that each fund event is allocated only to holders who held OT at the slot of that event — front-run-resistant by construction.
What changed on the pages
architecture/yield-and-reward-distribution.mdx
How It WorksSteps — fully rewritten. The old “50/50 RWT+USDY into master pool for 12 months → daily withdrawal” flow is replaced with the actual OTdistribute_revenue→convert_to_rwt→ per-OT reward vault → merkle-claim with per-second vesting flow. Five steps, each grounded in the contract instruction it represents.- Mermaid diagram — replaced. The new diagram shows the 0.25% Areal fee, the 70/20/10 fan-out, the
convert_to_rwtarrow into the per-OT reward vault, and the merkle-claim arrow to OT holders. No-Staking Architecturecards — kept but updated. “Real-time tracking” → “Per-event tracking” (snapshots per fund event); “Per-second accrual” → “Per-second vesting”.Yield Amplification Through Liquiditysection — removed. It described amplification from the (non-existent) 50/50 master-pool deployment. The actual flow has no such amplification — RWT in the reward vault does not earn additional yield while vesting; the reward is fixed at conversion time.- New
Per-Deposit Snapshot Fairnesssection — explains why a naive current-balance snapshot would be front-runnable around announced distributions, and how per-deposit snapshots eliminate that vector. Cross-link to the Yield Distribution contract for the full algorithm. Summarycards — updated to reflect the real model: “12-month deployment” → “70/20/10 split” + “USDC → RWT conversion”; “Yield amplification” / “Daily distribution” → “Per-second vesting” + “Front-run-resistant”.
architecture/overview.mdx — Yield & Reward Distribution block
- Lead paragraph — updated. “Tracks balances and accrues rewards every second” → “tracks balances at each fund event and accrues rewards per second” (more precise).
- Process paragraph — replaced end-to-end. The old “split 50/50 into RWT and USDY → master pool for 12 months → daily withdrawal” is replaced with the actual 0.25% Areal fee + 70/20/10 split +
convert_to_rwt+ per-OT reward vault + per-second vesting flow. - Closing paragraph — replaced. The old amplification claim is replaced with the per-deposit snapshot fairness property. The unification-in-RWT property is preserved.
- The deep-link card description is updated to reflect the new section structure.
Why the previous pages were wrong
The Initial Release versions of these two pages described a design that was never implemented:- No 50/50 RWT+USDY split exists in any contract.
convert_to_rwtswaps USDC up to NAV and mints the remainder — there is no USDY purchase step. - No master-pool LP deployment for distribution exists. The only LP positions on the master pool are owned by the Liquidity Nexus, funded by the 10% revenue slice (not 100% of revenue), and they are managed by the Nexus Manager bot — not retired after 12 months.
- No daily withdrawal exists. The reward mechanism is per-second vesting of RWT in a per-OT reward vault, claimed by holders via merkle proof, not periodically pushed.
- No yield amplification during distribution exists. RWT in the reward vault does not earn additional yield while vesting; the reward amount is fixed at the time
convert_to_rwtruns.
ownership-token, yield-distribution, bots/off-chain-services all describe the actual flow). This entry brings the architecture-level summary in line with them.
Unchanged
- The no-staking property — holders earn by holding, no contracts to interact with.
- The unification of all OT-project payouts in RWT.
- The aggregated Portfolio view on areal.finance.
- The 0.25% Areal protocol fee on
distribute_revenue(always deducted first).
Migration
This is a documentation alignment, not a protocol or behavioural change. Implementations and integrators should:- Stop modelling distributions as a 50 / 50 RWT+USDY deployment with a fixed lock period.
- Treat the OT-revenue distribution flow as a 70 / 20 / 10 split of USDC, with the 70% portion converted to RWT via
convert_to_rwtand merkle-distributed to holders with per-second vesting. - Use a per-deposit snapshot algorithm in the publisher (already documented in detail in Yield Distribution contract — Merkle Tree Construction).
Related documents
- Yield & Reward Distribution — the architecture page rewritten by this entry
- Architecture Overview — the overview block rewritten by this entry
- Ownership Token contract —
distribute_revenueand the 70/20/10 split - Yield Distribution contract —
convert_to_rwt, reward vault, merkle distributor, and the per-deposit snapshot algorithm - Off-Chain Services — Revenue Crank, Convert & Fund Crank, Yield Claim Crank, Merkle Publisher