core-lightning/channeld/channel_wire.csv
Rusty Russell 72d55d3e3b lightningd: store raw msg rather than code for locally-failed outgoing HTLCs
At the moment, we store e.g. WIRE_TEMPORARY_CHANNEL_FAILURE, and then
lightningd has a large demux function which turns that into the correct
error message.

Such an enum demuxer is an anti-pattern.

Instead, store the message directly for output HTLCs; channeld now
sends us an error message rather than an error code.

For input HTLCs we will still need the failure code if the onion was
bad (since we need to prompt channeld to send a completely different
message than normal), though we can (and will!) eliminate its use in
non-BADONION failure cases.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2020-02-25 11:12:12 +10:30

8.8 KiB

1#include <common/cryptomsg.h>
2#include <common/channel_config.h>
3#include <common/derive_basepoints.h>
4#include <common/fee_states.h>
5#include <common/per_peer_state.h>
6# Begin! (passes gossipd-client fd)
7msgtype,channel_init,1000
8msgdata,channel_init,chainparams,chainparams,
9msgdata,channel_init,funding_txid,bitcoin_txid,
10msgdata,channel_init,funding_txout,u16,
11msgdata,channel_init,funding_satoshi,amount_sat,
12msgdata,channel_init,minimum_depth,u32,
13msgdata,channel_init,our_config,channel_config,
14msgdata,channel_init,their_config,channel_config,
15msgdata,channel_init,fee_states,fee_states,
16msgdata,channel_init,feerate_min,u32,
17msgdata,channel_init,feerate_max,u32,
18msgdata,channel_init,first_commit_sig,bitcoin_signature,
19msgdata,channel_init,per_peer_state,per_peer_state,
20msgdata,channel_init,remote_fundingkey,pubkey,
21msgdata,channel_init,remote_basepoints,basepoints,
22msgdata,channel_init,remote_per_commit,pubkey,
23msgdata,channel_init,old_remote_per_commit,pubkey,
24msgdata,channel_init,funder,enum side,
25msgdata,channel_init,fee_base,u32,
26msgdata,channel_init,fee_proportional,u32,
27msgdata,channel_init,local_msatoshi,amount_msat,
28msgdata,channel_init,our_basepoints,basepoints,
29msgdata,channel_init,our_funding_pubkey,pubkey,
30msgdata,channel_init,local_node_id,node_id,
31msgdata,channel_init,remote_node_id,node_id,
32msgdata,channel_init,commit_msec,u32,
33msgdata,channel_init,cltv_delta,u16,
34msgdata,channel_init,last_was_revoke,bool,
35msgdata,channel_init,num_last_sent_commit,u16,
36msgdata,channel_init,last_sent_commit,changed_htlc,num_last_sent_commit
37msgdata,channel_init,next_index_local,u64,
38msgdata,channel_init,next_index_remote,u64,
39msgdata,channel_init,revocations_received,u64,
40msgdata,channel_init,next_htlc_id,u64,
41msgdata,channel_init,num_htlcs,u16,
42msgdata,channel_init,htlcs,added_htlc,num_htlcs
43msgdata,channel_init,htlc_states,enum htlc_state,num_htlcs
44msgdata,channel_init,num_fulfilled,u16,
45msgdata,channel_init,fulfilled,fulfilled_htlc,num_fulfilled
46msgdata,channel_init,fulfilled_sides,enum side,num_fulfilled
47msgdata,channel_init,num_failed_in,u16,
48msgdata,channel_init,failed_in,failed_htlc,num_failed_in
49msgdata,channel_init,num_failed_out,u16,
50msgdata,channel_init,failed_out,u64,num_failed_out
51msgdata,channel_init,local_funding_locked,bool,
52msgdata,channel_init,remote_funding_locked,bool,
53msgdata,channel_init,funding_short_id,short_channel_id,
54msgdata,channel_init,reestablish,bool,
55msgdata,channel_init,send_shutdown,bool,
56msgdata,channel_init,remote_shutdown_received,bool,
57msgdata,channel_init,final_scriptpubkey_len,u16,
58msgdata,channel_init,final_scriptpubkey,u8,final_scriptpubkey_len
59msgdata,channel_init,flags,u8,
60msgdata,channel_init,init_peer_pkt_len,u16,
61msgdata,channel_init,init_peer_pkt,u8,init_peer_pkt_len
62msgdata,channel_init,reached_announce_depth,bool,
63msgdata,channel_init,last_remote_secret,secret,
64msgdata,channel_init,lflen,u16,
65msgdata,channel_init,localfeatures,u8,lflen
66msgdata,channel_init,upfront_shutdown_script_len,u16,
67msgdata,channel_init,upfront_shutdown_script,u8,upfront_shutdown_script_len
68msgdata,channel_init,remote_ann_node_sig,?secp256k1_ecdsa_signature,
69msgdata,channel_init,remote_ann_bitcoin_sig,?secp256k1_ecdsa_signature,
70msgdata,channel_init,option_static_remotekey,bool,
71msgdata,channel_init,dev_fast_gossip,bool,
72msgdata,channel_init,dev_fail_process_onionpacket,bool,
73# master->channeld funding hit new depth(funding locked if >= lock depth)
74msgtype,channel_funding_depth,1002
75msgdata,channel_funding_depth,short_channel_id,?short_channel_id,
76msgdata,channel_funding_depth,depth,u32,
77# Tell channel to offer this htlc
78msgtype,channel_offer_htlc,1004
79msgdata,channel_offer_htlc,amount_msat,amount_msat,
80msgdata,channel_offer_htlc,cltv_expiry,u32,
81msgdata,channel_offer_htlc,payment_hash,sha256,
82msgdata,channel_offer_htlc,onion_routing_packet,u8,1366
83# Reply; synchronous since IDs have to increment.
84msgtype,channel_offer_htlc_reply,1104
85msgdata,channel_offer_htlc_reply,id,u64,
86# Empty failure message means success.
87msgdata,channel_offer_htlc_reply,len,u16,
88msgdata,channel_offer_htlc_reply,failuremsg,u8,len
89msgdata,channel_offer_htlc_reply,failurestr,wirestring,
90# Main daemon found out the preimage for an HTLC
91#include <bitcoin/preimage.h>
92msgtype,channel_fulfill_htlc,1005
93msgdata,channel_fulfill_htlc,fulfilled_htlc,fulfilled_htlc,
94# Main daemon says HTLC failed
95msgtype,channel_fail_htlc,1006
96msgdata,channel_fail_htlc,failed_htlc,failed_htlc,
97# When we receive funding_locked.
98msgtype,channel_got_funding_locked,1019
99msgdata,channel_got_funding_locked,next_per_commit_point,pubkey,
100# When we send a commitment_signed message, tell master.
101msgtype,channel_sending_commitsig,1020
102msgdata,channel_sending_commitsig,commitnum,u64,
103msgdata,channel_sending_commitsig,fee_states,fee_states,
104# SENT_ADD_COMMIT, SENT_REMOVE_ACK_COMMIT, SENT_ADD_ACK_COMMIT, SENT_REMOVE_COMMIT
105msgdata,channel_sending_commitsig,num_changed,u16,
106msgdata,channel_sending_commitsig,changed,changed_htlc,num_changed
107msgdata,channel_sending_commitsig,commit_sig,bitcoin_signature,
108msgdata,channel_sending_commitsig,num_htlc_sigs,u16,
109msgdata,channel_sending_commitsig,htlc_sigs,secp256k1_ecdsa_signature,num_htlc_sigs
110# Wait for reply, to make sure it's on disk before we send commit.
111msgtype,channel_sending_commitsig_reply,1120
112# When we have a commitment_signed message, tell master to remember.
113msgtype,channel_got_commitsig,1021
114msgdata,channel_got_commitsig,commitnum,u64,
115msgdata,channel_got_commitsig,fee_states,fee_states,
116msgdata,channel_got_commitsig,signature,bitcoin_signature,
117msgdata,channel_got_commitsig,num_htlcs,u16,
118msgdata,channel_got_commitsig,htlc_signature,secp256k1_ecdsa_signature,num_htlcs
119# RCVD_ADD_COMMIT: we're now committed to their new offered HTLCs.
120msgdata,channel_got_commitsig,num_added,u16,
121msgdata,channel_got_commitsig,added,added_htlc,num_added
122# RCVD_REMOVE_COMMIT: we're now no longer committed to these HTLCs.
123msgdata,channel_got_commitsig,num_fulfilled,u16,
124msgdata,channel_got_commitsig,fulfilled,fulfilled_htlc,num_fulfilled
125msgdata,channel_got_commitsig,num_failed,u16,
126msgdata,channel_got_commitsig,failed,failed_htlc,num_failed
127# RCVD_ADD_ACK_COMMIT, RCVD_REMOVE_ACK_COMMIT
128msgdata,channel_got_commitsig,num_changed,u16,
129msgdata,channel_got_commitsig,changed,changed_htlc,num_changed
130msgdata,channel_got_commitsig,tx,bitcoin_tx,
131# Wait for reply, to make sure it's on disk before we send revocation.
132msgtype,channel_got_commitsig_reply,1121
133#include <common/htlc_wire.h>
134msgtype,channel_got_revoke,1022
135msgdata,channel_got_revoke,revokenum,u64,
136msgdata,channel_got_revoke,per_commitment_secret,secret,
137msgdata,channel_got_revoke,next_per_commit_point,pubkey,
138# RCVD_ADD_ACK_REVOCATION, RCVD_REMOVE_ACK_REVOCATION, RCVD_ADD_REVOCATION, RCVD_REMOVE_REVOCATION
139msgdata,channel_got_revoke,fee_states,fee_states,
140msgdata,channel_got_revoke,num_changed,u16,
141msgdata,channel_got_revoke,changed,changed_htlc,num_changed
142# Wait for reply, to make sure it's on disk before we continue
143# (eg. if we sent another commitment_signed, that would implicitly ack).
144msgtype,channel_got_revoke_reply,1122
145# Tell peer to shut down channel.
146msgtype,channel_send_shutdown,1023
147msgdata,channel_send_shutdown,shutdown_len,u16,
148msgdata,channel_send_shutdown,shutdown_scriptpubkey,u8,shutdown_len
149# Peer told us that channel is shutting down
150msgtype,channel_got_shutdown,1024
151msgdata,channel_got_shutdown,scriptpubkey_len,u16,
152msgdata,channel_got_shutdown,scriptpubkey,u8,scriptpubkey_len
153# Shutdown is complete, ready for closing negotiation. + peer_fd & gossip_fd.
154msgtype,channel_shutdown_complete,1025
155msgdata,channel_shutdown_complete,per_peer_state,per_peer_state,
156# Re-enable commit timer.
157msgtype,channel_dev_reenable_commit,1026
158msgtype,channel_dev_reenable_commit_reply,1126,
159msgtype,channel_feerates,1027
160msgdata,channel_feerates,feerate,u32,
161msgdata,channel_feerates,min_feerate,u32,
162msgdata,channel_feerates,max_feerate,u32,
163# master -> channeld: do you have a memleak?
164msgtype,channel_dev_memleak,1033
165msgtype,channel_dev_memleak_reply,1133
166msgdata,channel_dev_memleak_reply,leak,bool,
167# Peer presented proof it was from the future.
168msgtype,channel_fail_fallen_behind,1028
169# This is NULL if option_static_remotekey.
170msgdata,channel_fail_fallen_behind,remote_per_commitment_point,?pubkey,
171# Handle a channel specific feerate base ppm configuration
172msgtype,channel_specific_feerates,1029
173msgdata,channel_specific_feerates,feerate_base,u32,
174msgdata,channel_specific_feerates,feerate_ppm,u32,
175# When we receive announcement_signatures for channel announce
176msgtype,channel_got_announcement,1017
177msgdata,channel_got_announcement,remote_ann_node_sig,secp256k1_ecdsa_signature,
178msgdata,channel_got_announcement,remote_ann_bitcoin_sig,secp256k1_ecdsa_signature,
179# Ask channeld to send a error message. Used in forgetting channel case.
180msgtype,channel_send_error,1008
181msgdata,channel_send_error,reason,wirestring,
182# Tell master channeld has sent the error message.
183msgtype,channel_send_error_reply,1108