Files
palladum-lightning/openingd/dualopend_wire.csv
niftynei 9b8909e507 dual-fund: keep track of aborted requests, seamlessly restart daemon
Clean restart of daemon after a tx-abort is a nice way to work around
the 'persistent' disconnect that we t-bast noticed.

Changelog-Fixed: `dualopend`: Fix behavior for tx-aborts. No longer hangs, appropriately continues re-init of RBF requests without reconnction msg exchange.
2023-07-30 15:20:04 +09:30

12 KiB

1#include <bitcoin/chainparams.h>
2#include <bitcoin/psbt.h>
3#include <common/cryptomsg.h>
4#include <common/channel_config.h>
5#include <common/channel_id.h>
6#include <common/channel_type.h>
7#include <common/derive_basepoints.h>
8#include <common/features.h>
9#include <common/fee_states.h>
10#include <common/htlc_wire.h>
11#include <common/penalty_base.h>
12#include <common/tx_roles.h>
13#include <secp256k1.h>
14#include <wire/peer_wire.h>
15msgtypedualopend_init7000
16# Which network are we configured for?
17msgdatadualopend_initchainparamschainparams
18msgdatadualopend_initour_feature_setfeature_set
19msgdatadualopend_inittheir_init_features_lenu16
20msgdatadualopend_inittheir_init_featuresu8their_init_features_len
21# Base configuration we'll offer
22msgdatadualopend_initour_configchannel_config
23# Minimum/maximum configuration values we'll accept
24msgdatadualopend_initmax_to_self_delayu32
25msgdatadualopend_initmin_effective_htlc_capacity_msatamount_msat
26msgdatadualopend_initour_basepointsbasepoints
27msgdatadualopend_initour_funding_pubkeypubkey
28# Constraints in case the other end tries to open a channel.
29msgdatadualopend_initminimum_depthu32
30msgdatadualopend_initrequire_confirmed_inputsbool
31# master-dualopend: peer has reconnected
32msgtypedualopend_reinit7001
33msgdatadualopend_reinitchainparamschainparams
34msgdatadualopend_reinitfrom_abortbool
35msgdatadualopend_reinitour_feature_setfeature_set
36msgdatadualopend_reinittheir_init_features_lenu16
37msgdatadualopend_reinittheir_init_featuresu8their_init_features_len
38msgdatadualopend_reinitour_configchannel_config
39msgdatadualopend_reinittheir_configchannel_config
40msgdatadualopend_reinitchannel_idchannel_id
41msgdatadualopend_reinitmax_to_self_delayu32
42msgdatadualopend_reinitmin_effective_htlc_capacity_msatamount_msat
43msgdatadualopend_reinitour_basepointsbasepoints
44msgdatadualopend_reinitour_funding_pubkeypubkey
45msgdatadualopend_reinittheir_funding_pubkeypubkey
46msgdatadualopend_reinitminimum_depthu32
47msgdatadualopend_reinitfundingbitcoin_outpoint
48msgdatadualopend_reinitmost_recent_feerate_per_kw_fundingu32
49msgdatadualopend_reinitfunding_satoshiamount_sat
50msgdatadualopend_reinitour_fundingamount_msat
51msgdatadualopend_reinittheir_basepointsbasepoints
52msgdatadualopend_reinitremote_per_commitpubkey
53msgdatadualopend_reinitfunding_psbtwally_psbt
54msgdatadualopend_reinitopenerenum side
55msgdatadualopend_reinitlocal_channel_readybool
56msgdatadualopend_reinitremote_channel_readybool
57msgdatadualopend_reinitsend_shutdownbool
58msgdatadualopend_reinitremote_shutdown_receivedbool
59msgdatadualopend_reinitlocal_shutdown_lenu16
60msgdatadualopend_reinitlocal_shutdown_scriptpubkeyu8local_shutdown_len
61msgdatadualopend_reinitremote_shutdown_lenu16
62msgdatadualopend_reinitremote_shutdown_scriptpubkeyu8remote_shutdown_len
63msgdatadualopend_reinitlocal_shutdown_wallet_index?u32
64msgdatadualopend_reinitremote_funding_sigs_receivedbool
65msgdatadualopend_reinitfee_statesfee_states
66msgdatadualopend_reinitchannel_flagsu8
67msgdatadualopend_reinitlease_start_blockheightu32
68msgdatadualopend_reinitlease_expiryu32
69msgdatadualopend_reinitlease_commit_sig?secp256k1_ecdsa_signature
70msgdatadualopend_reinitlease_chan_max_msatu32
71msgdatadualopend_reinitlease_chan_max_pptu16
72msgdatadualopend_reinitrequested_lease?amount_sat
73msgdatadualopend_reinitchannel_typechannel_type
74msgdatadualopend_reinitwe_require_confirmed_inputsbool
75msgdatadualopend_reinitthey_require_confirmed_inputsbool
76# dualopend->master: they offered channelshould we continue?
77msgtypedualopend_got_offer7005
78msgdatadualopend_got_offerchannel_idchannel_id
79msgdatadualopend_got_offeropener_fundingamount_sat
80msgdatadualopend_got_offerdust_limit_satoshisamount_sat
81msgdatadualopend_got_offermax_htlc_value_in_flight_msatamount_msat
82msgdatadualopend_got_offerhtlc_minimum_msatamount_msat
83msgdatadualopend_got_offerfeerate_per_kw_fundingu32
84msgdatadualopend_got_offerfeerate_per_kw_commitmentu32
85msgdatadualopend_got_offerto_self_delayu16
86msgdatadualopend_got_offermax_accepted_htlcsu16
87msgdatadualopend_got_offerchannel_flagsu8
88msgdatadualopend_got_offerlocktimeu32
89msgdatadualopend_got_offershutdown_lenu16
90msgdatadualopend_got_offershutdown_scriptpubkeyu8shutdown_len
91msgdatadualopend_got_offerrequested_amt?amount_sat
92msgdatadualopend_got_offerlease_blockheight_startu32
93msgdatadualopend_got_offerrequire_confirmed_inputsbool
94# master->dualopend: reply back with our first funding info/contribs
95msgtypedualopend_got_offer_reply7105
96msgdatadualopend_got_offer_replyaccepter_fundingamount_sat
97msgdatadualopend_got_offer_replypsbtwally_psbt
98msgdatadualopend_got_offer_replyshutdown_lenu16
99msgdatadualopend_got_offer_replyour_shutdown_scriptpubkey?u8shutdown_len
100msgdatadualopend_got_offer_replyour_shutdown_wallet_index?u32
101# must go last because of embedded tu32
102msgdatadualopend_got_offer_replylease_rates?lease_rates
103# dualopend->master: they offered a RBFshould we continue?
104msgtypedualopend_got_rbf_offer7500
105msgdatadualopend_got_rbf_offerchannel_idchannel_id
106msgdatadualopend_got_rbf_offertheir_last_fundingamount_sat
107msgdatadualopend_got_rbf_offertheir_curr_fundingamount_sat
108msgdatadualopend_got_rbf_offerour_last_fundingamount_sat
109msgdatadualopend_got_rbf_offerfunding_feerate_per_kwu32
110msgdatadualopend_got_rbf_offerlocktimeu32
111msgdatadualopend_got_rbf_offerrequested_lease?amount_sat
112# master->dualopend: reply back with our funding info/contribs
113msgtypedualopend_got_rbf_offer_reply7505
114msgdatadualopend_got_rbf_offer_replyour_fundingamount_sat
115msgdatadualopend_got_rbf_offer_replypsbtwally_psbt
116# dualopend->master: is this a valid RBF candidate transaction?
117msgtypedualopend_rbf_validate7506
118msgdatadualopend_rbf_validateproposed_funding_psbtwally_psbt
119# master->dualopend: this is a valid RBF candidate transaction
120msgtypedualopend_rbf_valid7507
121# master->dualopend: attempt an RBF
122msgtypedualopend_rbf_init7509
123msgdatadualopend_rbf_initour_fundingamount_sat
124msgdatadualopend_rbf_initfunding_feerate_perkwu32
125msgdatadualopend_rbf_initpsbtwally_psbt
126# dualopend->master: ready to commit channel open to database and
127# get some signatures for the funding_tx.
128msgtypedualopend_commit_rcvd7007
129msgdatadualopend_commit_rcvdtheir_configchannel_config
130msgdatadualopend_commit_rcvdremote_first_commitbitcoin_tx
131msgdatadualopend_commit_rcvdpbase?penalty_base
132msgdatadualopend_commit_rcvdfirst_commit_sigbitcoin_signature
133msgdatadualopend_commit_rcvdpsbtwally_psbt
134msgdatadualopend_commit_rcvdrevocation_basepointpubkey
135msgdatadualopend_commit_rcvdpayment_basepointpubkey
136msgdatadualopend_commit_rcvdhtlc_basepointpubkey
137msgdatadualopend_commit_rcvddelayed_payment_basepointpubkey
138msgdatadualopend_commit_rcvdtheir_per_commit_pointpubkey
139msgdatadualopend_commit_rcvdremote_fundingkeypubkey
140msgdatadualopend_commit_rcvdfundingbitcoin_outpoint
141msgdatadualopend_commit_rcvdfunding_satoshisamount_sat
142msgdatadualopend_commit_rcvdour_funding_satsamount_sat
143msgdatadualopend_commit_rcvdchannel_flagsu8
144msgdatadualopend_commit_rcvdfeerate_per_kw_fundingu32
145msgdatadualopend_commit_rcvdfeerate_per_kw_commitmentu32
146msgdatadualopend_commit_rcvdlocal_shutdown_lenu16
147msgdatadualopend_commit_rcvdlocal_shutdown_scriptpubkeyu8local_shutdown_len
148msgdatadualopend_commit_rcvdremote_shutdown_lenu16
149msgdatadualopend_commit_rcvdremote_shutdown_scriptpubkeyu8remote_shutdown_len
150msgdatadualopend_commit_rcvdlease_amtamount_sat
151msgdatadualopend_commit_rcvdlease_start_blockheightu32
152msgdatadualopend_commit_rcvdlease_expiryu32
153msgdatadualopend_commit_rcvdlease_feeamount_sat
154msgdatadualopend_commit_rcvdlease_commit_sig?secp256k1_ecdsa_signature
155msgdatadualopend_commit_rcvdlease_chan_max_msatu32
156msgdatadualopend_commit_rcvdlease_chan_max_pptu16
157msgdatadualopend_commit_rcvdchannel_typechannel_type
158# dualopend->master: peer updated the psbt
159msgtypedualopend_psbt_changed7107
160msgdatadualopend_psbt_changedchannel_idchannel_id
161msgdatadualopend_psbt_changedrequires_confirmed_inputsbool
162msgdatadualopend_psbt_changedfunding_serialu64
163msgdatadualopend_psbt_changedpsbtwally_psbt
164# master->dualopend: we updated the psbt
165msgtypedualopend_psbt_updated7108
166msgdatadualopend_psbt_updatedpsbtwally_psbt
167# master->dualopend: fail this channel open
168msgtypedualopend_fail7003
169msgdatadualopend_failreasonwirestring
170# master->dualopend: helloI'd like to start a channel open
171msgtypedualopend_opener_init7200
172msgdatadualopend_opener_initpsbtwally_psbt
173msgdatadualopend_opener_initfunding_amountamount_sat
174msgdatadualopend_opener_initlocal_shutdown_lenu16
175msgdatadualopend_opener_initlocal_shutdown_scriptpubkeyu8local_shutdown_len
176msgdatadualopend_opener_initlocal_shutdown_wallet_index?u32
177msgdatadualopend_opener_initfeerate_per_kwu32
178msgdatadualopend_opener_initanchor_feerate_per_kwu32
179msgdatadualopend_opener_initfeerate_per_kw_fundingu32
180msgdatadualopend_opener_initchannel_flagsu8
181msgdatadualopend_opener_initrequested_sats?amount_sat
182msgdatadualopend_opener_initblockheightu32
183msgdatadualopend_opener_initdry_runbool
184# must go last because embedded tu32
185msgdatadualopend_opener_initexpected_rates?lease_rates
186# dualopend->master received tx_sigs from peer
187msgtypedualopend_funding_sigs7010
188msgdatadualopend_funding_sigssigned_psbtwally_psbt
189# master->dualopend send our tx_sigs to peer
190msgtypedualopend_send_tx_sigs7011
191msgdatadualopend_send_tx_sigssigned_psbtwally_psbt
192# dualopend->master tx sigs transmitted to peer
193msgtypedualopend_tx_sigs_sent7012
194# dualopend->peer peer locked channel
195msgtypedualopend_peer_locked7018
196msgdatadualopend_peer_lockedremote_per_commitpubkey
197# dualopend->master this channel has been locked
198msgtypedualopend_channel_locked7019
199# master->dualopend funding reached depth; tell peer
200msgtypedualopend_depth_reached7020
201msgdatadualopend_depth_reacheddepthu32
202# Tell peer to shut down channel.
203msgtypedualopend_send_shutdown7023
204msgdatadualopend_send_shutdownshutdown_scriptpubkey_lenu16
205msgdatadualopend_send_shutdownshutdown_scriptpubkeyu8shutdown_scriptpubkey_len
206# Peer told us that channel is shutting down
207msgtypedualopend_got_shutdown7024
208msgdatadualopend_got_shutdownscriptpubkey_lenu16
209msgdatadualopend_got_shutdownscriptpubkeyu8scriptpubkey_len
210# Peer presented proof it was from the future.
211msgtypedualopend_fail_fallen_behind1028
212# Shutdown is completeready for closing negotiation. + peer_fd & gossip_fd.
213msgtypedualopend_shutdown_complete7025
214# master -> dualopend: do you have a memleak?
215msgtypedualopend_dev_memleak7033
216msgtypedualopend_dev_memleak_reply7133
217msgdatadualopend_dev_memleak_replyleakbool
218# dualopend -> master: this was a dry runhere's some info about this open
219msgtypedualopend_dry_run7026
220msgdatadualopend_dry_runchannel_idchannel_id
221msgdatadualopend_dry_runour_fundingamount_sat
222msgdatadualopend_dry_runtheir_fundingamount_sat
223msgdatadualopend_dry_runrequires_confirmed_inputsbool
224# must go last because of embedded tu32
225msgdatadualopend_dry_runlease_rates?lease_rates
226# dualopend -> master: are inputs in this psbt confirmed?
227msgtypedualopend_validate_inputs7029
228msgdatadualopend_validate_inputspsbtwally_psbt
229msgdatadualopend_validate_inputssideenum tx_role
230# master -> dualopend: confirms inputs are valid
231msgtypedualopend_validate_inputs_reply7030
232# dualopend -> master: validate liqudity offer sig
233msgtypedualopend_validate_lease7027
234msgdatadualopend_validate_leasesigsecp256k1_ecdsa_signature
235msgdatadualopend_validate_leaselease_expiryu32
236msgdatadualopend_validate_leasechan_fee_max_base_msatu32
237msgdatadualopend_validate_leasechan_fee_max_pptu16
238msgdatadualopend_validate_leasetheir_pubkeypubkey
239msgtypedualopend_validate_lease_reply7127
240msgdatadualopend_validate_lease_replyerr_msg?wirestring
241# Tell gossipd about this (as-yet) unannounced channel
242msgtypedualopend_local_private_channel7015
243msgdatadualopend_local_private_channelcapacityamount_sat
244msgdatadualopend_local_private_channellenu16
245msgdatadualopend_local_private_channelfeaturesu8len