Skip to content

How Fast is did:webvh?

Performance is an important aspect of any DID method, especially for those that are designed to handle large-scale data and frequent updates. Since did:webvh requires processing the entire DID Log file to verify a DID during resolution, it is crucial to understand how this impacts performance in real-world scenarios. This document provides some insights into the performance characteristics of did:webvh. We plan to add more detailed benchmarks in the future.

Scenario: An Enterprise DID With Monthly Key Rotations

The following example was submitted by Glenn Gore of Affinidi, and is based on the Affinidi did:webvh Rust implementation, listed on the implementations page. The test code will soon be available -- we'll add a link here when it is.

Test Parameters

  • Enterprise has used did:webvh for 10 years
  • They use pre-authorised keys for LogEntries
  • They roll the keys every month, min 2 nextKeyHash
  • They randomly swap a witness node every 12 months
  • Witness threshold: 3
  • Number of witnesses maintained @ 4 Nodes
  • They randomly swap a watcher node every 12 months (offset by 6 months from the Witness Swap)

The above is trying to simulate a realistic enterprise production deployment of did:webvh with security constraints.

Key results

  • did.jsonl = 197kb in size (120 LogEntries)
  • did-witness.json = 5.9KB in size (optimised)
  • Generating 120 LogEntries and creating proofs etc: Average ~50ms
  • Validating full did:webvh Log of 120 entries including full validation of Witness Proofs: Average ~28ms

Conclusion

This is a very good performance result compared to other high-trust traceable DIDs. One can validate ~10 years of did:webvh history in under 30ms.