Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4.6 KiB
lightning-wait -- Command to wait for creations, changes and deletions
SYNOPSIS
wait subsystem indexname nextvalue
DESCRIPTION
The wait RPC command returns once the index given by indexname in subsystem reaches or exceeds nextvalue. All indexes start at 0, when no events have happened (wait with a nextvalue of 0 is a way of getting the current index, though naturally this is racy!).
indexname is one of created
, updated
or deleted
:
created
is incremented by one for every new object.updated
is incremented by one every time an object is changed.deleted
is incremented by one every time an object is deleted.
subsystem is one of:
invoices
: corresponding tolistinvoices
(added in v23.08)sendpays
: corresponding tolistsendpays
(added in v23.11)forwards
: corresponding tolistforwards
(added in v23.11)
RELIABILITY
Indices can go forward by more than one; in particlar, if multiple objects were created and the one deleted, you could see this effect. Similarly, there are some places (e.g. invoice expiration) where we can update multiple entries at once.
Indices only monotoncally increase.
USAGE
The wait RPC is used to track changes in the system. Consider tracking invoices being paid or expiring. The simplest (and inefficient method) would be:
- Call
listinvoices
to get the current state of all invoices, and remember the highestupdated_index
. Say it was 5. - Call
wait invoices updated 6
. - When it returns, call
listinvoices
again to see what changed.
This is obviously inefficient, so there are two optimizations:
- Call
listinvoices
withindex=updated
andstart=6
to only see invoices withupdated_index
greater than or equal to 6. wait
itself may also return some limited subset of fields from the list command (it can't do this in all cases); forinvoices
this islabel
andstatus
, allowing many callers to avoid thelistinvoices
call.
RETURN VALUE
On success, an object is returned, containing:
- subsystem (string) (one of "invoices", "forwards", "sendpays")
- created (u64, optional): 1-based index indicating order entry was created
- updated (u64, optional): 1-based index indicating order entry was updated
- deleted (u64, optional): 1-based index indicating order entry was deleted
If subsystem is "invoices":
- details (object, optional):
- status (string, optional): Whether it's paid, unpaid or unpayable (one of "unpaid", "paid", "expired")
- label (string, optional): unique label supplied at invoice creation
- description (string, optional): description used in the invoice
- bolt11 (string, optional): the BOLT11 string
- bolt12 (string, optional): the BOLT12 string
If subsystem is "forwards":
- details (object, optional):
- status (string, optional): still ongoing, completed, failed locally, or failed after forwarding (one of "offered", "settled", "failed", "local_failed")
- in_channel (short_channel_id, optional): unique label supplied at invoice creation
- in_htlc_id (u64, optional): the unique HTLC id the sender gave this (not present if incoming channel was closed before ugprade to v22.11)
- in_msat (msat, optional): the value of the incoming HTLC
- out_channel (short_channel_id, optional): the channel that the HTLC (trying to) forward to
If subsystem is "sendpays":
- details (object, optional):
- status (string, optional): status of the payment (one of "pending", "failed", "complete")
- partid (u64, optional): Part number (for multiple parts to a single payment)
- groupid (u64, optional): Grouping key to disambiguate multiple attempts to pay an invoice or the same payment_hash
- payment_hash (hash, optional): the hash of the payment_preimage which will prove payment
On error the returned object will contain code
and message
properties,
with code
being one of the following:
- -32602: If the given parameters are wrong.
AUTHOR
Rusty Russell <rusty@rustcorp.com.au> is mainly responsible.
SEE ALSO
lightning-listinvoice(7), lightning-listforwards(7), lightning-listsendpays(7)
RESOURCES
Main web site: https://github.com/ElementsProject/lightning comment: # ( SHA256STAMP:a3c55b5c6ee055fedc65954c784e72f0a7fbd14cef74b0e69bb254d64b3f0e77)