Struct Node

Source
pub struct Node<B, S>
where B: Blockstore + 'static, S: Store + 'static,
{ /* private fields */ }
Expand description

Celestia node.

Implementations§

Source§

impl Node<InMemoryBlockstore, InMemoryStore>

Source

pub fn builder() -> NodeBuilder<InMemoryBlockstore, InMemoryStore>

Creates a new NodeBuilder that is using in-memory stores.

After the creation you can use NodeBuilder::blockstore and NodeBuilder::store to set other stores.

§Example
let node = Node::builder()
    .network(Network::Mainnet)
    .start()
    .await
    .unwrap();
Source§

impl<B, S> Node<B, S>
where B: Blockstore, S: Store,

Source

pub async fn stop(self)

Stop the node.

Source

pub fn event_subscriber(&self) -> EventSubscriber

Returns a new EventSubscriber.

Source

pub fn local_peer_id(&self) -> &PeerId

Get node’s local peer ID.

Source

pub fn peer_tracker_info(&self) -> PeerTrackerInfo

Get current PeerTrackerInfo.

Source

pub fn peer_tracker_info_watcher(&self) -> Receiver<PeerTrackerInfo>

Get PeerTrackerInfo watcher.

Source

pub async fn wait_connected(&self) -> Result<()>

Wait until the node is connected to at least 1 peer.

Source

pub async fn wait_connected_trusted(&self) -> Result<()>

Wait until the node is connected to at least 1 trusted peer.

Source

pub async fn network_info(&self) -> Result<NetworkInfo>

Get current network info.

Source

pub async fn listeners(&self) -> Result<Vec<Multiaddr>>

Get all the multiaddresses on which the node listens.

Source

pub async fn connected_peers(&self) -> Result<Vec<PeerId>>

Get all the peers that node is connected to.

Source

pub async fn set_peer_trust( &self, peer_id: PeerId, is_trusted: bool, ) -> Result<()>

Trust or untrust the peer with a given ID.

Source

pub async fn request_head_header(&self) -> Result<ExtendedHeader>

Request the head header from the network.

Source

pub async fn request_header_by_hash( &self, hash: &Hash, ) -> Result<ExtendedHeader>

Request a header for the block with a given hash from the network.

Source

pub async fn request_header_by_height( &self, hash: u64, ) -> Result<ExtendedHeader>

Request a header for the block with a given height from the network.

Source

pub async fn request_verified_headers( &self, from: &ExtendedHeader, amount: u64, ) -> Result<Vec<ExtendedHeader>>

Request headers in range (from, from + amount] from the network.

The headers will be verified with the from header.

Source

pub async fn request_row( &self, row_index: u16, block_height: u64, timeout: Option<Duration>, ) -> Result<Row>

Request a verified Row from the network.

§Errors

On failure to receive a verified Row within a certain time, the NodeError::P2p(P2pError::BitswapQueryTimeout) error will be returned.

Source

pub async fn request_sample( &self, row_index: u16, column_index: u16, block_height: u64, timeout: Option<Duration>, ) -> Result<Sample>

Request a verified Sample from the network.

§Errors

On failure to receive a verified Sample within a certain time, the NodeError::P2p(P2pError::BitswapQueryTimeout) error will be returned.

Source

pub async fn request_row_namespace_data( &self, namespace: Namespace, row_index: u16, block_height: u64, timeout: Option<Duration>, ) -> Result<RowNamespaceData>

Request a verified RowNamespaceData from the network.

§Errors

On failure to receive a verified RowNamespaceData within a certain time, the NodeError::P2p(P2pError::BitswapQueryTimeout) error will be returned.

Source

pub async fn request_all_blobs( &self, namespace: Namespace, block_height: u64, timeout: Option<Duration>, ) -> Result<Vec<Blob>>

Request all blobs with provided namespace in the block corresponding to this header using bitswap protocol.

Source

pub async fn syncer_info(&self) -> Result<SyncingInfo>

Get current header syncing info.

Source

pub async fn get_network_head_header(&self) -> Result<Option<ExtendedHeader>>

Get the latest header announced in the network.

Source

pub async fn get_local_head_header(&self) -> Result<ExtendedHeader>

Get the latest locally synced header.

Source

pub async fn get_header_by_hash(&self, hash: &Hash) -> Result<ExtendedHeader>

Get a synced header for the block with a given hash.

Source

pub async fn get_header_by_height(&self, height: u64) -> Result<ExtendedHeader>

Get a synced header for the block with a given height.

Source

pub async fn get_headers<R>(&self, range: R) -> Result<Vec<ExtendedHeader>>
where R: RangeBounds<u64> + Send,

Get synced headers from the given heights range.

If start of the range is unbounded, the first returned header will be of height 1. If end of the range is unbounded, the last returned header will be the last header in the store.

§Errors

If range contains a height of a header that is not found in the store or RangeBounds cannot be converted to a valid range.

Source

pub async fn get_sampling_metadata( &self, height: u64, ) -> Result<Option<SamplingMetadata>>

Get data sampling metadata of an already sampled height.

Returns Ok(None) if metadata for the given height does not exists.

Trait Implementations§

Source§

impl<B, S> Drop for Node<B, S>
where B: Blockstore, S: Store,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<B, S> Freeze for Node<B, S>

§

impl<B, S> RefUnwindSafe for Node<B, S>

§

impl<B, S> Send for Node<B, S>

§

impl<B, S> Sync for Node<B, S>

§

impl<B, S> Unpin for Node<B, S>

§

impl<B, S> UnwindSafe for Node<B, S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<S> CondSend for S
where S: Send,

Source§

impl<S> CondSync for S
where S: Send + Sync,

Source§

impl<T> ErasedDestructor for T
where T: 'static,