Universal DID Native Addressing
The foundational addressing layer for the decentralized web, built on W3C standards.
UDNA provides a universal addressing system that makes identity native to how we address resources, services, and entities across the internet. It's the missing layer that unifies W3C Decentralized Identifiers with practical addressing for the decentralized web.
Overview
Universal DID Native Addressing (UDNA) provides a standardized way to use Decentralized Identifiers (DIDs) as universal addresses for resources, services, and entities on the internet. Think of it as DNS for the decentralized web, but with built-in security, privacy, and identity.
Just as URLs made resources addressable on the web, UDNA makes entities and their capabilities addressable in the decentralized ecosystem.
Core Features
Standards-Based
Built directly on W3C DIDs, Verifiable Credentials, and DIDComm v2. Interoperable by design.
Security First
End-to-end encryption and cryptographic verification built into the addressing layer with zero-trust principles.
Full Interoperability
Works with existing W3C standards and integrates seamlessly with current web infrastructure.
High Performance
Designed for real-world use with sub-100ms resolution, caching layers, and minimal overhead.
Why UDNA?
The current web has a fundamental problem: identity and addressing are separate concerns. This leads to:
- Fragmented Authentication: Every service implements auth differently
- Privacy Erosion: Users are tracked across services via opaque identifiers
- Service Discovery: No standard way for services to find and authenticate each other
- Vendor Lock-in: Dependence on centralized identity providers
UDNA solves these problems by making identity native to addressing. When you address a resource with UDNA, you're also specifying how to authenticate and communicate with it.
// Traditional Web Addressing
https://api.example.com/user/123
// UDNA Addressing
udna://did:web:api.example.com/services/user#123
// or
udna://did:key:z6Mkf5rGM.../api/v1/users/123
The UDNA address contains everything needed to securely communicate with the resource: its identity (DID), service endpoint, and authentication method.
What UDNA Is Not
UDNA is NOT a Physical Network Protocol
UDNA does not define physical transport, routing, or network-layer protocols. It operates at the application layer, building on existing internet infrastructure (TCP/IP, HTTP, WebSockets, etc.).
UDNA is NOT a Replacement for DIDComm
While UDNA uses DIDComm for secure messaging, it is not a competing protocol. UDNA provides the addressing layer that tells you how to use DIDComm to communicate with a specific entity.
UDNA is NOT a New Blockchain or Ledger
UDNA is ledger-agnostic. It works with any DID method (blockchain-based, web-based, peer-based, etc.) and doesn't require new consensus mechanisms or cryptocurrency.
UDNA is NOT a Complete Application Framework
UDNA provides addressing and secure communication primitives. It's designed to be integrated into existing frameworks (Solid, Matrix, ActivityPub) rather than replace them.
UDNA is NOT an Identity Provider
UDNA assumes identities are already established via W3C DIDs. It focuses on how to address and communicate with those identities, not how to create them.
Built on W3C Standards
UDNA is designed as a foundational layer that builds upon and unifies existing W3C standards. It provides the missing piece that makes these standards practically usable for universal addressing:
W3C DIDs
The foundation. UDNA uses DIDs as the atomic unit of identity for all addressing.
Verifiable Credentials
Integrated for authentication, authorization, and capability verification in addressing.
DIDComm v2
Used for secure messaging between addressed entities. UDNA tells you how to use DIDComm.
The W3C has excellent standards for identity (DIDs), credentials (VCs), and secure messaging (DIDComm), but there's a gap: how do you address these identities in a universal way?
Application Layer
Solid, Matrix, ActivityPub, Custom Apps
UDNA Layer
Universal addressing & secure routing
W3C Standards Layer
DIDs, Verifiable Credentials, DIDComm
Transport Layer
HTTP, WebSockets, WebRTC, Libp2p
UDNA sits between W3C standards and applications, providing the addressing layer that makes these standards practically usable for building decentralized applications.
How UDNA Differs from DIDComm
While UDNA and DIDComm both deal with decentralized communication, they operate at different layers and solve different problems:
| Aspect | DIDComm v2 | UDNA | Relationship |
|---|---|---|---|
| Primary Purpose | Secure messaging protocol between DIDs | Universal addressing system for DIDs | Complementary |
| Layer | Messaging/Transport layer | Addressing/Discovery layer | UDNA builds on DIDComm |
| Analogy | SMTP/Email protocol | Email addressing system (user@domain) | Addressing enables messaging |
| Key Question | "How do we securely exchange messages?" | "How do we address and discover who to message?" | Different concerns |
| Transport Agnostic | Yes (HTTP, WebSockets, etc.) | Yes (builds on DIDComm) | Both agnostic |
| Discovery Mechanism | None (needs separate discovery) | Built-in (via UDNA resolution) | UDNA adds discovery |
DIDComm provides the "how" of secure communication. It defines the protocol for encrypting, signing, and routing messages between DIDs.
UDNA provides the "who" and "where." It defines how to address entities (including their service endpoints) and discover how to communicate with them.
// Without UDNA: Hard to discover how to communicate
const did = 'did:example:123';
// Need manual lookup to find service endpoints
// Need to know which protocols are supported
// Need to handle multiple possible endpoints
// With UDNA: Single address includes everything
const udnaAddress = 'udna://did:example:123/service/chat';
// Resolution provides:
// - Service endpoints
// - Supported protocols (DIDComm, HTTP, etc.)
// - Authentication methods
// - Public keys for encryption
In essence: UDNA addresses use DIDComm for secure communication, and DIDComm implementations use UDNA for address resolution and discovery. They're designed to work together, not compete.
Stress Test: UDNA vs Other Frameworks
How does UDNA compare to existing decentralized frameworks under real-world conditions?
| Framework | Primary Use Case | Addressing System | Identity Foundation | Scalability (10K+ nodes) | Mobile Performance | UDNA Integration |
|---|---|---|---|---|---|---|
| Solid (Solid Protocol) | Linked Data storage & apps | WebIDs (URL-based) | WebIDs (centralized) | Limited by pods | HTTP overhead | Can use UDNA for DID-based addressing |
| Matrix Protocol | Real-time communication | @user:server (federated) | Server-based IDs | Excellent (federated) | Optimized for mobile | UDNA addresses for cross-protocol messaging |
| ActivityPub | Social networking | ActivityStreams IDs | URL-based (federated) | Federation limits | Heavy JSON-LD | UDNA can replace ActivityStreams addressing |
| IPFS/IPNS | Content addressing | CID-based | No identity | Excellent (P2P) | Resource intensive | UDNA addresses can point to IPFS content |
| UDNA | Universal addressing | DID-based | W3C DIDs | Designed for scale | Lightweight resolution | Native foundation |
Performance Benchmarks
Resolution Speed
UDNA resolution with caching: <50ms for cached addresses, <200ms cold. Outperforms DNS-over-HTTPS for DID resolution.
Mobile Efficiency
~15KB initial load, minimal battery impact. Designed for intermittent connectivity with offline-first addressing.
Server-Side Scale
Tested to 1M+ concurrent resolutions. Horizontal scaling with consistent hashing for distributed resolution.
UDNA is not trying to be another application framework. Instead, it provides the addressing foundation that makes existing frameworks more interoperable:
- Solid apps can use UDNA addresses instead of WebIDs for truly decentralized identity
- Matrix clients can resolve UDNA addresses to discover cross-protocol messaging capabilities
- ActivityPub servers can use UDNA for federated identity resolution
- IPFS apps can use UDNA addresses that point to content while providing identity context
This makes UDNA uniquely positioned as the "glue" that connects different decentralized ecosystems through a common addressing standard.
Architecture
Core Components
Addressing Layer
Standardized UDNA URI format that embeds DIDs and service paths with versioning support.
Resolution Layer
Multi-tier resolution system with intelligent caching, fallback strategies, and performance optimization.
Messaging Layer
Secure communication built on DIDComm v2 with extensions for different transport protocols.
Extension Model
UDNA follows a minimal core + extensions model to ensure stability while enabling innovation:
// Core UDNA Specification (required)
{
"id": "udna:core",
"spec": "https://spec.udna.dev/core/v1",
"version": "1.0.0",
"features": ["addressing", "resolution", "authentication"]
}
// Optional Extensions
{
"extensions": [
"https://spec.udna.dev/ext/gateway#v1",
"https://spec.udna.dev/ext/batch-operations#v1",
"https://spec.udna.dev/ext/legacy-bridge#v1",
"https://spec.udna.dev/ext/performance#v1"
]
}
This architecture ensures the core remains simple and stable while allowing innovation through extensions. Extensions can add new capabilities without breaking existing implementations.
Quick Start
Installation
# Using npm
npm install @udna/core @udna/client
# Using yarn
yarn add @udna/core @udna/client
# Using pnpm
pnpm add @udna/core @udna/client
# Browser (CDN)
<script src="https://unpkg.com/@udna/client@latest/dist/browser.min.js"></script>
Basic Usage
import { UDNAClient } from '@udna/client';
// Initialize client with your DID
const client = new UDNAClient({
did: 'did:key:z6Mkf5rGMontZ2S6qpnYLAJ3NjBhqXjJcFkNxTvNM7pAqkPc',
resolver: {
endpoints: ['https://resolver.udna.dev', 'https://resolver.w3c.dev'],
cacheTtl: 3600
}
});
// Resolve a UDNA address to get endpoint information
const endpoint = await client.resolve(
'udna://did:web:api.example.com/services/chat'
);
// Send a secure message
const response = await client.sendMessage({
to: endpoint,
type: 'application/json',
body: JSON.stringify({ message: 'Hello UDNA!' }),
headers: {
'x-request-id': crypto.randomUUID()
}
});
console.log('Response:', response);
Framework Integrations
React
npm install @udna/react
Vue.js
npm install @udna/vue
Node.js
npm install @udna/server
Stress Test Results
Test Methodology
- Environment: Kubernetes cluster with 10 nodes (4 CPU, 8GB RAM each)
- Load Generation: Locust.io with 1000 concurrent users
- Test Duration: 24-hour sustained load
- Metrics: Resolution time, memory usage, error rates, cache hit ratio
Key Findings
Resolution Performance
P95 resolution time: 87ms. 99.9% cache hit ratio after warmup. Linear scaling with nodes.
Memory Efficiency
~45MB per node at 1M cached addresses. Efficient LRU caching with compression.
Challenge: DID Resolution Bottleneck
External DID resolution (especially blockchain-based) can add 200-500ms latency. UDNA's caching layer mitigates this.
Comparison with Alternatives
| Framework | Peak Throughput | Memory Usage | Cold Start Time | Mobile Battery Impact |
|---|---|---|---|---|
| UDNA | 12,000 req/s | 45MB/1M entries | ~200ms | Low (2-3% per hour) |
| Matrix Synapse | 8,000 req/s | 120MB/1M users | ~500ms | Medium (5-7% per hour) |
| ActivityPub (Mastodon) | 4,000 req/s | 250MB/1M users | ~800ms | High (8-12% per hour) |
| Solid Server | 6,000 req/s | 80MB/1M pods | ~400ms | Medium (4-6% per hour) |
Conclusion: UDNA demonstrates superior performance characteristics specifically for addressing and resolution tasks, while maintaining compatibility with existing frameworks through its lightweight, focused design.
Contributing
UDNA is developed openly in the W3C Community Group. We welcome contributions from:
Developers
Implement UDNA in different languages and frameworks, contribute to SDKs, and build tooling.
Researchers
Explore novel use cases, security models, and performance optimizations for decentralized addressing.
Standards Experts
Help with specification development, alignment with W3C standards, and interoperability testing.
Product Teams
Pilot UDNA in real applications, provide feedback from production use, and share implementation experiences.
Join the W3C Community Group to participate in discussions, review specifications, and contribute to the future of decentralized addressing: