pub struct Hopr<Chain, Db> { /* private fields */ }Expand description
HOPR main object providing the entire HOPR node functionality
Instantiating this object creates all processes and objects necessary for
running the HOPR node. Once created, the node can be started using the
run() method.
Externally offered API should be enough to perform all necessary tasks with the HOPR node manually, but it is advised to create such a configuration that manual interaction is unnecessary.
As such, the hopr_lib serves mainly as an integration point into Rust programs.
Implementations§
Source§impl<Chain, Db> Hopr<Chain, Db>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
impl<Chain, Db> Hopr<Chain, Db>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
pub async fn new( identity: (&ChainKeypair, &OffchainKeypair), hopr_chain_api: Chain, hopr_node_db: Db, cfg: HoprLibConfig, ) -> Result<Self>
pub fn status(&self) -> HoprState
pub async fn get_balance<C: Currency + Send>(&self) -> Result<Balance<C>>
pub async fn get_safe_balance<C: Currency + Send>(&self) -> Result<Balance<C>>
pub async fn chain_info(&self) -> Result<ChainInfo>
pub fn get_safe_config(&self) -> SafeModule
pub fn config(&self) -> &HoprLibConfig
pub async fn run<Ct, T: HoprSessionServer + Clone + Send + 'static>( &self, cover_traffic: Option<Ct>, serve_handler: T, ) -> Result<HoprTransportIO>
Sourcepub fn shutdown(&self) -> Result<(), HoprLibError>
pub fn shutdown(&self) -> Result<(), HoprLibError>
Used to practically shut down all node’s processes without dropping the instance.
This means that the instance can be used to retrieve some information, but all
active operations will stop and new will be impossible to perform.
Such operations will return HoprStatusError::NotThereYet.
This is the final state and cannot be reversed by calling [HoprLib::run] again.
Sourcepub fn subscribe_winning_tickets(
&self,
) -> impl Stream<Item = VerifiedTicket> + Send
pub fn subscribe_winning_tickets( &self, ) -> impl Stream<Item = VerifiedTicket> + Send
Allows external users to receive notifications about new winning tickets.
Sourcepub fn me_peer_id(&self) -> PeerId
pub fn me_peer_id(&self) -> PeerId
Own PeerId used in the libp2p transport layer
Sourcepub async fn get_public_nodes(
&self,
) -> Result<Vec<(PeerId, Address, Vec<Multiaddr>)>>
pub async fn get_public_nodes( &self, ) -> Result<Vec<(PeerId, Address, Vec<Multiaddr>)>>
Get the list of all announced public nodes in the network
Sourcepub async fn ping(&self, peer: &PeerId) -> Result<(Duration, PeerStatus)>
pub async fn ping(&self, peer: &PeerId) -> Result<(Duration, PeerStatus)>
Ping another node in the network based on the PeerId
Returns the RTT (round trip time), i.e. how long it took for the ping to return.
Sourcepub async fn connect_to(
&self,
destination: Address,
target: SessionTarget,
cfg: SessionClientConfig,
) -> Result<HoprSession>
pub async fn connect_to( &self, destination: Address, target: SessionTarget, cfg: SessionClientConfig, ) -> Result<HoprSession>
Create a client session connection returning a session object that implements
[futures::io::AsyncRead] and [futures::io::AsyncWrite] and can bu used as a read/write binary session.
Sourcepub async fn keep_alive_session(&self, id: &SessionId) -> Result<()>
pub async fn keep_alive_session(&self, id: &SessionId) -> Result<()>
Sends keep-alive to the given [HoprSessionId], making sure the session is not
closed due to inactivity.
pub async fn get_session_surb_balancer_config( &self, id: &SessionId, ) -> Result<Option<SurbBalancerConfig>>
pub async fn update_session_surb_balancer_config( &self, id: &SessionId, cfg: SurbBalancerConfig, ) -> Result<()>
Sourcepub fn local_multiaddresses(&self) -> Vec<Multiaddr>
pub fn local_multiaddresses(&self) -> Vec<Multiaddr>
List all multiaddresses announced by this node
Sourcepub async fn listening_multiaddresses(&self) -> Vec<Multiaddr>
pub async fn listening_multiaddresses(&self) -> Vec<Multiaddr>
List all multiaddresses on which the node is listening
Sourcepub async fn network_observed_multiaddresses(
&self,
peer: &PeerId,
) -> Vec<Multiaddr>
pub async fn network_observed_multiaddresses( &self, peer: &PeerId, ) -> Vec<Multiaddr>
List all multiaddresses observed for a PeerId
Sourcepub async fn multiaddresses_announced_on_chain(
&self,
peer: &PeerId,
) -> Result<Vec<Multiaddr>>
pub async fn multiaddresses_announced_on_chain( &self, peer: &PeerId, ) -> Result<Vec<Multiaddr>>
List all multiaddresses announced on-chain for the given node.
Sourcepub async fn network_health(&self) -> Health
pub async fn network_health(&self) -> Health
Get measured network health
Sourcepub async fn network_connected_peers(&self) -> Result<Vec<PeerId>>
pub async fn network_connected_peers(&self) -> Result<Vec<PeerId>>
List all peers connected to this
Sourcepub async fn network_peer_info(
&self,
peer: &PeerId,
) -> Result<Option<PeerStatus>>
pub async fn network_peer_info( &self, peer: &PeerId, ) -> Result<Option<PeerStatus>>
Get all data collected from the network relevant for a PeerId
Sourcepub async fn all_network_peers(
&self,
minimum_quality: f64,
) -> Result<Vec<(Option<Address>, PeerId, PeerStatus)>>
pub async fn all_network_peers( &self, minimum_quality: f64, ) -> Result<Vec<(Option<Address>, PeerId, PeerStatus)>>
Get peers connected peers with quality higher than some value
Sourcepub async fn tickets_in_channel(
&self,
channel_id: &ChannelId,
) -> Result<Option<Vec<RedeemableTicket>>>
pub async fn tickets_in_channel( &self, channel_id: &ChannelId, ) -> Result<Option<Vec<RedeemableTicket>>>
Get all tickets in a channel specified by channel_id.
Sourcepub async fn all_tickets(&self) -> Result<Vec<VerifiedTicket>>
pub async fn all_tickets(&self) -> Result<Vec<VerifiedTicket>>
Get all tickets
Sourcepub async fn ticket_statistics(&self) -> Result<ChannelTicketStatistics>
pub async fn ticket_statistics(&self) -> Result<ChannelTicketStatistics>
Get statistics for all tickets
Sourcepub async fn reset_ticket_statistics(&self) -> Result<()>
pub async fn reset_ticket_statistics(&self) -> Result<()>
Reset the ticket metrics to zero
pub fn me_onchain(&self) -> Address
Sourcepub async fn get_ticket_price(&self) -> Result<HoprBalance>
pub async fn get_ticket_price(&self) -> Result<HoprBalance>
Get ticket price
Sourcepub async fn get_minimum_incoming_ticket_win_probability(
&self,
) -> Result<WinningProbability>
pub async fn get_minimum_incoming_ticket_win_probability( &self, ) -> Result<WinningProbability>
Get minimum incoming ticket winning probability
Sourcepub async fn accounts_announced_on_chain(&self) -> Result<Vec<AccountEntry>>
pub async fn accounts_announced_on_chain(&self) -> Result<Vec<AccountEntry>>
List of all accounts announced on the chain
Sourcepub async fn channel_from_hash(
&self,
channel_id: &Hash,
) -> Result<Option<ChannelEntry>>
pub async fn channel_from_hash( &self, channel_id: &Hash, ) -> Result<Option<ChannelEntry>>
Get the channel entry from Hash. @returns the channel entry of those two nodes
Sourcepub async fn channel(
&self,
src: &Address,
dest: &Address,
) -> Result<Option<ChannelEntry>>
pub async fn channel( &self, src: &Address, dest: &Address, ) -> Result<Option<ChannelEntry>>
Get the channel entry between source and destination node. @param src Address @param dest Address @returns the channel entry of those two nodes
Sourcepub async fn channels_from(&self, src: &Address) -> Result<Vec<ChannelEntry>>
pub async fn channels_from(&self, src: &Address) -> Result<Vec<ChannelEntry>>
List all channels open from a specified Address
Sourcepub async fn channels_to(&self, dest: &Address) -> Result<Vec<ChannelEntry>>
pub async fn channels_to(&self, dest: &Address) -> Result<Vec<ChannelEntry>>
List all channels open to a specified address
Sourcepub async fn all_channels(&self) -> Result<Vec<ChannelEntry>>
pub async fn all_channels(&self) -> Result<Vec<ChannelEntry>>
List all channels
Sourcepub async fn safe_allowance(&self) -> Result<HoprBalance>
pub async fn safe_allowance(&self) -> Result<HoprBalance>
Current safe allowance balance
Sourcepub async fn withdraw_tokens(
&self,
recipient: Address,
amount: HoprBalance,
) -> Result<Hash>
pub async fn withdraw_tokens( &self, recipient: Address, amount: HoprBalance, ) -> Result<Hash>
Withdraw on-chain assets to a given address @param recipient the account where the assets should be transferred to @param amount how many tokens to be transferred
Sourcepub async fn withdraw_native(
&self,
recipient: Address,
amount: XDaiBalance,
) -> Result<Hash>
pub async fn withdraw_native( &self, recipient: Address, amount: XDaiBalance, ) -> Result<Hash>
Withdraw on-chain native assets to a given address @param recipient the account where the assets should be transferred to @param amount how many tokens to be transferred
pub async fn open_channel( &self, destination: &Address, amount: HoprBalance, ) -> Result<OpenChannelResult>
pub async fn fund_channel( &self, channel_id: &Hash, amount: HoprBalance, ) -> Result<Hash>
pub async fn close_channel_by_id( &self, channel_id: &ChannelId, ) -> Result<CloseChannelResult>
pub async fn get_channel_closure_notice_period(&self) -> Result<Duration>
pub fn redemption_requests( &self, ) -> Result<impl Sink<TicketSelector, Error = HoprLibError> + Clone>
pub async fn redeem_all_tickets<B: Into<HoprBalance>>( &self, min_value: B, ) -> Result<()>
pub async fn redeem_tickets_with_counterparty<B: Into<HoprBalance>>( &self, counterparty: &Address, min_value: B, ) -> Result<()>
pub async fn redeem_tickets_in_channel<B: Into<HoprBalance>>( &self, channel_id: &Hash, min_value: B, ) -> Result<()>
pub async fn redeem_ticket(&self, ack_ticket: AcknowledgedTicket) -> Result<()>
pub async fn peerid_to_chain_key( &self, peer_id: &PeerId, ) -> Result<Option<Address>>
pub async fn chain_key_to_peerid( &self, address: &Address, ) -> Result<Option<PeerId>>
Auto Trait Implementations§
impl<Chain, Db> !Freeze for Hopr<Chain, Db>
impl<Chain, Db> !RefUnwindSafe for Hopr<Chain, Db>
impl<Chain, Db> Send for Hopr<Chain, Db>
impl<Chain, Db> Sync for Hopr<Chain, Db>
impl<Chain, Db> Unpin for Hopr<Chain, Db>
impl<Chain, Db> !UnwindSafe for Hopr<Chain, Db>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.