pub struct Sync<N: Network> { /* private fields */ }Expand description
Block synchronization logic for validators.
Synchronization works differently for nodes that act as validators in AleoBFT; In the common case, validators generate blocks after receiving an anchor block that has been accepted by a supermajority of the committee instead of fetching entire blocks from other nodes. However, if a validator does not have an up-to-date DAG, it might still fetch entire blocks from other nodes.
This struct also manages fetching certificates from other validators during normal operation, and blocks when falling behind.
Finally, Sync handles synchronization of blocks with the validator’s local storage:
it loads blocks from the storage on startup and writes new blocks to the storage after discovering them.
Implementations§
Source§impl<N: Network> Sync<N>
impl<N: Network> Sync<N>
Sourcepub fn new(
gateway: Gateway<N>,
storage: Storage<N>,
ledger: Arc<dyn LedgerService<N>>,
block_sync: Arc<BlockSync<N>>,
) -> Self
pub fn new( gateway: Gateway<N>, storage: Storage<N>, ledger: Arc<dyn LedgerService<N>>, block_sync: Arc<BlockSync<N>>, ) -> Self
Initializes a new sync instance.
Source§impl<N: Network> Sync<N>
impl<N: Network> Sync<N>
Sourcepub fn num_blocks_behind(&self) -> Option<u32>
pub fn num_blocks_behind(&self) -> Option<u32>
Returns the number of blocks the node is behind the greatest peer height.
Sourcepub fn get_block_locators(&self) -> Result<BlockLocators<N>>
pub fn get_block_locators(&self) -> Result<BlockLocators<N>>
Returns the current block locators of the node.
Source§impl<N: Network> Sync<N>
impl<N: Network> Sync<N>
Sourcepub async fn send_certificate_request(
&self,
peer_ip: SocketAddr,
certificate_id: Field<N>,
) -> Result<BatchCertificate<N>>
pub async fn send_certificate_request( &self, peer_ip: SocketAddr, certificate_id: Field<N>, ) -> Result<BatchCertificate<N>>
Sends a certificate request to the specified peer.
Trait Implementations§
Auto Trait Implementations§
impl<N> Freeze for Sync<N>where
<N as Environment>::Field: Freeze,
<N as Environment>::Scalar: Freeze,
<N as Environment>::Projective: Freeze,
impl<N> !RefUnwindSafe for Sync<N>
impl<N> Send for Sync<N>
impl<N> Sync for Sync<N>
impl<N> Unpin for Sync<N>where
<N as Environment>::Field: Unpin,
<N as Environment>::Scalar: Unpin,
<N as Environment>::Projective: Unpin,
impl<N> !UnwindSafe for Sync<N>
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§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more