Enum safe_network::messaging::system::Proposal [−][src]
pub enum Proposal {
Online {
node_state: NodeState,
dst_key: Option<BlsPublicKey>,
},
Offline(NodeState),
SectionInfo(SectionAuthorityProvider),
OurElders(SectionAuth<SectionAuthorityProvider>),
JoinsAllowed(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
Fields of Online
node_state: NodeState
Current node state
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
Tuple Fields of Offline
0: NodeState
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.
Tuple Fields of SectionInfo
OurElders(SectionAuth<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.
Tuple Fields of OurElders
JoinsAllowed(bool)
Proposal to change whether new nodes are allowed to join our section.
Tuple Fields of JoinsAllowed
0: bool
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.
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more