At a glance
| Strategy | Chain(s) | Cost | Verifiable by | Setup |
|---|---|---|---|---|
| Public | Polygon Amoy / Mainnet | ~$0.000007/record | Anyone (Polygonscan) | Zero — default |
| Private | Hyperledger Fabric (BYO) | $0 (no gas) | Network members only | Import X.509 cert |
| Hybrid | Fabric + Polygon (both) | ~$0.000007/record (EVM only) | Internal AND public | Import Fabric cert |
| Custom | Any EVM RPC or Fabric profile | Depends on chain | Depends on chain | Manual config |
Decision tree
Answer three questions, get a strategy.
→ YES: continue to Q2
→ NO: use Public (Polygon). Done.
Q2. Do external auditors / regulators / customers also need to verify these records?
→ YES: use Hybrid (Fabric + Polygon). Done.
→ NO: continue to Q3
Q3. Do you have a non-standard chain requirement (Besu, Quorum, Ethereum mainnet, custom Fabric MSP)?
→ YES: use Custom. Done.
→ NO: use Private (Fabric BYO). Done.
Public — Polygon
How it works
Records are queued, batched (up to 256 records) into a Merkle tree, and the tree's root is written to a smart contract on Polygon Amoy (testnet) or Polygon Mainnet. The root is permanent, public, and verifiable on Polygonscan by anyone — including your customers, auditors, regulators, or random third parties.
What you get on-chain
blockNumber— Polygon block where the Merkle root was committedtransactionHash— full0x…-prefixed transaction hashbatchId— numeric ID assigned by the smart contractmerkleProof— array of hashes that lets a verifier reconstruct the root
When to pick Public
- SaaS, marketplace, or B2C apps where end users need to verify provenance
- AI-generated content provenance (C2PA, watermarking)
- Notarization, timestamping, certificate issuance
- Any workflow where "trust me — it's on Polygon" is stronger than "trust my server"
Private — Hyperledger Fabric (BYO)
How it works
You bring your own Fabric network — peers, orderer, CA. Anchora deploys the anchora-anchor chaincode on a channel of your choosing, authenticates via your X.509 identity (issued by your CA), and writes batches to the chaincode using the fabric-gateway SDK. No gas fees. No external chain. No data leaves your network.
What you get on-chain
blockNumber— alwaysnull(fabric-gateway doesn't expose block height in submit responses)transactionHash— raw Fabric txID (no0xprefix)batchId— string (you choose the format)merkleProof— same Merkle proof as Public, just verified against your chaincode's stored root
When to pick Private
- Banking, insurance, healthcare — data sovereignty + regulatory residency
- Defense, government — air-gapped or sovereign cloud requirements
- Pharma — GxP / 21 CFR Part 11 — auditable internal ledger
- B2B consortium — only members verify, no public footprint
Setup overview
- Have a running Fabric network (peers + orderer + CA reachable from Anchora's worker)
- Issue an X.509 identity for Anchora (cert + private key)
- Create a project in the Console, pick "Private (Fabric BYO)"
- Project Settings → Blockchain → import cert + key + connection profile
- Anchora deploys the
anchora-anchorchaincode on your channel
Full walkthrough: Fabric Setup (BYO) Guide
Hybrid — Both at once
How it works
Same Merkle root, two independent attestations. At batch time, the worker computes the Merkle tree, then submits the root to BOTH your private Fabric chaincode AND Polygon in a single batching pass. Each record's webhook payload carries both anchors. Verification can be done independently against either chain — same hash, same proof.
Why "Hybrid" is more than "anchor twice"
Three reliability features make Hybrid practical at scale:
- Atomic batch boundary: a record never appears on one chain without the other being attempted in the same pass
- Dual-anchor retry: if the secondary chain fails (RPC blip, timeout), the primary still succeeds; the secondary back-fills hourly, up to 5 attempts
- Independent verification:
/v1/verifyreturns separateverifiedverdicts for primary anddualAnchor— so you know which chain stands and which (if any) doesn't
When to pick Hybrid
- Bank issuing loan documents: Fabric for internal audit, Polygon proof for the borrower to verify independently
- Pharma clinical trials: Fabric for sponsor & CRO, Polygon proof for FDA inspection
- Government records: Fabric for inter-agency, Polygon proof for FOIA / public inspection
- Any workflow where "internal" and "external" verification paths must coexist
Full guide: Hybrid Mode Guide
Custom — Bespoke chain config
How it works
Manual override. Point at any EVM-compatible RPC (Ethereum Mainnet, Sepolia, Besu, Quorum, BNB Chain, Arbitrum) or any Fabric channel + MSP combination. You provide:
- RPC URL + chain ID + smart contract address (for EVM)
- Connection profile + MSP + cert + key (for Fabric)
When to pick Custom
- You're running Besu / Quorum for an existing consortium
- You want Ethereum Mainnet for premium attestation (higher gas, deeper Lindy)
- Your Fabric topology doesn't match a standard profile (custom MSP, multi-org channels)
- You're prototyping on Sepolia or a private devnet
Switching strategies later
Strategy is a project-level Setting. You can switch a project from Public → Hybrid (or any other combination) without changing your application code — the POST /v1/anchor request body is identical across all strategies. Existing records stay anchored to whichever chain(s) they originally landed on; new records follow the new strategy. There's no migration, no API-key rotation, no SDK update.
Cost comparison
| Workload | Public | Private | Hybrid |
|---|---|---|---|
| 10K records/month | ~$0.07 gas | $0 gas | ~$0.07 gas |
| 1M records/month | ~$7 gas | $0 gas | ~$7 gas |
| 100M records/month | ~$700 gas | $0 gas (infra cost only) | ~$700 gas |
Gas estimates based on Polygon Amoy at ~30 gwei. Mainnet typically 2–5x. Private has no gas but you operate your own Fabric infra. Hybrid pays gas on EVM side only.