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