did:cow, a proposal for an ID resolution method with most of the convenience of did:plc/did:web and the robustness of a public blockchain
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

document python things

+23
+23
README.md
··· 183 183 - `update-controller <did> <newController>` — transfer control 184 184 - `deactivate <did>` — permanently deactivate 185 185 186 + **Resolution API ([`web/app.py`](web/app.py)):** 187 + 188 + A FastAPI server providing HTTP resolution, hosted at `https://api.cow.watch`. Run with: 189 + ```bash 190 + uvicorn app:app --host 127.0.0.1 --port 6666 191 + ``` 192 + - `GET /<did>` — resolve a did:cow DID and return the modified DID document (mirrors the [plc.directory](https://plc.directory) API shape) 193 + - `GET /<did>/describe` — return on-chain state without fetching the wrapped DID document 194 + - `GET /api/config` — return contract address and chain ID (used by the web UI) 195 + 196 + A systemd unit file is provided at [`web/cow-api.service`](web/cow-api.service). 197 + 198 + **Web UI ([`web/static/index.html`](web/static/index.html)):** 199 + 200 + A static single-page app hosted at `https://cow.watch`. Run locally with: 201 + ```bash 202 + python3 web/web.py # serves on port 6667 203 + ``` 204 + - **Resolve** — enter a did:cow DID to fetch and display the DID document, with the current controller and wrapped DID shown as editable fields 205 + - **Create** — construct a did:cow identifier from a controller address and wrapped DID, with an animated reveal 206 + - **Edit** — update the controller or wrapped DID via a MetaMask transaction (visible after resolving; requires wallet connection) 207 + - Deep-linking: `https://cow.watch/#!/did:cow:...` auto-resolves on load 208 + 186 209 ## 10. Example DID Document 187 210 188 211 This example shows a did:cow ID wrapping a did:plc identity. The resolved document is the underlying did:plc document with three modifications: the `id` is replaced with the did:cow identifier, and a `did:cow` block is added carrying the Ethereum controller address (as a did:pkh DID) and the wrapped DID for client validation.