Fairseal π¦
Provably fair selections for games, loot boxes, and any randomized allocation.
Fairseal creates verifiable receipts (CSRs) proving that a selection was committed before the outcome was knowable. Every loot drop, gacha pull, and randomized selection β independently verifiable, trustlessly.
Try It Now
npx @fairseal/commit
One command. A verifiable gacha pull in your terminal. No setup.
Quick Start
npm install @fairseal/commit
import { createCommitment, resolveCommitment, createReceipt, verifyReceipt } from '@fairseal/commit';
// 1. Lock your loot table BEFORE the outcome is knowable
const commitment = createCommitment({
rule: JSON.stringify(LOOT_TABLE),
inputs: [playerId, pullNumber.toString()],
revealAfter: 10,
});
// 2. Resolve with verifiable entropy from drand
const resolution = await resolveCommitment(commitment);
// 3. Your algorithm + verifiable entropy = provably fair drop
const drop = yourWeightedPull(LOOT_TABLE, resolution.beaconRandomness);
// 4. Package as a receipt anyone can verify
const receipt = createReceipt(commitment, resolution);
const proof = await verifyReceipt(receipt); // β
PARTIAL
How It Works
- Commit β Lock your drop table + player ID into a hash before the randomness exists
- Entropy β Wait for a public drand beacon round (Cloudflare + Protocol Labs)
- Resolve β Derive the selection from beacon entropy + your committed rule
- Verify β Anyone can re-run every step. drand beacon signatures are BLS12-381-verified; FairSeal receipt signatures use EIP-191 (secp256k1) / Ed25519 β receipts are never BLS-signed. No trust required.
Performance
| Operation | Time |
|---|---|
| Commitment creation | 0.006ms (170,000+/sec) |
| Beacon fetch | ~200ms |
| drand beacon verification (BLS12-381) | ~150ms |
| Receipt size | 0.9 KB |
Client-side. No server. No account. No fees for PARTIAL verification.
Packages
| Package | Description |
|---|---|
@fairseal/game | Game API for RGS studios. Slots, gacha, loot boxes. (v0.1 ALPHA) |
@fairseal/commit | Committed selection receipts. Core library. |
@fairseal/core | Cryptographic primitives, signing, Merkle trees. |
@fairseal/verify | Independent receipt verification. |
@fairseal/mcp-server | MCP server for AI agents. Verifiable entropy, provably-fair games, cryptographic receipt verification via Model Context Protocol. |
Use Cases
| Scenario | How |
|---|---|
| Gacha / loot box | Every pull has a receipt. Players verify drops match published rates. |
| Boss loot drops | Drop table committed per encounter. No ninja-nerfing. |
| Matchmaking | Pairing algorithm committed. Players verify no favoritism. |
| Tournament brackets | Seeding provably random, not rigged. |
| NFT mint order | Queue provably fair β no insider front-running. |
| Slot machines | Seed Commitment Model β verifiable spins, no nonce chain. |
Result Notarization vs. Activity Receipts
Most "agent receipts" today are activity receipts: the platform logs what an agent did, and you trust whoever wrote the log. Fairseal receipts are result notarization β a different trust model:
| Activity receipts (platform logs) | Fairseal result notarization | |
|---|---|---|
| Who do you trust? | The operator writing the log | No one β receipts verify offline |
| What is proven? | That an action was recorded | That a result was committed before the outcome was knowable |
| Time proof | Server timestamp (operator-controlled) | External anchor on Base (independently checkable) |
| Tamper evidence | Depends on log integrity | Hash-anchored; any modification breaks verification |
Related standards: payment-authorization protocols like Google/Mastercard AP2 (mandates), Visa TAP, and OpenAI/Stripe ACP prove that an agent may act and who it is. Fairseal proves what happened β that a result was committed and hasn't been altered since. Fairseal settles micropayments over Coinbase's x402 and does not implement AP2/TAP/ACP; the layers are complementary.
Links
- π fairseal.io β Landing page
- π¦ npm @fairseal β All packages
- π verify.fairseal.io β Receipt verifier
- π @fairseal/commit README β Full documentation
License
MIT β Fairseal