core-lightning/lightningd/channel/channel_wire.csv
Rusty Russell 3f65f0f000 lightningd: fix up malformed onion handling.
In the case where we can't decrypt the onion, we can't fail it in the
normal way (which is encrypted using the onion shared secret), we need
to respond with a update_fail_malformed_htlc message.

Moreover, we need to remember this for persistence.  This means that
we really have three conclusions for an HTLC: fulfilled, failed,
malformed.  Fix up the logic everywhere which assumed failed or
fulfilled.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-06-23 09:29:42 +09:30

5.5 KiB

1# Shouldn't happen
2channel_bad_command,0x8000
3# Also shouldn't happen
4channel_hsm_failed,0x8001
5channel_crypto_failed,0x8002
6channel_internal_error,0x8003
7channel_gossip_bad_message,0x8004
8# These are due to peer.
9channel_peer_write_failed,0x8010
10channel_peer_read_failed,0x8011
11channel_peer_bad_message,0x8012
12# Received and sent funding_locked
13channel_normal_operation,1001
14#include <lightningd/cryptomsg.h>
15#include <lightningd/channel_config.h>
16# Begin! (passes gossipd-client fd)
17channel_init,1
18channel_init,,funding_txid,struct sha256_double
19channel_init,,funding_txout,2
20channel_init,,funding_satoshi,8
21channel_init,,our_config,struct channel_config
22channel_init,,their_config,struct channel_config
23channel_init,,first_commit_sig,secp256k1_ecdsa_signature
24channel_init,,crypto_state,struct crypto_state
25channel_init,,remote_fundingkey,33
26channel_init,,revocation_basepoint,33
27channel_init,,payment_basepoint,33
28channel_init,,delayed_payment_basepoint,33
29channel_init,,their_per_commit_point,33
30channel_init,,am_funder,bool
31channel_init,,fee_base,4
32channel_init,,fee_proportional,4
33channel_init,,local_msatoshi,8
34channel_init,,seed,struct privkey
35channel_init,,local_node_id,struct pubkey
36channel_init,,remote_node_id,struct pubkey
37channel_init,,commit_msec,4
38channel_init,,cltv_delta,u16
39channel_init,,last_was_revoke,bool
40channel_init,,num_last_sent_commit,u16
41channel_init,,last_sent_commit,num_last_sent_commit*struct changed_htlc
42channel_init,,commits_sent,u64
43channel_init,,commits_received,u64
44channel_init,,revocations_received,u64
45channel_init,,next_htlc_id,u64
46channel_init,,num_htlcs,u16
47channel_init,,htlcs,num_htlcs*struct added_htlc
48channel_init,,htlc_states,num_htlcs*enum htlc_state
49channel_init,,num_fulfilled,u16
50channel_init,,fulfilled,num_fulfilled*struct fulfilled_htlc
51channel_init,,fulfilled_sides,num_fulfilled*enum side
52channel_init,,num_failed,u16
53channel_init,,failed,num_failed*struct failed_htlc
54channel_init,,failed_sides,num_failed*enum side
55channel_init,,init_peer_pkt_len,u16
56channel_init,,init_peer_pkt,init_peer_pkt_len*u8
57# Tx is deep enough, go!
58channel_funding_locked,2
59channel_funding_locked,,short_channel_id,struct short_channel_id
60# Tell the channel that we may announce the channel's existence
61channel_funding_announce_depth,3
62# Tell channel to offer this htlc
63channel_offer_htlc,4
64channel_offer_htlc,,amount_msat,8
65channel_offer_htlc,,cltv_expiry,4
66channel_offer_htlc,,payment_hash,32
67channel_offer_htlc,,onion_routing_packet,1366*u8
68# Reply; synchronous since IDs have to increment.
69channel_offer_htlc_reply,104
70channel_offer_htlc_reply,,id,8
71# Zero failure code means success.
72channel_offer_htlc_reply,,failure_code,2
73channel_offer_htlc_reply,,failurestrlen,2
74channel_offer_htlc_reply,,failurestr,failurestrlen*u8
75# Main daemon found out the preimage for an htlc
76#include <bitcoin/preimage.h>
77channel_fulfill_htlc,5
78channel_fulfill_htlc,,id,8
79channel_fulfill_htlc,,payment_preimage,struct preimage
80# Main daemon says HTLC failed
81channel_fail_htlc,6
82channel_fail_htlc,,id,8
83# If malformed is non-zero, it's a BADONION code
84channel_fail_htlc,,malformed,u16
85# Otherwise, error_pkt contains failreason.
86channel_fail_htlc,,len,2
87channel_fail_htlc,,error_pkt,len*u8
88# Ping/pong test.
89channel_ping,11
90channel_ping,,num_pong_bytes,u16
91channel_ping,,len,u16
92channel_ping_reply,111
93channel_ping_reply,,totlen,u16
94# Channeld tells the master that the channel has been announced
95channel_announced,12
96# When we receive funding_locked.
97channel_got_funding_locked,19
98channel_got_funding_locked,,next_per_commit_point,struct pubkey
99# When we send a commitment_signed message, tell master.
100channel_sending_commitsig,20
101channel_sending_commitsig,,commitnum,u64
102# SENT_ADD_COMMIT, SENT_REMOVE_ACK_COMMIT, SENT_ADD_ACK_COMMIT, SENT_REMOVE_COMMIT
103channel_sending_commitsig,,num_changed,u16
104channel_sending_commitsig,,changed,num_changed*struct changed_htlc
105# Wait for reply, to make sure it's on disk before we send commit.
106channel_sending_commitsig_reply,120
107# When we have a commitment_signed message, tell master to remember.
108channel_got_commitsig,21
109channel_got_commitsig,,commitnum,u64
110channel_got_commitsig,,signature,secp256k1_ecdsa_signature
111channel_got_commitsig,,num_htlcs,u16
112channel_got_commitsig,,htlc_signature,num_htlcs*secp256k1_ecdsa_signature
113# RCVD_ADD_COMMIT: we're now committed to their new offered HTLCs.
114channel_got_commitsig,,num_added,u16
115channel_got_commitsig,,added,num_added*struct added_htlc
116channel_got_commitsig,,shared_secret,num_added*struct secret
117# RCVD_REMOVE_COMMIT: we're now no longer committed to these HTLCs.
118channel_got_commitsig,,num_fulfilled,u16
119channel_got_commitsig,,fulfilled,num_fulfilled*struct fulfilled_htlc
120channel_got_commitsig,,num_failed,u16
121channel_got_commitsig,,failed,num_failed*struct failed_htlc
122# RCVD_ADD_ACK_COMMIT, RCVD_REMOVE_ACK_COMMIT
123channel_got_commitsig,,num_changed,u16
124channel_got_commitsig,,changed,num_changed*struct changed_htlc
125# Wait for reply, to make sure it's on disk before we send revocation.
126channel_got_commitsig_reply,121
127#include <lightningd/htlc_wire.h>
128channel_got_revoke,22
129channel_got_revoke,,revokenum,u64
130channel_got_revoke,,per_commitment_secret,struct sha256
131channel_got_revoke,,next_per_commit_point,struct pubkey
132# RCVD_ADD_ACK_REVOCATION, RCVD_REMOVE_ACK_REVOCATION, RCVD_ADD_REVOCATION, RCVD_REMOVE_REVOCATION
133channel_got_revoke,,num_changed,u16
134channel_got_revoke,,changed,num_changed*struct changed_htlc
135# Wait for reply, to make sure it's on disk before we continue
136# (eg. if we sent another commitment_signed, that would implicitly ack).
137channel_got_revoke_reply,122