In an era dominated by misinformation and centralized social media control, decentralized identity systems like DIDproto offer a path towards progress. By prioritizing transparency, collaboration, and democracy, DIDproto empowers individuals and organizations to verify identities and actions with the did:web4
specifier without relying on centralized authorities.
Purpose: DIDproto is an evolution of the W3C DID v1 standard, designed to stay as close as possible to the original specification. Its core principle revolves around enabling anyone to securely verify the identity and actions of domains.
DID address: The did:web4
identifier indicates that a domain supports the DIDproto and thereby is ready to sign actions (like voting and commenting) or participate in secure e2e communication.
DID.json: The simplicity of hosting the DID document at a fixed URL (https://<domain>/.well-known/did.json
) ensures easy access to the latest version of a domain’s identity and public keys.
did:web4:every.yoga#sig
A DID (Decentralized Identifier) is a globally unique identifier that is not tied to a centralized registry, identity provider, or certificate authority. Let’s break down the components of the example DID: did:web4:every.yoga#sig
.
did:
web4:
web4
refers to the specific decentralized identity method used, which is based on the DIDproto standard. The DID method indicates how the DID is structured and how it can be resolved (i.e., verified).web4
is designed for domain-based identities and enables decentralized trust for domains on the web.every.yoga
web4
DID method. This means the DID document for this domain can be found at https://every.yoga/.well-known/did.json
.#sig
#sig
points to the key used for signing and verifying actions such as identity verification, voting, or commenting, where as #sig-publish
is meant for signing software, media and other creative assets for ownership.Below is a sample DID document based on the DIDproto specification:
{ "@context": "https://web4.builders/didproto", "id": "did:web4:every.yoga", "created": 1738155031, "latestVersion": "https://every.yoga/.well-known/did.json", "verificationMethod": [ { "id": "did:web4:every.yoga#sig", "type": "Ed25519VerificationKey2018", "publicKeyBase64": "6VrXOmW81Q0m2NLtMQQ+m2GvrDvNY9ZZS11JX/8QD3o" }, { "id": "did:web4:every.yoga#sig-publishing", "type": "Ed25519VerificationKey2018", "publicKeyBase64": "8wkGk+crOMNG2RMYS/3Cmb/Y+MzMNtx7SmkqNil5/0w" }, { "id": "did:web4:every.yoga#e2e", "type": "X25519KeyAgreementKey2019", "publicKeyBase64": "ggNnY4Ly8P/WaEwytKMIpOEqdDngA1o+Hkc7ynJmcEA", "encryption_algorithm": "crypto_box" }, { "id": "did:web4:every.yoga#wallet-a", "type": "Ed25519VerificationKey2018", "publicKeyBase64": "MGYbgMOQRIDpXipP0zP1/CmeaAC7NYgUb08IrHcAPE4", "publicKeyBase58": "4FvsgYd4auRQefB1QNqS9komNwdzpWeHJz9WQvqCzaL5", "publicKeyBase32": "GBTBXAGDSBCIB2K6FJH5GM7V7QUZ42AAXM2YQFDPJ4EKY5YAHRHA" }, { "id": "did:web4:every.yoga#wallet-b", "type": "Secp256k1VerificationKey2018", "publicKeyBase64": "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEfD0E3tXd+lswXSzhXlPrLFjn28LTpuZs4uqexduucRsbm/l7LDxe9QhFyRp5hDspMo+9IGmidu2h3UpOxJI3tw", "publicKeyBase58": "PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCxqo1xBF1MpY9NTroNxNJu4Aa2Za6TBdrXLTZW5J4CqyT3yXFN4wxkboaMcDRDZrbCYsjjHoHGAStsGeSRsPrG1ca", "publicKeyBase32": "GBLDAEAGA4VIMSGOHUBACBQFFOAQIAAKANBAABD4HUCN5VO57JNTAXJM4FPFH2ZMLDT5XQWTU3TGZYXKT3C5XLTRDMNZX6L3FQ6F55IIIXERU6MEHMUTFD55EBU2E5XNUHOUUTWESI33O" } ], "proof": { "type": "WEB4Signature2025", "created": 1738155031, "verificationMethod": "did:web4:every.yoga#sig", "signatureValue": "eyJhbGciOiJ3bHAyNTYiLCJ0eXAiOiJKV1QifQ.eyJzaGEzLTUxMi1oYXNoIjoiMmJlMGQxZTBlYmZhM2IwMGRiMjMyNmJiYTU2NzJlNGEyNGFlNzZiMDRiOWVhMGM4ZDk3ZTczZjAxZmM0Njg5N2U5Yjk4YmRmMDU2NzVjNGE3ZTAyOTExNjc0ZGUyYWU0NDg3Y2EzNDBmMjIzNDhjN2FiMzM0NDI2MjU2MzNjZDQiLCJjcmVhdGVkIjoxNzM4MTU1MDMxLCJ0eXBlIjoiV0VCNFNpZ25hdHVyZTIwMjUiLCJkaWQiOiJkaWQ6d2ViNDpldmVyeS55b2dhI3NpZyJ9.97M4gxvCqvfp3FWfxYXh_8HV_YPwCiwPMkK4K1ma2G5z6VGBYU_qB003Pt1sf0QIqFbnP6kdk1I4m4KwXmS_CzIzYTU2ZTlhMGFkYmZhM2E3ZjM5N2U3Y2M2NGFkODU4MjBjMzQ2YTA1NjI1MmIwMTljMjc2ZmZmZjVhM2QxODFlYjg4OTA1MDdjOGUwZjVmMjJlN2Q5ODU0ZjhjNTI3ZGNmMTc0MWM3ZTY4NTA1MzhjZWJlZjU3Mjg1NmJjN2U1", "pow": { "nonce": 24196, "hash": "444Z6V4JSDXN73C3YIP7VEDUZDV76WXHAOX45OIGKRPZXKNKCX5N4O5OYV67RYVPMI3AIABBA7M4TUZ675NZGOMN66Q6HRWL633V5WA", "type": "WEB4Hash2025" } } }
Every DIDproto document requires lightweight proof of work (PoW) to ensure it is costly to forge or spam. This mechanism provides an additional layer of trust and security by deterring malicious actors.
Beyond the document itself, this PoW can also extend to actions performed under the domain’s identity. For example:
DIDproto supports multiple verification methods, each tailored to specific use cases:
#sig
: The Primary Key
Ed25519VerificationKey2018
.#e2e
: Secure Communication
X25519KeyAgreementKey2019
.#donate
and #donate-b
: Future-Proof Crypto Wallets
To enhance compatibility and usability across different environments, DIDproto provides multiple formats for public keys:
This multi-format approach not only facilitates easier integration but also allows double-checking of public keys by comparing their decoded values.
latestVersion
The latestVersion
field ensures that anyone can fetch the most up-to-date DID document. This dynamic approach simplifies key rotations and ensures that users always interact with the latest cryptographic materials, maintaining trust over time.
WEB4Signature2025
DIDproto uses the WEB4Signature2025
protocol to verify the authenticity and integrity of a DID document. This involves signing the hash of the document (excluding the proof
section). The result is a cryptographic signature that ensures the document has not been tampered with.
In combination with the lightweight proof of work, this signature allows anyone to verify a domain’s identity and actions with confidence.
DIDproto’s design aligns with the principles of democracy, transparency, and decentralization: