didproto: Protocol for Empowering Democracy, Decentralization and Transparency

Introduction

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.


What is DIDproto?

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.

 

 


Example DID: 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.

  1. did:
    • This is the prefix that marks the string as a DID. It indicates that this identifier follows the DID standard, which is defined by the W3C.
  2. web4:
    • This specifies the DID method. In this case, 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).
    • Here, web4 is designed for domain-based identities and enables decentralized trust for domains on the web.
  3. every.yoga
    • This is the user’s DOMAIN and DID identifier itself. It represents a specific entity within the web4 DID method. This means the DID document for this domain can be found at https://every.yoga/.well-known/did.json.
  4. #sig
    • This is the fragment identifier. It references a specific verification method within the DID document. In this case, #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.
    • The fragment helps to specify exactly which key should be used for the particular action or verification, as there might be multiple keys in the DID document for different purposes (e.g., encryption, signing, or crypto wallets).

Example DID Document

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"
        }
    }
}

Key Features of DIDproto

1. Lightweight Proof of Work (PoW):

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:


2. Verification Methods: Purpose-Driven Keys

DIDproto supports multiple verification methods, each tailored to specific use cases:

  1. #sig: The Primary Key
    • Purpose: Used for signing most actions, including identity verification, voting, and commenting. This is the central key of the document.
    • Type: Ed25519VerificationKey2018.
  2. #e2e: Secure Communication
    • Purpose: For end-to-end encrypted communication between users or services.
    • Type: X25519KeyAgreementKey2019.
  3. #donate and #donate-b: Future-Proof Crypto Wallets
    • Purpose: These keys allow the derivation of cryptocurrency wallets using both Ed25519 and Secp256k1 standards. This ensures compatibility with different blockchain ecosystems for donations or payments.

3. Interoperability Through Multi-Format Keys

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.


4. Built-In Transparency with 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.


Proof and Verification: 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.


The Role of DIDproto in Decentralization and Democracy

DIDproto’s design aligns with the principles of democracy, transparency, and decentralization:


 

User Avatar

Neil

Founder of first Web4 Tribe Every.Yoga

For Business Inquiries |