core-lightning/onchaind/onchain_wire.csv
lisa neigut 9caf20f636 coin moves: don't log coin moves in onchaind if we're replaying
On node start we replay onchaind's transactions from the database/from
our loaded htlc table.  To keep things tidy, we shouldn't notify the
ledger about these, so we wrap pretty much everything in a flag that
tells us whether or not this is a replay.

There's a very small corner case where dust transactions will get missed
if the node crashes after the htlc has been added to the database but
before we've successfully notified onchaind about it.

Notably, most of the obtrusive updates to onchaind wrappings are due to
the fact that we record dust (ignored outputs) before we receive
confirmation of its confirmation.
2020-05-12 15:46:58 +09:30

5.2 KiB

1#include <common/coin_mvt.h>
2#include <common/derive_basepoints.h>
3#include <common/htlc_wire.h>
4#include <common/wallet.h>
5# Begin! Here's the onchain tx which spends funding tx, followed by all HTLCs.
6msgtype,onchain_init,5001
7msgdata,onchain_init,shachain,shachain,
8# This needs to be set explicitly since the same message also contains a
9# transaction that we need to parse correctly.
10msgdata,onchain_init,chainparams,chainparams,
11msgdata,onchain_init,funding_amount_satoshi,amount_sat,
12# Our current balance (of funding amount, not counting any pending htlcs)
13msgdata,onchain_init,our_msat,amount_msat,
14# Remote per commit point for committed tx.
15msgdata,onchain_init,old_remote_per_commitment_point,pubkey,
16# Remote per commit point for current tx (needed if we haven't got revoke_and_ack yet).
17msgdata,onchain_init,remote_per_commitment_point,pubkey,
18msgdata,onchain_init,local_to_self_delay,u32,
19msgdata,onchain_init,remote_to_self_delay,u32,
20msgdata,onchain_init,delayed_to_us_feerate,u32,
21msgdata,onchain_init,htlc_feerate,u32,
22msgdata,onchain_init,penalty_feerate,u32,
23msgdata,onchain_init,local_dust_limit_satoshi,amount_sat,
24# Gives an easy way to tell if it's our unilateral close or theirs...
25msgdata,onchain_init,our_broadcast_txid,bitcoin_txid,
26msgdata,onchain_init,local_scriptpubkey_len,u16,
27msgdata,onchain_init,local_scriptpubkey,u8,local_scriptpubkey_len
28msgdata,onchain_init,remote_scriptpubkey_len,u16,
29msgdata,onchain_init,remote_scriptpubkey,u8,remote_scriptpubkey_len
30msgdata,onchain_init,ourwallet_pubkey,pubkey,
31# We need these two for commit number obscurer
32msgdata,onchain_init,opener,enum side,
33msgdata,onchain_init,local_basepoints,basepoints,
34msgdata,onchain_init,remote_basepoints,basepoints,
35msgdata,onchain_init,tx,bitcoin_tx,
36msgdata,onchain_init,tx_blockheight,u32,
37msgdata,onchain_init,reasonable_depth,u32,
38msgdata,onchain_init,num_htlc_sigs,u16,
39msgdata,onchain_init,htlc_signature,secp256k1_ecdsa_signature,num_htlc_sigs
40msgdata,onchain_init,num_htlcs,u64,
41msgdata,onchain_init,min_possible_feerate,u32,
42msgdata,onchain_init,max_possible_feerate,u32,
43msgdata,onchain_init,possible_remote_per_commit_point,?pubkey,
44msgdata,onchain_init,option_static_remotekey,bool,
45msgdata,onchain_init,is_replay,bool,
46#include <onchaind/onchain_wire.h>
47# This is all the HTLCs: one per message
48msgtype,onchain_htlc,5002
49msgdata,onchain_htlc,htlc,htlc_stub,
50# If it's not in the commitment tx, tell us (immediately or htlc_missing_depth)
51msgdata,onchain_htlc,tell_if_missing,bool,
52msgdata,onchain_htlc,tell_immediately,bool,
53# This says we're ready; give us preimages.
54msgtype,onchain_init_reply,5101
55# onchaind->master: Send out a tx.
56msgtype,onchain_broadcast_tx,5003
57msgdata,onchain_broadcast_tx,tx,bitcoin_tx,
58msgdata,onchain_broadcast_tx,type,enum wallet_tx_type,
59# master->onchaind: Notifier that an output has been spent by input_num of tx.
60msgtype,onchain_spent,5004
61msgdata,onchain_spent,tx,bitcoin_tx,
62msgdata,onchain_spent,input_num,u32,
63msgdata,onchain_spent,blockheight,u32,
64msgdata,onchain_spent,is_replay,bool,
65# master->onchaind: We will receive more than one of these, as depth changes.
66msgtype,onchain_depth,5005
67msgdata,onchain_depth,txid,bitcoin_txid,
68msgdata,onchain_depth,depth,u32,
69msgdata,onchain_depth,is_replay,bool,
70# onchaind->master: We don't want to watch this tx, or its outputs
71msgtype,onchain_unwatch_tx,5006
72msgdata,onchain_unwatch_tx,txid,bitcoin_txid,
73# master->onchaind: We know HTLC preimage
74msgtype,onchain_known_preimage,5007
75msgdata,onchain_known_preimage,preimage,preimage,
76msgdata,onchain_known_preimage,is_replay,bool,
77# onchaind->master: We discovered HTLC preimage
78msgtype,onchain_extracted_preimage,5008
79msgdata,onchain_extracted_preimage,preimage,preimage,
80# onchaind->master: this HTLC was missing from commit tx.
81msgtype,onchain_missing_htlc_output,5009
82msgdata,onchain_missing_htlc_output,htlc,htlc_stub,
83# onchaind->master: this HTLC has timed out (after reasonable_depth)
84msgtype,onchain_htlc_timeout,5010
85msgdata,onchain_htlc_timeout,htlc,htlc_stub,
86# onchaind->master: this peer can be forgotten
87msgtype,onchain_all_irrevocably_resolved,5011
88# onchaind->master: hey, I identified an UTXO you'll want to track
89msgtype,onchain_add_utxo,5012
90msgdata,onchain_add_utxo,prev_out_tx,bitcoin_txid,
91msgdata,onchain_add_utxo,prev_out_index,u32,
92msgdata,onchain_add_utxo,per_commit_point,?pubkey,
93msgdata,onchain_add_utxo,value,amount_sat,
94msgdata,onchain_add_utxo,blockheight,u32,
95msgdata,onchain_add_utxo,len,u16,
96msgdata,onchain_add_utxo,scriptpubkey,u8,len
97# master -> onchaind: do you have a memleak?
98msgtype,onchain_dev_memleak,5033
99msgtype,onchain_dev_memleak_reply,5133
100msgdata,onchain_dev_memleak_reply,leak,bool,
101# Tell the main daemon what we've been watching, mainly used for transactions
102# that we tracked automatically but only onchaind knows how to classify their
103# transactions.
104msgtype,onchain_annotate_txout,5035
105msgdata,onchain_annotate_txout,txid,bitcoin_txid,
106msgdata,onchain_annotate_txout,outnum,u32,
107msgdata,onchain_annotate_txout,type,enum wallet_tx_type,
108msgtype,onchain_annotate_txin,5036
109msgdata,onchain_annotate_txin,txid,bitcoin_txid,
110msgdata,onchain_annotate_txin,innum,u32,
111msgdata,onchain_annotate_txin,type,enum wallet_tx_type,
112msgtype,onchain_notify_coin_mvt,5037
113msgdata,onchain_notify_coin_mvt,mvt,chain_coin_mvt,