Skip to main content

Concept

Verifiable Credentials Verifier (VCV) is a module that provides native, on-chain verifiable presentation verification for transactions and consensus on the app - Dchain.

For messages that require it, the AnteHandler decorator routes the corresponding verifiable presentation (carried in the transaction's ExtensionOptions) to a Route that describes the trusted issuers and the verification requirements for that message. Verification is performed natively in Go - there is no smart contract involved. This lets other modules and dApps on Dchain reuse the same verification mechanism.

The module:

  1. provides an AnteHandler decorator that verifies Dchain transactions whose messages require a verifiable presentation;
  2. verifies verifiable presentations in the ABCI proposal pipeline (the proposer's VP and the validators' vote-extension VPs);
  3. stores Route definitions describing the trusted issuers, their public keys and the verification requirements for each gated message;
  4. lets governance manage the module parameters, and lets each route's admin manage that route's issuers and requirements.

Currently the SD-JWT presentation format is supported (ROUTE_TYPE_SD_JWT). Verification is done in native Go using the github.com/d-foundation/sd-jwt-verifier package (pkg/sdjwt). This allows selectively-disclosed JWTs to be presented as verifiable credential presentations and verified on-chain against an issuer's public JWK and a set of attribute requirements.