db: Add migration for the local basepoints and the funding pubkey

This commit is contained in:
Christian Decker 2021-03-01 15:47:55 +01:00 committed by Rusty Russell
parent bc42e8df13
commit 4887a5a18f
6 changed files with 282 additions and 176 deletions

View File

@ -344,5 +344,4 @@ def test_local_basepoints_cache(bitcoind, node_factory):
present = l1.db.query(q)[0]
for f in fields:
assert(f in present)
assert(present[f] is None)
assert(present[f] is not None)

View File

@ -30,6 +30,7 @@
*/
struct migration_context {
const struct ext_key *bip32_base;
int hsm_fd;
};
struct migration {
@ -53,6 +54,10 @@ static void fillin_missing_scriptpubkeys(struct lightningd *ld, struct db *db,
static void fillin_missing_channel_id(struct lightningd *ld, struct db *db,
const struct migration_context *mc);
static void fillin_missing_local_basepoints(struct lightningd *ld,
struct db *db,
const struct migration_context *mc);
/* Do not reorder or remove elements from this array, it is used to
* migrate existing databases from a previous state, based on the
* string indices */
@ -703,6 +708,7 @@ static struct migration dbmigrations[] = {
{SQL("ALTER TABLE channels ADD htlc_basepoint_local BLOB"), NULL},
{SQL("ALTER TABLE channels ADD delayed_payment_basepoint_local BLOB"), NULL},
{SQL("ALTER TABLE channels ADD funding_pubkey_local BLOB"), NULL},
{NULL, fillin_missing_local_basepoints},
};
/* Leak tracking. */
@ -1063,6 +1069,7 @@ static void db_migrate(struct lightningd *ld, struct db *db,
struct db_stmt *stmt;
const struct migration_context mc = {
.bip32_base = bip32_base,
.hsm_fd = ld->hsm_fd,
};
orig = current = db_get_version(db);
@ -1332,6 +1339,68 @@ static void fillin_missing_channel_id(struct lightningd *ld, struct db *db,
tal_free(stmt);
}
static void fillin_missing_local_basepoints(struct lightningd *ld,
struct db *db,
const struct migration_context *mc)
{
struct db_stmt *stmt;
stmt = db_prepare_v2(
db,
SQL("SELECT"
" channels.id"
", peers.node_id "
"FROM"
" channels JOIN"
" peers "
"ON (peers.id = channels.peer_id)"));
db_query_prepared(stmt);
while (db_step(stmt)) {
struct node_id peer_id;
u64 dbid;
u8 *msg;
struct db_stmt *upstmt;
struct basepoints base;
struct pubkey funding_pubkey;
dbid = db_column_u64(stmt, 0);
db_column_node_id(stmt, 1, &peer_id);
if (!wire_sync_write(mc->hsm_fd,
towire_hsmd_get_channel_basepoints(
tmpctx, &peer_id, dbid)))
fatal("could not retrieve basepoint from hsmd");
msg = wire_sync_read(tmpctx, mc->hsm_fd);
if (!fromwire_hsmd_get_channel_basepoints_reply(
msg, &base, &funding_pubkey))
fatal("malformed hsmd_get_channel_basepoints_reply "
"from hsmd");
upstmt = db_prepare_v2(
db,
SQL("UPDATE channels SET"
" revocation_basepoint_local = ?"
", payment_basepoint_local = ?"
", htlc_basepoint_local = ?"
", delayed_payment_basepoint_local = ?"
", funding_pubkey_local = ? "
"WHERE id = ?;"));
db_bind_pubkey(upstmt, 0, &base.revocation);
db_bind_pubkey(upstmt, 1, &base.payment);
db_bind_pubkey(upstmt, 2, &base.htlc);
db_bind_pubkey(upstmt, 3, &base.delayed_payment);
db_bind_pubkey(upstmt, 4, &funding_pubkey);
db_bind_u64(upstmt, 5, dbid);
db_exec_prepared_v2(take(upstmt));
}
tal_free(stmt);
}
/* We're moving everything over to PSBTs from tx's, particularly our last_tx's
* which are commitment transactions for channels.
* This migration loads all of the last_tx's and 're-formats' them into psbts,

View File

@ -1010,6 +1010,18 @@ struct db_query db_postgres_queries[] = {
.placeholders = 2,
.readonly = false,
},
{
.name = "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)",
.query = "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)",
.placeholders = 0,
.readonly = true,
},
{
.name = "UPDATE channels SET revocation_basepoint_local = ?, payment_basepoint_local = ?, htlc_basepoint_local = ?, delayed_payment_basepoint_local = ?, funding_pubkey_local = ? WHERE id = ?;",
.query = "UPDATE channels SET revocation_basepoint_local = $1, payment_basepoint_local = $2, htlc_basepoint_local = $3, delayed_payment_basepoint_local = $4, funding_pubkey_local = $5 WHERE id = $6;",
.placeholders = 6,
.readonly = false,
},
{
.name = "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;",
.query = "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;",
@ -1858,10 +1870,10 @@ struct db_query db_postgres_queries[] = {
},
};
#define DB_POSTGRES_QUERY_COUNT 308
#define DB_POSTGRES_QUERY_COUNT 310
#endif /* HAVE_POSTGRES */
#endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */
// SHA256STAMP:1a3134f7047b5f6d980c2a876b4132b04a650340846d704b2e4b3aa62810b830
// SHA256STAMP:31b3cec58b89d8183275a5f240715bde33901fd0e839ea4d267eed79575e2d2d

View File

@ -1010,6 +1010,18 @@ struct db_query db_sqlite3_queries[] = {
.placeholders = 2,
.readonly = false,
},
{
.name = "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)",
.query = "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)",
.placeholders = 0,
.readonly = true,
},
{
.name = "UPDATE channels SET revocation_basepoint_local = ?, payment_basepoint_local = ?, htlc_basepoint_local = ?, delayed_payment_basepoint_local = ?, funding_pubkey_local = ? WHERE id = ?;",
.query = "UPDATE channels SET revocation_basepoint_local = ?, payment_basepoint_local = ?, htlc_basepoint_local = ?, delayed_payment_basepoint_local = ?, funding_pubkey_local = ? WHERE id = ?;",
.placeholders = 6,
.readonly = false,
},
{
.name = "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;",
.query = "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;",
@ -1858,10 +1870,10 @@ struct db_query db_sqlite3_queries[] = {
},
};
#define DB_SQLITE3_QUERY_COUNT 308
#define DB_SQLITE3_QUERY_COUNT 310
#endif /* HAVE_SQLITE3 */
#endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */
// SHA256STAMP:90340a79e7d9009f7903f4c203253632ef2e81704d8e403f9bbffec2ed34dcb6
// SHA256STAMP:9b64275f5e8b221e0e7ae99a386d0fb5c5112b65eb893dc6c8f68c2e95d920d4

View File

@ -1,676 +1,684 @@
#: wallet/db.c:60
#: wallet/db.c:65
msgid "CREATE TABLE version (version INTEGER)"
msgstr ""
#: wallet/db.c:61
#: wallet/db.c:66
msgid "INSERT INTO version VALUES (1)"
msgstr ""
#: wallet/db.c:62
#: wallet/db.c:67
msgid "CREATE TABLE outputs ( prev_out_tx BLOB, prev_out_index INTEGER, value BIGINT, type INTEGER, status INTEGER, keyindex INTEGER, PRIMARY KEY (prev_out_tx, prev_out_index));"
msgstr ""
#: wallet/db.c:71
#: wallet/db.c:76
msgid "CREATE TABLE vars ( name VARCHAR(32), val VARCHAR(255), PRIMARY KEY (name));"
msgstr ""
#: wallet/db.c:77
#: wallet/db.c:82
msgid "CREATE TABLE shachains ( id BIGSERIAL, min_index BIGINT, num_valid BIGINT, PRIMARY KEY (id));"
msgstr ""
#: wallet/db.c:84
#: wallet/db.c:89
msgid "CREATE TABLE shachain_known ( shachain_id BIGINT REFERENCES shachains(id) ON DELETE CASCADE, pos INTEGER, idx BIGINT, hash BLOB, PRIMARY KEY (shachain_id, pos));"
msgstr ""
#: wallet/db.c:92
#: wallet/db.c:97
msgid "CREATE TABLE peers ( id BIGSERIAL, node_id BLOB UNIQUE, address TEXT, PRIMARY KEY (id));"
msgstr ""
#: wallet/db.c:99
#: wallet/db.c:104
msgid "CREATE TABLE channels ( id BIGSERIAL, peer_id BIGINT REFERENCES peers(id) ON DELETE CASCADE, short_channel_id TEXT, channel_config_local BIGINT, channel_config_remote BIGINT, state INTEGER, funder INTEGER, channel_flags INTEGER, minimum_depth INTEGER, next_index_local BIGINT, next_index_remote BIGINT, next_htlc_id BIGINT, funding_tx_id BLOB, funding_tx_outnum INTEGER, funding_satoshi BIGINT, funding_locked_remote INTEGER, push_msatoshi BIGINT, msatoshi_local BIGINT, fundingkey_remote BLOB, revocation_basepoint_remote BLOB, payment_basepoint_remote BLOB, htlc_basepoint_remote BLOB, delayed_payment_basepoint_remote BLOB, per_commit_remote BLOB, old_per_commit_remote BLOB, local_feerate_per_kw INTEGER, remote_feerate_per_kw INTEGER, shachain_remote_id BIGINT, shutdown_scriptpubkey_remote BLOB, shutdown_keyidx_local BIGINT, last_sent_commit_state BIGINT, last_sent_commit_id INTEGER, last_tx BLOB, last_sig BLOB, closing_fee_received INTEGER, closing_sig_received BLOB, PRIMARY KEY (id));"
msgstr ""
#: wallet/db.c:141
#: wallet/db.c:146
msgid "CREATE TABLE channel_configs ( id BIGSERIAL, dust_limit_satoshis BIGINT, max_htlc_value_in_flight_msat BIGINT, channel_reserve_satoshis BIGINT, htlc_minimum_msat BIGINT, to_self_delay INTEGER, max_accepted_htlcs INTEGER, PRIMARY KEY (id));"
msgstr ""
#: wallet/db.c:152
#: wallet/db.c:157
msgid "CREATE TABLE channel_htlcs ( id BIGSERIAL, channel_id BIGINT REFERENCES channels(id) ON DELETE CASCADE, channel_htlc_id BIGINT, direction INTEGER, origin_htlc BIGINT, msatoshi BIGINT, cltv_expiry INTEGER, payment_hash BLOB, payment_key BLOB, routing_onion BLOB, failuremsg BLOB, malformed_onion INTEGER, hstate INTEGER, shared_secret BLOB, PRIMARY KEY (id), UNIQUE (channel_id, channel_htlc_id, direction));"
msgstr ""
#: wallet/db.c:172
#: wallet/db.c:177
msgid "CREATE TABLE invoices ( id BIGSERIAL, state INTEGER, msatoshi BIGINT, payment_hash BLOB, payment_key BLOB, label TEXT, PRIMARY KEY (id), UNIQUE (label), UNIQUE (payment_hash));"
msgstr ""
#: wallet/db.c:184
#: wallet/db.c:189
msgid "CREATE TABLE payments ( id BIGSERIAL, timestamp INTEGER, status INTEGER, payment_hash BLOB, direction INTEGER, destination BLOB, msatoshi BIGINT, PRIMARY KEY (id), UNIQUE (payment_hash));"
msgstr ""
#: wallet/db.c:197
#: wallet/db.c:202
msgid "ALTER TABLE invoices ADD expiry_time BIGINT;"
msgstr ""
#: wallet/db.c:198
#: wallet/db.c:203
msgid "UPDATE invoices SET expiry_time=9223372036854775807;"
msgstr ""
#: wallet/db.c:200
#: wallet/db.c:205
msgid "ALTER TABLE invoices ADD pay_index BIGINT;"
msgstr ""
#: wallet/db.c:201
#: wallet/db.c:206
msgid "CREATE UNIQUE INDEX invoices_pay_index ON invoices(pay_index);"
msgstr ""
#: wallet/db.c:203
#: wallet/db.c:208
msgid "UPDATE invoices SET pay_index=id WHERE state=1;"
msgstr ""
#: wallet/db.c:206
#: wallet/db.c:211
msgid "INSERT INTO vars(name, val) VALUES('next_pay_index', COALESCE((SELECT MAX(pay_index) FROM invoices WHERE state=1), 0) + 1 );"
msgstr ""
#: wallet/db.c:215
#: wallet/db.c:220
msgid "ALTER TABLE channels ADD first_blocknum BIGINT;"
msgstr ""
#: wallet/db.c:216
#: wallet/db.c:221
msgid "UPDATE channels SET first_blocknum=1 WHERE short_channel_id IS NOT NULL;"
msgstr ""
#: wallet/db.c:218
#: wallet/db.c:223
msgid "ALTER TABLE outputs ADD COLUMN channel_id BIGINT;"
msgstr ""
#: wallet/db.c:219
#: wallet/db.c:224
msgid "ALTER TABLE outputs ADD COLUMN peer_id BLOB;"
msgstr ""
#: wallet/db.c:220
#: wallet/db.c:225
msgid "ALTER TABLE outputs ADD COLUMN commitment_point BLOB;"
msgstr ""
#: wallet/db.c:221
#: wallet/db.c:226
msgid "ALTER TABLE invoices ADD COLUMN msatoshi_received BIGINT;"
msgstr ""
#: wallet/db.c:223
#: wallet/db.c:228
msgid "UPDATE invoices SET msatoshi_received=0 WHERE state=1;"
msgstr ""
#: wallet/db.c:224
#: wallet/db.c:229
msgid "ALTER TABLE channels ADD COLUMN last_was_revoke INTEGER;"
msgstr ""
#: wallet/db.c:228 wallet/db.c:521
#: wallet/db.c:233 wallet/db.c:526
msgid "ALTER TABLE payments RENAME TO temp_payments;"
msgstr ""
#: wallet/db.c:229
#: wallet/db.c:234
msgid "CREATE TABLE payments ( id BIGSERIAL, timestamp INTEGER, status INTEGER, payment_hash BLOB, destination BLOB, msatoshi BIGINT, PRIMARY KEY (id), UNIQUE (payment_hash));"
msgstr ""
#: wallet/db.c:240
#: wallet/db.c:245
msgid "INSERT INTO payments SELECT id, timestamp, status, payment_hash, destination, msatoshi FROM temp_payments WHERE direction=1;"
msgstr ""
#: wallet/db.c:243 wallet/db.c:596
#: wallet/db.c:248 wallet/db.c:601
msgid "DROP TABLE temp_payments;"
msgstr ""
#: wallet/db.c:245
#: wallet/db.c:250
msgid "ALTER TABLE payments ADD COLUMN payment_preimage BLOB;"
msgstr ""
#: wallet/db.c:247
#: wallet/db.c:252
msgid "ALTER TABLE payments ADD COLUMN path_secrets BLOB;"
msgstr ""
#: wallet/db.c:250
#: wallet/db.c:255
msgid "ALTER TABLE invoices ADD paid_timestamp BIGINT;"
msgstr ""
#: wallet/db.c:251
#: wallet/db.c:256
msgid "UPDATE invoices SET paid_timestamp = CURRENT_TIMESTAMP() WHERE state = 1;"
msgstr ""
#: wallet/db.c:259
#: wallet/db.c:264
msgid "ALTER TABLE payments ADD COLUMN route_nodes BLOB;"
msgstr ""
#: wallet/db.c:260
#: wallet/db.c:265
msgid "ALTER TABLE payments ADD COLUMN route_channels BLOB;"
msgstr ""
#: wallet/db.c:261
#: wallet/db.c:266
msgid "CREATE TABLE htlc_sigs (channelid INTEGER REFERENCES channels(id) ON DELETE CASCADE, signature BLOB);"
msgstr ""
#: wallet/db.c:264
#: wallet/db.c:269
msgid "CREATE INDEX channel_idx ON htlc_sigs (channelid)"
msgstr ""
#: wallet/db.c:266
#: wallet/db.c:271
msgid "DELETE FROM channels WHERE state=1"
msgstr ""
#: wallet/db.c:268
#: wallet/db.c:273
msgid "CREATE TABLE db_upgrades (upgrade_from INTEGER, lightning_version TEXT);"
msgstr ""
#: wallet/db.c:272 wallet/db.c:462
#: wallet/db.c:277 wallet/db.c:467
msgid "DELETE FROM peers WHERE id NOT IN (SELECT peer_id FROM channels);"
msgstr ""
#: wallet/db.c:276
#: wallet/db.c:281
msgid "UPDATE channels SET STATE = 8 WHERE state > 8;"
msgstr ""
#: wallet/db.c:278
#: wallet/db.c:283
msgid "ALTER TABLE invoices ADD bolt11 TEXT;"
msgstr ""
#: wallet/db.c:282
#: wallet/db.c:287
msgid "CREATE TABLE blocks (height INT, hash BLOB, prev_hash BLOB, UNIQUE(height));"
msgstr ""
#: wallet/db.c:292
#: wallet/db.c:297
msgid "ALTER TABLE outputs ADD COLUMN confirmation_height INTEGER REFERENCES blocks(height) ON DELETE SET NULL;"
msgstr ""
#: wallet/db.c:295
#: wallet/db.c:300
msgid "ALTER TABLE outputs ADD COLUMN spend_height INTEGER REFERENCES blocks(height) ON DELETE SET NULL;"
msgstr ""
#: wallet/db.c:299
#: wallet/db.c:304
msgid "CREATE INDEX output_height_idx ON outputs (confirmation_height, spend_height);"
msgstr ""
#: wallet/db.c:302
#: wallet/db.c:307
msgid "CREATE TABLE utxoset ( txid BLOB, outnum INT, blockheight INT REFERENCES blocks(height) ON DELETE CASCADE, spendheight INT REFERENCES blocks(height) ON DELETE SET NULL, txindex INT, scriptpubkey BLOB, satoshis BIGINT, PRIMARY KEY(txid, outnum));"
msgstr ""
#: wallet/db.c:312
#: wallet/db.c:317
msgid "CREATE INDEX short_channel_id ON utxoset (blockheight, txindex, outnum)"
msgstr ""
#: wallet/db.c:317
#: wallet/db.c:322
msgid "CREATE INDEX utxoset_spend ON utxoset (spendheight)"
msgstr ""
#: wallet/db.c:319
#: wallet/db.c:324
msgid "UPDATE channels SET shutdown_keyidx_local=0 WHERE shutdown_keyidx_local = -1;"
msgstr ""
#: wallet/db.c:325
#: wallet/db.c:330
msgid "ALTER TABLE payments ADD failonionreply BLOB;"
msgstr ""
#: wallet/db.c:327
#: wallet/db.c:332
msgid "ALTER TABLE payments ADD faildestperm INTEGER;"
msgstr ""
#: wallet/db.c:329
#: wallet/db.c:334
msgid "ALTER TABLE payments ADD failindex INTEGER;"
msgstr ""
#: wallet/db.c:331
#: wallet/db.c:336
msgid "ALTER TABLE payments ADD failcode INTEGER;"
msgstr ""
#: wallet/db.c:332
#: wallet/db.c:337
msgid "ALTER TABLE payments ADD failnode BLOB;"
msgstr ""
#: wallet/db.c:333
#: wallet/db.c:338
msgid "ALTER TABLE payments ADD failchannel TEXT;"
msgstr ""
#: wallet/db.c:335
#: wallet/db.c:340
msgid "ALTER TABLE payments ADD failupdate BLOB;"
msgstr ""
#: wallet/db.c:339
#: wallet/db.c:344
msgid "UPDATE payments SET path_secrets = NULL , route_nodes = NULL , route_channels = NULL WHERE status <> 0;"
msgstr ""
#: wallet/db.c:346
#: wallet/db.c:351
msgid "ALTER TABLE channels ADD in_payments_offered INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:347
#: wallet/db.c:352
msgid "ALTER TABLE channels ADD in_payments_fulfilled INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:348
#: wallet/db.c:353
msgid "ALTER TABLE channels ADD in_msatoshi_offered BIGINT DEFAULT 0;"
msgstr ""
#: wallet/db.c:349
#: wallet/db.c:354
msgid "ALTER TABLE channels ADD in_msatoshi_fulfilled BIGINT DEFAULT 0;"
msgstr ""
#: wallet/db.c:350
#: wallet/db.c:355
msgid "ALTER TABLE channels ADD out_payments_offered INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:351
#: wallet/db.c:356
msgid "ALTER TABLE channels ADD out_payments_fulfilled INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:352
#: wallet/db.c:357
msgid "ALTER TABLE channels ADD out_msatoshi_offered BIGINT DEFAULT 0;"
msgstr ""
#: wallet/db.c:353
#: wallet/db.c:358
msgid "ALTER TABLE channels ADD out_msatoshi_fulfilled BIGINT DEFAULT 0;"
msgstr ""
#: wallet/db.c:354
#: wallet/db.c:359
msgid "UPDATE channels SET in_payments_offered = 0, in_payments_fulfilled = 0 , in_msatoshi_offered = 0, in_msatoshi_fulfilled = 0 , out_payments_offered = 0, out_payments_fulfilled = 0 , out_msatoshi_offered = 0, out_msatoshi_fulfilled = 0 ;"
msgstr ""
#: wallet/db.c:363
#: wallet/db.c:368
msgid "ALTER TABLE payments ADD msatoshi_sent BIGINT;"
msgstr ""
#: wallet/db.c:364
#: wallet/db.c:369
msgid "UPDATE payments SET msatoshi_sent = msatoshi;"
msgstr ""
#: wallet/db.c:366
#: wallet/db.c:371
msgid "DELETE FROM utxoset WHERE blockheight IN ( SELECT DISTINCT(blockheight) FROM utxoset LEFT OUTER JOIN blocks on (blockheight = blocks.height) WHERE blocks.hash IS NULL);"
msgstr ""
#: wallet/db.c:374
#: wallet/db.c:379
msgid "ALTER TABLE channels ADD min_possible_feerate INTEGER;"
msgstr ""
#: wallet/db.c:375
#: wallet/db.c:380
msgid "ALTER TABLE channels ADD max_possible_feerate INTEGER;"
msgstr ""
#: wallet/db.c:378
#: wallet/db.c:383
msgid "UPDATE channels SET min_possible_feerate=0, max_possible_feerate=250000;"
msgstr ""
#: wallet/db.c:382
#: wallet/db.c:387
msgid "ALTER TABLE channels ADD msatoshi_to_us_min BIGINT;"
msgstr ""
#: wallet/db.c:383
#: wallet/db.c:388
msgid "ALTER TABLE channels ADD msatoshi_to_us_max BIGINT;"
msgstr ""
#: wallet/db.c:384
#: wallet/db.c:389
msgid "UPDATE channels SET msatoshi_to_us_min = msatoshi_local , msatoshi_to_us_max = msatoshi_local ;"
msgstr ""
#: wallet/db.c:393
#: wallet/db.c:398
msgid "CREATE TABLE transactions ( id BLOB, blockheight INTEGER REFERENCES blocks(height) ON DELETE SET NULL, txindex INTEGER, rawtx BLOB, PRIMARY KEY (id));"
msgstr ""
#: wallet/db.c:402
#: wallet/db.c:407
msgid "ALTER TABLE payments ADD faildetail TEXT;"
msgstr ""
#: wallet/db.c:403
#: wallet/db.c:408
msgid "UPDATE payments SET faildetail = 'unspecified payment failure reason' WHERE status = 2;"
msgstr ""
#: wallet/db.c:408
#: wallet/db.c:413
msgid "CREATE TABLE channeltxs ( id BIGSERIAL, channel_id BIGINT REFERENCES channels(id) ON DELETE CASCADE, type INTEGER, transaction_id BLOB REFERENCES transactions(id) ON DELETE CASCADE, input_num INTEGER, blockheight INTEGER REFERENCES blocks(height) ON DELETE CASCADE, PRIMARY KEY(id));"
msgstr ""
#: wallet/db.c:424
#: wallet/db.c:429
msgid "DELETE FROM blocks WHERE height > (SELECT MIN(first_blocknum) FROM channels);"
msgstr ""
#: wallet/db.c:430
#: wallet/db.c:435
msgid "INSERT INTO blocks (height) VALUES ((SELECT MIN(first_blocknum) FROM channels)) ON CONFLICT(height) DO NOTHING;"
msgstr ""
#: wallet/db.c:434
#: wallet/db.c:439
msgid "DELETE FROM blocks WHERE height IS NULL;"
msgstr ""
#: wallet/db.c:436
#: wallet/db.c:441
msgid "ALTER TABLE invoices ADD description TEXT;"
msgstr ""
#: wallet/db.c:438
#: wallet/db.c:443
msgid "ALTER TABLE payments ADD description TEXT;"
msgstr ""
#: wallet/db.c:440
#: wallet/db.c:445
msgid "ALTER TABLE channels ADD future_per_commitment_point BLOB;"
msgstr ""
#: wallet/db.c:442
#: wallet/db.c:447
msgid "ALTER TABLE channels ADD last_sent_commit BLOB;"
msgstr ""
#: wallet/db.c:447
#: wallet/db.c:452
msgid "CREATE TABLE forwarded_payments ( in_htlc_id BIGINT REFERENCES channel_htlcs(id) ON DELETE SET NULL, out_htlc_id BIGINT REFERENCES channel_htlcs(id) ON DELETE SET NULL, in_channel_scid BIGINT, out_channel_scid BIGINT, in_msatoshi BIGINT, out_msatoshi BIGINT, state INTEGER, UNIQUE(in_htlc_id, out_htlc_id));"
msgstr ""
#: wallet/db.c:459
#: wallet/db.c:464
msgid "ALTER TABLE payments ADD faildirection INTEGER;"
msgstr ""
#: wallet/db.c:464
#: wallet/db.c:469
msgid "ALTER TABLE outputs ADD scriptpubkey BLOB;"
msgstr ""
#: wallet/db.c:466
#: wallet/db.c:471
msgid "ALTER TABLE payments ADD bolt11 TEXT;"
msgstr ""
#: wallet/db.c:468
#: wallet/db.c:473
msgid "ALTER TABLE channels ADD feerate_base INTEGER;"
msgstr ""
#: wallet/db.c:469
#: wallet/db.c:474
msgid "ALTER TABLE channels ADD feerate_ppm INTEGER;"
msgstr ""
#: wallet/db.c:471
#: wallet/db.c:476
msgid "ALTER TABLE channel_htlcs ADD received_time BIGINT"
msgstr ""
#: wallet/db.c:472
#: wallet/db.c:477
msgid "ALTER TABLE forwarded_payments ADD received_time BIGINT"
msgstr ""
#: wallet/db.c:473
#: wallet/db.c:478
msgid "ALTER TABLE forwarded_payments ADD resolved_time BIGINT"
msgstr ""
#: wallet/db.c:474
#: wallet/db.c:479
msgid "ALTER TABLE channels ADD remote_upfront_shutdown_script BLOB;"
msgstr ""
#: wallet/db.c:477
#: wallet/db.c:482
msgid "ALTER TABLE forwarded_payments ADD failcode INTEGER;"
msgstr ""
#: wallet/db.c:479
#: wallet/db.c:484
msgid "ALTER TABLE channels ADD remote_ann_node_sig BLOB;"
msgstr ""
#: wallet/db.c:480
#: wallet/db.c:485
msgid "ALTER TABLE channels ADD remote_ann_bitcoin_sig BLOB;"
msgstr ""
#: wallet/db.c:482
#: wallet/db.c:487
msgid "ALTER TABLE transactions ADD type BIGINT;"
msgstr ""
#: wallet/db.c:487
#: wallet/db.c:492
msgid "ALTER TABLE transactions ADD channel_id BIGINT;"
msgstr ""
#: wallet/db.c:489
#: wallet/db.c:494
msgid "UPDATE channels SET short_channel_id = REPLACE(short_channel_id, ':', 'x') WHERE short_channel_id IS NOT NULL;"
msgstr ""
#: wallet/db.c:492
#: wallet/db.c:497
msgid "UPDATE payments SET failchannel = REPLACE(failchannel, ':', 'x') WHERE failchannel IS NOT NULL;"
msgstr ""
#: wallet/db.c:495
#: wallet/db.c:500
msgid "ALTER TABLE channels ADD COLUMN option_static_remotekey INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:497
#: wallet/db.c:502
msgid "ALTER TABLE vars ADD COLUMN intval INTEGER"
msgstr ""
#: wallet/db.c:498
#: wallet/db.c:503
msgid "ALTER TABLE vars ADD COLUMN blobval BLOB"
msgstr ""
#: wallet/db.c:499
#: wallet/db.c:504
msgid "UPDATE vars SET intval = CAST(val AS INTEGER) WHERE name IN ('bip32_max_index', 'last_processed_block', 'next_pay_index')"
msgstr ""
#: wallet/db.c:500
#: wallet/db.c:505
msgid "UPDATE vars SET blobval = CAST(val AS BLOB) WHERE name = 'genesis_hash'"
msgstr ""
#: wallet/db.c:501
#: wallet/db.c:506
msgid "CREATE TABLE transaction_annotations ( txid BLOB, idx INTEGER, location INTEGER, type INTEGER, channel BIGINT REFERENCES channels(id), UNIQUE(txid, idx));"
msgstr ""
#: wallet/db.c:513
#: wallet/db.c:518
msgid "ALTER TABLE channels ADD shutdown_scriptpubkey_local BLOB;"
msgstr ""
#: wallet/db.c:516
#: wallet/db.c:521
msgid "UPDATE forwarded_payments SET received_time=0 WHERE received_time IS NULL;"
msgstr ""
#: wallet/db.c:518
#: wallet/db.c:523
msgid "ALTER TABLE invoices ADD COLUMN features BLOB DEFAULT '';"
msgstr ""
#: wallet/db.c:522
#: wallet/db.c:527
msgid "CREATE TABLE payments ( id BIGSERIAL, timestamp INTEGER, status INTEGER, payment_hash BLOB, destination BLOB, msatoshi BIGINT, payment_preimage BLOB, path_secrets BLOB, route_nodes BLOB, route_channels BLOB, failonionreply BLOB, faildestperm INTEGER, failindex INTEGER, failcode INTEGER, failnode BLOB, failchannel TEXT, failupdate BLOB, msatoshi_sent BIGINT, faildetail TEXT, description TEXT, faildirection INTEGER, bolt11 TEXT, total_msat BIGINT, partid BIGINT, PRIMARY KEY (id), UNIQUE (payment_hash, partid))"
msgstr ""
#: wallet/db.c:549
#: wallet/db.c:554
msgid "INSERT INTO payments (id, timestamp, status, payment_hash, destination, msatoshi, payment_preimage, path_secrets, route_nodes, route_channels, failonionreply, faildestperm, failindex, failcode, failnode, failchannel, failupdate, msatoshi_sent, faildetail, description, faildirection, bolt11)SELECT id, timestamp, status, payment_hash, destination, msatoshi, payment_preimage, path_secrets, route_nodes, route_channels, failonionreply, faildestperm, failindex, failcode, failnode, failchannel, failupdate, msatoshi_sent, faildetail, description, faildirection, bolt11 FROM temp_payments;"
msgstr ""
#: wallet/db.c:594
#: wallet/db.c:599
msgid "UPDATE payments SET total_msat = msatoshi;"
msgstr ""
#: wallet/db.c:595
#: wallet/db.c:600
msgid "UPDATE payments SET partid = 0;"
msgstr ""
#: wallet/db.c:597
#: wallet/db.c:602
msgid "ALTER TABLE channel_htlcs ADD partid BIGINT;"
msgstr ""
#: wallet/db.c:598
#: wallet/db.c:603
msgid "UPDATE channel_htlcs SET partid = 0;"
msgstr ""
#: wallet/db.c:599
#: wallet/db.c:604
msgid "CREATE TABLE channel_feerates ( channel_id BIGINT REFERENCES channels(id) ON DELETE CASCADE, hstate INTEGER, feerate_per_kw INTEGER, UNIQUE (channel_id, hstate));"
msgstr ""
#: wallet/db.c:610
#: wallet/db.c:615
msgid "INSERT INTO channel_feerates(channel_id, hstate, feerate_per_kw) SELECT id, 4, local_feerate_per_kw FROM channels WHERE funder = 0;"
msgstr ""
#: wallet/db.c:614
#: wallet/db.c:619
msgid "INSERT INTO channel_feerates(channel_id, hstate, feerate_per_kw) SELECT id, 1, remote_feerate_per_kw FROM channels WHERE funder = 0 and local_feerate_per_kw != remote_feerate_per_kw;"
msgstr ""
#: wallet/db.c:619
#: wallet/db.c:624
msgid "INSERT INTO channel_feerates(channel_id, hstate, feerate_per_kw) SELECT id, 14, remote_feerate_per_kw FROM channels WHERE funder = 1;"
msgstr ""
#: wallet/db.c:623
#: wallet/db.c:628
msgid "INSERT INTO channel_feerates(channel_id, hstate, feerate_per_kw) SELECT id, 11, local_feerate_per_kw FROM channels WHERE funder = 1 and local_feerate_per_kw != remote_feerate_per_kw;"
msgstr ""
#: wallet/db.c:627
#: wallet/db.c:632
msgid "INSERT INTO vars (name, intval) VALUES ('data_version', 0);"
msgstr ""
#: wallet/db.c:630
#: wallet/db.c:635
msgid "ALTER TABLE channel_htlcs ADD localfailmsg BLOB;"
msgstr ""
#: wallet/db.c:631
#: wallet/db.c:636
msgid "UPDATE channel_htlcs SET localfailmsg=decode('2002', 'hex') WHERE malformed_onion != 0 AND direction = 1;"
msgstr ""
#: wallet/db.c:632
#: wallet/db.c:637
msgid "ALTER TABLE channels ADD our_funding_satoshi BIGINT DEFAULT 0;"
msgstr ""
#: wallet/db.c:633
#: wallet/db.c:638
msgid "CREATE TABLE penalty_bases ( channel_id BIGINT REFERENCES channels(id) ON DELETE CASCADE, commitnum BIGINT, txid BLOB, outnum INTEGER, amount BIGINT, PRIMARY KEY (channel_id, commitnum));"
msgstr ""
#: wallet/db.c:643
#: wallet/db.c:648
msgid "ALTER TABLE channel_htlcs ADD we_filled INTEGER;"
msgstr ""
#: wallet/db.c:645
#: wallet/db.c:650
msgid "INSERT INTO vars (name, intval) VALUES ('coin_moves_count', 0);"
msgstr ""
#: wallet/db.c:647
#: wallet/db.c:652
msgid "ALTER TABLE outputs ADD reserved_til INTEGER DEFAULT NULL;"
msgstr ""
#: wallet/db.c:650
#: wallet/db.c:655
msgid "ALTER TABLE channels ADD COLUMN option_anchor_outputs INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:653
#: wallet/db.c:658
msgid "ALTER TABLE outputs ADD option_anchor_outputs INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:655
#: wallet/db.c:660
msgid "ALTER TABLE channels ADD full_channel_id BLOB DEFAULT NULL;"
msgstr ""
#: wallet/db.c:656
#: wallet/db.c:661
msgid "ALTER TABLE channels ADD funding_psbt BLOB DEFAULT NULL;"
msgstr ""
#: wallet/db.c:658
#: wallet/db.c:663
msgid "ALTER TABLE channels ADD closer INTEGER DEFAULT 2;"
msgstr ""
#: wallet/db.c:659
#: wallet/db.c:664
msgid "ALTER TABLE channels ADD state_change_reason INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:660
#: wallet/db.c:665
msgid "CREATE TABLE channel_state_changes ( channel_id BIGINT REFERENCES channels(id) ON DELETE CASCADE, timestamp BIGINT, old_state INTEGER, new_state INTEGER, cause INTEGER, message TEXT);"
msgstr ""
#: wallet/db.c:668
#: wallet/db.c:673
msgid "CREATE TABLE offers ( offer_id BLOB, bolt12 TEXT, label TEXT, status INTEGER, PRIMARY KEY (offer_id));"
msgstr ""
#: wallet/db.c:676
#: wallet/db.c:681
msgid "ALTER TABLE invoices ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);"
msgstr ""
#: wallet/db.c:678
#: wallet/db.c:683
msgid "ALTER TABLE payments ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);"
msgstr ""
#: wallet/db.c:679
#: wallet/db.c:684
msgid "ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;"
msgstr ""
#: wallet/db.c:682
#: wallet/db.c:687
msgid "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);"
msgstr ""
#: wallet/db.c:684
#: wallet/db.c:689
msgid "UPDATE channel_htlcs SET malformed_onion = 0 WHERE malformed_onion IS NULL"
msgstr ""
#: wallet/db.c:686
#: wallet/db.c:691
msgid "CREATE INDEX forwarded_payments_state ON forwarded_payments (state)"
msgstr ""
#: wallet/db.c:687
#: wallet/db.c:692
msgid "CREATE TABLE channel_funding_inflights ( channel_id BIGSERIAL REFERENCES channels(id) ON DELETE CASCADE, funding_tx_id BLOB, funding_tx_outnum INTEGER, funding_feerate INTEGER, funding_satoshi BIGINT, our_funding_satoshi BIGINT, funding_psbt BLOB, last_tx BLOB, last_sig BLOB, funding_tx_remote_sigs_received INTEGER, PRIMARY KEY (channel_id, funding_tx_id));"
msgstr ""
#: wallet/db.c:701
#: wallet/db.c:706
msgid "ALTER TABLE channels ADD revocation_basepoint_local BLOB"
msgstr ""
#: wallet/db.c:702
#: wallet/db.c:707
msgid "ALTER TABLE channels ADD payment_basepoint_local BLOB"
msgstr ""
#: wallet/db.c:703
#: wallet/db.c:708
msgid "ALTER TABLE channels ADD htlc_basepoint_local BLOB"
msgstr ""
#: wallet/db.c:704
#: wallet/db.c:709
msgid "ALTER TABLE channels ADD delayed_payment_basepoint_local BLOB"
msgstr ""
#: wallet/db.c:705
#: wallet/db.c:710
msgid "ALTER TABLE channels ADD funding_pubkey_local BLOB"
msgstr ""
#: wallet/db.c:932
#: wallet/db.c:938
msgid "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?"
msgstr ""
#: wallet/db.c:1032
#: wallet/db.c:1038
msgid "SELECT version FROM version LIMIT 1"
msgstr ""
#: wallet/db.c:1093
#: wallet/db.c:1100
msgid "UPDATE version SET version=?;"
msgstr ""
#: wallet/db.c:1101
#: wallet/db.c:1108
msgid "INSERT INTO db_upgrades VALUES (?, ?);"
msgstr ""
#: wallet/db.c:1113
#: wallet/db.c:1120
msgid "SELECT intval FROM vars WHERE name = 'data_version'"
msgstr ""
#: wallet/db.c:1140
#: wallet/db.c:1147
msgid "SELECT intval FROM vars WHERE name= ? LIMIT 1"
msgstr ""
#: wallet/db.c:1156
#: wallet/db.c:1163
msgid "UPDATE vars SET intval=? WHERE name=?;"
msgstr ""
#: wallet/db.c:1165
#: wallet/db.c:1172
msgid "INSERT INTO vars (name, intval) VALUES (?, ?);"
msgstr ""
#: wallet/db.c:1179
#: wallet/db.c:1186
msgid "UPDATE channels SET feerate_base = ?, feerate_ppm = ?;"
msgstr ""
#: wallet/db.c:1200
#: wallet/db.c:1207
msgid "UPDATE channels SET our_funding_satoshi = funding_satoshi WHERE funder = 0;"
msgstr ""
#: wallet/db.c:1216
#: wallet/db.c:1223
msgid "SELECT type, keyindex, prev_out_tx, prev_out_index, channel_id, peer_id, commitment_point FROM outputs WHERE scriptpubkey IS NULL;"
msgstr ""
#: wallet/db.c:1278
#: wallet/db.c:1285
msgid "UPDATE outputs SET scriptpubkey = ? WHERE prev_out_tx = ? AND prev_out_index = ?"
msgstr ""
#: wallet/db.c:1303
#: wallet/db.c:1310
msgid "SELECT id, funding_tx_id, funding_tx_outnum FROM channels;"
msgstr ""
#: wallet/db.c:1322
#: wallet/db.c:1329
msgid "UPDATE channels SET full_channel_id = ? WHERE id = ?;"
msgstr ""
#: wallet/db.c:1345
#: wallet/db.c:1350
msgid "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)"
msgstr ""
#: wallet/db.c:1383
msgid "UPDATE channels SET revocation_basepoint_local = ?, payment_basepoint_local = ?, htlc_basepoint_local = ?, delayed_payment_basepoint_local = ?, funding_pubkey_local = ? WHERE id = ?;"
msgstr ""
#: wallet/db.c:1414
msgid "SELECT c.id, p.node_id, c.last_tx, c.funding_satoshi, c.fundingkey_remote, c.last_sig FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id;"
msgstr ""
#: wallet/db.c:1412
#: wallet/db.c:1481
msgid "UPDATE channels SET last_tx = ? WHERE id = ?;"
msgstr ""
@ -1229,4 +1237,4 @@ msgstr ""
#: wallet/test/run-wallet.c:802
msgid "INSERT INTO channels (id) VALUES (1);"
msgstr ""
# SHA256STAMP:df721071a70a2be64bc0c4f15efb0128ab591f4d35628c08c987335810cf4c7f
# SHA256STAMP:66ddf4612050d39dda1ae651a34cf5fe89390ef39c7648a3dca2f3a932a15eb4

View File

@ -26,6 +26,9 @@ void derive_channel_id(struct channel_id *channel_id UNNEEDED,
/* Generated stub for fatal */
void fatal(const char *fmt UNNEEDED, ...)
{ fprintf(stderr, "fatal called!\n"); abort(); }
/* Generated stub for fromwire_hsmd_get_channel_basepoints_reply */
bool fromwire_hsmd_get_channel_basepoints_reply(const void *p UNNEEDED, struct basepoints *basepoints UNNEEDED, struct pubkey *funding_pubkey UNNEEDED)
{ fprintf(stderr, "fromwire_hsmd_get_channel_basepoints_reply called!\n"); abort(); }
/* Generated stub for fromwire_hsmd_get_output_scriptpubkey_reply */
bool fromwire_hsmd_get_output_scriptpubkey_reply(const tal_t *ctx UNNEEDED, const void *p UNNEEDED, u8 **script UNNEEDED)
{ fprintf(stderr, "fromwire_hsmd_get_output_scriptpubkey_reply called!\n"); abort(); }
@ -41,6 +44,9 @@ struct log *new_log(const tal_t *ctx UNNEEDED, struct log_book *record UNNEEDED,
const struct node_id *default_node_id UNNEEDED,
const char *fmt UNNEEDED, ...)
{ fprintf(stderr, "new_log called!\n"); abort(); }
/* Generated stub for towire_hsmd_get_channel_basepoints */
u8 *towire_hsmd_get_channel_basepoints(const tal_t *ctx UNNEEDED, const struct node_id *peerid UNNEEDED, u64 dbid UNNEEDED)
{ fprintf(stderr, "towire_hsmd_get_channel_basepoints called!\n"); abort(); }
/* Generated stub for towire_hsmd_get_output_scriptpubkey */
u8 *towire_hsmd_get_output_scriptpubkey(const tal_t *ctx UNNEEDED, u64 channel_id UNNEEDED, const struct node_id *peer_id UNNEEDED, const struct pubkey *commitment_point UNNEEDED)
{ fprintf(stderr, "towire_hsmd_get_output_scriptpubkey called!\n"); abort(); }