diff --git a/wallet/wallet.c b/wallet/wallet.c index 4dfd57639..3801aef8f 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -1495,3 +1495,21 @@ wallet_payment_list(const tal_t *ctx, return payments; } + +void wallet_htlc_sigs_save(struct wallet *w, u64 channel_id, + secp256k1_ecdsa_signature *htlc_sigs) +{ + /* Clear any existing HTLC sigs for this channel */ + sqlite3_stmt *stmt = + db_prepare(w->db, "DELETE FROM htlc_sigs WHERE channelid = ?"); + sqlite3_bind_int64(stmt, 1, channel_id); + db_exec_prepared(w->db, stmt); + + /* Now insert the new ones */ + for (size_t i=0; i<tal_count(htlc_sigs); i++) { + stmt = db_prepare(w->db, "INSERT INTO htlc_sigs (channelid, signature) VALUES (?, ?)"); + sqlite3_bind_int64(stmt, 1, channel_id); + sqlite3_bind_signature(stmt, 2, &htlc_sigs[i]); + db_exec_prepared(w->db, stmt); + } +} diff --git a/wallet/wallet.h b/wallet/wallet.h index 7a68bf62f..afb8f3c9b 100644 --- a/wallet/wallet.h +++ b/wallet/wallet.h @@ -619,4 +619,9 @@ const struct wallet_payment **wallet_payment_list(const tal_t *ctx, struct wallet *wallet, const struct sha256 *payment_hash); +/** + * wallet_htlc_sigs_save - Store the latest HTLC sigs for the channel + */ +void wallet_htlc_sigs_save(struct wallet *w, u64 channel_id, + secp256k1_ecdsa_signature *htlc_sigs); #endif /* WALLET_WALLET_H */