Expand description
§EncodedPostBundleFeedbackV1 — server-signed aggregate feedback for a bundle
Feedback (reactions, upvotes/downvotes, flags) on the posts in a single
(location, time bucket) is aggregated into its own bundle, parallel to — but
independent of — the crate::protocol::posting::encoded_post_bundle. The two are
split because feedback can change long after the post bundle itself has sealed, and
many consumers don’t need the feedback layer at all.
Wire format:
- Header (server-signed) — lists every feedback entry’s
(post_id, feedback_type, salt, pow)along with a hash of the body. Signed by the publishingcrate::protocol::peer::Peer. - Body — a packed array of fixed-size
crate::protocol::posting::encoded_post_feedback::EncodedPostFeedbackV1entries, exactlyN * ENTRY_SIZEbytes. Fixed sizing means iteration and verification are O(N) with no per-entry header overhead.
verify() checks the signature, confirms body length is a multiple of ENTRY_SIZE,
re-hashes the body and compares against the header’s hash, and checks the
proof-of-work on every entry against the numeraire — Sybil-resistant voting in one
pass.