Skip to content

Concepts overview

Pact Network is a Solana program (pact-market-pinocchio), an off-chain settler, and a public indexer.

PrimitiveWhat it is
CoveragePoolThe on-chain pot of capital that pays refunds.
AgentWalletThe agent’s identity + balance for premiums and refunds.
EndpointConfigThe per-provider config: premium rate, classifier rules, settler authority.
settle_batchProgram instruction. Premiums move into the pool, refunds move out to agents.
claim_refundProgram instruction. Agent (or proxy) pulls a queued refund.

End-to-end for one agent → upstream call:

  1. Agent calls Market with their Pact Market API key. Market is the proxy in front of the upstream service.
  2. Market forwards to the upstream service — a curated, allowlisted endpoint.
  3. Upstream responds. 200, 500, timeout — whatever it does.
  4. Market records the outcome and tags it success / client_error / server_error per the classifier.
  5. Settler service picks up the batch. Off-chain process, runs on a fixed cadence. Packages classified calls and submits a settle_batch transaction.
  6. settle_batch executes on-chain: premiums on success move AgentWallet → CoveragePool. Refunds on server_error move CoveragePool → AgentWallet (principal + premium). The AgentWallet debits/credits land on the same USDC ATA you granted the allowance from.
  7. Agent sees the refund in their wallet. No claim flow needed — the claim_refund instruction is only for agents who prefer a pull model.
  • Classification happens at Market. Upstream challenges are post-v1.
  • The settler authority signs settle_batch. During private beta the authority is held by the protocol team.
  • The CoveragePool is funded by Pact in v1. Third-party underwriters are post-v1.
  • The agent doesn’t have to trust Market beyond classification. The settler can’t pay an agent more than what’s in the pool, and every refund is on-chain and verifiable.
  • Refunds are bounded by what’s in the CoveragePool. If the pool drains, refunds queue. We’re sizing the pool conservatively for beta volume.
  • Classification is best-effort. Truncated or malformed bodies on a 200 are server_error, but semantically wrong bodies (e.g. negative balance) still pass as success — we don’t do schema validation in v1.
  • No on-chain dispute path. Misclassifications are a support ticket.
  • Settler is centralized: one signer, one process. Decentralizing is post-v1.