Documentation

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.

StableUSDG

Dollar-pegged stablecoin principal. Yield is denominated in USDG and streamed to the beneficiary. Best for predictable, low-volatility grant flows.

EquitytSPY
Copper basket of tokenized stock tickers

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

Robinhood Chain Testnet
Chain ID 46630
RPC
https://rpc.testnet.chain.robinhood.com
Explorer
https://explorer.testnet.chain.robinhood.com
USDG factory
Not deployed
tSPY factory
Not deployed
Robinhood Chain
Chain ID 4663
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

What asset classes can I use as principal?
Two on testnet today: USDG (stable) and tSPY (tokenized equity basket). Each has its own factory + ERC-4626 strategy; more classes can be added by deploying a new factory pointed at a compliant vault.
Can I ever get my deposit back?
No. Deposits become permanent principal. Only yield above accounted principal is ever paid out.
What if the strategy loses money?
Harvestable yield is max(strategyValue - accountedPrincipal, 0). If strategy value is below accounted principal, harvestable is zero until the strategy recovers.
Who can call harvest?
Anyone. Harvest is permissionless — a keeper bot, the beneficiary, or a passing stranger can trigger a distribution.
Is PermaFund audited?
No. Do not use it with funds you are not willing to permanently commit.
Why doesn't the current strategy value equal principal?
The strategy earns yield, so it should usually be higher. It can also be lower during drawdowns. Both numbers are shown separately on each fund page.

Currently connected chain: Robinhood Chain Testnet (ID 46630).