Struct RootBranchV0

Source
pub struct RootBranchV0 {
    pub id: PubKey,
    pub repo: ObjectRef,
    pub store: StoreOverlay,
    pub store_sig: Option<Signature>,
    pub topic: TopicId,
    pub topic_privkey: Vec<u8>,
    pub inherit_perms_users_and_quorum_from_store: Option<ReadCap>,
    pub quorum: Option<ObjectRef>,
    pub reconciliation_interval: RelTime,
    pub owners: Vec<UserId>,
    pub owners_write_cap: Vec<ByteBuf>,
    pub metadata: Vec<u8>,
}
Expand description

Root Branch definition V0

Second commit in the root branch, signed by repository key is used also to update the root branch definition when users are removed, quorum(s) are changed, repo is moved to other store. In this case, it is signed by its author, and requires an additional group signature by the total_order_quorum or by the owners_quorum. DEPS: Reference to the previous root branch definition commit, if it is an update

Fields§

§id: PubKey

Branch public key ID, equal to the repo_id

§repo: ObjectRef

Reference to the repository commit, to get the verification_program and other immutable details

§store: StoreOverlay

Store ID the repo belongs to the identity is checked by verifiers (check overlay is matching)

§store_sig: Option<Signature>

signature of repoId with store’s partial_order signature in order to verify that the store recognizes this repo as part of itself. only if not a store root repo itself

§topic: TopicId

Pub/sub topic ID for publishing events about the root branch

§topic_privkey: Vec<u8>

topic private key (a BranchWriteCapSecret), encrypted with a key derived as follow BLAKE3 derive_key (“NextGraph Branch WriteCap Secret BLAKE3 key”, RepoWriteCapSecret, TopicId, BranchId ) so that only editors of the repo can decrypt the privkey nonce = 0 not encrypted for individual store repo.

§inherit_perms_users_and_quorum_from_store: Option<ReadCap>

if set, permissions are inherited from Store Repo. Optional is a store_read_cap (only set if this repo is not the store repo itself) check that it matches the self.store can only be committed by an owner it generates a new certificate owners are not inherited from store empty for private repos, eventhough they are all implicitly inheriting perms from private store

§quorum: Option<ObjectRef>

Quorum definition ObjectRef TODO: ObjectKey should be encrypted with SIGNER_KEY ?

§reconciliation_interval: RelTime

BEC periodic reconciliation interval. zero deactivates it

§owners: Vec<UserId>§owners_write_cap: Vec<ByteBuf>

when the list of owners is changed, a crypto_box containing the RepoWriteCapSecret should be included here for each owner. this should also be done at creation time, with the UserId of the first owner, except for individual private store repo, because it doesnt have a RepoWriteCapSecret the vector has the same order and size as the owners one. each owner finds their write_cap here.

§metadata: Vec<u8>

Mutable App-specific metadata

Trait Implementations§

Source§

impl Clone for RootBranchV0

Source§

fn clone(&self) -> RootBranchV0

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RootBranchV0

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RootBranchV0

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for RootBranchV0

Source§

fn eq(&self, other: &RootBranchV0) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for RootBranchV0

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RootBranchV0

Source§

impl StructuralPartialEq for RootBranchV0

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,