From 1d855e1633e53a28a682b80961b2189bd7ebf0c9 Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Tue, 3 Dec 2024 11:52:29 -0600 Subject: [PATCH] move chunks to tags --- buds/10.md | 49 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/buds/10.md b/buds/10.md index ebd9bf0..15dbf0a 100644 --- a/buds/10.md +++ b/buds/10.md @@ -18,14 +18,20 @@ Clients MUST create a merkle tree using the chunk hashes as the leaf nodes Clients should publish a `2001` kind event after chunking the file in order to store the list of chunks -The events `content` MUST be a new-line delimitated list of sha256 hashes +The events MUST contain an ordered list of `chunk` tags with the sha256 hashes of the chunks -```txt -7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671 -9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1 -7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798 -fadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345 -5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca +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"], + ] +} ``` The event MUST have an `x` tag with the sha256 hash of the ordered concatenated hashes of each chunk @@ -56,13 +62,27 @@ echo -e "\nRoot hash:" echo "$concatenated" | xxd -r -p | sha256sum ``` +The final `chunk` tags and `x` tag should look something like this + +```json +{ + "tags": [ + [ "chunk", "7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671"], + [ "chunk", "9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1"], + [ "chunk", "7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798"], + [ "chunk", "fadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345"], + [ "chunk", "5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca"], + [ "x", "2d839865ac17d8bb10168490a88107637619f79dac21275fcec1705162581f39" ], + ] +} +``` + ### 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 - - `summary` A short summary of the file - `mime` Mime type of file - `size` Total size in bytes of the file - `server` (multiple) Recommended servers to download chunks from @@ -72,12 +92,17 @@ Metadata tags: Example `2001` event ```json { - "id": "13dfd656bedaca1f5fbb5da3b585d9c13061aa6aee136a0dc7d534f4d2540941", - "pubkey": "939e77d64e8eb5c240f60bf29f80a619d6057e70fcf5d25755da012fe1b9502e", + "id": "fd2f4da046851170576e7a09009e63f752dc469c61a24faca514b2cedfe641aa", + "pubkey": "5328e6c743a50271745e16476590ba7ea3dc591c65f3a5e2b03430814c1dabc0", "created_at": 1731405194, "kind": 2001, - "content": "7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671\n9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1\n7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798\nfadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345\n5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca", + "content": "Here is the original version", "tags": [ + [ "chunk", "7e668b56a58c7891e0cf263ea3f093b75eebade23d663a45aa9920f347b3d671"], + [ "chunk", "9b9c44a91396f19fd8700986eb0586dff2dcccf96c75bc2caefef302bcd78da1"], + [ "chunk", "7a281548f1223664b855b10b08e59e84389ccabeb742517f6cd75eda2724a798"], + [ "chunk", "fadeccee86b123088bbc452df10e8fbc99d4c2f22a70ef7a35605ec8e439c345"], + [ "chunk", "5d62398419e6d136771541f3d2215e0ce31b1be45e99dbc64b43a4b734b447ca"], [ "x", "2d839865ac17d8bb10168490a88107637619f79dac21275fcec1705162581f39" ], [ "name", "example.mp4" ], [ "mime", "video/mp4" ], @@ -85,6 +110,6 @@ Example `2001` event [ "server", "https://cdn.example.com" ], [ "server", "https://nostr.download" ] ], - "sig": "949b52a12fcd788eb416069b231e106eeb36b4987052c29904b547cabf5a52ebb42acfbce1ae61139042064b6950e69e322c5edbe77603ac2241a4d0e953ddd4" + "sig": "cd589a4ea702185c69d1fec93a7704265071b674c5708a1da04d08bcba873f5277bc0abb379cbb014852fafa2ac951ed49abbdba60028a4f02ef4e31ff2599cb" } ```