From 4247ec3a05426f84ad2d83df76020e7c903c4ff3 Mon Sep 17 00:00:00 2001 From: niftynei Date: Wed, 19 May 2021 19:15:12 -0500 Subject: [PATCH] inflights: save the whole psbt to the database Otherwise we're missing info when we go to broadcast these and can't properly sign the transaction to close it. Found-by: @jasan --- tests/data/upgrade_inflight.sqlite3.xz | Bin 0 -> 5828 bytes tests/test_db.py | 22 ++ wallet/db.c | 91 +++++++ wallet/db_postgres_sqlgen.c | 16 +- wallet/db_sqlite3_sqlgen.c | 16 +- wallet/statements_gettextgen.po | 354 +++++++++++++------------ wallet/wallet.c | 4 +- 7 files changed, 324 insertions(+), 179 deletions(-) create mode 100644 tests/data/upgrade_inflight.sqlite3.xz diff --git a/tests/data/upgrade_inflight.sqlite3.xz b/tests/data/upgrade_inflight.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..108fc59c4a2e4eb05e67249c45feb37fe4e99048 GIT binary patch literal 5828 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, 0, + scriptpubkey_p2wsh(last_tx->psbt, funding_wscript), + funding_sat); + psbt_input_set_witscript(last_tx->psbt, 0, funding_wscript); + + if (!db_column_signature(stmt, 4, &last_sig.s)) + abort(); + + last_sig.sighash_type = SIGHASH_ALL; + if (!psbt_input_set_signature(last_tx->psbt, 0, + &remote_funding_pubkey, &last_sig)) + abort(); + psbt_input_add_pubkey(last_tx->psbt, 0, + &local_funding_pubkey); + psbt_input_add_pubkey(last_tx->psbt, 0, + &remote_funding_pubkey); + + update_stmt = db_prepare_v2(db, + SQL("UPDATE channel_funding_inflights" + " SET last_tx = ?" + " WHERE channel_id = ?" + " AND funding_tx_id = ?;")); + db_bind_psbt(update_stmt, 0, last_tx->psbt); + db_bind_int(update_stmt, 1, cdb_id); + db_bind_txid(update_stmt, 2, &funding_txid); + db_exec_prepared_v2(update_stmt); + tal_free(update_stmt); + } + + 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, diff --git a/wallet/db_postgres_sqlgen.c b/wallet/db_postgres_sqlgen.c index 630c88d91..0cc5d2cc7 100644 --- a/wallet/db_postgres_sqlgen.c +++ b/wallet/db_postgres_sqlgen.c @@ -1034,6 +1034,18 @@ struct db_query db_postgres_queries[] = { .placeholders = 6, .readonly = false, }, + { + .name = "SELECT c.id, p.node_id, c.fundingkey_remote, inflight.last_tx, inflight.last_sig, inflight.funding_satoshi, inflight.funding_tx_id FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id LEFT OUTER JOIN channel_funding_inflights inflight ON c.id = inflight.channel_id WHERE inflight.last_tx IS NOT NULL;", + .query = "SELECT c.id, p.node_id, c.fundingkey_remote, inflight.last_tx, inflight.last_sig, inflight.funding_satoshi, inflight.funding_tx_id FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id LEFT OUTER JOIN channel_funding_inflights inflight ON c.id = inflight.channel_id WHERE inflight.last_tx IS NOT NULL;", + .placeholders = 0, + .readonly = true, + }, + { + .name = "UPDATE channel_funding_inflights SET last_tx = ? WHERE channel_id = ? AND funding_tx_id = ?;", + .query = "UPDATE channel_funding_inflights SET last_tx = $1 WHERE channel_id = $2 AND funding_tx_id = $3;", + .placeholders = 3, + .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;", @@ -1882,10 +1894,10 @@ struct db_query db_postgres_queries[] = { }, }; -#define DB_POSTGRES_QUERY_COUNT 312 +#define DB_POSTGRES_QUERY_COUNT 314 #endif /* HAVE_POSTGRES */ #endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */ -// SHA256STAMP:78e8a75719f367a070874e2b4813b0b8ff3a74a51844c7e7a06b5f8cc18a414b +// SHA256STAMP:dbebcde72bd359ea7edaf5732c78549224c3b891e45f123696b4cfd60dd9037b diff --git a/wallet/db_sqlite3_sqlgen.c b/wallet/db_sqlite3_sqlgen.c index e95a9c6f6..faf8e86c0 100644 --- a/wallet/db_sqlite3_sqlgen.c +++ b/wallet/db_sqlite3_sqlgen.c @@ -1034,6 +1034,18 @@ struct db_query db_sqlite3_queries[] = { .placeholders = 6, .readonly = false, }, + { + .name = "SELECT c.id, p.node_id, c.fundingkey_remote, inflight.last_tx, inflight.last_sig, inflight.funding_satoshi, inflight.funding_tx_id FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id LEFT OUTER JOIN channel_funding_inflights inflight ON c.id = inflight.channel_id WHERE inflight.last_tx IS NOT NULL;", + .query = "SELECT c.id, p.node_id, c.fundingkey_remote, inflight.last_tx, inflight.last_sig, inflight.funding_satoshi, inflight.funding_tx_id FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id LEFT OUTER JOIN channel_funding_inflights inflight ON c.id = inflight.channel_id WHERE inflight.last_tx IS NOT NULL;", + .placeholders = 0, + .readonly = true, + }, + { + .name = "UPDATE channel_funding_inflights SET last_tx = ? WHERE channel_id = ? AND funding_tx_id = ?;", + .query = "UPDATE channel_funding_inflights SET last_tx = ? WHERE channel_id = ? AND funding_tx_id = ?;", + .placeholders = 3, + .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;", @@ -1882,10 +1894,10 @@ struct db_query db_sqlite3_queries[] = { }, }; -#define DB_SQLITE3_QUERY_COUNT 312 +#define DB_SQLITE3_QUERY_COUNT 314 #endif /* HAVE_SQLITE3 */ #endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */ -// SHA256STAMP:78e8a75719f367a070874e2b4813b0b8ff3a74a51844c7e7a06b5f8cc18a414b +// SHA256STAMP:dbebcde72bd359ea7edaf5732c78549224c3b891e45f123696b4cfd60dd9037b diff --git a/wallet/statements_gettextgen.po b/wallet/statements_gettextgen.po index afb40e573..00f468af9 100644 --- a/wallet/statements_gettextgen.po +++ b/wallet/statements_gettextgen.po @@ -1,692 +1,700 @@ -#: wallet/db.c:65 +#: wallet/db.c:69 msgid "CREATE TABLE version (version INTEGER)" msgstr "" -#: wallet/db.c:66 +#: wallet/db.c:70 msgid "INSERT INTO version VALUES (1)" msgstr "" -#: wallet/db.c:67 +#: wallet/db.c:71 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:76 +#: wallet/db.c:80 msgid "CREATE TABLE vars ( name VARCHAR(32), val VARCHAR(255), PRIMARY KEY (name));" msgstr "" -#: wallet/db.c:82 +#: wallet/db.c:86 msgid "CREATE TABLE shachains ( id BIGSERIAL, min_index BIGINT, num_valid BIGINT, PRIMARY KEY (id));" msgstr "" -#: wallet/db.c:89 +#: wallet/db.c:93 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:97 +#: wallet/db.c:101 msgid "CREATE TABLE peers ( id BIGSERIAL, node_id BLOB UNIQUE, address TEXT, PRIMARY KEY (id));" msgstr "" -#: wallet/db.c:104 +#: wallet/db.c:108 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:146 +#: wallet/db.c:150 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:157 +#: wallet/db.c:161 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:177 +#: wallet/db.c:181 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:189 +#: wallet/db.c:193 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:202 +#: wallet/db.c:206 msgid "ALTER TABLE invoices ADD expiry_time BIGINT;" msgstr "" -#: wallet/db.c:203 +#: wallet/db.c:207 msgid "UPDATE invoices SET expiry_time=9223372036854775807;" msgstr "" -#: wallet/db.c:205 +#: wallet/db.c:209 msgid "ALTER TABLE invoices ADD pay_index BIGINT;" msgstr "" -#: wallet/db.c:206 +#: wallet/db.c:210 msgid "CREATE UNIQUE INDEX invoices_pay_index ON invoices(pay_index);" msgstr "" -#: wallet/db.c:208 +#: wallet/db.c:212 msgid "UPDATE invoices SET pay_index=id WHERE state=1;" msgstr "" -#: wallet/db.c:211 +#: wallet/db.c:215 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:220 +#: wallet/db.c:224 msgid "ALTER TABLE channels ADD first_blocknum BIGINT;" msgstr "" -#: wallet/db.c:221 +#: wallet/db.c:225 msgid "UPDATE channels SET first_blocknum=1 WHERE short_channel_id IS NOT NULL;" msgstr "" -#: wallet/db.c:223 +#: wallet/db.c:227 msgid "ALTER TABLE outputs ADD COLUMN channel_id BIGINT;" msgstr "" -#: wallet/db.c:224 +#: wallet/db.c:228 msgid "ALTER TABLE outputs ADD COLUMN peer_id BLOB;" msgstr "" -#: wallet/db.c:225 +#: wallet/db.c:229 msgid "ALTER TABLE outputs ADD COLUMN commitment_point BLOB;" msgstr "" -#: wallet/db.c:226 +#: wallet/db.c:230 msgid "ALTER TABLE invoices ADD COLUMN msatoshi_received BIGINT;" msgstr "" -#: wallet/db.c:228 +#: wallet/db.c:232 msgid "UPDATE invoices SET msatoshi_received=0 WHERE state=1;" msgstr "" -#: wallet/db.c:229 +#: wallet/db.c:233 msgid "ALTER TABLE channels ADD COLUMN last_was_revoke INTEGER;" msgstr "" -#: wallet/db.c:233 wallet/db.c:526 +#: wallet/db.c:237 wallet/db.c:530 msgid "ALTER TABLE payments RENAME TO temp_payments;" msgstr "" -#: wallet/db.c:234 +#: wallet/db.c:238 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:245 +#: wallet/db.c:249 msgid "INSERT INTO payments SELECT id, timestamp, status, payment_hash, destination, msatoshi FROM temp_payments WHERE direction=1;" msgstr "" -#: wallet/db.c:248 wallet/db.c:601 +#: wallet/db.c:252 wallet/db.c:605 msgid "DROP TABLE temp_payments;" msgstr "" -#: wallet/db.c:250 +#: wallet/db.c:254 msgid "ALTER TABLE payments ADD COLUMN payment_preimage BLOB;" msgstr "" -#: wallet/db.c:252 +#: wallet/db.c:256 msgid "ALTER TABLE payments ADD COLUMN path_secrets BLOB;" msgstr "" -#: wallet/db.c:255 +#: wallet/db.c:259 msgid "ALTER TABLE invoices ADD paid_timestamp BIGINT;" msgstr "" -#: wallet/db.c:256 +#: wallet/db.c:260 msgid "UPDATE invoices SET paid_timestamp = CURRENT_TIMESTAMP() WHERE state = 1;" msgstr "" -#: wallet/db.c:264 +#: wallet/db.c:268 msgid "ALTER TABLE payments ADD COLUMN route_nodes BLOB;" msgstr "" -#: wallet/db.c:265 +#: wallet/db.c:269 msgid "ALTER TABLE payments ADD COLUMN route_channels BLOB;" msgstr "" -#: wallet/db.c:266 +#: wallet/db.c:270 msgid "CREATE TABLE htlc_sigs (channelid INTEGER REFERENCES channels(id) ON DELETE CASCADE, signature BLOB);" msgstr "" -#: wallet/db.c:269 +#: wallet/db.c:273 msgid "CREATE INDEX channel_idx ON htlc_sigs (channelid)" msgstr "" -#: wallet/db.c:271 +#: wallet/db.c:275 msgid "DELETE FROM channels WHERE state=1" msgstr "" -#: wallet/db.c:273 +#: wallet/db.c:277 msgid "CREATE TABLE db_upgrades (upgrade_from INTEGER, lightning_version TEXT);" msgstr "" -#: wallet/db.c:277 wallet/db.c:467 +#: wallet/db.c:281 wallet/db.c:471 msgid "DELETE FROM peers WHERE id NOT IN (SELECT peer_id FROM channels);" msgstr "" -#: wallet/db.c:281 +#: wallet/db.c:285 msgid "UPDATE channels SET STATE = 8 WHERE state > 8;" msgstr "" -#: wallet/db.c:283 +#: wallet/db.c:287 msgid "ALTER TABLE invoices ADD bolt11 TEXT;" msgstr "" -#: wallet/db.c:287 +#: wallet/db.c:291 msgid "CREATE TABLE blocks (height INT, hash BLOB, prev_hash BLOB, UNIQUE(height));" msgstr "" -#: wallet/db.c:297 +#: wallet/db.c:301 msgid "ALTER TABLE outputs ADD COLUMN confirmation_height INTEGER REFERENCES blocks(height) ON DELETE SET NULL;" msgstr "" -#: wallet/db.c:300 +#: wallet/db.c:304 msgid "ALTER TABLE outputs ADD COLUMN spend_height INTEGER REFERENCES blocks(height) ON DELETE SET NULL;" msgstr "" -#: wallet/db.c:304 +#: wallet/db.c:308 msgid "CREATE INDEX output_height_idx ON outputs (confirmation_height, spend_height);" msgstr "" -#: wallet/db.c:307 +#: wallet/db.c:311 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:317 +#: wallet/db.c:321 msgid "CREATE INDEX short_channel_id ON utxoset (blockheight, txindex, outnum)" msgstr "" -#: wallet/db.c:322 +#: wallet/db.c:326 msgid "CREATE INDEX utxoset_spend ON utxoset (spendheight)" msgstr "" -#: wallet/db.c:324 +#: wallet/db.c:328 msgid "UPDATE channels SET shutdown_keyidx_local=0 WHERE shutdown_keyidx_local = -1;" msgstr "" -#: wallet/db.c:330 +#: wallet/db.c:334 msgid "ALTER TABLE payments ADD failonionreply BLOB;" msgstr "" -#: wallet/db.c:332 +#: wallet/db.c:336 msgid "ALTER TABLE payments ADD faildestperm INTEGER;" msgstr "" -#: wallet/db.c:334 +#: wallet/db.c:338 msgid "ALTER TABLE payments ADD failindex INTEGER;" msgstr "" -#: wallet/db.c:336 +#: wallet/db.c:340 msgid "ALTER TABLE payments ADD failcode INTEGER;" msgstr "" -#: wallet/db.c:337 +#: wallet/db.c:341 msgid "ALTER TABLE payments ADD failnode BLOB;" msgstr "" -#: wallet/db.c:338 +#: wallet/db.c:342 msgid "ALTER TABLE payments ADD failchannel TEXT;" msgstr "" -#: wallet/db.c:340 +#: wallet/db.c:344 msgid "ALTER TABLE payments ADD failupdate BLOB;" msgstr "" -#: wallet/db.c:344 +#: wallet/db.c:348 msgid "UPDATE payments SET path_secrets = NULL , route_nodes = NULL , route_channels = NULL WHERE status <> 0;" msgstr "" -#: wallet/db.c:351 +#: wallet/db.c:355 msgid "ALTER TABLE channels ADD in_payments_offered INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:352 +#: wallet/db.c:356 msgid "ALTER TABLE channels ADD in_payments_fulfilled INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:353 +#: wallet/db.c:357 msgid "ALTER TABLE channels ADD in_msatoshi_offered BIGINT DEFAULT 0;" msgstr "" -#: wallet/db.c:354 +#: wallet/db.c:358 msgid "ALTER TABLE channels ADD in_msatoshi_fulfilled BIGINT DEFAULT 0;" msgstr "" -#: wallet/db.c:355 +#: wallet/db.c:359 msgid "ALTER TABLE channels ADD out_payments_offered INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:356 +#: wallet/db.c:360 msgid "ALTER TABLE channels ADD out_payments_fulfilled INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:357 +#: wallet/db.c:361 msgid "ALTER TABLE channels ADD out_msatoshi_offered BIGINT DEFAULT 0;" msgstr "" -#: wallet/db.c:358 +#: wallet/db.c:362 msgid "ALTER TABLE channels ADD out_msatoshi_fulfilled BIGINT DEFAULT 0;" msgstr "" -#: wallet/db.c:359 +#: wallet/db.c:363 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:368 +#: wallet/db.c:372 msgid "ALTER TABLE payments ADD msatoshi_sent BIGINT;" msgstr "" -#: wallet/db.c:369 +#: wallet/db.c:373 msgid "UPDATE payments SET msatoshi_sent = msatoshi;" msgstr "" -#: wallet/db.c:371 +#: wallet/db.c:375 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:379 +#: wallet/db.c:383 msgid "ALTER TABLE channels ADD min_possible_feerate INTEGER;" msgstr "" -#: wallet/db.c:380 +#: wallet/db.c:384 msgid "ALTER TABLE channels ADD max_possible_feerate INTEGER;" msgstr "" -#: wallet/db.c:383 +#: wallet/db.c:387 msgid "UPDATE channels SET min_possible_feerate=0, max_possible_feerate=250000;" msgstr "" -#: wallet/db.c:387 +#: wallet/db.c:391 msgid "ALTER TABLE channels ADD msatoshi_to_us_min BIGINT;" msgstr "" -#: wallet/db.c:388 +#: wallet/db.c:392 msgid "ALTER TABLE channels ADD msatoshi_to_us_max BIGINT;" msgstr "" -#: wallet/db.c:389 +#: wallet/db.c:393 msgid "UPDATE channels SET msatoshi_to_us_min = msatoshi_local , msatoshi_to_us_max = msatoshi_local ;" msgstr "" -#: wallet/db.c:398 +#: wallet/db.c:402 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:407 +#: wallet/db.c:411 msgid "ALTER TABLE payments ADD faildetail TEXT;" msgstr "" -#: wallet/db.c:408 +#: wallet/db.c:412 msgid "UPDATE payments SET faildetail = 'unspecified payment failure reason' WHERE status = 2;" msgstr "" -#: wallet/db.c:413 +#: wallet/db.c:417 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:429 +#: wallet/db.c:433 msgid "DELETE FROM blocks WHERE height > (SELECT MIN(first_blocknum) FROM channels);" msgstr "" -#: wallet/db.c:435 +#: wallet/db.c:439 msgid "INSERT INTO blocks (height) VALUES ((SELECT MIN(first_blocknum) FROM channels)) ON CONFLICT(height) DO NOTHING;" msgstr "" -#: wallet/db.c:439 +#: wallet/db.c:443 msgid "DELETE FROM blocks WHERE height IS NULL;" msgstr "" -#: wallet/db.c:441 +#: wallet/db.c:445 msgid "ALTER TABLE invoices ADD description TEXT;" msgstr "" -#: wallet/db.c:443 +#: wallet/db.c:447 msgid "ALTER TABLE payments ADD description TEXT;" msgstr "" -#: wallet/db.c:445 +#: wallet/db.c:449 msgid "ALTER TABLE channels ADD future_per_commitment_point BLOB;" msgstr "" -#: wallet/db.c:447 +#: wallet/db.c:451 msgid "ALTER TABLE channels ADD last_sent_commit BLOB;" msgstr "" -#: wallet/db.c:452 +#: wallet/db.c:456 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:464 +#: wallet/db.c:468 msgid "ALTER TABLE payments ADD faildirection INTEGER;" msgstr "" -#: wallet/db.c:469 +#: wallet/db.c:473 msgid "ALTER TABLE outputs ADD scriptpubkey BLOB;" msgstr "" -#: wallet/db.c:471 +#: wallet/db.c:475 msgid "ALTER TABLE payments ADD bolt11 TEXT;" msgstr "" -#: wallet/db.c:473 +#: wallet/db.c:477 msgid "ALTER TABLE channels ADD feerate_base INTEGER;" msgstr "" -#: wallet/db.c:474 +#: wallet/db.c:478 msgid "ALTER TABLE channels ADD feerate_ppm INTEGER;" msgstr "" -#: wallet/db.c:476 +#: wallet/db.c:480 msgid "ALTER TABLE channel_htlcs ADD received_time BIGINT" msgstr "" -#: wallet/db.c:477 +#: wallet/db.c:481 msgid "ALTER TABLE forwarded_payments ADD received_time BIGINT" msgstr "" -#: wallet/db.c:478 +#: wallet/db.c:482 msgid "ALTER TABLE forwarded_payments ADD resolved_time BIGINT" msgstr "" -#: wallet/db.c:479 +#: wallet/db.c:483 msgid "ALTER TABLE channels ADD remote_upfront_shutdown_script BLOB;" msgstr "" -#: wallet/db.c:482 +#: wallet/db.c:486 msgid "ALTER TABLE forwarded_payments ADD failcode INTEGER;" msgstr "" -#: wallet/db.c:484 +#: wallet/db.c:488 msgid "ALTER TABLE channels ADD remote_ann_node_sig BLOB;" msgstr "" -#: wallet/db.c:485 +#: wallet/db.c:489 msgid "ALTER TABLE channels ADD remote_ann_bitcoin_sig BLOB;" msgstr "" -#: wallet/db.c:487 +#: wallet/db.c:491 msgid "ALTER TABLE transactions ADD type BIGINT;" msgstr "" -#: wallet/db.c:492 +#: wallet/db.c:496 msgid "ALTER TABLE transactions ADD channel_id BIGINT;" msgstr "" -#: wallet/db.c:494 +#: wallet/db.c:498 msgid "UPDATE channels SET short_channel_id = REPLACE(short_channel_id, ':', 'x') WHERE short_channel_id IS NOT NULL;" msgstr "" -#: wallet/db.c:497 +#: wallet/db.c:501 msgid "UPDATE payments SET failchannel = REPLACE(failchannel, ':', 'x') WHERE failchannel IS NOT NULL;" msgstr "" -#: wallet/db.c:500 +#: wallet/db.c:504 msgid "ALTER TABLE channels ADD COLUMN option_static_remotekey INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:502 +#: wallet/db.c:506 msgid "ALTER TABLE vars ADD COLUMN intval INTEGER" msgstr "" -#: wallet/db.c:503 +#: wallet/db.c:507 msgid "ALTER TABLE vars ADD COLUMN blobval BLOB" msgstr "" -#: wallet/db.c:504 +#: wallet/db.c:508 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:505 +#: wallet/db.c:509 msgid "UPDATE vars SET blobval = CAST(val AS BLOB) WHERE name = 'genesis_hash'" msgstr "" -#: wallet/db.c:506 +#: wallet/db.c:510 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:518 +#: wallet/db.c:522 msgid "ALTER TABLE channels ADD shutdown_scriptpubkey_local BLOB;" msgstr "" -#: wallet/db.c:521 +#: wallet/db.c:525 msgid "UPDATE forwarded_payments SET received_time=0 WHERE received_time IS NULL;" msgstr "" -#: wallet/db.c:523 +#: wallet/db.c:527 msgid "ALTER TABLE invoices ADD COLUMN features BLOB DEFAULT '';" msgstr "" -#: wallet/db.c:527 +#: wallet/db.c:531 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:554 +#: wallet/db.c:558 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:599 +#: wallet/db.c:603 msgid "UPDATE payments SET total_msat = msatoshi;" msgstr "" -#: wallet/db.c:600 +#: wallet/db.c:604 msgid "UPDATE payments SET partid = 0;" msgstr "" -#: wallet/db.c:602 +#: wallet/db.c:606 msgid "ALTER TABLE channel_htlcs ADD partid BIGINT;" msgstr "" -#: wallet/db.c:603 +#: wallet/db.c:607 msgid "UPDATE channel_htlcs SET partid = 0;" msgstr "" -#: wallet/db.c:604 +#: wallet/db.c:608 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:615 +#: wallet/db.c:619 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:619 +#: wallet/db.c:623 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:624 +#: wallet/db.c:628 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:628 +#: wallet/db.c:632 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:632 +#: wallet/db.c:636 msgid "INSERT INTO vars (name, intval) VALUES ('data_version', 0);" msgstr "" -#: wallet/db.c:635 +#: wallet/db.c:639 msgid "ALTER TABLE channel_htlcs ADD localfailmsg BLOB;" msgstr "" -#: wallet/db.c:636 +#: wallet/db.c:640 msgid "UPDATE channel_htlcs SET localfailmsg=decode('2002', 'hex') WHERE malformed_onion != 0 AND direction = 1;" msgstr "" -#: wallet/db.c:637 +#: wallet/db.c:641 msgid "ALTER TABLE channels ADD our_funding_satoshi BIGINT DEFAULT 0;" msgstr "" -#: wallet/db.c:638 +#: wallet/db.c:642 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:648 +#: wallet/db.c:652 msgid "ALTER TABLE channel_htlcs ADD we_filled INTEGER;" msgstr "" -#: wallet/db.c:650 +#: wallet/db.c:654 msgid "INSERT INTO vars (name, intval) VALUES ('coin_moves_count', 0);" msgstr "" -#: wallet/db.c:652 +#: wallet/db.c:656 msgid "ALTER TABLE outputs ADD reserved_til INTEGER DEFAULT NULL;" msgstr "" -#: wallet/db.c:655 +#: wallet/db.c:659 msgid "ALTER TABLE channels ADD COLUMN option_anchor_outputs INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:658 +#: wallet/db.c:662 msgid "ALTER TABLE outputs ADD option_anchor_outputs INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:660 +#: wallet/db.c:664 msgid "ALTER TABLE channels ADD full_channel_id BLOB DEFAULT NULL;" msgstr "" -#: wallet/db.c:661 +#: wallet/db.c:665 msgid "ALTER TABLE channels ADD funding_psbt BLOB DEFAULT NULL;" msgstr "" -#: wallet/db.c:663 +#: wallet/db.c:667 msgid "ALTER TABLE channels ADD closer INTEGER DEFAULT 2;" msgstr "" -#: wallet/db.c:664 +#: wallet/db.c:668 msgid "ALTER TABLE channels ADD state_change_reason INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:665 +#: wallet/db.c:669 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:673 +#: wallet/db.c:677 msgid "CREATE TABLE offers ( offer_id BLOB, bolt12 TEXT, label TEXT, status INTEGER, PRIMARY KEY (offer_id));" msgstr "" -#: wallet/db.c:681 +#: wallet/db.c:685 msgid "ALTER TABLE invoices ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);" msgstr "" -#: wallet/db.c:683 +#: wallet/db.c:687 msgid "ALTER TABLE payments ADD COLUMN local_offer_id BLOB DEFAULT NULL REFERENCES offers(offer_id);" msgstr "" -#: wallet/db.c:684 +#: wallet/db.c:688 msgid "ALTER TABLE channels ADD funding_tx_remote_sigs_received INTEGER DEFAULT 0;" msgstr "" -#: wallet/db.c:687 +#: wallet/db.c:691 msgid "CREATE INDEX forwarded_payments_out_htlc_id ON forwarded_payments (out_htlc_id);" msgstr "" -#: wallet/db.c:689 +#: wallet/db.c:693 msgid "UPDATE channel_htlcs SET malformed_onion = 0 WHERE malformed_onion IS NULL" msgstr "" -#: wallet/db.c:691 +#: wallet/db.c:695 msgid "CREATE INDEX forwarded_payments_state ON forwarded_payments (state)" msgstr "" -#: wallet/db.c:692 +#: wallet/db.c:696 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:706 +#: wallet/db.c:710 msgid "ALTER TABLE channels ADD revocation_basepoint_local BLOB" msgstr "" -#: wallet/db.c:707 +#: wallet/db.c:711 msgid "ALTER TABLE channels ADD payment_basepoint_local BLOB" msgstr "" -#: wallet/db.c:708 +#: wallet/db.c:712 msgid "ALTER TABLE channels ADD htlc_basepoint_local BLOB" msgstr "" -#: wallet/db.c:709 +#: wallet/db.c:713 msgid "ALTER TABLE channels ADD delayed_payment_basepoint_local BLOB" msgstr "" -#: wallet/db.c:710 +#: wallet/db.c:714 msgid "ALTER TABLE channels ADD funding_pubkey_local BLOB" msgstr "" -#: wallet/db.c:713 +#: wallet/db.c:717 msgid "ALTER TABLE channels ADD shutdown_wrong_txid BLOB DEFAULT NULL" msgstr "" -#: wallet/db.c:714 +#: wallet/db.c:718 msgid "ALTER TABLE channels ADD shutdown_wrong_outnum INTEGER DEFAULT NULL" msgstr "" -#: wallet/db.c:941 +#: wallet/db.c:946 msgid "UPDATE vars SET intval = intval + 1 WHERE name = 'data_version' AND intval = ?" msgstr "" -#: wallet/db.c:1041 +#: wallet/db.c:1046 msgid "SELECT version FROM version LIMIT 1" msgstr "" -#: wallet/db.c:1103 +#: wallet/db.c:1108 msgid "UPDATE version SET version=?;" msgstr "" -#: wallet/db.c:1111 +#: wallet/db.c:1116 msgid "INSERT INTO db_upgrades VALUES (?, ?);" msgstr "" -#: wallet/db.c:1123 +#: wallet/db.c:1128 msgid "SELECT intval FROM vars WHERE name = 'data_version'" msgstr "" -#: wallet/db.c:1150 +#: wallet/db.c:1155 msgid "SELECT intval FROM vars WHERE name= ? LIMIT 1" msgstr "" -#: wallet/db.c:1166 +#: wallet/db.c:1171 msgid "UPDATE vars SET intval=? WHERE name=?;" msgstr "" -#: wallet/db.c:1175 +#: wallet/db.c:1180 msgid "INSERT INTO vars (name, intval) VALUES (?, ?);" msgstr "" -#: wallet/db.c:1189 +#: wallet/db.c:1194 msgid "UPDATE channels SET feerate_base = ?, feerate_ppm = ?;" msgstr "" -#: wallet/db.c:1210 +#: wallet/db.c:1215 msgid "UPDATE channels SET our_funding_satoshi = funding_satoshi WHERE funder = 0;" msgstr "" -#: wallet/db.c:1226 +#: wallet/db.c:1231 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:1288 +#: wallet/db.c:1293 msgid "UPDATE outputs SET scriptpubkey = ? WHERE prev_out_tx = ? AND prev_out_index = ?" msgstr "" -#: wallet/db.c:1313 +#: wallet/db.c:1318 msgid "SELECT id, funding_tx_id, funding_tx_outnum FROM channels;" msgstr "" -#: wallet/db.c:1332 +#: wallet/db.c:1337 msgid "UPDATE channels SET full_channel_id = ? WHERE id = ?;" msgstr "" -#: wallet/db.c:1353 +#: wallet/db.c:1358 msgid "SELECT channels.id, peers.node_id FROM channels JOIN peers ON (peers.id = channels.peer_id)" msgstr "" -#: wallet/db.c:1386 +#: wallet/db.c:1391 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:1417 -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;" +msgid "SELECT c.id, p.node_id, c.fundingkey_remote, inflight.last_tx, inflight.last_sig, inflight.funding_satoshi, inflight.funding_tx_id FROM channels c LEFT OUTER JOIN peers p ON p.id = c.peer_id LEFT OUTER JOIN channel_funding_inflights inflight ON c.id = inflight.channel_id WHERE inflight.last_tx IS NOT NULL;" msgstr "" #: wallet/db.c:1484 +msgid "UPDATE channel_funding_inflights SET last_tx = ? WHERE channel_id = ? AND funding_tx_id = ?;" +msgstr "" + +#: wallet/db.c:1508 +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:1575 msgid "UPDATE channels SET last_tx = ? WHERE id = ?;" msgstr "" @@ -1245,4 +1253,4 @@ msgstr "" #: wallet/test/run-wallet.c:1642 msgid "INSERT INTO channels (id) VALUES (1);" msgstr "" -# SHA256STAMP:a401d434b80144503f4fe7cd17ae777fc7d4c546e0f104973d29e5c46c887383 +# SHA256STAMP:383f8fff6066f7be166c121b10d6f4325eea0e02124251e0ceb2ba288de7426c diff --git a/wallet/wallet.c b/wallet/wallet.c index c202a21ad..4f344c8db 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -969,7 +969,7 @@ void wallet_inflight_add(struct wallet *w, struct channel_inflight *inflight) db_bind_amount_sat(stmt, 4, &inflight->funding->total_funds); db_bind_amount_sat(stmt, 5, &inflight->funding->our_funds); db_bind_psbt(stmt, 6, inflight->funding_psbt); - db_bind_tx(stmt, 7, inflight->last_tx->wtx); + db_bind_psbt(stmt, 7, inflight->last_tx->psbt); db_bind_signature(stmt, 8, &inflight->last_sig.s); db_exec_prepared_v2(stmt); assert(!stmt->error); @@ -1024,7 +1024,7 @@ wallet_stmt2inflight(struct wallet *w, struct db_stmt *stmt, funding_sat, our_funding_sat, db_column_psbt(tmpctx, stmt, 5), - db_column_tx(tmpctx, stmt, 6), + db_column_psbt_to_tx(tmpctx, stmt, 6), last_sig); /* Pull out the serialized tx-sigs-received-ness */