Refactoring the Web

Decentralized Web Platform

a new layer for the Web that enables decentralized apps and protocols

Angie Jones | Head of Developer Relations, TBD | @techgirl1908

@techgirl1908

the web was meant to be decentralized

@techgirl1908

we're missing an identity layer

@techgirl1908

Decentralized

Web Platform

a new layer for the Web that enables decentralized apps and protocols

@techgirl1908

Decentralized

Web Platform

a new layer for the Web that enables decentralized apps and protocols.

Web2 + Web3 = Web5

@techgirl1908

Pillars

Decentralized Identifiers

Verifiable Credentials

Decentralized Web Nodes

self-owned IDs

verification of claims

personal data stores

@techgirl1908

self-owned identifiers that enable

decentralized authorization

Decentralized Identifiers

Pillar

@techgirl1908

W3C proposed recommendation

DIDs

did:example:123456789abcdefghijk

DID Method

DID Method Specific String

Scheme

@techgirl1908

string stored on a blockchain

DIDs

did:ens:some.eth

did:btcr:xyv2-xzpq-q9wa-p7t

@techgirl1908

DID -> DID Document

DIDs

did:ion:EiClkZMDxPKqC9c-umQfTkR8...

DID

resolves to

ipfs://.../alice/did.json

@techgirl1908

did.json

DID Document

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:ion:EiClkZMDxPKqC9c-umQfTkR8",
  "verificationMethod": [{
     "id": "did:ion:EiClkZMDxPKqC9c-umQfTkR8",
     "type": "Secp256k1VerificationKey2018",
     "controller": "did:ion:EiClkZMDxPKqC9c-umQfTkR8",
     "ethereumAddress": "0xb9c5714089478a327f09197987f16f9e5d936e8a"
  }],
  "authentication": [
     "did:ion:EiClkZMDxPKqC9c-umQfTkR8"
  ]
}

@techgirl1908

tamper-evident credentials that cryptographically verify a claim

Verifiable Credentials

Pillar

@techgirl1908

issuer: did:example:acme
subject: did:example:alice
claims:
    name: Alice Smith

    salary: $120,000
+ issuer’s digital signature

Verifiable Credential

Acme

issues

to

Alice

Alice applies for a loan

issuer: did:example:acme
subject: did:example:alice
claims:
    name: Alice Smith

    salary: $120,000
+ issuer’s digital signature

Acme

to

Alice

issuer: did:example:acme
subject: did:example:alice
claims:
    name: Alice Smith

    salary: $120,000
+ issuer’s digital signature

issues

Verifiable Credential

Alice applies for a loan

@techgirl1908

issuer: did:example:acme
subject: did:example:alice
claims:
    name: Alice Smith

    salary: $120,000
+ issuer’s digital signature

Acme

to

Alice

Alice

provides

issuer: did:example:acme
subject: did:example:alice
claims:
    name: Alice Smith

    salary: $120,000

+ issuer’s digital signature

+ subject’s digital signature

Verifiable Credential

to

Lender

issues

Verifiable Credential

Alice applies for a loan

@techgirl1908

@techgirl1908

personal data stores for public and encrypted data

Decentralized Web Nodes

Pillar

@techgirl1908

Decentralized Social Media Applications

@techgirl1908

Decentralized Web Nodes

public

encrypted

@techgirl1908

data

Web App

Alice's DWN Instance

local

remote

@techgirl1908

DWA

PWA

@techgirl1908

https://example.com/u/alice/did.json

DID Document

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:web:example.com:u:alice",
  "service": [{
    "id":"#dwn",
    "type": "DecentralizedWebNode",
    "serviceEndpoint": {
      "nodes": ["https://dwn.example.com", 
                "00:11:22:33:FF:EE"]
    }
  }],
  "verificationMethod": [{
     "id": "did:web:example.com:u:alice",
     "type": "Secp256k1VerificationKey2018",
     "controller": "did:web:example.com:u:alice",
     "ethereumAddress": "0xb9c5714089478a327f09197987f16f9e5d936e8a"
  }],
  "authentication": [
     "did:web:example.com:u:alice"
  ]
}

@techgirl1908

HTTP requests

Request data

POST https://dwn.example.com/
BODY {
  "requestId": "c5784162-84af-4aab-aff5-f1f8438dfc3d",
  "target": "did:example:123",
  "messages": [
    {
      "descriptor": {
        "method": "CollectionsQuery",
        "schema": "https://schema.org/SocialMediaPosting"
      }
    },
    {...}
  ]
}

@techgirl1908

structured JSON objects

Response

{
  "requestId": "c5784162-84af-4aab-aff5-f1f8438dfc3d",
  "replies": [
    {
      "messageId": "bm4vvfvsdfovsj...",
      "status": { "code": 200, "text": "OK" },
      "entries": [...]
    }
  ]
}

@techgirl1908

Provide UI and functionality to manage credentials and other data stored in DWNs

Identity Wallet

Data Management

DID Functions

Support create, update, and recovery of DIDs

Context Management

Maintain and enforce which DIDs are used with a given contact, app, or context

Credential Functions

Sign, verify, discover, and present credentials to verifying parties

DID Authorization

Perform authentication and manage authorizations

@techgirl1908

Decentralized

Web Nodes

DWP

DWA

Verifiable Credentials

Decentralized

Identifiers

Your

App

The Stack

@techgirl1908

Alice's DWN

Music to my ears

Tidal

Spotify

navigator.did.request({
  schema: “schema.org/MusicPlaylist”,
  data: { ... }
})
navigator.did.request({
  schema: “schema.org/MusicPlaylist”
})

@techgirl1908

Alice's DWN

Hotell me your travel plans

navigator.did.store({
  schema: “schema.org/Trip”,
  data: { ... }
})

@techgirl1908

tbd.website

It's still TBD

Refactoring the Web

By Angie Jones

Refactoring the Web

Decentralized Web Platform is a new layer for the web that enables decentralized apps and protocols, allowing users to own and control their data.

  • 207