Witnessed VRC Exchange Protocol
The Witnessed Session-Based VRC Exchange (v0.2) is a five-phase protocol for creating Relationship Credentials (VRCs) with third-party Witness attestation. It ensures that both the relationship and the witness proof are cryptographically bound to a specific session.
Why Witnessed Exchange?
A standard VRC exchange involves two parties attesting to each other. But how does a third party know the exchange actually happened? The witnessed exchange adds a Witness who observes the credential creation in real time and produces cryptographic proof that it occurred during a specific session — for example, an in-person meetup or a video call.
The Five Phases
Phase 1: Session Creation
- A requester asks a Witness to create a session
- The Witness generates a cryptographic nonce (the Session Challenge)
- The Witness sends a
request-presentationmessage to both parties via DIDComm
Phase 2: Credential Creation & Wrapping
- Each party independently mints a standard VRC (addressed to the counterparty)
- Each party wraps their VRC in a Verifiable Presentation (VP) signed with the Witness’s Session Challenge
- Each party submits their wrapped VP to the Witness
Phase 3: Witness Verification
The Witness performs three checks on each submission:
- Context Check — the VP signature matches the session nonce (proves it was created for this session)
- Identity Check — the VRC signature belongs to the stated issuer (proves authenticity)
- Freshness Check — the VRC’s
validFromtimestamp is within session tolerance (e.g., +/- 5 minutes, proves the credential was freshly minted)
Phase 4: Credential Distribution
- The Witness mints two Witness Credentials (VWCs) — one for each observed VRC
- Each VWC includes an optional SHA-256 digest of the witnessed VRC (multibase/multihash encoded)
- Distribution is cross-wise: Alice receives the VWC witnessing Bob’s VRC, and Bob receives the VWC witnessing Alice’s VRC
Phase 5: Verification
At the end, each party holds:
- Their counterparty’s VRC (the trust attestation)
- A VWC from the Witness attesting that the VRC was created during the specific session
Anyone verifying the relationship later can check both the VRC (peer attestation) and the VWC (third-party attestation of the exchange).
Trust Implications
Witnessed VRCs carry significantly more weight in the trust graph than standard VRCs because:
- A third party independently verified the exchange happened
- The session binding prevents replay or backdating
- The verification method in the VWC (e.g., “in-person-proximity”) describes the context
This protocol is particularly important for bootstrapping trust in new communities, where the initial relationships need stronger evidence.
See also: relationship-credential, witness-credential, didcomm, decentralized-trust-graph