Enum safe_network::messaging::node::Proposal [−][src]
pub enum Proposal { Online { node_state: NodeState, previous_name: Option<XorName>, dst_key: Option<BlsPublicKey>, }, Offline(NodeState), SectionInfo(SectionAuthorityProvider), OurElders(SectionSigned<SectionAuthorityProvider>), AccumulateAtSrc { message: Box<PlainMessage>, proof_chain: SecuredLinkedList, }, JoinsAllowed((MessageId, bool)), }
Expand description
A step in the Propose-Broadcast-Aggregate-Execute workflow. A proposal about the state of the network This can be a result of seeing a node come online, go offline, changes to section info etc. Anything where we need section authority before action can be taken
Variants
Proposal to add a node to oursection
Show fields
Fields of Online
node_state: NodeState
Current node state
previous_name: Option<XorName>
Previous name if relocated.
dst_key: Option<BlsPublicKey>
The key of the destination section that the joining node knows, if any.
Offline(NodeState)
Proposal to remove a node from our section
SectionInfo(SectionAuthorityProvider)
Proposal to update info about a section. This has two purposes:
- To signal the completion of a DKG by the elder candidates to the current elders. This proposal is then signed by the newly generated section key.
- To update information about other section in the network. In this case the proposal is signed by an existing key from the chain.
OurElders(SectionSigned<SectionAuthorityProvider>)
Proposal to change the elders (and possibly the prefix) of our section.
NOTE: the SectionAuthorityProvider
is already signed with the new key. This proposal is only to signs the
new key with the current key. That way, when it aggregates, we obtain all the following
pieces of information at the same time:
- the new section authority provider
- the new key
- the signature of the new section authority provider using the new key
- the signature of the new key using the current key Which we can use to update the section section authority provider and the section chain at the same time as a single atomic operation without needing to cache anything.
Proposal to accumulate the message at the source (that is, our section) and then send it to its destination.
Show fields
Fields of AccumulateAtSrc
message: Box<PlainMessage>
Message to be accumulated
proof_chain: SecuredLinkedList
Verifiable section chain
Proposal to change whether new nodes are allowed to join our section.
Trait Implementations
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>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for Proposal
impl UnwindSafe for Proposal
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V