mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
wallet: Update existing owned outputs with their confirmation height
Signed-off-by: Christian Decker <decker.christian@gmail.com>
This commit is contained in:
parent
7fc06d9b3e
commit
b3c94a5256
@ -996,6 +996,24 @@ void wallet_peer_delete(struct wallet *w, u64 peer_dbid)
|
|||||||
db_exec_prepared(w->db, stmt);
|
db_exec_prepared(w->db, stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wallet_output_confirm(struct wallet *w,
|
||||||
|
const struct bitcoin_txid *txid,
|
||||||
|
const u32 outnum,
|
||||||
|
const u32 confirmation_height)
|
||||||
|
{
|
||||||
|
sqlite3_stmt *stmt;
|
||||||
|
assert(confirmation_height > 0);
|
||||||
|
stmt = db_prepare(w->db,
|
||||||
|
"UPDATE outputs "
|
||||||
|
"SET confirmation_height = ? "
|
||||||
|
"WHERE prev_out_tx = ? AND prev_out_index = ?");
|
||||||
|
sqlite3_bind_int(stmt, 1, confirmation_height);
|
||||||
|
sqlite3_bind_sha256_double(stmt, 2, &txid->shad);
|
||||||
|
sqlite3_bind_int(stmt, 3, outnum);
|
||||||
|
|
||||||
|
db_exec_prepared(w->db, stmt);
|
||||||
|
}
|
||||||
|
|
||||||
int wallet_extract_owned_outputs(struct wallet *w, const struct bitcoin_tx *tx,
|
int wallet_extract_owned_outputs(struct wallet *w, const struct bitcoin_tx *tx,
|
||||||
const struct block *block, u64 *total_satoshi)
|
const struct block *block, u64 *total_satoshi)
|
||||||
{
|
{
|
||||||
@ -1028,6 +1046,13 @@ int wallet_extract_owned_outputs(struct wallet *w, const struct bitcoin_tx *tx,
|
|||||||
&utxo->txid));
|
&utxo->txid));
|
||||||
|
|
||||||
if (!wallet_add_utxo(w, utxo, is_p2sh ? p2sh_wpkh : our_change)) {
|
if (!wallet_add_utxo(w, utxo, is_p2sh ? p2sh_wpkh : our_change)) {
|
||||||
|
/* In case we already know the output, make
|
||||||
|
* sure we actually track its
|
||||||
|
* blockheight. This can happen when we grab
|
||||||
|
* the output from a transaction we created
|
||||||
|
* outselves. */
|
||||||
|
if (block)
|
||||||
|
wallet_output_confirm(w, &utxo->txid, utxo->outnum, block->height);
|
||||||
tal_free(utxo);
|
tal_free(utxo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user