mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
sendpsbt, fundpsbt, utxopsbt, reserveinputs, unreserveinputs: allow custom number of blocks to reserve.
Not an API break: reserve=true|false still works for fundpsbt and utxopsbt, but we also allow a raw number in there. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
95f77f119b
commit
efe29c9db8
18 changed files with 257 additions and 177 deletions
|
@ -1246,22 +1246,24 @@ class LightningRpc(UnixDomainSocketRpc):
|
||||||
}
|
}
|
||||||
return self.call("txsend", payload)
|
return self.call("txsend", payload)
|
||||||
|
|
||||||
def reserveinputs(self, psbt, exclusive=True):
|
def reserveinputs(self, psbt, exclusive=True, reserve=None):
|
||||||
"""
|
"""
|
||||||
Reserve any inputs in this psbt.
|
Reserve any inputs in this psbt.
|
||||||
"""
|
"""
|
||||||
payload = {
|
payload = {
|
||||||
"psbt": psbt,
|
"psbt": psbt,
|
||||||
"exclusive": exclusive,
|
"exclusive": exclusive,
|
||||||
|
"reserve": reserve,
|
||||||
}
|
}
|
||||||
return self.call("reserveinputs", payload)
|
return self.call("reserveinputs", payload)
|
||||||
|
|
||||||
def unreserveinputs(self, psbt):
|
def unreserveinputs(self, psbt, reserve=None):
|
||||||
"""
|
"""
|
||||||
Unreserve (or reduce reservation) on any UTXOs in this psbt were previously reserved.
|
Unreserve (or reduce reservation) on any UTXOs in this psbt were previously reserved.
|
||||||
"""
|
"""
|
||||||
payload = {
|
payload = {
|
||||||
"psbt": psbt,
|
"psbt": psbt,
|
||||||
|
"reserve": reserve,
|
||||||
}
|
}
|
||||||
return self.call("unreserveinputs", payload)
|
return self.call("unreserveinputs", payload)
|
||||||
|
|
||||||
|
@ -1308,12 +1310,13 @@ class LightningRpc(UnixDomainSocketRpc):
|
||||||
}
|
}
|
||||||
return self.call("signpsbt", payload)
|
return self.call("signpsbt", payload)
|
||||||
|
|
||||||
def sendpsbt(self, psbt):
|
def sendpsbt(self, psbt, reserve=None):
|
||||||
"""
|
"""
|
||||||
Finalize extract and broadcast a PSBT
|
Finalize extract and broadcast a PSBT
|
||||||
"""
|
"""
|
||||||
payload = {
|
payload = {
|
||||||
"psbt": psbt,
|
"psbt": psbt,
|
||||||
|
"reserve": reserve,
|
||||||
}
|
}
|
||||||
return self.call("sendpsbt", payload)
|
return self.call("sendpsbt", payload)
|
||||||
|
|
||||||
|
|
12
doc/lightning-fundpsbt.7
generated
12
doc/lightning-fundpsbt.7
generated
|
@ -36,8 +36,10 @@ added any inputs\.
|
||||||
outputs should have\. Default is 1\.
|
outputs should have\. Default is 1\.
|
||||||
|
|
||||||
|
|
||||||
\fIreserve\fR is a boolean: if true (the default), then \fIreserveinputs\fR is
|
\fIreserve\fR is either boolean or a number: if \fItrue\fR or a non-zero
|
||||||
called (successfully, with \fIexclusive\fR true) on the returned PSBT\.
|
number then \fIreserveinputs\fR is called (successfully, with
|
||||||
|
\fIexclusive\fR true) on the returned PSBT for this number of blocks (or
|
||||||
|
72 blocks if \fIreserve\fR is simply \fItrue\fR)\.
|
||||||
|
|
||||||
|
|
||||||
\fIlocktime\fR is an optional locktime: if not set, it is set to a recent
|
\fIlocktime\fR is an optional locktime: if not set, it is set to a recent
|
||||||
|
@ -85,8 +87,8 @@ then \fIexcess_msat\fR is the entire amount once fees are subtracted
|
||||||
for the weights of the inputs and startweight\.
|
for the weights of the inputs and startweight\.
|
||||||
|
|
||||||
|
|
||||||
If \fIreserve\fR was true, then a \fIreservations\fR array is returned,
|
If \fIreserve\fR was \fItrue\fR or a non-zero number, then a \fIreservations\fR
|
||||||
exactly like \fIreserveinputs\fR\.
|
array is returned, exactly like \fIreserveinputs\fR\.
|
||||||
|
|
||||||
|
|
||||||
If \fIexcess_as_change\fR is true and the excess is enough to cover
|
If \fIexcess_as_change\fR is true and the excess is enough to cover
|
||||||
|
@ -120,4 +122,4 @@ Rusty Russell \fI<rusty@rustcorp.com.au\fR> is mainly responsible\.
|
||||||
|
|
||||||
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
||||||
|
|
||||||
\" SHA256STAMP:b9ecd1408f0e5d8424e530ab44ab21b0e773c537c3512b68b31f197851d9abce
|
\" SHA256STAMP:6420ab94377f1a25df686e97e79da3c67c69f99978b6177432426dfd45296052
|
||||||
|
|
|
@ -33,8 +33,10 @@ added any inputs.
|
||||||
*minconf* specifies the minimum number of confirmations that used
|
*minconf* specifies the minimum number of confirmations that used
|
||||||
outputs should have. Default is 1.
|
outputs should have. Default is 1.
|
||||||
|
|
||||||
*reserve* is a boolean: if true (the default), then *reserveinputs* is
|
*reserve* is either boolean or a number: if *true* or a non-zero
|
||||||
called (successfully, with *exclusive* true) on the returned PSBT.
|
number then *reserveinputs* is called (successfully, with
|
||||||
|
*exclusive* true) on the returned PSBT for this number of blocks (or
|
||||||
|
72 blocks if *reserve* is simply *true*).
|
||||||
|
|
||||||
*locktime* is an optional locktime: if not set, it is set to a recent
|
*locktime* is an optional locktime: if not set, it is set to a recent
|
||||||
block height.
|
block height.
|
||||||
|
@ -77,8 +79,8 @@ available. This could be zero, or dust. If *satoshi* was "all",
|
||||||
then *excess_msat* is the entire amount once fees are subtracted
|
then *excess_msat* is the entire amount once fees are subtracted
|
||||||
for the weights of the inputs and startweight.
|
for the weights of the inputs and startweight.
|
||||||
|
|
||||||
If *reserve* was true, then a *reservations* array is returned,
|
If *reserve* was *true* or a non-zero number, then a *reservations*
|
||||||
exactly like *reserveinputs*.
|
array is returned, exactly like *reserveinputs*.
|
||||||
|
|
||||||
If *excess_as_change* is true and the excess is enough to cover
|
If *excess_as_change* is true and the excess is enough to cover
|
||||||
an additional output above the `dust_limit`, then an output is
|
an additional output above the `dust_limit`, then an output is
|
||||||
|
|
8
doc/lightning-reserveinputs.7
generated
8
doc/lightning-reserveinputs.7
generated
|
@ -3,7 +3,7 @@
|
||||||
lightning-reserveinputs - Construct a transaction and reserve the UTXOs it spends
|
lightning-reserveinputs - Construct a transaction and reserve the UTXOs it spends
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
||||||
\fBreserveinputs\fR \fIpsbt\fR [\fIexclusive\fR]
|
\fBreserveinputs\fR \fIpsbt\fR [\fIexclusive\fR] [\fIreserve\fR]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
||||||
|
@ -17,6 +17,10 @@ Normally the command will fail (with no reservations made) if an input
|
||||||
is already reserved\. If \fIexclusive\fR is set to \fIFalse\fR, then existing
|
is already reserved\. If \fIexclusive\fR is set to \fIFalse\fR, then existing
|
||||||
reservations are simply extended, rather than causing failure\.
|
reservations are simply extended, rather than causing failure\.
|
||||||
|
|
||||||
|
|
||||||
|
By default, reservations are for the next 72 blocks (approximately 6
|
||||||
|
hours), but this can be changed by setting \fIreserve\fR\.
|
||||||
|
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
|
|
||||||
On success, a \fIreservations\fR array is returned, with an entry for each input
|
On success, a \fIreservations\fR array is returned, with an entry for each input
|
||||||
|
@ -58,4 +62,4 @@ niftynei \fI<niftynei@gmail.com\fR> is mainly responsible\.
|
||||||
|
|
||||||
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
||||||
|
|
||||||
\" SHA256STAMP:539d241f86937d96dbc8a914f50a0cb920e7bee38b825502332a7755507f9e7b
|
\" SHA256STAMP:81be9e3af4075dd3bd24c6461861ee067b435654d88817afd0c49d37e85768a3
|
||||||
|
|
|
@ -4,7 +4,7 @@ lightning-reserveinputs -- Construct a transaction and reserve the UTXOs it spen
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
|
||||||
**reserveinputs** *psbt* [*exclusive*]
|
**reserveinputs** *psbt* [*exclusive*] [*reserve*]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -18,6 +18,8 @@ Normally the command will fail (with no reservations made) if an input
|
||||||
is already reserved. If *exclusive* is set to *False*, then existing
|
is already reserved. If *exclusive* is set to *False*, then existing
|
||||||
reservations are simply extended, rather than causing failure.
|
reservations are simply extended, rather than causing failure.
|
||||||
|
|
||||||
|
By default, reservations are for the next 72 blocks (approximately 6
|
||||||
|
hours), but this can be changed by setting *reserve*.
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
------------
|
------------
|
||||||
|
|
6
doc/lightning-sendpsbt.7
generated
6
doc/lightning-sendpsbt.7
generated
|
@ -3,7 +3,7 @@
|
||||||
lightning-sendpsbt - Command to finalize, extract and send a partially signed bitcoin transaction (PSBT)\.
|
lightning-sendpsbt - Command to finalize, extract and send a partially signed bitcoin transaction (PSBT)\.
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
||||||
\fBsendpsbt\fR \fIpsbt\fR
|
\fBsendpsbt\fR \fIpsbt\fR [\fIreserve\fR]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@ The \fBsendpsbt\fR is a low-level RPC command which sends a fully-signed PSBT\.
|
||||||
.RS
|
.RS
|
||||||
.IP \[bu]
|
.IP \[bu]
|
||||||
\fIpsbt\fR: A string that represents psbt value\.
|
\fIpsbt\fR: A string that represents psbt value\.
|
||||||
|
.IP \[bu]
|
||||||
|
\fIreserve\fR: an optional number of blocks to increase reservation of any of our inputs by; default is 72\.
|
||||||
|
|
||||||
.RE
|
.RE
|
||||||
.SH EXAMPLE JSON REQUEST
|
.SH EXAMPLE JSON REQUEST
|
||||||
|
@ -68,4 +70,4 @@ Vincenzo Palazzo \fI<vincenzo.palazzo@protonmail.com\fR> wrote the initial versi
|
||||||
|
|
||||||
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
||||||
|
|
||||||
\" SHA256STAMP:795058b68607af4148d2866faa88b3743269e1641725c95efcabdbe82c886420
|
\" SHA256STAMP:9241e9fa18b3a39ab64bfdfb875dc82ad5ccc242411ad265026005e69f29c2e0
|
||||||
|
|
|
@ -4,7 +4,7 @@ lightning-sendpsbt -- Command to finalize, extract and send a partially signed b
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
|
||||||
**sendpsbt** *psbt*
|
**sendpsbt** *psbt* [*reserve*]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -12,6 +12,7 @@ DESCRIPTION
|
||||||
The **sendpsbt** is a low-level RPC command which sends a fully-signed PSBT.
|
The **sendpsbt** is a low-level RPC command which sends a fully-signed PSBT.
|
||||||
|
|
||||||
- *psbt*: A string that represents psbt value.
|
- *psbt*: A string that represents psbt value.
|
||||||
|
- *reserve*: an optional number of blocks to increase reservation of any of our inputs by; default is 72.
|
||||||
|
|
||||||
EXAMPLE JSON REQUEST
|
EXAMPLE JSON REQUEST
|
||||||
--------------------
|
--------------------
|
||||||
|
|
8
doc/lightning-unreserveinputs.7
generated
8
doc/lightning-unreserveinputs.7
generated
|
@ -3,7 +3,7 @@
|
||||||
lightning-unreserveinputs - Release reserved UTXOs
|
lightning-unreserveinputs - Release reserved UTXOs
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
||||||
\fBunreserveinputs\fR \fIpsbt\fR
|
\fBunreserveinputs\fR \fIpsbt\fR [\fIreserve\fR]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
||||||
|
@ -14,6 +14,10 @@ on UTXOs which were previously marked as reserved, generally by
|
||||||
|
|
||||||
The inputs to unreserve are the inputs specified in the passed-in \fIpsbt\fR\.
|
The inputs to unreserve are the inputs specified in the passed-in \fIpsbt\fR\.
|
||||||
|
|
||||||
|
|
||||||
|
If \fIreserve\fR is specified, it is the number of blocks to decrease
|
||||||
|
reservation by; default is 72\.
|
||||||
|
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
|
|
||||||
On success, an \fIreservations\fR array is returned, with an entry for each input
|
On success, an \fIreservations\fR array is returned, with an entry for each input
|
||||||
|
@ -55,4 +59,4 @@ niftynei \fI<niftynei@gmail.com\fR> is mainly responsible\.
|
||||||
|
|
||||||
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
||||||
|
|
||||||
\" SHA256STAMP:2f6d02c98127f7ab54e5c298761be2c4138f79fd6c156eed9ae19ead03db8593
|
\" SHA256STAMP:d4aa9d3345ce7fa3c91b760633c3dc296d4dd7a7da7cdadc4da31c3b474e680c
|
||||||
|
|
|
@ -4,7 +4,7 @@ lightning-unreserveinputs -- Release reserved UTXOs
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
|
||||||
**unreserveinputs** *psbt*
|
**unreserveinputs** *psbt* [*reserve*]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -15,6 +15,9 @@ lightning-reserveinputs(7).
|
||||||
|
|
||||||
The inputs to unreserve are the inputs specified in the passed-in *psbt*.
|
The inputs to unreserve are the inputs specified in the passed-in *psbt*.
|
||||||
|
|
||||||
|
If *reserve* is specified, it is the number of blocks to decrease
|
||||||
|
reservation by; default is 72.
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
12
doc/lightning-utxopsbt.7
generated
12
doc/lightning-utxopsbt.7
generated
|
@ -24,6 +24,12 @@ with at least \fIsatoshi\fR left over (unless \fIsatoshi\fR is \fBall\fR, which
|
||||||
is equivalent to setting it to zero)\.
|
is equivalent to setting it to zero)\.
|
||||||
|
|
||||||
|
|
||||||
|
\fIreserve\fR is either boolean or a number: if \fItrue\fR or a non-zero
|
||||||
|
number then \fIreserveinputs\fR is called (successfully, with
|
||||||
|
\fIexclusive\fR true) on the returned PSBT for this number of blocks (or
|
||||||
|
72 blocks if \fIreserve\fR is simply \fItrue\fR)\.
|
||||||
|
|
||||||
|
|
||||||
Unless \fIreservedok\fR is set to true (default is false) it will also fail
|
Unless \fIreservedok\fR is set to true (default is false) it will also fail
|
||||||
if any of the \fIutxos\fR are already reserved\.
|
if any of the \fIutxos\fR are already reserved\.
|
||||||
|
|
||||||
|
@ -51,8 +57,8 @@ then \fIexcess_msat\fR is the entire amount once fees are subtracted
|
||||||
for the weights of the inputs and \fIstartweight\fR\.
|
for the weights of the inputs and \fIstartweight\fR\.
|
||||||
|
|
||||||
|
|
||||||
If \fIreserve\fR was true, then a \fIreservations\fR array is returned,
|
If \fIreserve\fR was \fItrue\fR or a non-zero number, then a \fIreservations\fR
|
||||||
exactly like \fIreserveinputs\fR\.
|
array is returned, exactly like \fIreserveinputs\fR\.
|
||||||
|
|
||||||
|
|
||||||
If \fIexcess_as_change\fR is true and the excess is enough to cover
|
If \fIexcess_as_change\fR is true and the excess is enough to cover
|
||||||
|
@ -86,4 +92,4 @@ Rusty Russell \fI<rusty@rustcorp.com.au\fR> is mainly responsible\.
|
||||||
|
|
||||||
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
Main web site: \fIhttps://github.com/ElementsProject/lightning\fR
|
||||||
|
|
||||||
\" SHA256STAMP:f956240b56534af4f6e99e3e77bbb4f5bc707c390a935cde08be0178abbb9cbd
|
\" SHA256STAMP:fb64856561ee499c033582b483e676354a98fb500136a8d52c857981f33339ea
|
||||||
|
|
|
@ -23,6 +23,11 @@ the resulting transaction plus *startweight* at the given *feerate*,
|
||||||
with at least *satoshi* left over (unless *satoshi* is **all**, which
|
with at least *satoshi* left over (unless *satoshi* is **all**, which
|
||||||
is equivalent to setting it to zero).
|
is equivalent to setting it to zero).
|
||||||
|
|
||||||
|
*reserve* is either boolean or a number: if *true* or a non-zero
|
||||||
|
number then *reserveinputs* is called (successfully, with
|
||||||
|
*exclusive* true) on the returned PSBT for this number of blocks (or
|
||||||
|
72 blocks if *reserve* is simply *true*).
|
||||||
|
|
||||||
Unless *reservedok* is set to true (default is false) it will also fail
|
Unless *reservedok* is set to true (default is false) it will also fail
|
||||||
if any of the *utxos* are already reserved.
|
if any of the *utxos* are already reserved.
|
||||||
|
|
||||||
|
@ -47,8 +52,8 @@ which is available. This could be zero, or dust. If *satoshi* was "all",
|
||||||
then *excess_msat* is the entire amount once fees are subtracted
|
then *excess_msat* is the entire amount once fees are subtracted
|
||||||
for the weights of the inputs and *startweight*.
|
for the weights of the inputs and *startweight*.
|
||||||
|
|
||||||
If *reserve* was true, then a *reservations* array is returned,
|
If *reserve* was *true* or a non-zero number, then a *reservations*
|
||||||
exactly like *reserveinputs*.
|
array is returned, exactly like *reserveinputs*.
|
||||||
|
|
||||||
If *excess_as_change* is true and the excess is enough to cover
|
If *excess_as_change* is true and the excess is enough to cover
|
||||||
an additional output above the `dust_limit`, then an output is
|
an additional output above the `dust_limit`, then an output is
|
||||||
|
|
2
wallet/db_postgres_sqlgen.c
generated
2
wallet/db_postgres_sqlgen.c
generated
|
@ -1906,4 +1906,4 @@ struct db_query db_postgres_queries[] = {
|
||||||
|
|
||||||
#endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */
|
#endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */
|
||||||
|
|
||||||
// SHA256STAMP:0e328ae08429373c5aa43797ae12be23e5b6c3d7e2f06123c2640a1a42ac79ee
|
// SHA256STAMP:387f4000b85417999e9b27c6d795d4f19012a5515e2464312e865b7f654d70dd
|
||||||
|
|
2
wallet/db_sqlite3_sqlgen.c
generated
2
wallet/db_sqlite3_sqlgen.c
generated
|
@ -1906,4 +1906,4 @@ struct db_query db_sqlite3_queries[] = {
|
||||||
|
|
||||||
#endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */
|
#endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */
|
||||||
|
|
||||||
// SHA256STAMP:0e328ae08429373c5aa43797ae12be23e5b6c3d7e2f06123c2640a1a42ac79ee
|
// SHA256STAMP:387f4000b85417999e9b27c6d795d4f19012a5515e2464312e865b7f654d70dd
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
#include <wallet/wallet.h>
|
#include <wallet/wallet.h>
|
||||||
#include <wallet/walletrpc.h>
|
#include <wallet/walletrpc.h>
|
||||||
|
|
||||||
|
/* 12 hours is usually enough reservation time */
|
||||||
|
#define RESERVATION_DEFAULT (6 * 12)
|
||||||
|
|
||||||
static bool was_reserved(enum output_status oldstatus,
|
static bool was_reserved(enum output_status oldstatus,
|
||||||
u32 reserved_til,
|
u32 reserved_til,
|
||||||
u32 current_height)
|
u32 current_height)
|
||||||
|
@ -45,6 +48,7 @@ static void json_add_reservestatus(struct json_stream *response,
|
||||||
static void reserve_and_report(struct json_stream *response,
|
static void reserve_and_report(struct json_stream *response,
|
||||||
struct wallet *wallet,
|
struct wallet *wallet,
|
||||||
u32 current_height,
|
u32 current_height,
|
||||||
|
u32 reserve,
|
||||||
struct utxo **utxos)
|
struct utxo **utxos)
|
||||||
{
|
{
|
||||||
json_array_start(response, "reservations");
|
json_array_start(response, "reservations");
|
||||||
|
@ -57,7 +61,8 @@ static void reserve_and_report(struct json_stream *response,
|
||||||
|
|
||||||
if (!wallet_reserve_utxo(wallet,
|
if (!wallet_reserve_utxo(wallet,
|
||||||
utxos[i],
|
utxos[i],
|
||||||
current_height)) {
|
current_height,
|
||||||
|
reserve)) {
|
||||||
fatal("Unable to reserve %s:%u!",
|
fatal("Unable to reserve %s:%u!",
|
||||||
type_to_string(tmpctx,
|
type_to_string(tmpctx,
|
||||||
struct bitcoin_txid,
|
struct bitcoin_txid,
|
||||||
|
@ -79,11 +84,13 @@ static struct command_result *json_reserveinputs(struct command *cmd,
|
||||||
struct wally_psbt *psbt;
|
struct wally_psbt *psbt;
|
||||||
struct utxo **utxos = tal_arr(cmd, struct utxo *, 0);
|
struct utxo **utxos = tal_arr(cmd, struct utxo *, 0);
|
||||||
bool *exclusive;
|
bool *exclusive;
|
||||||
u32 current_height;
|
u32 *reserve, current_height;
|
||||||
|
|
||||||
if (!param(cmd, buffer, params,
|
if (!param(cmd, buffer, params,
|
||||||
p_req("psbt", param_psbt, &psbt),
|
p_req("psbt", param_psbt, &psbt),
|
||||||
p_opt_def("exclusive", param_bool, &exclusive, true),
|
p_opt_def("exclusive", param_bool, &exclusive, true),
|
||||||
|
p_opt_def("reserve", param_number, &reserve,
|
||||||
|
RESERVATION_DEFAULT),
|
||||||
NULL))
|
NULL))
|
||||||
return command_param_failed();
|
return command_param_failed();
|
||||||
|
|
||||||
|
@ -116,7 +123,7 @@ static struct command_result *json_reserveinputs(struct command *cmd,
|
||||||
}
|
}
|
||||||
|
|
||||||
response = json_stream_success(cmd);
|
response = json_stream_success(cmd);
|
||||||
reserve_and_report(response, cmd->ld->wallet, current_height, utxos);
|
reserve_and_report(response, cmd->ld->wallet, current_height, *reserve, utxos);
|
||||||
return command_success(cmd, response);
|
return command_success(cmd, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,9 +143,12 @@ static struct command_result *json_unreserveinputs(struct command *cmd,
|
||||||
{
|
{
|
||||||
struct json_stream *response;
|
struct json_stream *response;
|
||||||
struct wally_psbt *psbt;
|
struct wally_psbt *psbt;
|
||||||
|
u32 *reserve;
|
||||||
|
|
||||||
if (!param(cmd, buffer, params,
|
if (!param(cmd, buffer, params,
|
||||||
p_req("psbt", param_psbt, &psbt),
|
p_req("psbt", param_psbt, &psbt),
|
||||||
|
p_opt_def("reserve", param_number, &reserve,
|
||||||
|
RESERVATION_DEFAULT),
|
||||||
NULL))
|
NULL))
|
||||||
return command_param_failed();
|
return command_param_failed();
|
||||||
|
|
||||||
|
@ -183,7 +193,8 @@ static struct command_result *json_unreserveinputs(struct command *cmd,
|
||||||
|
|
||||||
wallet_unreserve_utxo(cmd->ld->wallet,
|
wallet_unreserve_utxo(cmd->ld->wallet,
|
||||||
utxo,
|
utxo,
|
||||||
get_block_height(cmd->ld->topology));
|
get_block_height(cmd->ld->topology),
|
||||||
|
*reserve);
|
||||||
|
|
||||||
json_add_reservestatus(response, utxo, oldstatus, old_res,
|
json_add_reservestatus(response, utxo, oldstatus, old_res,
|
||||||
get_block_height(cmd->ld->topology));
|
get_block_height(cmd->ld->topology));
|
||||||
|
@ -319,7 +330,7 @@ static struct command_result *finish_psbt(struct command *cmd,
|
||||||
u32 feerate_per_kw,
|
u32 feerate_per_kw,
|
||||||
size_t weight,
|
size_t weight,
|
||||||
struct amount_sat excess,
|
struct amount_sat excess,
|
||||||
bool reserve,
|
u32 reserve,
|
||||||
u32 *locktime,
|
u32 *locktime,
|
||||||
bool excess_as_change)
|
bool excess_as_change)
|
||||||
{
|
{
|
||||||
|
@ -405,7 +416,7 @@ fee_calc:
|
||||||
json_add_num(response, "change_outnum", change_outnum);
|
json_add_num(response, "change_outnum", change_outnum);
|
||||||
if (reserve)
|
if (reserve)
|
||||||
reserve_and_report(response, cmd->ld->wallet, current_height,
|
reserve_and_report(response, cmd->ld->wallet, current_height,
|
||||||
utxos);
|
reserve, utxos);
|
||||||
return command_success(cmd, response);
|
return command_success(cmd, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,6 +435,27 @@ static inline u32 minconf_to_maxheight(u32 minconf, struct lightningd *ld)
|
||||||
return ld->topology->tip->height - minconf + 1;
|
return ld->topology->tip->height - minconf + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct command_result *param_reserve_num(struct command *cmd,
|
||||||
|
const char *name,
|
||||||
|
const char *buffer,
|
||||||
|
const jsmntok_t *tok,
|
||||||
|
unsigned int **num)
|
||||||
|
{
|
||||||
|
bool flag;
|
||||||
|
|
||||||
|
/* "reserve=true" means 6 hours */
|
||||||
|
if (json_to_bool(buffer, tok, &flag)) {
|
||||||
|
*num = tal(cmd, unsigned int);
|
||||||
|
if (flag)
|
||||||
|
**num = RESERVATION_DEFAULT;
|
||||||
|
else
|
||||||
|
**num = 0;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return param_number(cmd, name, buffer, tok, num);
|
||||||
|
}
|
||||||
|
|
||||||
static struct command_result *json_fundpsbt(struct command *cmd,
|
static struct command_result *json_fundpsbt(struct command *cmd,
|
||||||
const char *buffer,
|
const char *buffer,
|
||||||
const jsmntok_t *obj UNNEEDED,
|
const jsmntok_t *obj UNNEEDED,
|
||||||
|
@ -433,15 +465,16 @@ static struct command_result *json_fundpsbt(struct command *cmd,
|
||||||
u32 *feerate_per_kw;
|
u32 *feerate_per_kw;
|
||||||
u32 *minconf, *weight, *min_witness_weight;
|
u32 *minconf, *weight, *min_witness_weight;
|
||||||
struct amount_sat *amount, input, diff;
|
struct amount_sat *amount, input, diff;
|
||||||
bool all, *reserve, *excess_as_change;
|
bool all, *excess_as_change;
|
||||||
u32 *locktime, maxheight;
|
u32 *locktime, *reserve, maxheight;
|
||||||
|
|
||||||
if (!param(cmd, buffer, params,
|
if (!param(cmd, buffer, params,
|
||||||
p_req("satoshi", param_sat_or_all, &amount),
|
p_req("satoshi", param_sat_or_all, &amount),
|
||||||
p_req("feerate", param_feerate, &feerate_per_kw),
|
p_req("feerate", param_feerate, &feerate_per_kw),
|
||||||
p_req("startweight", param_number, &weight),
|
p_req("startweight", param_number, &weight),
|
||||||
p_opt_def("minconf", param_number, &minconf, 1),
|
p_opt_def("minconf", param_number, &minconf, 1),
|
||||||
p_opt_def("reserve", param_bool, &reserve, true),
|
p_opt_def("reserve", param_reserve_num, &reserve,
|
||||||
|
RESERVATION_DEFAULT),
|
||||||
p_opt("locktime", param_number, &locktime),
|
p_opt("locktime", param_number, &locktime),
|
||||||
p_opt_def("min_witness_weight", param_number,
|
p_opt_def("min_witness_weight", param_number,
|
||||||
&min_witness_weight, 0),
|
&min_witness_weight, 0),
|
||||||
|
@ -615,16 +648,17 @@ static struct command_result *json_utxopsbt(struct command *cmd,
|
||||||
{
|
{
|
||||||
struct utxo **utxos;
|
struct utxo **utxos;
|
||||||
u32 *feerate_per_kw, *weight, *min_witness_weight;
|
u32 *feerate_per_kw, *weight, *min_witness_weight;
|
||||||
bool all, *reserve, *reserved_ok, *excess_as_change;
|
bool all, *reserved_ok, *excess_as_change;
|
||||||
struct amount_sat *amount, input, excess;
|
struct amount_sat *amount, input, excess;
|
||||||
u32 current_height, *locktime;
|
u32 current_height, *locktime, *reserve;
|
||||||
|
|
||||||
if (!param(cmd, buffer, params,
|
if (!param(cmd, buffer, params,
|
||||||
p_req("satoshi", param_sat_or_all, &amount),
|
p_req("satoshi", param_sat_or_all, &amount),
|
||||||
p_req("feerate", param_feerate, &feerate_per_kw),
|
p_req("feerate", param_feerate, &feerate_per_kw),
|
||||||
p_req("startweight", param_number, &weight),
|
p_req("startweight", param_number, &weight),
|
||||||
p_req("utxos", param_txout, &utxos),
|
p_req("utxos", param_txout, &utxos),
|
||||||
p_opt_def("reserve", param_bool, &reserve, true),
|
p_opt_def("reserve", param_reserve_num, &reserve,
|
||||||
|
RESERVATION_DEFAULT),
|
||||||
p_opt_def("reservedok", param_bool, &reserved_ok, false),
|
p_opt_def("reservedok", param_bool, &reserved_ok, false),
|
||||||
p_opt("locktime", param_number, &locktime),
|
p_opt("locktime", param_number, &locktime),
|
||||||
p_opt_def("min_witness_weight", param_number,
|
p_opt_def("min_witness_weight", param_number,
|
||||||
|
|
244
wallet/statements_gettextgen.po
generated
244
wallet/statements_gettextgen.po
generated
|
@ -758,487 +758,487 @@ msgstr ""
|
||||||
msgid "SELECT state, payment_key, payment_hash, label, msatoshi, expiry_time, pay_index, msatoshi_received, paid_timestamp, bolt11, description, features, local_offer_id FROM invoices WHERE id = ?;"
|
msgid "SELECT state, payment_key, payment_hash, label, msatoshi, expiry_time, pay_index, msatoshi_received, paid_timestamp, bolt11, description, features, local_offer_id FROM invoices WHERE id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:50
|
#: wallet/wallet.c:47
|
||||||
msgid "SELECT txid, outnum FROM utxoset WHERE spendheight is NULL"
|
msgid "SELECT txid, outnum FROM utxoset WHERE spendheight is NULL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:91 wallet/wallet.c:569
|
#: wallet/wallet.c:88 wallet/wallet.c:570
|
||||||
msgid "SELECT * from outputs WHERE prev_out_tx=? AND prev_out_index=?"
|
msgid "SELECT * from outputs WHERE prev_out_tx=? AND prev_out_index=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:105 wallet/wallet.c:583
|
#: wallet/wallet.c:102 wallet/wallet.c:584
|
||||||
msgid "INSERT INTO outputs ( prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO outputs ( prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:222
|
#: wallet/wallet.c:219
|
||||||
msgid "UPDATE outputs SET status=? WHERE status=? AND prev_out_tx=? AND prev_out_index=?"
|
msgid "UPDATE outputs SET status=? WHERE status=? AND prev_out_tx=? AND prev_out_index=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:230
|
#: wallet/wallet.c:227
|
||||||
msgid "UPDATE outputs SET status=? WHERE prev_out_tx=? AND prev_out_index=?"
|
msgid "UPDATE outputs SET status=? WHERE prev_out_tx=? AND prev_out_index=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:249
|
#: wallet/wallet.c:246
|
||||||
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs"
|
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:266
|
#: wallet/wallet.c:263
|
||||||
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs WHERE status= ? "
|
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs WHERE status= ? "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:304
|
#: wallet/wallet.c:301
|
||||||
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey, reserved_til FROM outputs WHERE channel_id IS NOT NULL AND confirmation_height IS NULL"
|
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey, reserved_til FROM outputs WHERE channel_id IS NOT NULL AND confirmation_height IS NULL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:341
|
#: wallet/wallet.c:338
|
||||||
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey, reserved_til FROM outputs WHERE prev_out_tx = ? AND prev_out_index = ?"
|
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey, reserved_til FROM outputs WHERE prev_out_tx = ? AND prev_out_index = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:433
|
#: wallet/wallet.c:430
|
||||||
msgid "UPDATE outputs SET status=?, reserved_til=? WHERE prev_out_tx=? AND prev_out_index=?"
|
msgid "UPDATE outputs SET status=?, reserved_til=? WHERE prev_out_tx=? AND prev_out_index=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:518
|
#: wallet/wallet.c:519
|
||||||
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs WHERE status = ? OR (status = ? AND reserved_til <= ?)ORDER BY RANDOM();"
|
msgid "SELECT prev_out_tx, prev_out_index, value, type, status, keyindex, channel_id, peer_id, commitment_point, option_anchor_outputs, confirmation_height, spend_height, scriptpubkey , reserved_til FROM outputs WHERE status = ? OR (status = ? AND reserved_til <= ?)ORDER BY RANDOM();"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:687
|
#: wallet/wallet.c:688
|
||||||
msgid "INSERT INTO shachains (min_index, num_valid) VALUES (?, 0);"
|
msgid "INSERT INTO shachains (min_index, num_valid) VALUES (?, 0);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:731
|
#: wallet/wallet.c:732
|
||||||
msgid "UPDATE shachains SET num_valid=?, min_index=? WHERE id=?"
|
msgid "UPDATE shachains SET num_valid=?, min_index=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:738
|
#: wallet/wallet.c:739
|
||||||
msgid "UPDATE shachain_known SET idx=?, hash=? WHERE shachain_id=? AND pos=?"
|
msgid "UPDATE shachain_known SET idx=?, hash=? WHERE shachain_id=? AND pos=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:750
|
#: wallet/wallet.c:751
|
||||||
msgid "INSERT INTO shachain_known (shachain_id, pos, idx, hash) VALUES (?, ?, ?, ?);"
|
msgid "INSERT INTO shachain_known (shachain_id, pos, idx, hash) VALUES (?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:772
|
#: wallet/wallet.c:773
|
||||||
msgid "SELECT min_index, num_valid FROM shachains WHERE id=?"
|
msgid "SELECT min_index, num_valid FROM shachains WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:787
|
#: wallet/wallet.c:788
|
||||||
msgid "SELECT idx, hash, pos FROM shachain_known WHERE shachain_id=?"
|
msgid "SELECT idx, hash, pos FROM shachain_known WHERE shachain_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:810
|
#: wallet/wallet.c:811
|
||||||
msgid "SELECT id, node_id, address FROM peers WHERE id=?;"
|
msgid "SELECT id, node_id, address FROM peers WHERE id=?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:843
|
#: wallet/wallet.c:844
|
||||||
msgid "SELECT signature FROM htlc_sigs WHERE channelid = ?"
|
msgid "SELECT signature FROM htlc_sigs WHERE channelid = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:877
|
#: wallet/wallet.c:878
|
||||||
msgid "SELECT remote_ann_node_sig, remote_ann_bitcoin_sig FROM channels WHERE id = ?"
|
msgid "SELECT remote_ann_node_sig, remote_ann_bitcoin_sig FROM channels WHERE id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:921
|
#: wallet/wallet.c:922
|
||||||
msgid "SELECT hstate, feerate_per_kw FROM channel_feerates WHERE channel_id = ?"
|
msgid "SELECT hstate, feerate_per_kw FROM channel_feerates WHERE channel_id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:954
|
#: wallet/wallet.c:955
|
||||||
msgid "INSERT INTO channel_funding_inflights ( channel_id, funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO channel_funding_inflights ( channel_id, funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:989
|
#: wallet/wallet.c:990
|
||||||
msgid "UPDATE channel_funding_inflights SET funding_psbt=?, funding_tx_remote_sigs_received=? WHERE channel_id=? AND funding_tx_id=? AND funding_tx_outnum=?"
|
msgid "UPDATE channel_funding_inflights SET funding_psbt=?, funding_tx_remote_sigs_received=? WHERE channel_id=? AND funding_tx_id=? AND funding_tx_outnum=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1012
|
#: wallet/wallet.c:1013
|
||||||
msgid "DELETE FROM channel_funding_inflights WHERE channel_id = ?"
|
msgid "DELETE FROM channel_funding_inflights WHERE channel_id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1060
|
#: wallet/wallet.c:1061
|
||||||
msgid "SELECT funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig, funding_tx_remote_sigs_received FROM channel_funding_inflights WHERE channel_id = ? ORDER BY funding_feerate"
|
msgid "SELECT funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig, funding_tx_remote_sigs_received FROM channel_funding_inflights WHERE channel_id = ? ORDER BY funding_feerate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1289
|
#: wallet/wallet.c:1290
|
||||||
msgid "SELECT id FROM channels ORDER BY id DESC LIMIT 1;"
|
msgid "SELECT id FROM channels ORDER BY id DESC LIMIT 1;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1306
|
#: wallet/wallet.c:1307
|
||||||
msgid "SELECT id, peer_id, short_channel_id, full_channel_id, channel_config_local, channel_config_remote, state, funder, channel_flags, minimum_depth, next_index_local, next_index_remote, next_htlc_id, funding_tx_id, funding_tx_outnum, funding_satoshi, our_funding_satoshi, funding_locked_remote, push_msatoshi, msatoshi_local, fundingkey_remote, revocation_basepoint_remote, payment_basepoint_remote, htlc_basepoint_remote, delayed_payment_basepoint_remote, per_commit_remote, old_per_commit_remote, local_feerate_per_kw, remote_feerate_per_kw, shachain_remote_id, shutdown_scriptpubkey_remote, shutdown_keyidx_local, last_sent_commit_state, last_sent_commit_id, last_tx, last_sig, last_was_revoke, first_blocknum, min_possible_feerate, max_possible_feerate, msatoshi_to_us_min, msatoshi_to_us_max, future_per_commitment_point, last_sent_commit, feerate_base, feerate_ppm, remote_upfront_shutdown_script, option_static_remotekey, option_anchor_outputs, shutdown_scriptpubkey_local, closer, state_change_reason, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local, shutdown_wrong_txid, shutdown_wrong_outnum FROM channels WHERE state != ?;"
|
msgid "SELECT id, peer_id, short_channel_id, full_channel_id, channel_config_local, channel_config_remote, state, funder, channel_flags, minimum_depth, next_index_local, next_index_remote, next_htlc_id, funding_tx_id, funding_tx_outnum, funding_satoshi, our_funding_satoshi, funding_locked_remote, push_msatoshi, msatoshi_local, fundingkey_remote, revocation_basepoint_remote, payment_basepoint_remote, htlc_basepoint_remote, delayed_payment_basepoint_remote, per_commit_remote, old_per_commit_remote, local_feerate_per_kw, remote_feerate_per_kw, shachain_remote_id, shutdown_scriptpubkey_remote, shutdown_keyidx_local, last_sent_commit_state, last_sent_commit_id, last_tx, last_sig, last_was_revoke, first_blocknum, min_possible_feerate, max_possible_feerate, msatoshi_to_us_min, msatoshi_to_us_max, future_per_commitment_point, last_sent_commit, feerate_base, feerate_ppm, remote_upfront_shutdown_script, option_static_remotekey, option_anchor_outputs, shutdown_scriptpubkey_local, closer, state_change_reason, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local, shutdown_wrong_txid, shutdown_wrong_outnum FROM channels WHERE state != ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1404
|
#: wallet/wallet.c:1405
|
||||||
msgid "UPDATE channels SET in_payments_offered = COALESCE(in_payments_offered, 0) + 1 , in_msatoshi_offered = COALESCE(in_msatoshi_offered, 0) + ? WHERE id = ?;"
|
msgid "UPDATE channels SET in_payments_offered = COALESCE(in_payments_offered, 0) + 1 , in_msatoshi_offered = COALESCE(in_msatoshi_offered, 0) + ? WHERE id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1409
|
#: wallet/wallet.c:1410
|
||||||
msgid "UPDATE channels SET in_payments_fulfilled = COALESCE(in_payments_fulfilled, 0) + 1 , in_msatoshi_fulfilled = COALESCE(in_msatoshi_fulfilled, 0) + ? WHERE id = ?;"
|
msgid "UPDATE channels SET in_payments_fulfilled = COALESCE(in_payments_fulfilled, 0) + 1 , in_msatoshi_fulfilled = COALESCE(in_msatoshi_fulfilled, 0) + ? WHERE id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1414
|
#: wallet/wallet.c:1415
|
||||||
msgid "UPDATE channels SET out_payments_offered = COALESCE(out_payments_offered, 0) + 1 , out_msatoshi_offered = COALESCE(out_msatoshi_offered, 0) + ? WHERE id = ?;"
|
msgid "UPDATE channels SET out_payments_offered = COALESCE(out_payments_offered, 0) + 1 , out_msatoshi_offered = COALESCE(out_msatoshi_offered, 0) + ? WHERE id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1419
|
#: wallet/wallet.c:1420
|
||||||
msgid "UPDATE channels SET out_payments_fulfilled = COALESCE(out_payments_fulfilled, 0) + 1 , out_msatoshi_fulfilled = COALESCE(out_msatoshi_fulfilled, 0) + ? WHERE id = ?;"
|
msgid "UPDATE channels SET out_payments_fulfilled = COALESCE(out_payments_fulfilled, 0) + 1 , out_msatoshi_fulfilled = COALESCE(out_msatoshi_fulfilled, 0) + ? WHERE id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1461
|
#: wallet/wallet.c:1462
|
||||||
msgid "SELECT in_payments_offered, in_payments_fulfilled, in_msatoshi_offered, in_msatoshi_fulfilled, out_payments_offered, out_payments_fulfilled, out_msatoshi_offered, out_msatoshi_fulfilled FROM channels WHERE id = ?"
|
msgid "SELECT in_payments_offered, in_payments_fulfilled, in_msatoshi_offered, in_msatoshi_fulfilled, out_payments_offered, out_payments_fulfilled, out_msatoshi_offered, out_msatoshi_fulfilled FROM channels WHERE id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1490
|
#: wallet/wallet.c:1491
|
||||||
msgid "SELECT MIN(height), MAX(height) FROM blocks;"
|
msgid "SELECT MIN(height), MAX(height) FROM blocks;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1512
|
#: wallet/wallet.c:1513
|
||||||
msgid "INSERT INTO channel_configs DEFAULT VALUES;"
|
msgid "INSERT INTO channel_configs DEFAULT VALUES;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1524
|
#: wallet/wallet.c:1525
|
||||||
msgid "UPDATE channel_configs SET dust_limit_satoshis=?, max_htlc_value_in_flight_msat=?, channel_reserve_satoshis=?, htlc_minimum_msat=?, to_self_delay=?, max_accepted_htlcs=? WHERE id=?;"
|
msgid "UPDATE channel_configs SET dust_limit_satoshis=?, max_htlc_value_in_flight_msat=?, channel_reserve_satoshis=?, htlc_minimum_msat=?, to_self_delay=?, max_accepted_htlcs=? WHERE id=?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1548
|
#: wallet/wallet.c:1549
|
||||||
msgid "SELECT id, dust_limit_satoshis, max_htlc_value_in_flight_msat, channel_reserve_satoshis, htlc_minimum_msat, to_self_delay, max_accepted_htlcs FROM channel_configs WHERE id= ? ;"
|
msgid "SELECT id, dust_limit_satoshis, max_htlc_value_in_flight_msat, channel_reserve_satoshis, htlc_minimum_msat, to_self_delay, max_accepted_htlcs FROM channel_configs WHERE id= ? ;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1582
|
#: wallet/wallet.c:1583
|
||||||
msgid "UPDATE channels SET remote_ann_node_sig=?, remote_ann_bitcoin_sig=? WHERE id=?"
|
msgid "UPDATE channels SET remote_ann_node_sig=?, remote_ann_bitcoin_sig=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1601
|
#: wallet/wallet.c:1602
|
||||||
msgid "UPDATE channels SET shachain_remote_id=?, short_channel_id=?, full_channel_id=?, state=?, funder=?, channel_flags=?, minimum_depth=?, next_index_local=?, next_index_remote=?, next_htlc_id=?, funding_tx_id=?, funding_tx_outnum=?, funding_satoshi=?, our_funding_satoshi=?, funding_locked_remote=?, push_msatoshi=?, msatoshi_local=?, shutdown_scriptpubkey_remote=?, shutdown_keyidx_local=?, channel_config_local=?, last_tx=?, last_sig=?, last_was_revoke=?, min_possible_feerate=?, max_possible_feerate=?, msatoshi_to_us_min=?, msatoshi_to_us_max=?, feerate_base=?, feerate_ppm=?, remote_upfront_shutdown_script=?, option_static_remotekey=?, option_anchor_outputs=?, shutdown_scriptpubkey_local=?, closer=?, state_change_reason=?, shutdown_wrong_txid=?, shutdown_wrong_outnum=? WHERE id=?"
|
msgid "UPDATE channels SET shachain_remote_id=?, short_channel_id=?, full_channel_id=?, state=?, funder=?, channel_flags=?, minimum_depth=?, next_index_local=?, next_index_remote=?, next_htlc_id=?, funding_tx_id=?, funding_tx_outnum=?, funding_satoshi=?, our_funding_satoshi=?, funding_locked_remote=?, push_msatoshi=?, msatoshi_local=?, shutdown_scriptpubkey_remote=?, shutdown_keyidx_local=?, channel_config_local=?, last_tx=?, last_sig=?, last_was_revoke=?, min_possible_feerate=?, max_possible_feerate=?, msatoshi_to_us_min=?, msatoshi_to_us_max=?, feerate_base=?, feerate_ppm=?, remote_upfront_shutdown_script=?, option_static_remotekey=?, option_anchor_outputs=?, shutdown_scriptpubkey_local=?, closer=?, state_change_reason=?, shutdown_wrong_txid=?, shutdown_wrong_outnum=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1693
|
#: wallet/wallet.c:1694
|
||||||
msgid "UPDATE channels SET fundingkey_remote=?, revocation_basepoint_remote=?, payment_basepoint_remote=?, htlc_basepoint_remote=?, delayed_payment_basepoint_remote=?, per_commit_remote=?, old_per_commit_remote=?, channel_config_remote=?, future_per_commitment_point=? WHERE id=?"
|
msgid "UPDATE channels SET fundingkey_remote=?, revocation_basepoint_remote=?, payment_basepoint_remote=?, htlc_basepoint_remote=?, delayed_payment_basepoint_remote=?, per_commit_remote=?, old_per_commit_remote=?, channel_config_remote=?, future_per_commitment_point=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1720
|
#: wallet/wallet.c:1721
|
||||||
msgid "DELETE FROM channel_feerates WHERE channel_id=?"
|
msgid "DELETE FROM channel_feerates WHERE channel_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1730
|
#: wallet/wallet.c:1731
|
||||||
msgid "INSERT INTO channel_feerates VALUES(?, ?, ?)"
|
msgid "INSERT INTO channel_feerates VALUES(?, ?, ?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1747
|
#: wallet/wallet.c:1748
|
||||||
msgid "UPDATE channels SET last_sent_commit=? WHERE id=?"
|
msgid "UPDATE channels SET last_sent_commit=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1770
|
#: wallet/wallet.c:1771
|
||||||
msgid "INSERT INTO channel_state_changes ( channel_id, timestamp, old_state, new_state, cause, message) VALUES (?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO channel_state_changes ( channel_id, timestamp, old_state, new_state, cause, message) VALUES (?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1798
|
#: wallet/wallet.c:1799
|
||||||
msgid "SELECT timestamp, old_state, new_state, cause, message FROM channel_state_changes WHERE channel_id = ? ORDER BY timestamp ASC;"
|
msgid "SELECT timestamp, old_state, new_state, cause, message FROM channel_state_changes WHERE channel_id = ? ORDER BY timestamp ASC;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1827
|
#: wallet/wallet.c:1828
|
||||||
msgid "SELECT id FROM peers WHERE node_id = ?"
|
msgid "SELECT id FROM peers WHERE node_id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1839
|
#: wallet/wallet.c:1840
|
||||||
msgid "UPDATE peers SET address = ? WHERE id = ?"
|
msgid "UPDATE peers SET address = ? WHERE id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1848
|
#: wallet/wallet.c:1849
|
||||||
msgid "INSERT INTO peers (node_id, address) VALUES (?, ?);"
|
msgid "INSERT INTO peers (node_id, address) VALUES (?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1869
|
#: wallet/wallet.c:1870
|
||||||
msgid "INSERT INTO channels ( peer_id, first_blocknum, id, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local) VALUES (?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO channels ( peer_id, first_blocknum, id, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local) VALUES (?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1910
|
#: wallet/wallet.c:1911
|
||||||
msgid "DELETE FROM channel_htlcs WHERE channel_id=?"
|
msgid "DELETE FROM channel_htlcs WHERE channel_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1916
|
#: wallet/wallet.c:1917
|
||||||
msgid "DELETE FROM htlc_sigs WHERE channelid=?"
|
msgid "DELETE FROM htlc_sigs WHERE channelid=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1922
|
#: wallet/wallet.c:1923
|
||||||
msgid "DELETE FROM channeltxs WHERE channel_id=?"
|
msgid "DELETE FROM channeltxs WHERE channel_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1929
|
#: wallet/wallet.c:1930
|
||||||
msgid "DELETE FROM channel_funding_inflights WHERE channel_id=?"
|
msgid "DELETE FROM channel_funding_inflights WHERE channel_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1935
|
#: wallet/wallet.c:1936
|
||||||
msgid "DELETE FROM shachains WHERE id IN ( SELECT shachain_remote_id FROM channels WHERE channels.id=?)"
|
msgid "DELETE FROM shachains WHERE id IN ( SELECT shachain_remote_id FROM channels WHERE channels.id=?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1945
|
#: wallet/wallet.c:1946
|
||||||
msgid "UPDATE channels SET state=?, peer_id=? WHERE channels.id=?"
|
msgid "UPDATE channels SET state=?, peer_id=? WHERE channels.id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1959
|
#: wallet/wallet.c:1960
|
||||||
msgid "SELECT * FROM channels WHERE peer_id = ?;"
|
msgid "SELECT * FROM channels WHERE peer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1967
|
#: wallet/wallet.c:1968
|
||||||
msgid "DELETE FROM peers WHERE id=?"
|
msgid "DELETE FROM peers WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:1978
|
#: wallet/wallet.c:1979
|
||||||
msgid "UPDATE outputs SET confirmation_height = ? WHERE prev_out_tx = ?"
|
msgid "UPDATE outputs SET confirmation_height = ? WHERE prev_out_tx = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2081
|
#: wallet/wallet.c:2082
|
||||||
msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, shared_secret, routing_onion, received_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, shared_secret, routing_onion, received_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2134
|
#: wallet/wallet.c:2135
|
||||||
msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, origin_htlc, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, routing_onion, malformed_onion, partid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?);"
|
msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, origin_htlc, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, routing_onion, malformed_onion, partid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2195
|
#: wallet/wallet.c:2196
|
||||||
msgid "UPDATE channel_htlcs SET hstate=?, payment_key=?, malformed_onion=?, failuremsg=?, localfailmsg=?, we_filled=? WHERE id=?"
|
msgid "UPDATE channel_htlcs SET hstate=?, payment_key=?, malformed_onion=?, failuremsg=?, localfailmsg=?, we_filled=? WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2411
|
#: wallet/wallet.c:2412
|
||||||
msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, we_filled FROM channel_htlcs WHERE direction= ? AND channel_id= ? AND hstate != ?"
|
msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, we_filled FROM channel_htlcs WHERE direction= ? AND channel_id= ? AND hstate != ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2458
|
#: wallet/wallet.c:2459
|
||||||
msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, partid, localfailmsg FROM channel_htlcs WHERE direction = ? AND channel_id = ? AND hstate != ?"
|
msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, partid, localfailmsg FROM channel_htlcs WHERE direction = ? AND channel_id = ? AND hstate != ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2589
|
#: wallet/wallet.c:2590
|
||||||
msgid "SELECT channel_id, direction, cltv_expiry, channel_htlc_id, payment_hash FROM channel_htlcs WHERE channel_id = ?;"
|
msgid "SELECT channel_id, direction, cltv_expiry, channel_htlc_id, payment_hash FROM channel_htlcs WHERE channel_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2623
|
#: wallet/wallet.c:2624
|
||||||
msgid "DELETE FROM channel_htlcs WHERE direction = ? AND origin_htlc = ? AND payment_hash = ? AND partid = ?;"
|
msgid "DELETE FROM channel_htlcs WHERE direction = ? AND origin_htlc = ? AND payment_hash = ? AND partid = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2676
|
#: wallet/wallet.c:2677
|
||||||
msgid "SELECT status FROM payments WHERE payment_hash=? AND partid = ?;"
|
msgid "SELECT status FROM payments WHERE payment_hash=? AND partid = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2694
|
#: wallet/wallet.c:2695
|
||||||
msgid "INSERT INTO payments ( status, payment_hash, destination, msatoshi, timestamp, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, total_msat, partid, local_offer_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO payments ( status, payment_hash, destination, msatoshi, timestamp, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, total_msat, partid, local_offer_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2783
|
#: wallet/wallet.c:2784
|
||||||
msgid "DELETE FROM payments WHERE payment_hash = ? AND partid = ?"
|
msgid "DELETE FROM payments WHERE payment_hash = ? AND partid = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2797
|
#: wallet/wallet.c:2798
|
||||||
msgid "DELETE FROM payments WHERE payment_hash = ?"
|
msgid "DELETE FROM payments WHERE payment_hash = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2898
|
#: wallet/wallet.c:2899
|
||||||
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ? AND partid = ?"
|
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ? AND partid = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2948
|
#: wallet/wallet.c:2949
|
||||||
msgid "UPDATE payments SET status=? WHERE payment_hash=? AND partid=?"
|
msgid "UPDATE payments SET status=? WHERE payment_hash=? AND partid=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2958
|
#: wallet/wallet.c:2959
|
||||||
msgid "UPDATE payments SET payment_preimage=? WHERE payment_hash=? AND partid=?"
|
msgid "UPDATE payments SET payment_preimage=? WHERE payment_hash=? AND partid=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:2968
|
#: wallet/wallet.c:2969
|
||||||
msgid "UPDATE payments SET path_secrets = NULL , route_nodes = NULL , route_channels = NULL WHERE payment_hash = ? AND partid = ?;"
|
msgid "UPDATE payments SET path_secrets = NULL , route_nodes = NULL , route_channels = NULL WHERE payment_hash = ? AND partid = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3000
|
#: wallet/wallet.c:3001
|
||||||
msgid "SELECT failonionreply, faildestperm, failindex, failcode, failnode, failchannel, failupdate, faildetail, faildirection FROM payments WHERE payment_hash=? AND partid=?;"
|
msgid "SELECT failonionreply, faildestperm, failindex, failcode, failnode, failchannel, failupdate, faildetail, faildirection FROM payments WHERE payment_hash=? AND partid=?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3067
|
#: wallet/wallet.c:3068
|
||||||
msgid "UPDATE payments SET failonionreply=? , faildestperm=? , failindex=? , failcode=? , failnode=? , failchannel=? , failupdate=? , faildetail=? , faildirection=? WHERE payment_hash=? AND partid=?;"
|
msgid "UPDATE payments SET failonionreply=? , faildestperm=? , failindex=? , failcode=? , failnode=? , failchannel=? , failupdate=? , faildetail=? , faildirection=? WHERE payment_hash=? AND partid=?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3126
|
#: wallet/wallet.c:3127
|
||||||
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ?;"
|
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3148
|
#: wallet/wallet.c:3149
|
||||||
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments ORDER BY id;"
|
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments ORDER BY id;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3199
|
#: wallet/wallet.c:3200
|
||||||
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE local_offer_id = ?;"
|
msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE local_offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3244
|
#: wallet/wallet.c:3245
|
||||||
msgid "DELETE FROM htlc_sigs WHERE channelid = ?"
|
msgid "DELETE FROM htlc_sigs WHERE channelid = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3251
|
#: wallet/wallet.c:3252
|
||||||
msgid "INSERT INTO htlc_sigs (channelid, signature) VALUES (?, ?)"
|
msgid "INSERT INTO htlc_sigs (channelid, signature) VALUES (?, ?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3263
|
#: wallet/wallet.c:3264
|
||||||
msgid "SELECT blobval FROM vars WHERE name='genesis_hash'"
|
msgid "SELECT blobval FROM vars WHERE name='genesis_hash'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3287
|
#: wallet/wallet.c:3288
|
||||||
msgid "INSERT INTO vars (name, blobval) VALUES ('genesis_hash', ?);"
|
msgid "INSERT INTO vars (name, blobval) VALUES ('genesis_hash', ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3305
|
#: wallet/wallet.c:3306
|
||||||
msgid "SELECT txid, outnum FROM utxoset WHERE spendheight < ?"
|
msgid "SELECT txid, outnum FROM utxoset WHERE spendheight < ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3317
|
#: wallet/wallet.c:3318
|
||||||
msgid "DELETE FROM utxoset WHERE spendheight < ?"
|
msgid "DELETE FROM utxoset WHERE spendheight < ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3325 wallet/wallet.c:3439
|
#: wallet/wallet.c:3326 wallet/wallet.c:3440
|
||||||
msgid "INSERT INTO blocks (height, hash, prev_hash) VALUES (?, ?, ?);"
|
msgid "INSERT INTO blocks (height, hash, prev_hash) VALUES (?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3344
|
#: wallet/wallet.c:3345
|
||||||
msgid "DELETE FROM blocks WHERE hash = ?"
|
msgid "DELETE FROM blocks WHERE hash = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3350
|
#: wallet/wallet.c:3351
|
||||||
msgid "SELECT * FROM blocks WHERE height >= ?;"
|
msgid "SELECT * FROM blocks WHERE height >= ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3359
|
#: wallet/wallet.c:3360
|
||||||
msgid "DELETE FROM blocks WHERE height > ?"
|
msgid "DELETE FROM blocks WHERE height > ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3371
|
#: wallet/wallet.c:3372
|
||||||
msgid "UPDATE outputs SET spend_height = ?, status = ? WHERE prev_out_tx = ? AND prev_out_index = ?"
|
msgid "UPDATE outputs SET spend_height = ?, status = ? WHERE prev_out_tx = ? AND prev_out_index = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3389
|
#: wallet/wallet.c:3390
|
||||||
msgid "UPDATE utxoset SET spendheight = ? WHERE txid = ? AND outnum = ?"
|
msgid "UPDATE utxoset SET spendheight = ? WHERE txid = ? AND outnum = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3412 wallet/wallet.c:3450
|
#: wallet/wallet.c:3413 wallet/wallet.c:3451
|
||||||
msgid "INSERT INTO utxoset ( txid, outnum, blockheight, spendheight, txindex, scriptpubkey, satoshis) VALUES(?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO utxoset ( txid, outnum, blockheight, spendheight, txindex, scriptpubkey, satoshis) VALUES(?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3476
|
#: wallet/wallet.c:3477
|
||||||
msgid "SELECT height FROM blocks WHERE height = ?"
|
msgid "SELECT height FROM blocks WHERE height = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3489
|
#: wallet/wallet.c:3490
|
||||||
msgid "SELECT txid, spendheight, scriptpubkey, satoshis FROM utxoset WHERE blockheight = ? AND txindex = ? AND outnum = ? AND spendheight IS NULL"
|
msgid "SELECT txid, spendheight, scriptpubkey, satoshis FROM utxoset WHERE blockheight = ? AND txindex = ? AND outnum = ? AND spendheight IS NULL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3531
|
#: wallet/wallet.c:3532
|
||||||
msgid "SELECT blockheight, txindex, outnum FROM utxoset WHERE spendheight = ?"
|
msgid "SELECT blockheight, txindex, outnum FROM utxoset WHERE spendheight = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3562 wallet/wallet.c:3722
|
#: wallet/wallet.c:3563 wallet/wallet.c:3723
|
||||||
msgid "SELECT blockheight FROM transactions WHERE id=?"
|
msgid "SELECT blockheight FROM transactions WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3572
|
#: wallet/wallet.c:3573
|
||||||
msgid "INSERT INTO transactions ( id, blockheight, txindex, rawtx) VALUES (?, ?, ?, ?);"
|
msgid "INSERT INTO transactions ( id, blockheight, txindex, rawtx) VALUES (?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3593
|
#: wallet/wallet.c:3594
|
||||||
msgid "UPDATE transactions SET blockheight = ?, txindex = ? WHERE id = ?"
|
msgid "UPDATE transactions SET blockheight = ?, txindex = ? WHERE id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3610
|
#: wallet/wallet.c:3611
|
||||||
msgid "INSERT INTO transaction_annotations (txid, idx, location, type, channel) VALUES (?, ?, ?, ?, ?) ON CONFLICT(txid,idx) DO NOTHING;"
|
msgid "INSERT INTO transaction_annotations (txid, idx, location, type, channel) VALUES (?, ?, ?, ?, ?) ON CONFLICT(txid,idx) DO NOTHING;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3642
|
#: wallet/wallet.c:3643
|
||||||
msgid "SELECT type, channel_id FROM transactions WHERE id=?"
|
msgid "SELECT type, channel_id FROM transactions WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3658
|
#: wallet/wallet.c:3659
|
||||||
msgid "UPDATE transactions SET type = ?, channel_id = ? WHERE id = ?"
|
msgid "UPDATE transactions SET type = ?, channel_id = ? WHERE id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3677
|
#: wallet/wallet.c:3678
|
||||||
msgid "SELECT type FROM transactions WHERE id=?"
|
msgid "SELECT type FROM transactions WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3700
|
#: wallet/wallet.c:3701
|
||||||
msgid "SELECT rawtx FROM transactions WHERE id=?"
|
msgid "SELECT rawtx FROM transactions WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3746
|
#: wallet/wallet.c:3747
|
||||||
msgid "SELECT blockheight, txindex FROM transactions WHERE id=?"
|
msgid "SELECT blockheight, txindex FROM transactions WHERE id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3774
|
#: wallet/wallet.c:3775
|
||||||
msgid "SELECT id FROM transactions WHERE blockheight=?"
|
msgid "SELECT id FROM transactions WHERE blockheight=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3793
|
#: wallet/wallet.c:3794
|
||||||
msgid "INSERT INTO channeltxs ( channel_id, type, transaction_id, input_num, blockheight) VALUES (?, ?, ?, ?, ?);"
|
msgid "INSERT INTO channeltxs ( channel_id, type, transaction_id, input_num, blockheight) VALUES (?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3817
|
#: wallet/wallet.c:3818
|
||||||
msgid "SELECT DISTINCT(channel_id) FROM channeltxs WHERE type = ?;"
|
msgid "SELECT DISTINCT(channel_id) FROM channeltxs WHERE type = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3838
|
#: wallet/wallet.c:3839
|
||||||
msgid "SELECT c.type, c.blockheight, t.rawtx, c.input_num, c.blockheight - t.blockheight + 1 AS depth, t.id as txid FROM channeltxs c JOIN transactions t ON t.id = c.transaction_id WHERE c.channel_id = ? ORDER BY c.id ASC;"
|
msgid "SELECT c.type, c.blockheight, t.rawtx, c.input_num, c.blockheight - t.blockheight + 1 AS depth, t.id as txid FROM channeltxs c JOIN transactions t ON t.id = c.transaction_id WHERE c.channel_id = ? ORDER BY c.id ASC;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3883
|
#: wallet/wallet.c:3884
|
||||||
msgid "UPDATE forwarded_payments SET in_msatoshi=?, out_msatoshi=?, state=?, resolved_time=?, failcode=? WHERE in_htlc_id=?"
|
msgid "UPDATE forwarded_payments SET in_msatoshi=?, out_msatoshi=?, state=?, resolved_time=?, failcode=? WHERE in_htlc_id=?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:3941
|
#: wallet/wallet.c:3942
|
||||||
msgid "INSERT INTO forwarded_payments ( in_htlc_id, out_htlc_id, in_channel_scid, out_channel_scid, in_msatoshi, out_msatoshi, state, received_time, resolved_time, failcode) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
msgid "INSERT INTO forwarded_payments ( in_htlc_id, out_htlc_id, in_channel_scid, out_channel_scid, in_msatoshi, out_msatoshi, state, received_time, resolved_time, failcode) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4000
|
#: wallet/wallet.c:4001
|
||||||
msgid "SELECT CAST(COALESCE(SUM(in_msatoshi - out_msatoshi), 0) AS BIGINT)FROM forwarded_payments WHERE state = ?;"
|
msgid "SELECT CAST(COALESCE(SUM(in_msatoshi - out_msatoshi), 0) AS BIGINT)FROM forwarded_payments WHERE state = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4049
|
#: wallet/wallet.c:4050
|
||||||
msgid "SELECT f.state, in_msatoshi, out_msatoshi, hin.payment_hash as payment_hash, in_channel_scid, out_channel_scid, f.received_time, f.resolved_time, f.failcode FROM forwarded_payments f LEFT JOIN channel_htlcs hin ON (f.in_htlc_id = hin.id) WHERE (1 = ? OR f.state = ?) AND (1 = ? OR f.in_channel_scid = ?) AND (1 = ? OR f.out_channel_scid = ?)"
|
msgid "SELECT f.state, in_msatoshi, out_msatoshi, hin.payment_hash as payment_hash, in_channel_scid, out_channel_scid, f.received_time, f.resolved_time, f.failcode FROM forwarded_payments f LEFT JOIN channel_htlcs hin ON (f.in_htlc_id = hin.id) WHERE (1 = ? OR f.state = ?) AND (1 = ? OR f.in_channel_scid = ?) AND (1 = ? OR f.out_channel_scid = ?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4171
|
#: wallet/wallet.c:4172
|
||||||
msgid "SELECT t.id, t.rawtx, t.blockheight, t.txindex, t.type as txtype, c2.short_channel_id as txchan, a.location, a.idx as ann_idx, a.type as annotation_type, c.short_channel_id FROM transactions t LEFT JOIN transaction_annotations a ON (a.txid = t.id) LEFT JOIN channels c ON (a.channel = c.id) LEFT JOIN channels c2 ON (t.channel_id = c2.id) ORDER BY t.blockheight, t.txindex ASC"
|
msgid "SELECT t.id, t.rawtx, t.blockheight, t.txindex, t.type as txtype, c2.short_channel_id as txchan, a.location, a.idx as ann_idx, a.type as annotation_type, c.short_channel_id FROM transactions t LEFT JOIN transaction_annotations a ON (a.txid = t.id) LEFT JOIN channels c ON (a.channel = c.id) LEFT JOIN channels c2 ON (t.channel_id = c2.id) ORDER BY t.blockheight, t.txindex ASC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4265
|
#: wallet/wallet.c:4266
|
||||||
msgid "INSERT INTO penalty_bases ( channel_id, commitnum, txid, outnum, amount) VALUES (?, ?, ?, ?, ?);"
|
msgid "INSERT INTO penalty_bases ( channel_id, commitnum, txid, outnum, amount) VALUES (?, ?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4290
|
#: wallet/wallet.c:4291
|
||||||
msgid "SELECT commitnum, txid, outnum, amount FROM penalty_bases WHERE channel_id = ?"
|
msgid "SELECT commitnum, txid, outnum, amount FROM penalty_bases WHERE channel_id = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4314
|
#: wallet/wallet.c:4315
|
||||||
msgid "DELETE FROM penalty_bases WHERE channel_id = ? AND commitnum = ?"
|
msgid "DELETE FROM penalty_bases WHERE channel_id = ? AND commitnum = ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4332
|
#: wallet/wallet.c:4333
|
||||||
msgid "SELECT 1 FROM offers WHERE offer_id = ?;"
|
msgid "SELECT 1 FROM offers WHERE offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4345
|
#: wallet/wallet.c:4346
|
||||||
msgid "INSERT INTO offers ( offer_id, bolt12, label, status) VALUES (?, ?, ?, ?);"
|
msgid "INSERT INTO offers ( offer_id, bolt12, label, status) VALUES (?, ?, ?, ?);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4372
|
#: wallet/wallet.c:4373
|
||||||
msgid "SELECT bolt12, label, status FROM offers WHERE offer_id = ?;"
|
msgid "SELECT bolt12, label, status FROM offers WHERE offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4400
|
#: wallet/wallet.c:4401
|
||||||
msgid "SELECT offer_id FROM offers;"
|
msgid "SELECT offer_id FROM offers;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4426
|
#: wallet/wallet.c:4427
|
||||||
msgid "UPDATE offers SET status=? WHERE offer_id = ?;"
|
msgid "UPDATE offers SET status=? WHERE offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4437
|
#: wallet/wallet.c:4438
|
||||||
msgid "UPDATE invoices SET state=? WHERE state=? AND local_offer_id = ?;"
|
msgid "UPDATE invoices SET state=? WHERE state=? AND local_offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: wallet/wallet.c:4465
|
#: wallet/wallet.c:4466
|
||||||
msgid "SELECT status FROM offers WHERE offer_id = ?;"
|
msgid "SELECT status FROM offers WHERE offer_id = ?;"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1257,4 +1257,4 @@ msgstr ""
|
||||||
#: wallet/test/run-wallet.c:1647
|
#: wallet/test/run-wallet.c:1647
|
||||||
msgid "INSERT INTO channels (id) VALUES (1);"
|
msgid "INSERT INTO channels (id) VALUES (1);"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
# SHA256STAMP:2fdded09bd28387ed024108cbe04c6ba1e158605c4c84eb1cf4caa83e26599fe
|
# SHA256STAMP:a6f2ee44515575973c58448f5859f557e748752253c9111de107991374fe5539
|
||||||
|
|
|
@ -28,9 +28,6 @@
|
||||||
* to prune? */
|
* to prune? */
|
||||||
#define UTXO_PRUNE_DEPTH 144
|
#define UTXO_PRUNE_DEPTH 144
|
||||||
|
|
||||||
/* 12 hours is usually enough reservation time */
|
|
||||||
#define RESERVATION_INC (6 * 12)
|
|
||||||
|
|
||||||
static void outpointfilters_init(struct wallet *w)
|
static void outpointfilters_init(struct wallet *w)
|
||||||
{
|
{
|
||||||
struct db_stmt *stmt;
|
struct db_stmt *stmt;
|
||||||
|
@ -439,7 +436,9 @@ static void db_set_utxo(struct db *db, const struct utxo *utxo)
|
||||||
db_exec_prepared_v2(take(stmt));
|
db_exec_prepared_v2(take(stmt));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wallet_reserve_utxo(struct wallet *w, struct utxo *utxo, u32 current_height)
|
bool wallet_reserve_utxo(struct wallet *w, struct utxo *utxo,
|
||||||
|
u32 current_height,
|
||||||
|
u32 reserve)
|
||||||
{
|
{
|
||||||
switch (utxo->status) {
|
switch (utxo->status) {
|
||||||
case OUTPUT_STATE_SPENT:
|
case OUTPUT_STATE_SPENT:
|
||||||
|
@ -453,9 +452,9 @@ bool wallet_reserve_utxo(struct wallet *w, struct utxo *utxo, u32 current_height
|
||||||
|
|
||||||
/* We simple increase existing reservations, which DTRT if we unreserve */
|
/* We simple increase existing reservations, which DTRT if we unreserve */
|
||||||
if (utxo->reserved_til >= current_height)
|
if (utxo->reserved_til >= current_height)
|
||||||
utxo->reserved_til += RESERVATION_INC;
|
utxo->reserved_til += reserve;
|
||||||
else
|
else
|
||||||
utxo->reserved_til = current_height + RESERVATION_INC;
|
utxo->reserved_til = current_height + reserve;
|
||||||
|
|
||||||
utxo->status = OUTPUT_STATE_RESERVED;
|
utxo->status = OUTPUT_STATE_RESERVED;
|
||||||
|
|
||||||
|
@ -464,18 +463,20 @@ bool wallet_reserve_utxo(struct wallet *w, struct utxo *utxo, u32 current_height
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wallet_unreserve_utxo(struct wallet *w, struct utxo *utxo, u32 current_height)
|
void wallet_unreserve_utxo(struct wallet *w, struct utxo *utxo,
|
||||||
|
u32 current_height,
|
||||||
|
u32 unreserve)
|
||||||
{
|
{
|
||||||
if (utxo->status != OUTPUT_STATE_RESERVED)
|
if (utxo->status != OUTPUT_STATE_RESERVED)
|
||||||
fatal("UTXO %s:%u is not reserved",
|
fatal("UTXO %s:%u is not reserved",
|
||||||
type_to_string(tmpctx, struct bitcoin_txid, &utxo->txid),
|
type_to_string(tmpctx, struct bitcoin_txid, &utxo->txid),
|
||||||
utxo->outnum);
|
utxo->outnum);
|
||||||
|
|
||||||
if (utxo->reserved_til <= current_height + RESERVATION_INC) {
|
if (utxo->reserved_til <= current_height + unreserve) {
|
||||||
utxo->status = OUTPUT_STATE_AVAILABLE;
|
utxo->status = OUTPUT_STATE_AVAILABLE;
|
||||||
utxo->reserved_til = 0;
|
utxo->reserved_til = 0;
|
||||||
} else
|
} else
|
||||||
utxo->reserved_til -= RESERVATION_INC;
|
utxo->reserved_til -= unreserve;
|
||||||
|
|
||||||
db_set_utxo(w->db, utxo);
|
db_set_utxo(w->db, utxo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -405,19 +405,24 @@ bool wallet_add_onchaind_utxo(struct wallet *w,
|
||||||
/**
|
/**
|
||||||
* wallet_reserve_utxo - set a reservation on a UTXO.
|
* wallet_reserve_utxo - set a reservation on a UTXO.
|
||||||
*
|
*
|
||||||
* If the reservation is already reserved, refreshes the reservation,
|
* If the reservation is already reserved:
|
||||||
* otherwise if it's not available, returns false.
|
* refreshes the reservation by @reserve, return true.
|
||||||
|
* Otherwise if it's available:
|
||||||
|
* reserves until @current_height + @reserve, returns true.
|
||||||
|
* Otherwise:
|
||||||
|
* returns false.
|
||||||
*/
|
*/
|
||||||
bool wallet_reserve_utxo(struct wallet *w,
|
bool wallet_reserve_utxo(struct wallet *w,
|
||||||
struct utxo *utxo,
|
struct utxo *utxo,
|
||||||
u32 reservation_blocknum);
|
u32 current_height,
|
||||||
|
u32 reserve);
|
||||||
|
|
||||||
/* wallet_unreserve_utxo - make a reserved UTXO available again.
|
/* wallet_unreserve_utxo - make a reserved UTXO available again.
|
||||||
*
|
*
|
||||||
* Must be reserved.
|
* Must be reserved.
|
||||||
*/
|
*/
|
||||||
void wallet_unreserve_utxo(struct wallet *w, struct utxo *utxo,
|
void wallet_unreserve_utxo(struct wallet *w, struct utxo *utxo,
|
||||||
u32 current_height);
|
u32 current_height, u32 unreserve);
|
||||||
|
|
||||||
/** wallet_utxo_get - Retrive a utxo.
|
/** wallet_utxo_get - Retrive a utxo.
|
||||||
*
|
*
|
||||||
|
|
|
@ -756,6 +756,7 @@ struct sending_psbt {
|
||||||
struct command *cmd;
|
struct command *cmd;
|
||||||
struct utxo **utxos;
|
struct utxo **utxos;
|
||||||
struct wally_tx *wtx;
|
struct wally_tx *wtx;
|
||||||
|
u32 reserve_blocks;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void sendpsbt_done(struct bitcoind *bitcoind UNUSED,
|
static void sendpsbt_done(struct bitcoind *bitcoind UNUSED,
|
||||||
|
@ -772,7 +773,8 @@ static void sendpsbt_done(struct bitcoind *bitcoind UNUSED,
|
||||||
for (size_t i = 0; i < tal_count(sending->utxos); i++) {
|
for (size_t i = 0; i < tal_count(sending->utxos); i++) {
|
||||||
wallet_unreserve_utxo(ld->wallet,
|
wallet_unreserve_utxo(ld->wallet,
|
||||||
sending->utxos[i],
|
sending->utxos[i],
|
||||||
get_block_height(ld->topology));
|
get_block_height(ld->topology),
|
||||||
|
sending->reserve_blocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
was_pending(command_fail(sending->cmd, LIGHTNINGD,
|
was_pending(command_fail(sending->cmd, LIGHTNINGD,
|
||||||
|
@ -805,14 +807,17 @@ static struct command_result *json_sendpsbt(struct command *cmd,
|
||||||
struct sending_psbt *sending;
|
struct sending_psbt *sending;
|
||||||
struct wally_psbt *psbt;
|
struct wally_psbt *psbt;
|
||||||
struct lightningd *ld = cmd->ld;
|
struct lightningd *ld = cmd->ld;
|
||||||
|
u32 *reserve_blocks;
|
||||||
|
|
||||||
if (!param(cmd, buffer, params,
|
if (!param(cmd, buffer, params,
|
||||||
p_req("psbt", param_psbt, &psbt),
|
p_req("psbt", param_psbt, &psbt),
|
||||||
|
p_opt_def("reserve", param_number, &reserve_blocks, 12 * 6),
|
||||||
NULL))
|
NULL))
|
||||||
return command_param_failed();
|
return command_param_failed();
|
||||||
|
|
||||||
sending = tal(cmd, struct sending_psbt);
|
sending = tal(cmd, struct sending_psbt);
|
||||||
sending->cmd = cmd;
|
sending->cmd = cmd;
|
||||||
|
sending->reserve_blocks = *reserve_blocks;
|
||||||
|
|
||||||
psbt_finalize(psbt);
|
psbt_finalize(psbt);
|
||||||
sending->wtx = psbt_final_tx(sending, psbt);
|
sending->wtx = psbt_final_tx(sending, psbt);
|
||||||
|
@ -831,7 +836,8 @@ static struct command_result *json_sendpsbt(struct command *cmd,
|
||||||
|
|
||||||
for (size_t i = 0; i < tal_count(sending->utxos); i++) {
|
for (size_t i = 0; i < tal_count(sending->utxos); i++) {
|
||||||
if (!wallet_reserve_utxo(ld->wallet, sending->utxos[i],
|
if (!wallet_reserve_utxo(ld->wallet, sending->utxos[i],
|
||||||
get_block_height(ld->topology)))
|
get_block_height(ld->topology),
|
||||||
|
sending->reserve_blocks))
|
||||||
fatal("UTXO not reservable?");
|
fatal("UTXO not reservable?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue