pub struct NewView {
pub chain_id: ChainID,
pub view: ViewNumber,
pub highest_pc: PhaseCertificate,
}
Expand description
Message sent by a replica to the leaders of the next view on
view timeout to make them aware of the replica’s highest_pc
.
§NewView
and view synchronization
In the original HotStuff protocol, the leader of the next view keeps track of the number of
NewView
messages collected in the current view with the aim of advancing to the next view once a
quorum of NewView
messages are seen. This behavior implements a rudimentary view synchronization
mechanism, which is helpful in the original HotStuff protocol because it did not come with a
“fully-featured” BFT view synchronization mechanism.
HotStuff-rs, on the other hand, does include a separate BFT view synchronization mechanism (in the form of the Pacemaker module). Therefore, we deem this behavior unnecessary and do not implement it.
Fields§
§chain_id: ChainID
ChainID
of the block tree that highest_pc.block
is part of.
view: ViewNumber
The view
that the replica sending this NewView
is exiting.
highest_pc: PhaseCertificate
The sending replica’s highest_pc
.
Trait Implementations§
source§impl BorshDeserialize for NewView
impl BorshDeserialize for NewView
fn deserialize_reader<R: Read>(reader: &mut R) -> Result<Self, Error>
§fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
§fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_reader<R>(reader: &mut R) -> Result<Self, Error>where
R: Read,
Auto Trait Implementations§
impl Freeze for NewView
impl RefUnwindSafe for NewView
impl Send for NewView
impl Sync for NewView
impl Unpin for NewView
impl UnwindSafe for NewView
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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)