{"id":"8c3459dc2d0480892b333513e6196d372fd901c6daaff9aee9d551dabab21e57","pubkey":"b22b06b051fd5232966a9344a634d956c3dc33a7f5ecdcad9ed11ddc4120a7f2","created_at":1773354264,"kind":30817,"tags":[["d","bud-blob-ownership"],["title","BUD Blob Ownership"],["k","24242"],["client","nostrhub.io"]],"content":"# BUD-XX\n\n## Blob Ownership\n\n`draft` `optional`\n\nDefines a decentralized ownership model for blobs where multiple pubkeys can be owners, anyone can become an owner, and blobs may be deleted when no owners remain.\n\n## Overview\n\nThis BUD introduces the concept of **blob ownership**. A blob can have multiple owners, and the blob's existence is tied to having at least one owner. This enables use cases such as:\n\n- **Immutable uploads**: Uploader designates recipients as owners, uploader cannot delete alone.\n- **Shared custody**: Multiple parties share responsibility for a blob.\n- **Community resources**: Anyone can \"adopt\" a blob by becoming an owner.\n\n## Ownership Model\n\n- A blob **MAY** have multiple owners.\n- **Anyone** can become an owner of any blob by claiming ownership.\n- An owner **MAY** remove themselves from the owner list.\n- **No one** can remove another pubkey from the owner list.\n\n## Endpoints\n\n### PUT /owner - Add Owners\n\nServers implementing this BUD **MUST** accept `PUT` requests to the `/owner` endpoint to add owners of a blob.\n\n#### Authorization\n\nRequests **MUST** include a valid Nostr authorization token as defined in [BUD-11](./11.md):\n\n- The `t` tag **MUST** be set to `claim`.\n- One or more `p` tags **MUST** be present, each containing a pubkey to add as owner.\n\n---\n\n### DELETE /owner - Release Ownership (self-removal)\n\nServers implementing this BUD **MUST** accept `DELETE` requests to the `/owner` endpoint for an owner to remove themselves from the owner list.\n\n#### Authorization\n\nRequests **MUST** include a valid Nostr authorization token as defined in [BUD-11](./11.md):\n\n- The `t` tag **MUST** be set to `unclaim`.\n\n---\n\n## Interaction with BUD-02\n\nThe `DELETE /<sha256>` endpoint behaves differently based on the number of owners:\n\n- **Multiple owners**: The request **MUST** be treated as an `unclaim`, only the signer is removed from the owner list, the blob is not deleted.\n- **Single or no owner**: The request **MAY** delete the blob.\n\n---\n\n## Use Cases\n\n### Recipient only can delete\n\n```txt\n1. Alice (X) uploads blob with initial owner: Bob (Y)\n2. Alice is NOT an owner → cannot delete\n3. Bob is the only owner → can delete\n```","sig":"ee92f5ebe25fdecbe720526cbb1a6d7c6b5ac6d60f467384cde63b3df65ddcac6925e78b88e1e82bd95ee92baa821bad489d340f94bebfc2bb70cfc14ae7c279"}