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
impl Clone for RootBranchV0
Source§fn clone(&self) -> RootBranchV0
fn clone(&self) -> RootBranchV0
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more