Files
palladum-lightning/openingd/dualopend_wire.csv
niftynei bc98cafe9e dual-fund: add require_confirmed_inputs to RBF flows
We now require peers to reaffirm their preference for
`require_confirmed_inputs` when executing an RBF.

Requested-By: @t-bast
2024-02-11 10:46:40 +01:00

13 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
31msgdatadualopend_initlocal_aliasshort_channel_id
32msgdatadualopend_initdev_accept_any_channel_typebool
33# master-dualopend: peer has reconnected
34msgtypedualopend_reinit7001
35msgdatadualopend_reinitchainparamschainparams
36msgdatadualopend_reinitfrom_abortbool
37msgdatadualopend_reinitour_feature_setfeature_set
38msgdatadualopend_reinittheir_init_features_lenu16
39msgdatadualopend_reinittheir_init_featuresu8their_init_features_len
40msgdatadualopend_reinitour_configchannel_config
41msgdatadualopend_reinittheir_configchannel_config
42msgdatadualopend_reinitchannel_idchannel_id
43msgdatadualopend_reinitmax_to_self_delayu32
44msgdatadualopend_reinitmin_effective_htlc_capacity_msatamount_msat
45msgdatadualopend_reinitour_basepointsbasepoints
46msgdatadualopend_reinitour_funding_pubkeypubkey
47msgdatadualopend_reinittheir_funding_pubkeypubkey
48msgdatadualopend_reinitminimum_depthu32
49msgdatadualopend_reinitfundingbitcoin_outpoint
50msgdatadualopend_reinitmost_recent_feerate_per_kw_fundingu32
51msgdatadualopend_reinitfunding_satoshiamount_sat
52msgdatadualopend_reinitour_fundingamount_msat
53msgdatadualopend_reinittheir_basepointsbasepoints
54msgdatadualopend_reinitremote_per_commitpubkey
55msgdatadualopend_reinitfunding_psbtwally_psbt
56msgdatadualopend_reinitopenerenum side
57msgdatadualopend_reinitlocal_channel_readybool
58msgdatadualopend_reinitremote_channel_readybool
59msgdatadualopend_reinitsend_shutdownbool
60msgdatadualopend_reinitremote_shutdown_receivedbool
61msgdatadualopend_reinitlocal_shutdown_lenu16
62msgdatadualopend_reinitlocal_shutdown_scriptpubkeyu8local_shutdown_len
63msgdatadualopend_reinitremote_shutdown_lenu16
64msgdatadualopend_reinitremote_shutdown_scriptpubkeyu8remote_shutdown_len
65msgdatadualopend_reinitlocal_shutdown_wallet_index?u32
66msgdatadualopend_reinitremote_funding_sigs_receivedbool
67msgdatadualopend_reinitremote_commit_receivedbool
68msgdatadualopend_reinitfee_statesfee_states
69msgdatadualopend_reinitchannel_flagsu8
70msgdatadualopend_reinitlease_start_blockheightu32
71msgdatadualopend_reinitlease_expiryu32
72msgdatadualopend_reinitlease_commit_sig?secp256k1_ecdsa_signature
73msgdatadualopend_reinitlease_chan_max_msatu32
74msgdatadualopend_reinitlease_chan_max_pptu16
75msgdatadualopend_reinitrequested_lease?amount_sat
76msgdatadualopend_reinitchannel_typechannel_type
77msgdatadualopend_reinitwe_require_confirmed_inputsbool
78msgdatadualopend_reinitthey_require_confirmed_inputsbool
79msgdatadualopend_reinitlocal_aliasshort_channel_id
80# dualopend->master: they offered channelshould we continue?
81msgtypedualopend_got_offer7005
82msgdatadualopend_got_offerchannel_idchannel_id
83msgdatadualopend_got_offeropener_fundingamount_sat
84msgdatadualopend_got_offerdust_limit_satoshisamount_sat
85msgdatadualopend_got_offermax_htlc_value_in_flight_msatamount_msat
86msgdatadualopend_got_offerhtlc_minimum_msatamount_msat
87msgdatadualopend_got_offerfeerate_per_kw_fundingu32
88msgdatadualopend_got_offerfeerate_per_kw_commitmentu32
89msgdatadualopend_got_offerto_self_delayu16
90msgdatadualopend_got_offermax_accepted_htlcsu16
91msgdatadualopend_got_offerchannel_flagsu8
92msgdatadualopend_got_offerlocktimeu32
93msgdatadualopend_got_offershutdown_lenu16
94msgdatadualopend_got_offershutdown_scriptpubkeyu8shutdown_len
95msgdatadualopend_got_offerrequested_amt?amount_sat
96msgdatadualopend_got_offerlease_blockheight_startu32
97msgdatadualopend_got_offerrequire_confirmed_inputsbool
98# master->dualopend: reply back with our first funding info/contribs
99msgtypedualopend_got_offer_reply7105
100msgdatadualopend_got_offer_replyaccepter_fundingamount_sat
101msgdatadualopend_got_offer_replypsbtwally_psbt
102msgdatadualopend_got_offer_replyshutdown_lenu16
103msgdatadualopend_got_offer_replyour_shutdown_scriptpubkey?u8shutdown_len
104msgdatadualopend_got_offer_replyour_shutdown_wallet_index?u32
105# must go last because of embedded tu32
106msgdatadualopend_got_offer_replylease_rates?lease_rates
107# dualopend->master: they offered a RBFshould we continue?
108msgtypedualopend_got_rbf_offer7500
109msgdatadualopend_got_rbf_offerchannel_idchannel_id
110msgdatadualopend_got_rbf_offertheir_last_fundingamount_sat
111msgdatadualopend_got_rbf_offertheir_curr_fundingamount_sat
112msgdatadualopend_got_rbf_offerour_last_fundingamount_sat
113msgdatadualopend_got_rbf_offerfunding_feerate_per_kwu32
114msgdatadualopend_got_rbf_offerlocktimeu32
115msgdatadualopend_got_rbf_offerrequested_lease?amount_sat
116msgdatadualopend_got_rbf_offerrequire_confirmed_inputsbool
117# master->dualopend: reply back with our funding info/contribs
118msgtypedualopend_got_rbf_offer_reply7505
119msgdatadualopend_got_rbf_offer_replyour_fundingamount_sat
120msgdatadualopend_got_rbf_offer_replypsbtwally_psbt
121# dualopend->master: update to require_confirmed_inputs preference
122msgtypedualopend_update_require_confirmed7511
123msgdatadualopend_update_require_confirmedrequire_confirmed_inputsbool
124# dualopend->master: is this a valid RBF candidate transaction?
125msgtypedualopend_rbf_validate7506
126msgdatadualopend_rbf_validateproposed_funding_psbtwally_psbt
127# master->dualopend: this is a valid RBF candidate transaction
128msgtypedualopend_rbf_valid7507
129# master->dualopend: attempt an RBF
130msgtypedualopend_rbf_init7509
131msgdatadualopend_rbf_initour_fundingamount_sat
132msgdatadualopend_rbf_initfunding_feerate_perkwu32
133msgdatadualopend_rbf_initpsbtwally_psbt
134# dualopend->master: about to send first commitment_signed
135msgtypedualopend_commit_ready7009
136msgdatadualopend_commit_readytheir_configchannel_config
137msgdatadualopend_commit_readypsbtwally_psbt
138msgdatadualopend_commit_readyrevocation_basepointpubkey
139msgdatadualopend_commit_readypayment_basepointpubkey
140msgdatadualopend_commit_readyhtlc_basepointpubkey
141msgdatadualopend_commit_readydelayed_payment_basepointpubkey
142msgdatadualopend_commit_readytheir_per_commit_pointpubkey
143msgdatadualopend_commit_readyremote_fundingkeypubkey
144msgdatadualopend_commit_readyfundingbitcoin_outpoint
145msgdatadualopend_commit_readyfunding_satoshisamount_sat
146msgdatadualopend_commit_readyour_funding_satsamount_sat
147msgdatadualopend_commit_readychannel_flagsu8
148msgdatadualopend_commit_readyfeerate_per_kw_fundingu32
149msgdatadualopend_commit_readyfeerate_per_kw_commitmentu32
150msgdatadualopend_commit_readylocal_shutdown_lenu16
151msgdatadualopend_commit_readylocal_shutdown_scriptpubkeyu8local_shutdown_len
152msgdatadualopend_commit_readyremote_shutdown_lenu16
153msgdatadualopend_commit_readyremote_shutdown_scriptpubkeyu8remote_shutdown_len
154msgdatadualopend_commit_readylease_amtamount_sat
155msgdatadualopend_commit_readylease_start_blockheightu32
156msgdatadualopend_commit_readylease_expiryu32
157msgdatadualopend_commit_readylease_feeamount_sat
158msgdatadualopend_commit_readylease_commit_sig?secp256k1_ecdsa_signature
159msgdatadualopend_commit_readylease_chan_max_msatu32
160msgdatadualopend_commit_readylease_chan_max_pptu16
161msgdatadualopend_commit_readychannel_typechannel_type
162# master->dualopend: channel saved to disk
163msgtypedualopend_commit_send_ack7109
164# dualopend->master: received commitment signed from peer
165# get some signatures for the funding_tx.
166msgtypedualopend_commit_rcvd7007
167msgdatadualopend_commit_rcvdremote_first_commitbitcoin_tx
168msgdatadualopend_commit_rcvdfirst_commit_sigbitcoin_signature
169msgdatadualopend_commit_rcvdpbase?penalty_base
170# dualopend->master: peer updated the psbt
171msgtypedualopend_psbt_changed7107
172msgdatadualopend_psbt_changedchannel_idchannel_id
173msgdatadualopend_psbt_changedrequires_confirmed_inputsbool
174msgdatadualopend_psbt_changedfunding_serialu64
175msgdatadualopend_psbt_changedpsbtwally_psbt
176msgdatadualopend_psbt_changedchannel_typechannel_type
177# master->dualopend: we updated the psbt
178msgtypedualopend_psbt_updated7108
179msgdatadualopend_psbt_updatedpsbtwally_psbt
180# master->dualopend: fail this channel open
181msgtypedualopend_fail7003
182msgdatadualopend_failreasonwirestring
183# master->dualopend: helloI'd like to start a channel open
184msgtypedualopend_opener_init7200
185msgdatadualopend_opener_initpsbtwally_psbt
186msgdatadualopend_opener_initfunding_amountamount_sat
187msgdatadualopend_opener_initlocal_shutdown_lenu16
188msgdatadualopend_opener_initlocal_shutdown_scriptpubkeyu8local_shutdown_len
189msgdatadualopend_opener_initlocal_shutdown_wallet_index?u32
190msgdatadualopend_opener_initfeerate_per_kwu32
191msgdatadualopend_opener_initanchor_feerate_per_kwu32
192msgdatadualopend_opener_initfeerate_per_kw_fundingu32
193msgdatadualopend_opener_initchannel_flagsu8
194msgdatadualopend_opener_initrequested_sats?amount_sat
195msgdatadualopend_opener_initblockheightu32
196msgdatadualopend_opener_initdry_runbool
197msgdatadualopend_opener_initchannel_type?channel_type
198# must go last because embedded tu32
199msgdatadualopend_opener_initexpected_rates?lease_rates
200# dualopend->master received tx_sigs from peer
201msgtypedualopend_funding_sigs7010
202msgdatadualopend_funding_sigssigned_psbtwally_psbt
203# master->dualopend send our tx_sigs to peer
204msgtypedualopend_send_tx_sigs7011
205msgdatadualopend_send_tx_sigssigned_psbtwally_psbt
206# dualopend->master tx sigs transmitted to peer
207msgtypedualopend_tx_sigs_sent7012
208# dualopend->peer peer locked channel
209msgtypedualopend_peer_locked7018
210msgdatadualopend_peer_lockedremote_per_commitpubkey
211msgdatadualopend_peer_lockedremote_alias?short_channel_id
212# dualopend->master this channel has been locked
213msgtypedualopend_channel_locked7019
214# master->dualopend funding reached depth; tell peer
215msgtypedualopend_depth_reached7020
216msgdatadualopend_depth_reacheddepthu32
217# Tell peer to shut down channel.
218msgtypedualopend_send_shutdown7023
219msgdatadualopend_send_shutdownshutdown_scriptpubkey_lenu16
220msgdatadualopend_send_shutdownshutdown_scriptpubkeyu8shutdown_scriptpubkey_len
221# Peer told us that channel is shutting down
222msgtypedualopend_got_shutdown7024
223msgdatadualopend_got_shutdownscriptpubkey_lenu16
224msgdatadualopend_got_shutdownscriptpubkeyu8scriptpubkey_len
225# Peer presented proof it was from the future.
226msgtypedualopend_fail_fallen_behind1028
227# Shutdown is completeready for closing negotiation. + peer_fd & gossip_fd.
228msgtypedualopend_shutdown_complete7025
229# master -> dualopend: do you have a memleak?
230msgtypedualopend_dev_memleak7033
231msgtypedualopend_dev_memleak_reply7133
232msgdatadualopend_dev_memleak_replyleakbool
233# dualopend -> master: this was a dry runhere's some info about this open
234msgtypedualopend_dry_run7026
235msgdatadualopend_dry_runchannel_idchannel_id
236msgdatadualopend_dry_runour_fundingamount_sat
237msgdatadualopend_dry_runtheir_fundingamount_sat
238msgdatadualopend_dry_runrequires_confirmed_inputsbool
239# must go last because of embedded tu32
240msgdatadualopend_dry_runlease_rates?lease_rates
241# dualopend -> master: are inputs in this psbt confirmed?
242msgtypedualopend_validate_inputs7029
243msgdatadualopend_validate_inputspsbtwally_psbt
244msgdatadualopend_validate_inputssideenum tx_role
245# master -> dualopend: confirms inputs are valid
246msgtypedualopend_validate_inputs_reply7030
247# dualopend -> master: validate liqudity offer sig
248msgtypedualopend_validate_lease7027
249msgdatadualopend_validate_leasesigsecp256k1_ecdsa_signature
250msgdatadualopend_validate_leaselease_expiryu32
251msgdatadualopend_validate_leasechan_fee_max_base_msatu32
252msgdatadualopend_validate_leasechan_fee_max_pptu16
253msgdatadualopend_validate_leasetheir_pubkeypubkey
254msgtypedualopend_validate_lease_reply7127
255msgdatadualopend_validate_lease_replyerr_msg?wirestring