mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 14:42:40 +01:00
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:
parent
3586559fac
commit
f465032f6f
4 changed files with 81 additions and 15 deletions
|
@ -17,8 +17,8 @@ psbt_input_set_final_witness_stack(const tal_t *ctx,
|
||||||
|
|
||||||
for (size_t i = 0; i < tal_count(elements); i++)
|
for (size_t i = 0; i < tal_count(elements); i++)
|
||||||
wally_tx_witness_stack_add(in->final_witness,
|
wally_tx_witness_stack_add(in->final_witness,
|
||||||
elements[i]->witness,
|
elements[i]->witness_data,
|
||||||
tal_bytelen(elements[i]->witness));
|
tal_bytelen(elements[i]->witness_data));
|
||||||
tal_wally_end(ctx);
|
tal_wally_end(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,13 +78,13 @@ psbt_to_witness_stacks(const tal_t *ctx,
|
||||||
tal(stacks, struct witness_stack);
|
tal(stacks, struct witness_stack);
|
||||||
/* Convert the wally_tx_witness_stack to
|
/* Convert the wally_tx_witness_stack to
|
||||||
* a witness_stack entry */
|
* a witness_stack entry */
|
||||||
stack->witness_element =
|
stack->witness_elements =
|
||||||
tal_arr(stack, struct witness_element *,
|
tal_arr(stack, struct witness_element *,
|
||||||
wtx_s->num_items);
|
wtx_s->num_items);
|
||||||
for (size_t j = 0; j < tal_count(stack->witness_element); j++) {
|
for (size_t j = 0; j < tal_count(stack->witness_elements); j++) {
|
||||||
stack->witness_element[j] = tal(stack,
|
stack->witness_elements[j] = tal(stack,
|
||||||
struct witness_element);
|
struct witness_element);
|
||||||
stack->witness_element[j]->witness =
|
stack->witness_elements[j]->witness_data =
|
||||||
tal_dup_arr(stack, u8,
|
tal_dup_arr(stack, u8,
|
||||||
wtx_s->items[j].witness,
|
wtx_s->items[j].witness,
|
||||||
wtx_s->items[j].witness_len,
|
wtx_s->items[j].witness_len,
|
||||||
|
|
|
@ -171,9 +171,10 @@ struct state {
|
||||||
/* Information we need between funding_start and funding_complete */
|
/* Information we need between funding_start and funding_complete */
|
||||||
struct basepoints their_points;
|
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 */
|
* theirs */
|
||||||
struct pubkey first_per_commitment_point[NUM_SIDES];
|
struct pubkey first_per_commitment_point[NUM_SIDES];
|
||||||
|
struct pubkey second_per_commitment_point[NUM_SIDES];
|
||||||
|
|
||||||
struct channel_id channel_id;
|
struct channel_id channel_id;
|
||||||
u8 channel_flags;
|
u8 channel_flags;
|
||||||
|
@ -1101,7 +1102,7 @@ static void handle_tx_sigs(struct state *state, const u8 *msg)
|
||||||
tal_hex(msg, msg));
|
tal_hex(msg, msg));
|
||||||
|
|
||||||
elem = cast_const2(const struct witness_element **,
|
elem = cast_const2(const struct witness_element **,
|
||||||
ws[j++]->witness_element);
|
ws[j++]->witness_elements);
|
||||||
psbt_finalize_input(tx_state->psbt, in, elem);
|
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.delayed_payment,
|
||||||
&state->their_points.htlc,
|
&state->their_points.htlc,
|
||||||
&state->first_per_commitment_point[REMOTE],
|
&state->first_per_commitment_point[REMOTE],
|
||||||
|
&state->second_per_commitment_point[REMOTE],
|
||||||
&state->channel_flags,
|
&state->channel_flags,
|
||||||
&open_tlv))
|
&open_tlv))
|
||||||
open_err_fatal(state, "Parsing open_channel2 %s",
|
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.delayed_payment,
|
||||||
&state->our_points.htlc,
|
&state->our_points.htlc,
|
||||||
&state->first_per_commitment_point[LOCAL],
|
&state->first_per_commitment_point[LOCAL],
|
||||||
|
&state->second_per_commitment_point[LOCAL],
|
||||||
a_tlv);
|
a_tlv);
|
||||||
|
|
||||||
/* Everything's ok. Let's figure out the actual channel_id now */
|
/* 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.delayed_payment,
|
||||||
&state->our_points.htlc,
|
&state->our_points.htlc,
|
||||||
&state->first_per_commitment_point[LOCAL],
|
&state->first_per_commitment_point[LOCAL],
|
||||||
|
&state->second_per_commitment_point[LOCAL],
|
||||||
state->channel_flags,
|
state->channel_flags,
|
||||||
open_tlv);
|
open_tlv);
|
||||||
|
|
||||||
|
@ -3032,6 +3036,7 @@ static void opener_start(struct state *state, u8 *msg)
|
||||||
&state->their_points.delayed_payment,
|
&state->their_points.delayed_payment,
|
||||||
&state->their_points.htlc,
|
&state->their_points.htlc,
|
||||||
&state->first_per_commitment_point[REMOTE],
|
&state->first_per_commitment_point[REMOTE],
|
||||||
|
&state->second_per_commitment_point[REMOTE],
|
||||||
&a_tlv))
|
&a_tlv))
|
||||||
open_err_fatal(state, "Parsing accept_channel2 %s",
|
open_err_fatal(state, "Parsing accept_channel2 %s",
|
||||||
tal_hex(msg, msg));
|
tal_hex(msg, msg));
|
||||||
|
|
59
wire/extracted_peer_07_openchannelv2_updates.patch
Normal file
59
wire/extracted_peer_07_openchannelv2_updates.patch
Normal 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,...
|
|
@ -62,13 +62,13 @@ msgtype,tx_signatures,71
|
||||||
msgdata,tx_signatures,channel_id,channel_id,
|
msgdata,tx_signatures,channel_id,channel_id,
|
||||||
msgdata,tx_signatures,txid,sha256,
|
msgdata,tx_signatures,txid,sha256,
|
||||||
msgdata,tx_signatures,num_witnesses,u16,
|
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
|
subtype,witness_stack
|
||||||
subtypedata,witness_stack,num_input_witness,u16,
|
subtypedata,witness_stack,num_witness_elements,u16,
|
||||||
subtypedata,witness_stack,witness_element,witness_element,num_input_witness
|
subtypedata,witness_stack,witness_elements,witness_element,num_witness_elements
|
||||||
subtype,witness_element
|
subtype,witness_element
|
||||||
subtypedata,witness_element,len,u16,
|
subtypedata,witness_element,len,u16,
|
||||||
subtypedata,witness_element,witness,byte,len
|
subtypedata,witness_element,witness_data,byte,len
|
||||||
msgtype,tx_init_rbf,72
|
msgtype,tx_init_rbf,72
|
||||||
msgdata,tx_init_rbf,channel_id,channel_id,
|
msgdata,tx_init_rbf,channel_id,channel_id,
|
||||||
msgdata,tx_init_rbf,locktime,u32,
|
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,
|
tlvdata,channel_ready_tlvs,short_channel_id,alias,short_channel_id,
|
||||||
msgtype,open_channel2,64
|
msgtype,open_channel2,64
|
||||||
msgdata,open_channel2,chain_hash,chain_hash,
|
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,funding_feerate_perkw,u32,
|
||||||
msgdata,open_channel2,commitment_feerate_perkw,u32,
|
msgdata,open_channel2,commitment_feerate_perkw,u32,
|
||||||
msgdata,open_channel2,funding_satoshis,u64,
|
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,delayed_payment_basepoint,point,
|
||||||
msgdata,open_channel2,htlc_basepoint,point,
|
msgdata,open_channel2,htlc_basepoint,point,
|
||||||
msgdata,open_channel2,first_per_commitment_point,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,channel_flags,byte,
|
||||||
msgdata,open_channel2,tlvs,opening_tlvs,
|
msgdata,open_channel2,tlvs,opening_tlvs,
|
||||||
tlvtype,opening_tlvs,upfront_shutdown_script,0
|
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,
|
tlvdata,opening_tlvs,request_funds,blockheight,u32,
|
||||||
tlvtype,opening_tlvs,require_confirmed_inputs,2
|
tlvtype,opening_tlvs,require_confirmed_inputs,2
|
||||||
msgtype,accept_channel2,65
|
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,funding_satoshis,u64,
|
||||||
msgdata,accept_channel2,dust_limit_satoshis,u64,
|
msgdata,accept_channel2,dust_limit_satoshis,u64,
|
||||||
msgdata,accept_channel2,max_htlc_value_in_flight_msat,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,delayed_payment_basepoint,point,
|
||||||
msgdata,accept_channel2,htlc_basepoint,point,
|
msgdata,accept_channel2,htlc_basepoint,point,
|
||||||
msgdata,accept_channel2,first_per_commitment_point,point,
|
msgdata,accept_channel2,first_per_commitment_point,point,
|
||||||
|
msgdata,accept_channel2,second_per_commitment_point,point,
|
||||||
msgdata,accept_channel2,tlvs,accept_tlvs,
|
msgdata,accept_channel2,tlvs,accept_tlvs,
|
||||||
tlvtype,accept_tlvs,upfront_shutdown_script,0
|
tlvtype,accept_tlvs,upfront_shutdown_script,0
|
||||||
tlvdata,accept_tlvs,upfront_shutdown_script,shutdown_scriptpubkey,byte,...
|
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,cltv_expiry,u32,
|
||||||
msgdata,update_add_htlc,onion_routing_packet,byte,1366
|
msgdata,update_add_htlc,onion_routing_packet,byte,1366
|
||||||
msgdata,update_add_htlc,tlvs,update_add_tlvs,
|
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,
|
tlvdata,update_add_tlvs,blinding,blinding,point,
|
||||||
msgtype,update_fulfill_htlc,130
|
msgtype,update_fulfill_htlc,130
|
||||||
msgdata,update_fulfill_htlc,channel_id,channel_id,
|
msgdata,update_fulfill_htlc,channel_id,channel_id,
|
||||||
|
|
|
Loading…
Add table
Reference in a new issue