Configuration for an instance of a payment state machine.
Configuration for an instance of a payment state machine.
id of the outgoing payment (mapped to a single outgoing HTLC).
id of the whole payment (if using multi-part, there will be N associated child payments, each with a different id).
externally-controlled identifier (to reconcile between application DB and eclair DB).
payment hash.
amount that should be received by the final recipient (usually from a Bolt 11 invoice).
id of the final recipient.
information about the payment origin (to link upstream to downstream when relaying a payment).
Bolt 11 invoice.
whether to store data in the payments DB (e.g. when we're relaying a trampoline payment, we don't want to store in the DB).
whether to publish a fr.acinq.eclair.payment.PaymentEvent on success/failure (e.g. for multi-part child payments, we don't want to emit events for each child, only for the whole payment).
additional hops that the payment state machine isn't aware of (e.g. when using trampoline, hops that occur after the first trampoline node).
amount that should be received by the final recipient (usually from a Bolt 11 invoice).
payment hash.
id of the final recipient.
maximum number of retries.
expiry delta for the final recipient.
(optional) Bolt 11 invoice.
(optional) externally-controlled identifier (to reconcile between application DB and eclair DB).
(optional) routing hints (usually from a Bolt 11 invoice).
(optional) parameters to fine-tune the routing algorithm.
The sender can skip the routing algorithm by specifying the route to use.
The sender can skip the routing algorithm by specifying the route to use. When combining with MPP and Trampoline, extra-care must be taken to make sure payments are correctly grouped: only amount, route and trampolineNodes should be changing.
Example 1: MPP containing two HTLCs for a 600 msat invoice: SendPaymentToRouteRequest(200 msat, 600 msat, None, parentId, invoice, CltvExpiryDelta(9), Seq(alice, bob, dave), None, 0 msat, CltvExpiryDelta(0), Nil) SendPaymentToRouteRequest(400 msat, 600 msat, None, parentId, invoice, CltvExpiryDelta(9), Seq(alice, carol, dave), None, 0 msat, CltvExpiryDelta(0), Nil)
Example 2: Trampoline with MPP for a 600 msat invoice and 100 msat trampoline fees: SendPaymentToRouteRequest(250 msat, 600 msat, None, parentId, invoice, CltvExpiryDelta(9), Seq(alice, bob, dave), secret, 100 msat, CltvExpiryDelta(144), Seq(dave, peter)) SendPaymentToRouteRequest(450 msat, 600 msat, None, parentId, invoice, CltvExpiryDelta(9), Seq(alice, carol, dave), secret, 100 msat, CltvExpiryDelta(144), Seq(dave, peter))
amount that should be received by the last node in the route (should take trampoline fees into account).
amount that should be received by the final recipient (usually from a Bolt 11 invoice). This amount may be split between multiple requests if using MPP.
(optional) externally-controlled identifier (to reconcile between application DB and eclair DB).
id of the whole payment. When manually sending a multi-part payment, you need to make sure all partial payments use the same parentId. If not provided, a random parentId will be generated that can be used for the remaining partial payments.
Bolt 11 invoice.
expiry delta for the final recipient.
route to use to reach either the final recipient or the first trampoline node.
if trampoline is used, this is a secret to protect the payment to the first trampoline node against probing. When manually sending a multi-part payment, you need to make sure all partial payments use the same trampolineSecret.
if trampoline is used, fees for the first trampoline node. This value must be the same for all partial payments in the set.
if trampoline is used, expiry delta for the first trampoline node. This value must be the same for all partial payments in the set.
if trampoline is used, list of trampoline nodes to use (we currently support only a single trampoline node).
id of the outgoing payment (mapped to a single outgoing HTLC).
id of the whole payment. When manually sending a multi-part payment, you need to make sure all partial payments use the same parentId.
if trampoline is used, this is a secret to protect the payment to the first trampoline node against probing. When manually sending a multi-part payment, you need to make sure all partial payments use the same trampolineSecret.
We temporarily let the caller decide to use Trampoline (instead of a normal payment) and set the fees/cltv.
We temporarily let the caller decide to use Trampoline (instead of a normal payment) and set the fees/cltv. Once we have trampoline fee estimation built into the router, the decision to use Trampoline or not should be done automatically by the router instead of the caller.
amount that should be received by the final recipient (usually from a Bolt 11 invoice).
Bolt 11 invoice.
id of the trampoline node.
fees and expiry delta for the trampoline node. If this list contains multiple entries, the payment will automatically be retried in case of TrampolineFeeInsufficient errors. For example, [(10 msat, 144), (15 msat, 288)] will first send a payment with a fee of 10 msat and cltv of 144, and retry with 15 msat and 288 in case an error occurs.
expiry delta for the final recipient.
(optional) parameters to fine-tune the routing algorithm.
(Since version ) see corresponding Javadoc for more information.