pub struct HoprBlockchainConnector<C, B, P, R> {Show 15 fields
payload_generator: P,
chain_key: ChainKeypair,
client: Arc<C>,
graph: Arc<RwLock<DiGraphMap<HoprKeyIdent, ChannelId, RandomState>>>,
backend: Arc<B>,
connection_handle: Option<AbortHandle>,
sequencer: TransactionSequencer<C, R>,
events: (Sender<ChainEvent>, InactiveReceiver<ChainEvent>),
cfg: BlockchainConnectorConfig,
mapper: HoprKeyMapper<B>,
chain_to_packet: Cache<Address, Option<OffchainPublicKey>, RandomState>,
packet_to_chain: Cache<OffchainPublicKey, Option<Address>, RandomState>,
channel_by_id: Cache<ChannelId, Option<ChannelEntry>, RandomState>,
channel_by_parties: Cache<ChannelParties, Option<ChannelEntry>, RandomState>,
values: Cache<u32, ParsedChainInfo>,
}Expand description
A connector acting as middleware between the HOPR APIs (see the [hopr_api] crate) and the Blokli Client API (see
the [blokli_client] crate).
The connector object cannot be cloned and shall be used inside an Arc if cloning is needed.
Fields§
§payload_generator: P§chain_key: ChainKeypair§client: Arc<C>§graph: Arc<RwLock<DiGraphMap<HoprKeyIdent, ChannelId, RandomState>>>§backend: Arc<B>§connection_handle: Option<AbortHandle>§sequencer: TransactionSequencer<C, R>§events: (Sender<ChainEvent>, InactiveReceiver<ChainEvent>)§cfg: BlockchainConnectorConfig§mapper: HoprKeyMapper<B>§chain_to_packet: Cache<Address, Option<OffchainPublicKey>, RandomState>§packet_to_chain: Cache<OffchainPublicKey, Option<Address>, RandomState>§channel_by_id: Cache<ChannelId, Option<ChannelEntry>, RandomState>§channel_by_parties: Cache<ChannelParties, Option<ChannelEntry>, RandomState>§values: Cache<u32, ParsedChainInfo>Implementations§
Source§impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
pub(crate) fn build_account_stream( &self, selector: AccountSelector, ) -> Result<impl Stream<Item = AccountEntry> + Send + 'static, ConnectorError>
Source§impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
pub(crate) fn build_channel_stream( &self, selector: ChannelSelector, ) -> Result<impl Stream<Item = ChannelEntry> + Send + 'static, ConnectorError>
Source§impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
async fn prepare_ticket_redeem_payload( &self, ticket: RedeemableTicket, ) -> Result<P::TxRequest, ConnectorError>
Source§impl<B, C, P, R> HoprBlockchainConnector<C, R, B, P>
impl<B, C, P, R> HoprBlockchainConnector<C, R, B, P>
Sourcepub(crate) async fn query_cached_chain_info(
&self,
) -> Result<ParsedChainInfo, ConnectorError>
pub(crate) async fn query_cached_chain_info( &self, ) -> Result<ParsedChainInfo, ConnectorError>
Queries chain info from cache, fetching from Blokli on cold start.
The cache has no TTL - it’s kept fresh by the Blokli subscription handler which updates it whenever ticket parameters change. This prevents the cascading timeout issue where cache expiration during packet processing would trigger blocking Blokli queries.
Source§impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliSubscriptionClient + BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliSubscriptionClient + BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
Sourcepub fn new(
chain_key: ChainKeypair,
cfg: BlockchainConnectorConfig,
client: C,
backend: B,
payload_generator: P,
) -> Self
pub fn new( chain_key: ChainKeypair, cfg: BlockchainConnectorConfig, client: C, backend: B, payload_generator: P, ) -> Self
Creates a new instance.
async fn do_connect( &self, timeout: Duration, ) -> Result<AbortHandle, ConnectorError>
Sourcepub async fn connect(&mut self) -> Result<(), ConnectorError>
pub async fn connect(&mut self) -> Result<(), ConnectorError>
Connects to the chain using the underlying client, syncs all on-chain data, and subscribes for all future updates.
If the connection does not finish within
BlockchainConnectorConfig::connection_timeout
the ConnectorError::ConnectionTimeout error is returned.
Most of the operations with the Connector will fail if it is not connected first.
There are some notable exceptions that DO NOT require a prior call to connect:
- all the
ChainValuesmethods, - all the
ChainReadSafeOperationsmethods, - all the
ChainWriteSafeOperationsmethods, me
If you wish to only call operations from the above Chain APIs, consider constructing
the HoprBlockchainReader instead.
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Checks if the connector is connected to the chain.
Source§impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync,
P::TxRequest: Send + Sync,
impl<B, C, P> HoprBlockchainConnector<C, B, P, P::TxRequest>where
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync,
P::TxRequest: Send + Sync,
async fn send_tx<'a>( &'a self, tx_req: P::TxRequest, custom_tx_multiplier: Option<u32>, ) -> Result<impl Future<Output = Result<ChainReceipt, ConnectorError>> + Send + 'a, ConnectorError>
Source§impl<B, C, P, R> HoprBlockchainConnector<C, R, B, P>
impl<B, C, P, R> HoprBlockchainConnector<C, R, B, P>
pub(crate) fn check_connection_state(&self) -> Result<(), ConnectorError>
Sourcepub fn invalidate_caches(&self)
pub fn invalidate_caches(&self)
Invalidates all cached on-chain data.
Source§impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> HoprBlockchainConnector<C, B, P, R>
Sourcepub fn as_path_resolver(&self) -> ChainPathResolver<'_, Self>
pub fn as_path_resolver(&self) -> ChainPathResolver<'_, Self>
Returns a [PathAddressResolver] using this connector.
Trait Implementations§
Source§impl<B, C, P, R> ChainEvents for HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> ChainEvents for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§fn subscribe_with_state_sync<I: IntoIterator<Item = StateSyncOptions>>(
&self,
options: I,
) -> Result<impl Stream<Item = ChainEvent> + Send + 'static, Self::Error>
fn subscribe_with_state_sync<I: IntoIterator<Item = StateSyncOptions>>( &self, options: I, ) -> Result<impl Stream<Item = ChainEvent> + Send + 'static, Self::Error>
Source§impl<B, C, P, R> ChainKeyOperations for HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> ChainKeyOperations for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§type Mapper = HoprKeyMapper<B>
type Mapper = HoprKeyMapper<B>
Source§fn chain_key_to_packet_key<'life0, 'life1, 'async_trait>(
&'life0 self,
chain: &'life1 Address,
) -> Pin<Box<dyn Future<Output = Result<Option<OffchainPublicKey>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chain_key_to_packet_key<'life0, 'life1, 'async_trait>(
&'life0 self,
chain: &'life1 Address,
) -> Pin<Box<dyn Future<Output = Result<Option<OffchainPublicKey>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Address into OffchainPublicKey.Source§fn packet_key_to_chain_key<'life0, 'life1, 'async_trait>(
&'life0 self,
packet: &'life1 OffchainPublicKey,
) -> Pin<Box<dyn Future<Output = Result<Option<Address>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn packet_key_to_chain_key<'life0, 'life1, 'async_trait>(
&'life0 self,
packet: &'life1 OffchainPublicKey,
) -> Pin<Box<dyn Future<Output = Result<Option<Address>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
OffchainPublicKey into Address.Source§fn key_id_mapper_ref(&self) -> &Self::Mapper
fn key_id_mapper_ref(&self) -> &Self::Mapper
KeyIdMapping for offchain key IDs as a reference.Source§impl<B, C, P, R> ChainReadAccountOperations for HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> ChainReadAccountOperations for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§fn stream_accounts<'a, 'async_trait>(
&'a self,
selector: AccountSelector,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, AccountEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn stream_accounts<'a, 'async_trait>(
&'a self,
selector: AccountSelector,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, AccountEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
AccountSelector.Source§fn count_accounts<'life0, 'async_trait>(
&'life0 self,
selector: AccountSelector,
) -> Pin<Box<dyn Future<Output = Result<usize, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count_accounts<'life0, 'async_trait>(
&'life0 self,
selector: AccountSelector,
) -> Pin<Box<dyn Future<Output = Result<usize, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
AccountSelector. Read moreSource§fn await_key_binding<'life0, 'life1, 'async_trait>(
&'life0 self,
offchain_key: &'life1 OffchainPublicKey,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<AccountEntry, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn await_key_binding<'life0, 'life1, 'async_trait>(
&'life0 self,
offchain_key: &'life1 OffchainPublicKey,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<AccountEntry, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
offchain_key to appear on-chain or the timeout expires.Source§impl<B, C, P, R> ChainReadChannelOperations for HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> ChainReadChannelOperations for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§fn channel_by_parties<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
src: &'life1 Address,
dst: &'life2 Address,
) -> Pin<Box<dyn Future<Output = Result<Option<ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn channel_by_parties<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
src: &'life1 Address,
dst: &'life2 Address,
) -> Pin<Box<dyn Future<Output = Result<Option<ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
src and dst.Source§fn channel_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
channel_id: &'life1 ChannelId,
) -> Pin<Box<dyn Future<Output = Result<Option<ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn channel_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
channel_id: &'life1 ChannelId,
) -> Pin<Box<dyn Future<Output = Result<Option<ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
channel_id.Source§fn stream_channels<'a, 'async_trait>(
&'a self,
selector: ChannelSelector,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn stream_channels<'a, 'async_trait>(
&'a self,
selector: ChannelSelector,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, ChannelEntry>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
ChannelSelector.Source§impl<B, C, P, R> ChainReadSafeOperations for HoprBlockchainConnector<C, B, P, R>
impl<B, C, P, R> ChainReadSafeOperations for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§fn safe_allowance<'life0, 'async_trait, Cy, A>(
&'life0 self,
safe_address: A,
) -> Pin<Box<dyn Future<Output = Result<Balance<Cy>, Self::Error>> + Send + 'async_trait>>
fn safe_allowance<'life0, 'async_trait, Cy, A>( &'life0 self, safe_address: A, ) -> Pin<Box<dyn Future<Output = Result<Balance<Cy>, Self::Error>> + Send + 'async_trait>>
Source§fn safe_info<'life0, 'async_trait>(
&'life0 self,
selector: SafeSelector,
) -> Pin<Box<dyn Future<Output = Result<Option<DeployedSafe>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn safe_info<'life0, 'async_trait>(
&'life0 self,
selector: SafeSelector,
) -> Pin<Box<dyn Future<Output = Result<Option<DeployedSafe>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn await_safe_deployment<'life0, 'async_trait>(
&'life0 self,
selector: SafeSelector,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<DeployedSafe, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn await_safe_deployment<'life0, 'async_trait>(
&'life0 self,
selector: SafeSelector,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<DeployedSafe, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn predict_module_address<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
nonce: u64,
owner: &'life1 Address,
safe_address: &'life2 Address,
) -> Pin<Box<dyn Future<Output = Result<Address, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn predict_module_address<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
nonce: u64,
owner: &'life1 Address,
safe_address: &'life2 Address,
) -> Pin<Box<dyn Future<Output = Result<Address, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
nonce, owner and safe_address of the Safe.Source§impl<B, R, C, P> ChainValues for HoprBlockchainConnector<C, B, P, R>
impl<B, R, C, P> ChainValues for HoprBlockchainConnector<C, B, P, R>
type Error = ConnectorError
Source§fn balance<'life0, 'async_trait, Cy, A>(
&'life0 self,
address: A,
) -> Pin<Box<dyn Future<Output = Result<Balance<Cy>, Self::Error>> + Send + 'async_trait>>
fn balance<'life0, 'async_trait, Cy, A>( &'life0 self, address: A, ) -> Pin<Box<dyn Future<Output = Result<Balance<Cy>, Self::Error>> + Send + 'async_trait>>
Source§fn domain_separators<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DomainSeparators, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn domain_separators<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DomainSeparators, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn minimum_incoming_ticket_win_prob<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<WinningProbability, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn minimum_incoming_ticket_win_prob<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<WinningProbability, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn minimum_ticket_price<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<HoprBalance, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn minimum_ticket_price<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<HoprBalance, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn key_binding_fee<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<HoprBalance, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn key_binding_fee<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<HoprBalance, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn channel_closure_notice_period<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Duration, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn channel_closure_notice_period<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Duration, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn chain_info<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ChainInfo, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chain_info<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ChainInfo, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
§fn outgoing_ticket_values<'life0, 'async_trait>(
&'life0 self,
cfg_out_wp: Option<WinningProbability>,
cfg_out_price: Option<Balance<WxHOPR>>,
) -> Pin<Box<dyn Future<Output = Result<(WinningProbability, Balance<WxHOPR>), Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn outgoing_ticket_values<'life0, 'async_trait>(
&'life0 self,
cfg_out_wp: Option<WinningProbability>,
cfg_out_price: Option<Balance<WxHOPR>>,
) -> Pin<Box<dyn Future<Output = Result<(WinningProbability, Balance<WxHOPR>), Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
Source§impl<B, C, P> ChainWriteAccountOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Send + Sync,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> ChainWriteAccountOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Send + Sync,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
type Error = ConnectorError
Source§fn announce<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
multiaddrs: &'life1 [Multiaddr],
key: &'life2 OffchainKeypair,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, AnnouncementError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn announce<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
multiaddrs: &'life1 [Multiaddr],
key: &'life2 OffchainKeypair,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, AnnouncementError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn withdraw<'life0, 'life1, 'async_trait, Cy>(
&'life0 self,
balance: Balance<Cy>,
recipient: &'life1 Address,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>
fn withdraw<'life0, 'life1, 'async_trait, Cy>( &'life0 self, balance: Balance<Cy>, recipient: &'life1 Address, ) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>
PayloadGenerator]).Source§fn register_safe<'life0, 'life1, 'async_trait>(
&'life0 self,
safe_address: &'life1 Address,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, SafeRegistrationError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn register_safe<'life0, 'life1, 'async_trait>(
&'life0 self,
safe_address: &'life1 Address,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, SafeRegistrationError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<B, C, P> ChainWriteChannelOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> ChainWriteChannelOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
type Error = ConnectorError
Source§fn open_channel<'a, 'async_trait>(
&'a self,
dst: &'a Address,
amount: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn open_channel<'a, 'async_trait>(
&'a self,
dst: &'a Address,
amount: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
dst and amount.Source§fn fund_channel<'a, 'async_trait>(
&'a self,
channel_id: &'a ChannelId,
amount: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn fund_channel<'a, 'async_trait>(
&'a self,
channel_id: &'a ChannelId,
amount: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
Source§impl<B, C, P> ChainWriteSafeOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Send + Sync + 'static,
C: BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> ChainWriteSafeOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Send + Sync + 'static,
C: BlokliQueryClient + BlokliTransactionClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
type Error = ConnectorError
Source§fn deploy_safe<'a, 'async_trait>(
&'a self,
balance: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn deploy_safe<'a, 'async_trait>(
&'a self,
balance: HoprBalance,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<ChainReceipt, Self::Error>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
balance of wxHOPR tokens. Read moreSource§impl<B, C, P> ChainWriteTicketOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
impl<B, C, P> ChainWriteTicketOperations for HoprBlockchainConnector<C, B, P, P::TxRequest>where
B: Backend + Send + Sync + 'static,
C: BlokliTransactionClient + BlokliQueryClient + Send + Sync + 'static,
P: PayloadGenerator + Send + Sync + 'static,
P::TxRequest: Send + Sync + 'static,
type Error = ConnectorError
Source§fn redeem_ticket<'a, 'async_trait>(
&'a self,
ticket: RedeemableTicket,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<(VerifiedTicket, ChainReceipt), TicketRedeemError<Self::Error>>>, TicketRedeemError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
fn redeem_ticket<'a, 'async_trait>(
&'a self,
ticket: RedeemableTicket,
) -> Pin<Box<dyn Future<Output = Result<BoxFuture<'a, Result<(VerifiedTicket, ChainReceipt), TicketRedeemError<Self::Error>>>, TicketRedeemError<Self::Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
Auto Trait Implementations§
impl<C, B, P, R> Freeze for HoprBlockchainConnector<C, B, P, R>where
P: Freeze,
impl<C, B, P, R> !RefUnwindSafe for HoprBlockchainConnector<C, B, P, R>
impl<C, B, P, R> Send for HoprBlockchainConnector<C, B, P, R>
impl<C, B, P, R> Sync for HoprBlockchainConnector<C, B, P, R>
impl<C, B, P, R> Unpin for HoprBlockchainConnector<C, B, P, R>where
P: Unpin,
impl<C, B, P, R> !UnwindSafe for HoprBlockchainConnector<C, B, P, R>
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
§impl<T, E> HoprChainApi for Twhere
T: ChainReadSafeOperations<Error = E> + ChainWriteAccountOperations<Error = E> + ChainWriteSafeOperations<Error = E> + ChainEvents<Error = E> + ChainReadChannelOperations<Error = E> + ChainKeyOperations<Error = E> + ChainReadAccountOperations<Error = E> + ChainValues<Error = E> + ChainWriteChannelOperations<Error = E> + ChainWriteTicketOperations<Error = E>,
E: Error + Send + Sync + 'static,
impl<T, E> HoprChainApi for Twhere
T: ChainReadSafeOperations<Error = E> + ChainWriteAccountOperations<Error = E> + ChainWriteSafeOperations<Error = E> + ChainEvents<Error = E> + ChainReadChannelOperations<Error = E> + ChainKeyOperations<Error = E> + ChainReadAccountOperations<Error = E> + ChainValues<Error = E> + ChainWriteChannelOperations<Error = E> + ChainWriteTicketOperations<Error = E>,
E: Error + Send + Sync + 'static,
type ChainError = E
§impl<T, E> HoprStaticChainApi for Twhere
T: ChainReadSafeOperations<Error = E> + ChainValues<Error = E>,
E: Error + Send + Sync + 'static,
impl<T, E> HoprStaticChainApi for Twhere
T: ChainReadSafeOperations<Error = E> + ChainValues<Error = E>,
E: Error + Send + Sync + 'static,
type ChainError = E
§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