pub struct Hopr { /* 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 sufficient 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 Hopr
impl Hopr
pub fn new( cfg: HoprLibConfig, me: &OffchainKeypair, me_onchain: &ChainKeypair, ) -> Result<Self>
pub fn status(&self) -> HoprState
pub fn version_coerced(&self) -> String
pub fn version(&self) -> String
pub fn network(&self) -> String
pub async fn get_balance(&self, balance_type: BalanceType) -> Result<Balance>
pub async fn get_eligibility_status(&self) -> Result<bool>
pub async fn get_safe_balance( &self, balance_type: BalanceType, ) -> Result<Balance>
pub fn get_safe_config(&self) -> SafeModule
pub fn chain_config(&self) -> ChainNetworkConfig
pub fn get_provider(&self) -> String
pub async fn run<T: HoprSessionReactor + Clone + Send + 'static>( &self, serve_handler: T, ) -> Result<(HoprSocket, HashMap<HoprLibProcesses, JoinHandle<()>>)>
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 get_indexer_state(&self) -> Result<IndexerStateInfo>
pub async fn get_indexer_state(&self) -> Result<IndexerStateInfo>
Returns the most recently indexed log, if any.
Sourcepub async fn is_allowed_to_access_network(&self, peer: &PeerId) -> Result<bool>
pub async fn is_allowed_to_access_network(&self, peer: &PeerId) -> Result<bool>
Test whether the peer with PeerId is allowed to access 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, cfg: SessionClientConfig) -> Result<HoprSession>
pub async fn connect_to(&self, cfg: SessionClientConfig) -> Result<HoprSession>
Create a client session connection returning a session object that implements
[AsyncRead
] and [AsyncWrite
] and can bu used as a read/write binary session.
Sourcepub async fn send_message(
&self,
msg: Box<[u8]>,
destination: PeerId,
options: RoutingOptions,
application_tag: Option<u16>,
) -> Result<()>
pub async fn send_message( &self, msg: Box<[u8]>, destination: PeerId, options: RoutingOptions, application_tag: Option<u16>, ) -> Result<()>
Send a message to another peer in the network
@param msg message to send @param destination PeerId of the destination @param options optional configuration of the message path using hops and intermediatePath @param applicationTag optional tag identifying the sending application @returns ack challenge
Sourcepub async fn aggregate_tickets(&self, channel: &Hash) -> Result<()>
pub async fn aggregate_tickets(&self, channel: &Hash) -> Result<()>
Attempts to aggregate all tickets in the given channel
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,
) -> Vec<Multiaddr>
pub async fn multiaddresses_announced_on_chain( &self, peer: &PeerId, ) -> 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: &Hash,
) -> Result<Option<Vec<AcknowledgedTicket>>>
pub async fn tickets_in_channel( &self, channel: &Hash, ) -> Result<Option<Vec<AcknowledgedTicket>>>
Get all tickets in a channel specified by Hash
Sourcepub async fn all_tickets(&self) -> Result<Vec<Ticket>>
pub async fn all_tickets(&self) -> Result<Vec<Ticket>>
Get all tickets
Sourcepub async fn ticket_statistics(&self) -> Result<TicketStatistics>
pub async fn ticket_statistics(&self) -> Result<TicketStatistics>
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 peer_resolver(&self) -> &impl HoprDbResolverOperations
pub fn me_onchain(&self) -> Address
Sourcepub async fn get_ticket_price(&self) -> Result<Option<U256>>
pub async fn get_ticket_price(&self) -> Result<Option<U256>>
Get ticket price
Sourcepub async fn get_minimum_incoming_ticket_win_probability(&self) -> Result<f64>
pub async fn get_minimum_incoming_ticket_win_probability(&self) -> Result<f64>
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<ChannelEntry>
pub async fn channel( &self, src: &Address, dest: &Address, ) -> Result<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<Balance>
pub async fn safe_allowance(&self) -> Result<Balance>
Current safe allowance balance
Sourcepub async fn withdraw(
&self,
recipient: Address,
amount: Balance,
) -> Result<Hash>
pub async fn withdraw( &self, recipient: Address, amount: Balance, ) -> 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
pub async fn open_channel( &self, destination: &Address, amount: &Balance, ) -> Result<OpenChannelResult>
pub async fn fund_channel( &self, channel_id: &Hash, amount: &Balance, ) -> Result<Hash>
pub async fn close_channel( &self, counterparty: &Address, direction: ChannelDirection, redeem_before_close: bool, ) -> Result<CloseChannelResult>
pub async fn close_channel_by_id( &self, channel_id: Hash, redeem_before_close: bool, ) -> Result<CloseChannelResult>
pub async fn get_channel_closure_notice_period(&self) -> Result<Duration>
pub async fn redeem_all_tickets(&self, only_aggregated: bool) -> Result<()>
pub async fn redeem_tickets_with_counterparty( &self, counterparty: &Address, only_aggregated: bool, ) -> Result<()>
pub async fn redeem_tickets_in_channel( &self, channel_id: &Hash, only_aggregated: bool, ) -> Result<usize>
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>>
pub async fn export_channel_graph(&self, cfg: GraphExportConfig) -> String
pub async fn export_raw_channel_graph(&self) -> Result<String>
Auto Trait Implementations§
impl !Freeze for Hopr
impl !RefUnwindSafe for Hopr
impl Send for Hopr
impl Sync for Hopr
impl !Unpin for Hopr
impl !UnwindSafe for Hopr
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> 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§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> 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.