Documentation
Secondary market
Unused portions trade against USDC on Uniswap v4 pools, with a hook that stops trading of expired series and of providers in default.
Pools
Each series can have a Uniswap v4 pool against USDC on Base. Uniswap v4 pairs ERC-20 tokens, so each series is traded through a one-to-one ERC-20 wrapper: wrap units of the ERC-1155 series, swap, unwrap on the other side. Wrapping is permissionless and always redeemable one-for-one.
Anyone can provide liquidity. The pool price is the market price of the remaining capacity, and it moves with:
- the discount to the provider's spot price;
- time left before expiry;
- the provider's bond, record and any open dispute.
The hook
Every PORTION pool uses the PORTION hook. It checks the state of the series before each swap and each liquidity addition.
| Condition | Swaps | Add liquidity | Remove liquidity |
|---|---|---|---|
| Series active | Allowed | Allowed | Allowed |
| Dispute open | Blocked | Blocked | Allowed |
| Series slashed | Blocked | Blocked | Allowed |
| Series expired | Blocked | Blocked | Allowed |
Liquidity can always be withdrawn, so providers of liquidity are never locked in. Units held by the pool at a slash are refunded like any other holding.
Fees
The hook takes the protocol fee of 0.75 % on the USDC side of each swap, routed like primary fees: 50 % to $PRTN stakers, 50 % to buy & burn. Liquidity providers earn the pool's own swap fee on top, set when the pool is created. PORTION takes nothing else.
Pricing a resale
In the simulator, the pool is modelled as constant-product bid liquidity that starts slightly below the primary price. Selling a large share of the pool's depth moves the price against you, as it would on-chain. Before a large sale, split it or check the depth.