pub struct MembershipRollupBody {
pub store_root_hash: ObjectHash,
pub author_registration: StoreDeviceRegistrationRef,
pub streams: Vec<MembershipRollupStream>,
pub resolutions: Vec<MembershipRollupResolution>,
}Expand description
Every membership object a reader needs to reach one membership frontier, carried in one object.
The membership chain is hash-linked per author stream, so a reader has to verify it in order — but it does not have to fetch it in order, and it does not have to fetch it one object at a time. A device joining a Store with a few dozen membership changes spent two provider round trips per change discovering and reading objects that had not moved in months, which on a live store was about eighty percent of the whole join.
This carries all of them. Nothing in it is believed: a reader takes the bytes, keys them by the slot and the content address they claim, and then runs the identical anchored-chain walk it would have run over its own reads — same signature checks, same predecessor linkage, same Store-commit activation for authority changes, same conflict-resolution layering. A rollup that is stale costs the reader the tail it does not cover; a rollup that is wrong is refused here and the reader walks the provider exactly as it did before.
It is published beside a snapshot and named by the signed snapshot metadata, which is what makes it discoverable before a joining device has opened the Store keyring — the membership chain is what opens that keyring, so nothing a joiner needs to read it can live behind it.
Fields§
§store_root_hash: ObjectHash§streams: Vec<MembershipRollupStream>§resolutions: Vec<MembershipRollupResolution>Trait Implementations§
Source§impl Clone for MembershipRollupBody
impl Clone for MembershipRollupBody
Source§fn clone(&self) -> MembershipRollupBody
fn clone(&self) -> MembershipRollupBody
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MembershipRollupBody
impl Debug for MembershipRollupBody
Source§impl<'de> Deserialize<'de> for MembershipRollupBody
impl<'de> Deserialize<'de> for MembershipRollupBody
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for MembershipRollupBody
impl PartialEq for MembershipRollupBody
Source§impl Serialize for MembershipRollupBody
impl Serialize for MembershipRollupBody
Source§impl SignedBody for MembershipRollupBody
impl SignedBody for MembershipRollupBody
impl Eq for MembershipRollupBody
impl StructuralPartialEq for MembershipRollupBody
Auto Trait Implementations§
impl Freeze for MembershipRollupBody
impl RefUnwindSafe for MembershipRollupBody
impl Send for MembershipRollupBody
impl Sync for MembershipRollupBody
impl Unpin for MembershipRollupBody
impl UnsafeUnpin for MembershipRollupBody
impl UnwindSafe for MembershipRollupBody
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.