Skip to content

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.

ConditionSwapsAdd liquidityRemove liquidity
Series activeAllowedAllowedAllowed
Dispute openBlockedBlockedAllowed
Series slashedBlockedBlockedAllowed
Series expiredBlockedBlockedAllowed

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.