# BUD-12 ## Chunked blobs `draft` `optional` Breaking large blobs into smaller chunks for distribution ### Chunking The client MAY break large blobs into any number or size of chunks. although its recommended to use the size `1Mb` or `4Mb` for small and large chunks Clients MUST NOT pad the remaining chunk, If clients need privacy they should use random chunk sizes and optionally encrypt the large blob ### Publishing Clients should publish a `2001` kind event after chunking the file in order to store the list of chunks The events MUST contain an ordered list of `chunk` tags with the sha256 hashes of the chunks The `content` field MUST be a human readable description of the chunked file ```json { "tags": [ [ "chunk", "7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671"], [ "chunk", "9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1"], [ "chunk", "7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798"], [ "chunk", "fadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345"], [ "chunk", "5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca"], ] } ``` ### Metadata The `2001` event MAY include additional metadata tags to help other clients know the filename, mime type or servers to download from Metadata tags: - `name` Filename - `mime` Mime type of file - `size` Total size in bytes of the file - `server` (multiple) Recommended servers to download chunks from ### Examples Example `2001` event ```json { "pubkey": "5328e6c743a50271745e16476590ba7ea3dc591c65f3a5e2b03430814c1dabc0", "created_at": 1731405194, "kind": 2001, "content": "Large zip archive of documents", "tags": [ [ "chunk", "7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671"], [ "chunk", "9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1"], [ "chunk", "7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798"], [ "chunk", "fadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345"], [ "chunk", "5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca"], [ "name", "example.mp4" ], [ "mime", "video/mp4" ], [ "size", "4823449" ], [ "server", "https://cdn.example.com" ], [ "server", "https://nostr.download" ] ] } ```