A lump-sum deposit, a rate fixed at deposit, and a transferable position.
A FixVault is created with a fixed amount and one of five terms: three months, six months, one year, 1.6 years, or two years. Each term carries its own rate, disclosed at the moment the vault is created and locked to that specific vault permanently — even if the protocol’s default rate for that term changes later, an already-created vault keeps the rate it was created with.
Depositing mints an ERC-721 token representing the position — principal, rate, and maturity date all attached to that specific token. It can be held to maturity, sent to another wallet, or sold; the vault itself keeps running unaffected by who holds the position when it matures. Token IDs are numbered globally across every FixVault ever deployed, not restarted per vault.
A FixVault is locked for the first half of its term — no exit is possible before that point, full stop. After the halfway mark, an early exit is allowed but forfeits the entire reward and applies a 5% fee on principal. Holding to maturity is the only way to receive the disclosed rate in full.
A FixVault can be created privately, for a single saver’s own lump sum, or publicly, allowing other participants to join the same vault under the same disclosed terms. A public vault’s join window is time-gated against its total term: the first 25% is free to join, the next 5% charges a 1% late-join fee (deducted from the joiner’s deposit, paid to the creator), and after 30% of the term has elapsed the vault closes to new joiners entirely.
Once a position matures, its holder can claim principal and reward independently, in either order. Reward is only payable to the extent the vault’s reward pool has actually been funded via fundRewards() — a claim reverts rather than paying out unfunded value.