Batch Revocation
When to use
You discovered a class of bad credentials (a compromised signing key, a schema misconfig). Batch revocation revokes many credentials in one transaction.
Steps
- Navigate to
/issuer/revocation. - Filter the credentials list (by schema, by date range, by tier, etc.).
- Multi-select rows (or Select all in filter).
- Click Bulk revoke. 5. Confirm with a reason (applied to all rows).
- The portal calls
POST /api/v1/credentials/batch-revoke(vc.go:283).
API
The handler computes the affected indices, packs them into a single setStatuses(...) chain call (gas-amortised), and updates the DB rows in one transaction.
Verify
GET /api/v1/credentials/<id>/status for any of the revoked IDs returns revoked: true.
Troubleshooting
4.4.3. Status List 2021 Bitstring Mechanics ##### Overview
Status List 2021 is a compact, privacy-preserving way to publish revocation status for many credentials. Each credential references one status list plus an index. The list is a bitstring (e.g., 131,072 bits = 16 KB) where each bit = one credential. Verifiers read the bit; 1 = revoked, 0 = active.
Why bitstrings?
- Privacy: a verifier cannot tell which credentials they are checking from looking at the list — they only know the bit.
- Efficiency: one HTTP fetch (or one chain read) covers tens of thousands of credentials.
- Auditability: the list itself is signed by the issuer (standard W3C VC).
IDA’s implementation
- The bitstring lives on chain in the RevocationRegistry contract — see §11.4.
- The platform maintains one
statusListIdper issuer DID (current implementation; tunable). - New credentials getstatusListIndex = next_unused_index_for_this_issuer. - Revocation =
setStatus(statusListId, index, 1). - The verifier reads the bit on demand at verification time.
Visualising your bitstring
returns the encoded bitstring along with metadata. Tools in the platform let you visualise it as a heatmap on /issuer/revocation/visualise.