Struct ProbabilisticScorerUsingTime
pub struct ProbabilisticScorerUsingTime<G, L, T>{ /* private fields */ }
Expand description
Probabilistic ScoreLookUp
implementation.
This is not exported to bindings users generally all users should use the ProbabilisticScorer
type alias.
Implementations§
§impl<G, L, T> ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> ProbabilisticScorerUsingTime<G, L, T>
pub fn new(
decay_params: ProbabilisticScoringDecayParameters,
network_graph: G,
logger: L,
) -> ProbabilisticScorerUsingTime<G, L, T>
pub fn new( decay_params: ProbabilisticScoringDecayParameters, network_graph: G, logger: L, ) -> ProbabilisticScorerUsingTime<G, L, T>
Creates a new scorer using the given scoring parameters for sending payments from a node through a network graph.
pub fn debug_log_liquidity_stats(&self)
pub fn debug_log_liquidity_stats(&self)
Dump the contents of this scorer into the configured logger.
Note that this writes roughly one line per channel for which we have a liquidity estimate, which may be a substantial amount of log output.
pub fn estimated_channel_liquidity_range(
&self,
scid: u64,
target: &NodeId,
) -> Option<(u64, u64)>
pub fn estimated_channel_liquidity_range( &self, scid: u64, target: &NodeId, ) -> Option<(u64, u64)>
Query the estimated minimum and maximum liquidity available for sending a payment over the
channel with scid
towards the given target
node.
pub fn historical_estimated_channel_liquidity_probabilities(
&self,
scid: u64,
target: &NodeId,
) -> Option<([u16; 32], [u16; 32])>
pub fn historical_estimated_channel_liquidity_probabilities( &self, scid: u64, target: &NodeId, ) -> Option<([u16; 32], [u16; 32])>
Query the historical estimated minimum and maximum liquidity available for sending a
payment over the channel with scid
towards the given target
node.
Returns two sets of 32 buckets. The first set describes the lower-bound liquidity history, the second set describes the upper-bound liquidity history. Each bucket describes the relative frequency at which we’ve seen a liquidity bound in the bucket’s range relative to the channel’s total capacity, on an arbitrary scale. Because the values are slowly decayed, more recent data points are weighted more heavily than older datapoints.
Note that the range of each bucket varies by its location to provide more granular results at the edges of a channel’s capacity, where it is more likely to sit.
When scoring, the estimated probability that an upper-/lower-bound lies in a given bucket is calculated by dividing that bucket’s value with the total value of all buckets.
For example, using a lower bucket count for illustrative purposes, a value of
[0, 0, 0, ..., 0, 32]
indicates that we believe the probability of a bound being very
close to the channel’s capacity to be 100%, and have never (recently) seen it in any other
bucket. A value of [31, 0, 0, ..., 0, 0, 32]
indicates we’ve seen the bound being both
in the top and bottom bucket, and roughly with similar (recent) frequency.
Because the datapoints are decayed slowly over time, values will eventually return to
Some(([1; 32], [1; 32]))
and then to None
once no datapoints remain.
In order to fetch a single success probability from the buckets provided here, as used in
the scoring model, see Self::historical_estimated_payment_success_probability
.
pub fn historical_estimated_payment_success_probability(
&self,
scid: u64,
target: &NodeId,
amount_msat: u64,
params: &ProbabilisticScoringFeeParameters,
) -> Option<f64>
pub fn historical_estimated_payment_success_probability( &self, scid: u64, target: &NodeId, amount_msat: u64, params: &ProbabilisticScoringFeeParameters, ) -> Option<f64>
Query the probability of payment success sending the given amount_msat
over the channel
with scid
towards the given target
node, based on the historical estimated liquidity
bounds.
These are the same bounds as returned by
Self::historical_estimated_channel_liquidity_probabilities
(but not those returned by
Self::estimated_channel_liquidity_range
).
Trait Implementations§
§impl<G, L, T> ReadableArgs<(ProbabilisticScoringDecayParameters, G, L)> for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> ReadableArgs<(ProbabilisticScoringDecayParameters, G, L)> for ProbabilisticScorerUsingTime<G, L, T>
§fn read<R>(
r: &mut R,
args: (ProbabilisticScoringDecayParameters, G, L),
) -> Result<ProbabilisticScorerUsingTime<G, L, T>, DecodeError>where
R: Read,
fn read<R>(
r: &mut R,
args: (ProbabilisticScoringDecayParameters, G, L),
) -> Result<ProbabilisticScorerUsingTime<G, L, T>, DecodeError>where
R: Read,
Self
in from the given Read
.§impl<G, L, T> ScoreLookUp for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> ScoreLookUp for ProbabilisticScorerUsingTime<G, L, T>
§type ScoreParams = ProbabilisticScoringFeeParameters
type ScoreParams = ProbabilisticScoringFeeParameters
§fn channel_penalty_msat(
&self,
short_channel_id: u64,
source: &NodeId,
target: &NodeId,
usage: ChannelUsage,
score_params: &ProbabilisticScoringFeeParameters,
) -> u64
fn channel_penalty_msat( &self, short_channel_id: u64, source: &NodeId, target: &NodeId, usage: ChannelUsage, score_params: &ProbabilisticScoringFeeParameters, ) -> u64
send_amt_msat
through the
given channel in the direction from source
to target
. Read more§impl<G, L, T> ScoreUpdate for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> ScoreUpdate for ProbabilisticScorerUsingTime<G, L, T>
§fn payment_path_failed(&mut self, path: &Path, short_channel_id: u64)
fn payment_path_failed(&mut self, path: &Path, short_channel_id: u64)
§fn payment_path_successful(&mut self, path: &Path)
fn payment_path_successful(&mut self, path: &Path)
§fn probe_failed(&mut self, path: &Path, short_channel_id: u64)
fn probe_failed(&mut self, path: &Path, short_channel_id: u64)
§fn probe_successful(&mut self, path: &Path)
fn probe_successful(&mut self, path: &Path)
§impl<G, L, T> Writeable for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> Writeable for ProbabilisticScorerUsingTime<G, L, T>
Auto Trait Implementations§
impl<G, L, T> Freeze for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> RefUnwindSafe for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> Send for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> Sync for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> Unpin for ProbabilisticScorerUsingTime<G, L, T>
impl<G, L, T> UnwindSafe for ProbabilisticScorerUsingTime<G, L, T>
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> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request