Pricing & allocation
Acquisition pricing follows the cheap positions people usually receive, while Chainlink VRF and live-pool selection keep allocation fair.
An acquisition costs roughly the average value of the position you might receive, plus a small acquisition surcharge (10% by default). That surcharge is dynamically divided between depositor fee income and an FND allowance for the successful purchaser; the protocol's own cut is configured separately. Because the lightly-backed positions are the ones you almost always receive, the price tracks them, while the rare highest-backed positions barely move it1.
- Pools of cheap positions stay cheap to acquire from, even with a few richly-backed positions in them, since those are selected so rarely they barely move the price. You get frequent, low-cost acquisitions and a high-backed position to chase at once.
- The price is honest. You pay about what an acquisition is worth, plus the set surcharge, with no hidden markup.
You're quoted the pool acquisition fee plus a VRF service fee. The pool collects that service fee itself and uses it to keep its dedicated Chainlink subscription funded (it auto-tops-up the subscription from collected fees); it never draws from listing backing or depositor earnings. Any transaction overpayment returns immediately, and request-time limits2 make the purchase revert if the pool moves beyond the purchaser's bounds before it is mined.
Randomness comes from Chainlink VRF3. Your acquisition fee stays escrowed until the request resolves. New deposits made while requests are open wait in a first-in-first-out staging line and only activate after a fixed block delay, so later deposits and callback timing cannot alter an existing draw.
When an acquisition can't settle cleanly:
- Empty pool. If every position left before your callback lands, the escrowed pool fee is refunded to you.
- Price drift. If concurrent acquisitions shifted the price beyond the snapshotted tolerance (5% by default), the escrowed pool fee is refunded instead of settling at a stale price.
- Late or missing word. A callback landing after the callback deadline refunds instead of selecting. If no word arrives at all, anyone can cancel the request after the selection timeout and the escrowed pool fee is refunded to the purchaser; the VRF service fee is nonrefundable because it paid for the randomness request.
Technical breakdown
- Expected value is weightedBackingTotal / totalWeight, which, because weights are inverse to backing, equals the harmonic mean of all backings (dominated by the cheapest positions). The fee is acquisitionFee = EV · (BPS + surchargeBps) / BPS with surchargeBps = 1000 (10%), exposed by the acquisitionFee() view.
- A request accepts optional maxAcquisitionFee and minWeightedValue bounds (0 disables each). At callback time, drift past the snapshotted selectionSlippageBps (5% by default) in either direction refunds rather than settles.
- Chainlink VRF 2.5 runs in subscription native-payment mode on a dedicated subscription created and funded at deploy. The purchaser-paid VRF service fee is estimated as a gas estimate (600,000) × current gas price, plus a 30% margin, and the contract auto-tops-up the subscription from collected fees. Processing is permissionless: callbacks come from the coordinator, and anyone may cancel a stale request or activate matured staged listings. No operator or service provides randomness, chooses a result, or can steer a draw.