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