Skip to main content
Real-world assets carry real-world risk: drought, heat, a harvest or delivery that never arrives. risk-pool lets holders pool that risk and get paid automatically when a verifiable threshold is crossed. There’s no claims adjuster in the common case. It is Stellar-only.

How it works

  1. Capital. The insurer, reinsurers or a donor fund fund the pool. Every policy’s full coverage is reserved out of free capital when it’s sold, so the pool can always pay every policy of a product that fires.
  2. Products (Manager). A product has a trigger, a coverage window, a premium rate (bps of coverage) and, optionally, a linked Ankara asset token.
  3. Policies. Holders buy_policy(coverage) and pay coverage × premium_bps in the payout token. For asset-linked products, buy_policy_for_holding sizes coverage from the holder’s token balance (units × coverage_per_unit ÷ unit_scale), so a farmland-token holder insures exactly their share.
  4. Trigger (anyone, e.g. a keeper). If the condition is met inside the window, the product becomes Triggered and the observed reading is recorded.
  5. Settle (anyone). Each policy pays straight to its holder. Asset-linked payouts are capped by the units the holder still holds. Any unpaid part of the reserve goes back to free capital.
  6. Expire (anyone). After the window, an untriggered product releases its reserve. Premiums stay in the pool, and the Manager can withdraw_capital whatever is unreserved.

Triggers

Triggers use the same pluggable oracle and attestation patterns as the rest of Ankara. There are no bespoke data feeds. key is whatever address the oracle publishes the index under. For example, a weather relayer posts a region’s cumulative rainfall with set_price(<station address>, mm × 1e18). A stale reading can’t fire a trigger.

Example: drought cover for farmland-token holders

Delivery cover works the same way with { kind: "claim-missing", registry: ATTESTATIONS, subject: { kind: "asset", assetId: "SHIPMENT-42" }, claimType: "DELIVERY", deadline }.