How PermaFund works
Principal forever. Impact every day.
Permanent principal
Every PermaFund endowment records an accounted principal that can only increase. Deposits raise it. The 10% compound portion of each harvest raises it. Nothing decreases it. There is nowithdraw()function anywhere in the endowment or factory contracts — creator, beneficiary, treasury, and platform operators cannot recover deposited principal.
Harvest mechanics
Yield is defined as:
yield = max(strategy.convertToAssets(strategy.balanceOf(endowment)) - accountedPrincipal, 0)
Anyone can call harvest(). The endowment withdraws the yield from the ERC-4626 strategy and distributes it atomically.
The 85 / 10 / 5 split
- 85% is transferred to the beneficiary.
- 10% is re-deposited into the strategy and added to accounted principal. It becomes permanent.
- 5% is transferred to the protocol treasury.
The split is immutable per endowment — it is baked in at construction and cannot be changed.
Asset classes
PermaFund supports multiple asset classes, each with its own factory and ERC-4626 yield strategy. The endowment logic (permanent principal, 85/10/5 split, permissionless harvest) is identical across classes — only the underlying token and vault differ.
Dollar-pegged stablecoin principal. Yield is denominated in USDG and streamed to the beneficiary. Best for predictable, low-volatility grant flows.

Tokenized-equity principal (a wrapped S&P-style basket on testnet). The basket stays woven forever — only dividend / rebalance yield leaves, split 85/10/5 like every other fund.
Configured classes on Robinhood Chain Testnet: USDG (stable), tSPY (equity). Each class exposes its own factory address — see Network details below.
Risks
Permanent does not mean risk-free. PermaFund is unaudited experimental software.
- Smart-contract risk in the endowment and factory contracts.
- Strategy risk: the underlying ERC-4626 vault may lose value.
- Current strategy value can fall below accounted principal. In that case, harvestable yield is zero and no distribution happens until the strategy recovers.
- Robinhood Chain reorg or bridge risk affecting the underlying asset (USDG, tSPY, etc.).
- Equity classes (tSPY) carry market risk — principal denominated in a stock basket can swing in fiat terms even while share count stays permanent.
Network details
- RPC
- https://rpc.testnet.chain.robinhood.com
- Explorer
- https://explorer.testnet.chain.robinhood.com
- USDG factory
- Not deployed
- tSPY factory
- Not deployed
- RPC
- https://rpc.mainnet.chain.robinhood.com
- Explorer
- https://robinhoodchain.blockscout.com
- USDG factory
- Not deployed
Development defaults to Robinhood Chain Testnet. Mainnet is gated by the VITE_ENABLE_MAINNET environment flag and requires a real USDG-compatible ERC-4626 strategy address in contracts/deployments/4663.json.
FAQ
max(strategyValue - accountedPrincipal, 0). If strategy value is below accounted principal, harvestable is zero until the strategy recovers.Currently connected chain: Robinhood Chain Testnet (ID 46630).
