Redemption & Withdrawal Flows
Overview
Section titled “Overview”Every investor position has three actions:
- Hold
- Redeem behavior (exercise principal protection)
- Withdraw behavior (claim FT and release protection)
In the current FT codebase, positions are ERC-721 pFT NFTs with per-position accounting. Flows in this document map directly to current behavior while preserving the product framing.
The Three Actions
Section titled “The Three Actions”| Action | Investor gives up | Investor receives | Capital outcome | Position status |
|---|---|---|---|---|
| Hold | Nothing | Nothing | Capital stays in strategy | Active |
Redeem behavior (divest) | Position FT amount (burned from position) | Collateral back | Collateral leaves active backing | Exercised for that amount |
Withdraw behavior (withdrawFT) | Position FT amount (burned from position) | FT tokens | Collateral moves to capitalDivesting | Forfeited for that amount |
All three actions are available without discretionary approval. Partial amounts are supported for redeem and withdraw behavior.
Hold is the default state.
While holding:
- Collateral remains deployed in yield strategy via wrapper
pFTremains in wallet and is transferable as ERC-721- Position retains both upside exposure and principal-protection behavior
- Yield continues to accrue in strategy and follows configured distribution
Redeem (Exercise PUT Behavior)
Section titled “Redeem (Exercise PUT Behavior)”The investor exits to collateral by using divest or divestUnderlying.
Step by step
Section titled “Step by step”- Investor calls redeem path on a position with
idand FTamount. - Collateral out is computed with on-chain conversion math from position parameters.
- Position FT amount is reduced (and position burns if fully exhausted).
- Wrapper withdraws collateral from strategy path.
- Collateral is sent to investor.
- FT allocation for that position amount is released back to the available pool (can be allocated to future investors or reclaimed by the project).
- Global accounting updates (
ftAllocated,collateralSupply).
Current conversion formula (implementation)
Section titled “Current conversion formula (implementation)”From PutManager.collateralFromFT:
collateralOut = ftAmount * (1e8^2 * 10^tokenDecimals) / (strike * ftPerUSD * 1e18)Where strike and ftPerUSD are position/oracle context values used by contract logic.
Alternative path: underlying protocol shares
Section titled “Alternative path: underlying protocol shares”divestUnderlying can return strategy position tokens (for example Aave aToken form) instead of underlying collateral, depending on strategy support.
Key properties
Section titled “Key properties”- Always available — even if the raise is paused, even if the project token price is zero, even if the project team disappears. Redemption is permissionless and on-chain.
- Partial redemption supported
- Oracle is not consulted during execute step in current formula path
- Circuit breaker can throttle outflow velocity through wrapper checks
Redemption is proportional, not fixed-dollar. You get back your share of the pool in deposit asset terms. For stablecoin raises (USDC), this is effectively identical to getting your dollars back. For volatile asset raises (WETH), you get back WETH — which may be worth more or less in USD than when you deposited.
Withdraw (Claim FT, Forfeit Protection)
Section titled “Withdraw (Claim FT, Forfeit Protection)”The investor takes project FT exposure and gives up principal protection for that withdrawn amount.
Prerequisite
Section titled “Prerequisite”transferable must be enabled on PutManager.
Step by step
Section titled “Step by step”- Investor calls
withdrawFT(id, amount). - Collateral equivalent is computed with same
collateralFromFTformula. - Position FT amount is reduced by requested amount.
- FT tokens are transferred to investor wallet.
- Equivalent collateral is tracked under
capitalDivesting[token]. - Admin can later pull divested capital for buyback/burn operations.
What the investor gets
Section titled “What the investor gets”- Freely held FT tokens for the withdrawn amount
What the investor gives up
Section titled “What the investor gives up”- Principal protection on the withdrawn amount
- Ability to redeem that same amount later
Key properties
Section titled “Key properties”- Gated by
transferable - Irreversible for withdrawn amount
- Partial withdraw supported
- Feeds buyback pathway via released capital accounting
Pool and Accounting Dynamics
Section titled “Pool and Accounting Dynamics”Redeem behavior
Section titled “Redeem behavior”ftAllocateddecreases by redeemed FT amountcollateralSupply[token]decreases by converted collateral amount
Withdraw behavior
Section titled “Withdraw behavior”ftOfferingSupplyandftAllocateddecrease by withdrawn FT amountcapitalDivesting[token]increases by converted collateral amount
The redemption rate remains stable through normal operations. The only scenario where it could deviate is if yield strategy losses reduce the backing collateral.
New deposits
Section titled “New deposits”- Increase
ftAllocated - Increase
collateralSupply[token] - Mint new
pFTpositions
Transfer and Secondary Market Dynamics
Section titled “Transfer and Secondary Market Dynamics”Since positions are ERC-721, transferability is per position token:
- Position owner can transfer
pFT - New owner inherits all action rights for remaining amount in that position
- Market liquidity for positions is naturally NFT/OTC style in the current model
Circuit Breaker Considerations
Section titled “Circuit Breaker Considerations”Wrapper withdraw calls can check rate limits through CircuitBreaker.checkAndRecordOutflow.
If limits are exceeded, withdrawals may revert or be delayed by retry behavior depending on caller flow.
Summary Table
Section titled “Summary Table”| Hold | Redeem behavior | Withdraw behavior | |
|---|---|---|---|
| Action | No tx | divest / divestUnderlying | withdrawFT |
| Available | Always | Always (subject to liquidity/rate limits) | After transferable enabled |
| Partial support | N/A | Yes | Yes |
| Position token after full amount | Unchanged | Burned when exhausted | Burned when exhausted |
| Capital effect | Stays deployed | Returned to user | Moved to capitalDivesting |
| Reversible | N/A | No for redeemed amount | No for withdrawn amount |