rfc-dual-fund: update to latest spec for dual-funding

- Renamed zerod_channel_ids to temporary_channel_id
- Renamed witness_stack->witnesses
- Renamed witness_element->witness_elements
- open_channel2 now includes second commitment point
- accept_channel2 now includes second commitment point

Current commit on rfc branch 64f7f360b9f3c2664d078e2129cfe83098fc4617

Changelog-EXPERIMENTAL: Protocol: dual-funding spec changed in incompatible ways, won't work with old versions (but maybe soon with Eclair!!)
This commit is contained in:
niftynei 2023-02-02 17:32:35 -06:00 committed by Rusty Russell
parent 3586559fac
commit f465032f6f
4 changed files with 81 additions and 15 deletions

View file

@ -17,8 +17,8 @@ psbt_input_set_final_witness_stack(const tal_t *ctx,
for (size_t i = 0; i < tal_count(elements); i++)
wally_tx_witness_stack_add(in->final_witness,
elements[i]->witness,
tal_bytelen(elements[i]->witness));
elements[i]->witness_data,
tal_bytelen(elements[i]->witness_data));
tal_wally_end(ctx);
}
@ -78,13 +78,13 @@ psbt_to_witness_stacks(const tal_t *ctx,
tal(stacks, struct witness_stack);
/* Convert the wally_tx_witness_stack to
* a witness_stack entry */
stack->witness_element =
stack->witness_elements =
tal_arr(stack, struct witness_element *,
wtx_s->num_items);
for (size_t j = 0; j < tal_count(stack->witness_element); j++) {
stack->witness_element[j] = tal(stack,
for (size_t j = 0; j < tal_count(stack->witness_elements); j++) {
stack->witness_elements[j] = tal(stack,
struct witness_element);
stack->witness_element[j]->witness =
stack->witness_elements[j]->witness_data =
tal_dup_arr(stack, u8,
wtx_s->items[j].witness,
wtx_s->items[j].witness_len,

View file

@ -171,9 +171,10 @@ struct state {
/* Information we need between funding_start and funding_complete */
struct basepoints their_points;
/* hsmd gives us our first per-commitment point, and peer tells us
/* hsmd gives us our first+second per-commitment points, and peer tells us
* theirs */
struct pubkey first_per_commitment_point[NUM_SIDES];
struct pubkey second_per_commitment_point[NUM_SIDES];
struct channel_id channel_id;
u8 channel_flags;
@ -1101,7 +1102,7 @@ static void handle_tx_sigs(struct state *state, const u8 *msg)
tal_hex(msg, msg));
elem = cast_const2(const struct witness_element **,
ws[j++]->witness_element);
ws[j++]->witness_elements);
psbt_finalize_input(tx_state->psbt, in, elem);
}
@ -2231,6 +2232,7 @@ static void accepter_start(struct state *state, const u8 *oc2_msg)
&state->their_points.delayed_payment,
&state->their_points.htlc,
&state->first_per_commitment_point[REMOTE],
&state->second_per_commitment_point[REMOTE],
&state->channel_flags,
&open_tlv))
open_err_fatal(state, "Parsing open_channel2 %s",
@ -2549,6 +2551,7 @@ static void accepter_start(struct state *state, const u8 *oc2_msg)
&state->our_points.delayed_payment,
&state->our_points.htlc,
&state->first_per_commitment_point[LOCAL],
&state->second_per_commitment_point[LOCAL],
a_tlv);
/* Everything's ok. Let's figure out the actual channel_id now */
@ -3004,6 +3007,7 @@ static void opener_start(struct state *state, u8 *msg)
&state->our_points.delayed_payment,
&state->our_points.htlc,
&state->first_per_commitment_point[LOCAL],
&state->second_per_commitment_point[LOCAL],
state->channel_flags,
open_tlv);
@ -3032,6 +3036,7 @@ static void opener_start(struct state *state, u8 *msg)
&state->their_points.delayed_payment,
&state->their_points.htlc,
&state->first_per_commitment_point[REMOTE],
&state->second_per_commitment_point[REMOTE],
&a_tlv))
open_err_fatal(state, "Parsing accept_channel2 %s",
tal_hex(msg, msg));

View file

@ -0,0 +1,59 @@
--- wire/peer_wire.csv 2023-02-02 17:51:50.435463786 -0600
+++ - 2023-02-02 17:51:56.693837258 -0600
@@ -62,13 +63,13 @@
msgdata,tx_signatures,channel_id,channel_id,
msgdata,tx_signatures,txid,sha256,
msgdata,tx_signatures,num_witnesses,u16,
-msgdata,tx_signatures,witness_stack,witness_stack,num_witnesses
+msgdata,tx_signatures,witnesses,witness_stack,num_witnesses
subtype,witness_stack
-subtypedata,witness_stack,num_input_witness,u16,
-subtypedata,witness_stack,witness_element,witness_element,num_input_witness
+subtypedata,witness_stack,num_witness_elements,u16,
+subtypedata,witness_stack,witness_elements,witness_element,num_witness_elements
subtype,witness_element
subtypedata,witness_element,len,u16,
-subtypedata,witness_element,witness,byte,len
+subtypedata,witness_element,witness_data,byte,len
msgtype,tx_init_rbf,72
msgdata,tx_init_rbf,channel_id,channel_id,
msgdata,tx_init_rbf,locktime,u32,
@@ -145,7 +146,7 @@
tlvdata,channel_ready_tlvs,short_channel_id,alias,short_channel_id,
msgtype,open_channel2,64
msgdata,open_channel2,chain_hash,chain_hash,
-msgdata,open_channel2,zerod_channel_id,channel_id,
+msgdata,open_channel2,temporary_channel_id,channel_id,
msgdata,open_channel2,funding_feerate_perkw,u32,
msgdata,open_channel2,commitment_feerate_perkw,u32,
msgdata,open_channel2,funding_satoshis,u64,
@@ -161,19 +162,20 @@
msgdata,open_channel2,delayed_payment_basepoint,point,
msgdata,open_channel2,htlc_basepoint,point,
msgdata,open_channel2,first_per_commitment_point,point,
+msgdata,open_channel2,second_per_commitment_point,point,
msgdata,open_channel2,channel_flags,byte,
msgdata,open_channel2,tlvs,opening_tlvs,
tlvtype,opening_tlvs,upfront_shutdown_script,0
tlvdata,opening_tlvs,upfront_shutdown_script,shutdown_scriptpubkey,byte,...
tlvtype,opening_tlvs,channel_type,1
tlvdata,opening_tlvs,channel_type,type,byte,...
tlvtype,opening_tlvs,request_funds,3
tlvdata,opening_tlvs,request_funds,requested_sats,u64,
tlvdata,opening_tlvs,request_funds,blockheight,u32,
tlvtype,opening_tlvs,require_confirmed_inputs,2
tlvdata,opening_tlvs,require_confirmed_inputs,empty,byte,0
msgtype,accept_channel2,65
-msgdata,accept_channel2,zerod_channel_id,channel_id,
+msgdata,accept_channel2,temporary_channel_id,channel_id,
msgdata,accept_channel2,funding_satoshis,u64,
msgdata,accept_channel2,dust_limit_satoshis,u64,
msgdata,accept_channel2,max_htlc_value_in_flight_msat,u64,
@@ -187,6 +186,7 @@
msgdata,accept_channel2,delayed_payment_basepoint,point,
msgdata,accept_channel2,htlc_basepoint,point,
msgdata,accept_channel2,first_per_commitment_point,point,
+msgdata,accept_channel2,second_per_commitment_point,point,
msgdata,accept_channel2,tlvs,accept_tlvs,
tlvtype,accept_tlvs,upfront_shutdown_script,0
tlvdata,accept_tlvs,upfront_shutdown_script,shutdown_scriptpubkey,byte,...

View file

@ -62,13 +62,13 @@ msgtype,tx_signatures,71
msgdata,tx_signatures,channel_id,channel_id,
msgdata,tx_signatures,txid,sha256,
msgdata,tx_signatures,num_witnesses,u16,
msgdata,tx_signatures,witness_stack,witness_stack,num_witnesses
msgdata,tx_signatures,witnesses,witness_stack,num_witnesses
subtype,witness_stack
subtypedata,witness_stack,num_input_witness,u16,
subtypedata,witness_stack,witness_element,witness_element,num_input_witness
subtypedata,witness_stack,num_witness_elements,u16,
subtypedata,witness_stack,witness_elements,witness_element,num_witness_elements
subtype,witness_element
subtypedata,witness_element,len,u16,
subtypedata,witness_element,witness,byte,len
subtypedata,witness_element,witness_data,byte,len
msgtype,tx_init_rbf,72
msgdata,tx_init_rbf,channel_id,channel_id,
msgdata,tx_init_rbf,locktime,u32,
@ -145,7 +145,7 @@ tlvtype,channel_ready_tlvs,short_channel_id,1
tlvdata,channel_ready_tlvs,short_channel_id,alias,short_channel_id,
msgtype,open_channel2,64
msgdata,open_channel2,chain_hash,chain_hash,
msgdata,open_channel2,zerod_channel_id,channel_id,
msgdata,open_channel2,temporary_channel_id,channel_id,
msgdata,open_channel2,funding_feerate_perkw,u32,
msgdata,open_channel2,commitment_feerate_perkw,u32,
msgdata,open_channel2,funding_satoshis,u64,
@ -161,6 +161,7 @@ msgdata,open_channel2,payment_basepoint,point,
msgdata,open_channel2,delayed_payment_basepoint,point,
msgdata,open_channel2,htlc_basepoint,point,
msgdata,open_channel2,first_per_commitment_point,point,
msgdata,open_channel2,second_per_commitment_point,point,
msgdata,open_channel2,channel_flags,byte,
msgdata,open_channel2,tlvs,opening_tlvs,
tlvtype,opening_tlvs,upfront_shutdown_script,0
@ -172,7 +173,7 @@ tlvdata,opening_tlvs,request_funds,requested_sats,u64,
tlvdata,opening_tlvs,request_funds,blockheight,u32,
tlvtype,opening_tlvs,require_confirmed_inputs,2
msgtype,accept_channel2,65
msgdata,accept_channel2,zerod_channel_id,channel_id,
msgdata,accept_channel2,temporary_channel_id,channel_id,
msgdata,accept_channel2,funding_satoshis,u64,
msgdata,accept_channel2,dust_limit_satoshis,u64,
msgdata,accept_channel2,max_htlc_value_in_flight_msat,u64,
@ -186,6 +187,7 @@ msgdata,accept_channel2,payment_basepoint,point,
msgdata,accept_channel2,delayed_payment_basepoint,point,
msgdata,accept_channel2,htlc_basepoint,point,
msgdata,accept_channel2,first_per_commitment_point,point,
msgdata,accept_channel2,second_per_commitment_point,point,
msgdata,accept_channel2,tlvs,accept_tlvs,
tlvtype,accept_tlvs,upfront_shutdown_script,0
tlvdata,accept_tlvs,upfront_shutdown_script,shutdown_scriptpubkey,byte,...
@ -225,7 +227,7 @@ msgdata,update_add_htlc,payment_hash,sha256,
msgdata,update_add_htlc,cltv_expiry,u32,
msgdata,update_add_htlc,onion_routing_packet,byte,1366
msgdata,update_add_htlc,tlvs,update_add_tlvs,
tlvtype,update_add_tlvs,blinding,2
tlvtype,update_add_tlvs,blinding,0
tlvdata,update_add_tlvs,blinding,blinding,point,
msgtype,update_fulfill_htlc,130
msgdata,update_fulfill_htlc,channel_id,channel_id,

1 msgtype,init,16
62 msgdata,tx_signatures,channel_id,channel_id,
63 msgdata,tx_signatures,txid,sha256,
64 msgdata,tx_signatures,num_witnesses,u16,
65 msgdata,tx_signatures,witness_stack,witness_stack,num_witnesses msgdata,tx_signatures,witnesses,witness_stack,num_witnesses
66 subtype,witness_stack
67 subtypedata,witness_stack,num_input_witness,u16, subtypedata,witness_stack,num_witness_elements,u16,
68 subtypedata,witness_stack,witness_element,witness_element,num_input_witness subtypedata,witness_stack,witness_elements,witness_element,num_witness_elements
69 subtype,witness_element
70 subtypedata,witness_element,len,u16,
71 subtypedata,witness_element,witness,byte,len subtypedata,witness_element,witness_data,byte,len
72 msgtype,tx_init_rbf,72
73 msgdata,tx_init_rbf,channel_id,channel_id,
74 msgdata,tx_init_rbf,locktime,u32,
145 tlvdata,channel_ready_tlvs,short_channel_id,alias,short_channel_id,
146 msgtype,open_channel2,64
147 msgdata,open_channel2,chain_hash,chain_hash,
148 msgdata,open_channel2,zerod_channel_id,channel_id, msgdata,open_channel2,temporary_channel_id,channel_id,
149 msgdata,open_channel2,funding_feerate_perkw,u32,
150 msgdata,open_channel2,commitment_feerate_perkw,u32,
151 msgdata,open_channel2,funding_satoshis,u64,
161 msgdata,open_channel2,delayed_payment_basepoint,point,
162 msgdata,open_channel2,htlc_basepoint,point,
163 msgdata,open_channel2,first_per_commitment_point,point,
164 msgdata,open_channel2,second_per_commitment_point,point,
165 msgdata,open_channel2,channel_flags,byte,
166 msgdata,open_channel2,tlvs,opening_tlvs,
167 tlvtype,opening_tlvs,upfront_shutdown_script,0
173 tlvdata,opening_tlvs,request_funds,blockheight,u32,
174 tlvtype,opening_tlvs,require_confirmed_inputs,2
175 msgtype,accept_channel2,65
176 msgdata,accept_channel2,zerod_channel_id,channel_id, msgdata,accept_channel2,temporary_channel_id,channel_id,
177 msgdata,accept_channel2,funding_satoshis,u64,
178 msgdata,accept_channel2,dust_limit_satoshis,u64,
179 msgdata,accept_channel2,max_htlc_value_in_flight_msat,u64,
187 msgdata,accept_channel2,delayed_payment_basepoint,point,
188 msgdata,accept_channel2,htlc_basepoint,point,
189 msgdata,accept_channel2,first_per_commitment_point,point,
190 msgdata,accept_channel2,second_per_commitment_point,point,
191 msgdata,accept_channel2,tlvs,accept_tlvs,
192 tlvtype,accept_tlvs,upfront_shutdown_script,0
193 tlvdata,accept_tlvs,upfront_shutdown_script,shutdown_scriptpubkey,byte,...
227 msgdata,update_add_htlc,cltv_expiry,u32,
228 msgdata,update_add_htlc,onion_routing_packet,byte,1366
229 msgdata,update_add_htlc,tlvs,update_add_tlvs,
230 tlvtype,update_add_tlvs,blinding,2 tlvtype,update_add_tlvs,blinding,0
231 tlvdata,update_add_tlvs,blinding,blinding,point,
232 msgtype,update_fulfill_htlc,130
233 msgdata,update_fulfill_htlc,channel_id,channel_id,