core-lightning/lightningd/channel/channel_wire.csv
Rusty Russell 9497cbe73b lightningd/channel: tell master about the commit sigs.
There are two ways we can do retransmission on reconnect: re-derive
what we would have sent, or remember it and simply re-send.  The
rederivation is difficult: unwinding state depends on whether we sent
a revoke_and_ack before or after the commitment_signed, and unwinding
a revoke_and_ack would require us to remember HTLCs we would have
normally forgotten at this point.

So we simply tell the master to remember the old signatures for us,
and hand them back in case we need to re-send.

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

5.7 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
105channel_sending_commitsig,,commit_sig,secp256k1_ecdsa_signature
106channel_sending_commitsig,,num_htlc_sigs,u16
107channel_sending_commitsig,,htlc_sigs,num_htlc_sigs*secp256k1_ecdsa_signature
108# Wait for reply, to make sure it's on disk before we send commit.
109channel_sending_commitsig_reply,120
110# When we have a commitment_signed message, tell master to remember.
111channel_got_commitsig,21
112channel_got_commitsig,,commitnum,u64
113channel_got_commitsig,,signature,secp256k1_ecdsa_signature
114channel_got_commitsig,,num_htlcs,u16
115channel_got_commitsig,,htlc_signature,num_htlcs*secp256k1_ecdsa_signature
116# RCVD_ADD_COMMIT: we're now committed to their new offered HTLCs.
117channel_got_commitsig,,num_added,u16
118channel_got_commitsig,,added,num_added*struct added_htlc
119channel_got_commitsig,,shared_secret,num_added*struct secret
120# RCVD_REMOVE_COMMIT: we're now no longer committed to these HTLCs.
121channel_got_commitsig,,num_fulfilled,u16
122channel_got_commitsig,,fulfilled,num_fulfilled*struct fulfilled_htlc
123channel_got_commitsig,,num_failed,u16
124channel_got_commitsig,,failed,num_failed*struct failed_htlc
125# RCVD_ADD_ACK_COMMIT, RCVD_REMOVE_ACK_COMMIT
126channel_got_commitsig,,num_changed,u16
127channel_got_commitsig,,changed,num_changed*struct changed_htlc
128# Wait for reply, to make sure it's on disk before we send revocation.
129channel_got_commitsig_reply,121
130#include <lightningd/htlc_wire.h>
131channel_got_revoke,22
132channel_got_revoke,,revokenum,u64
133channel_got_revoke,,per_commitment_secret,struct sha256
134channel_got_revoke,,next_per_commit_point,struct pubkey
135# RCVD_ADD_ACK_REVOCATION, RCVD_REMOVE_ACK_REVOCATION, RCVD_ADD_REVOCATION, RCVD_REMOVE_REVOCATION
136channel_got_revoke,,num_changed,u16
137channel_got_revoke,,changed,num_changed*struct changed_htlc
138# Wait for reply, to make sure it's on disk before we continue
139# (eg. if we sent another commitment_signed, that would implicitly ack).
140channel_got_revoke_reply,122