@@ -324,7 +324,7 @@ will use to _verify_ a new incoming commitment state sent by the remote party.
324
324
In order to force close a channel, the holder of a verification nonce must use
325
325
that same nonce to counter sign the commitment transaction with the other half
326
326
of the musig2 partial signature. Rather than force an implementation to retain
327
- additional signing state (the verification nonce) to avoid holding as "hot"
327
+ additional signing state (the verification nonce) to avoid holding a "hot"
328
328
(fully broadcast able) commitment on disk, we instead recommend a counter based
329
329
approach.
330
330
@@ -366,7 +366,7 @@ reproduced:
366
366
the ASCII string ` taproot-rev-root ` .
367
367
368
368
3 . Given a commitment height/number (` N ` ), the verification nonce to send to
369
- the remote party party can be derive by obtaining the ` Nth ` shachain leaf
369
+ the remote party party can be derived by obtaining the ` Nth ` shachain leaf
370
370
preimage ` k_i ` . The verification nonce to be derived by calling the
371
371
` musig2.NonceGen ` algorithm with the required values, and the ` rand' `
372
372
value set to ` k_i ` .
@@ -481,10 +481,10 @@ The remote output of the commitment transaction uses the `combined_funding_key`
481
481
as the top-level internal key, and then commits to a normal remote script.
482
482
483
483
Anchor outputs use the ` local_delayedpubkey ` and the ` remotepubkey ` of both
484
- parries as the top-level
485
- internal key committing to the script ` 16 CSV ` . Unless active HTLCs exist on
486
- the commitment transaction, if a local or remote output is missing from the
487
- commitment, its corresponding anchor must not be present, either.
484
+ parties as the top-level internal key committing to the script ` 16 CSV ` . Unless
485
+ active HTLCs exist on the commitment transaction, if a local or remote output
486
+ is missing from the commitment, its corresponding anchor must not be present,
487
+ either.
488
488
489
489
All HTLC scripts use the revocation key as the top-level internal key. This
490
490
allows the revocation to be executed without additional on-chain bytes, and
@@ -500,8 +500,8 @@ placed in the `init` message, and the `node_announcement` message.
500
500
501
501
| Bits | Name | Description | Context | Dependencies | Link |
502
502
| -------| ----------------------------------| -----------------------------------------------------------| ----------| -------------------| ---------------------------------------|
503
- | 80/81 | ` option_simple_taproot ` | Node supports simple taproot channels | IN | ` option_channel_type ` + ` option_anchors ` | TODO(roasbeef): link |
504
- | 180/181 | ` option_simple_taproot_staging ` | Node supports simple taproot channels | IN | ` option_channel_type ` + ` option_anchors ` | TODO(roasbeef): link |
503
+ | 80/81 | ` option_simple_taproot ` | Node supports simple taproot channels | IN | ` option_channel_type ` | TODO(roasbeef): link |
504
+ | 180/181 | ` option_simple_taproot_staging ` | Node supports simple taproot channels | IN | ` option_channel_type ` | TODO(roasbeef): link |
505
505
506
506
Note that we allocate _ two_ pairs of feature bits: one the final version of
507
507
this protocol proposal, and the higher bits (+100) for preliminary experimental
@@ -583,7 +583,7 @@ The sending node:
583
583
- MUST specify the ` next_local_nonce ` field.
584
584
- MUST use the ` NonceGen ` algorithm defined in ` bip-musig2 ` to generate
585
585
` next_local_nonce ` to ensure it generates nonces in a safe manner.
586
- - MOST not set the ` announce_channel ` bit.
586
+ - MUST not set the ` announce_channel ` bit.
587
587
588
588
The receiving node MUST fail the channel if:
589
589
@@ -626,9 +626,6 @@ The recipient:
626
626
- MUST reject the channel if ` next_local_nonce ` is absent, or cannot be
627
627
parsed as two compressed secp256k1 points
628
628
629
- - the specified public nonce cannot be parsed as two compressed secp256k1
630
- points
631
-
632
629
#### ` funding_created ` Extensions
633
630
634
631
1 . ` tlv_stream ` : ` funding_created_tlvs `
@@ -755,7 +752,7 @@ The recipient:
755
752
756
753
### Cooperative Closure
757
754
758
- Compared to the base segwit v0 channel type, for simple taproot channels, then
755
+ Compared to the base segwit v0 channel type, for simple taproot channels, the
759
756
co-op close transaction now always signals RBF. In other words, the sequence
760
757
field of the sole input to the cooperative close transaction MUST be
761
758
less-than-or-equal to ` 0xfffffffd ` . This enables a future cooperative closure
@@ -781,7 +778,7 @@ A new TLV field is added to the `shutdown` message:
781
778
1 . ` tlv_stream ` : ` shutdown_tlvs `
782
779
2 . types:
783
780
1 . type: 8 (` shutdown_nonce ` )
784
- 2: data:
781
+ 2 . data:
785
782
* [ ` 66*byte ` :` nonces ` ]
786
783
787
784
Before a signature can be generated for a co-op close transaction, both sides
@@ -812,7 +809,7 @@ message's existing `tlv_stream`:
812
809
2 . types:
813
810
1 . type: 6 (` partial_signature ` )
814
811
2 . data:
815
- * [ ` 32*byte ` : ` partial_signature `
812
+ * [ ` 32*byte ` : ` partial_signature ` ]
816
813
817
814
Both sides ** MUST** provide this new TLV field.
818
815
@@ -877,17 +874,15 @@ sort of fee rate negotiation. The regular segwit v0 channels permit either side
877
874
to accept a prior offer by a peer that it would have accepted in the current
878
875
round. For musig2, as each signature comes with nonce state, the prior offer
879
876
may actually be using distinct nonce state, rendering it unable to be comined
880
- for the final transaction braodcast .
877
+ for the final transaction broadcast .
881
878
882
879
Instead, the responder will simply accept what the initiator proposes. The
883
880
responder can always CPFP after the fact if they require a higher fee rate. The
884
881
initiator is the one that pays fees directly (coming out of their settled
885
- output), so the responder will always have their full funds develiered to them.
882
+ output), so the responder will always have their full funds delivered to them.
886
883
This change ensures that cooperative close always succeeds after a single
887
884
round.
888
885
889
-
890
-
891
886
### Channel Operation
892
887
893
888
` n_a_L ` : Alice's local secret nonce
@@ -1073,9 +1068,9 @@ The new output has the following form:
1073
1068
* ` to_delay_script_root = tapscript_root([to_delay_script, revoke_script]) `
1074
1069
* ` to_delay_script ` is the delay script:
1075
1070
```
1076
- <local_delayedpubkey> OP_CHECKSIG
1077
- <to_self_delay> OP_CHECKSEQUENCEVERIFY OP_DROP
1078
- * `revoke_script` is the delay script:
1071
+ <local_delayedpubkey> OP_CHECKSIGVERIFY
1072
+ <to_self_delay> OP_CHECKSEQUENCEVERIFY
1073
+ * `revoke_script` is the revoke script:
1079
1074
```
1080
1075
<local_delayedpubkey> OP_DROP
1081
1076
<revocation_pubkey> OP_CHECKSIG
@@ -1122,7 +1117,7 @@ to achieve this property, we'll utilize a NUMS point (`simple_taproot_nums`) By
1122
1117
using this point as the internal key, we ensure that the remote party isn't
1123
1118
able to by pass the CSV delay.
1124
1119
1125
- Using a NUMS key has a key benefit: the static internal key allows the remote
1120
+ Using a NUMS key has a key benefit: the static internal key allows the remote
1126
1121
party to scan for their output on chain, which is useful for various recovery
1127
1122
scenarios.
1128
1123
@@ -1135,8 +1130,8 @@ The `to_remote` output has the following form:
1135
1130
* `to_remote_script_root = tapscript_root([to_remote_script])`
1136
1131
* `to_remote_script` is the remote script:
1137
1132
```
1138
- <remotepubkey> OP_CHECKSIG
1139
- 1 OP_CHECKSEQUENCEVERIFY OP_DROP
1133
+ <remotepubkey> OP_CHECKSIGVERIFY
1134
+ 1 OP_CHECKSEQUENCEVERIFY
1140
1135
```
1141
1136
1142
1137
This output can be swept by the remote party with the following witness:
@@ -1204,8 +1199,8 @@ An offered HTLC has the following form:
1204
1199
* `htlc_success`:
1205
1200
```
1206
1201
OP_SIZE 32 OP_EQUALVERIFY OP_HASH160 <RIPEMD160(payment_hash)> OP_EQUALVERIFY
1207
- <remote_htlcpubkey> OP_CHECKSIG
1208
- 1 OP_CHECKSEQUENCEVERIFY OP_DROP
1202
+ <remote_htlcpubkey> OP_CHECKSIGVERIFY
1203
+ 1 OP_CHECKSEQUENCEVERIFY
1209
1204
```
1210
1205
1211
1206
In order to spend a offered HTLC, via either script path, an `inclusion_proof`
@@ -1222,9 +1217,9 @@ Accepted HTLCs inherit a similar format:
1222
1217
* `htlc_script_root = tapscript_root([htlc_timeout, htlc_success])`
1223
1218
* `htlc_timeout`:
1224
1219
```
1225
- <remote_htlcpubkey> OP_CHECKSIG
1226
- 1 OP_CHECKSEQUENCEVERIFY OP_DROP
1227
- <cltv_expiry> OP_CHECKLOCKTIMEVERIFY OP_DROP
1220
+ <remote_htlcpubkey> OP_CHECKSIGVERIFY
1221
+ 1 OP_CHECKSEQUENCEVERIFY OP_VERIFY
1222
+ <cltv_expiry> OP_CHECKLOCKTIMEVERIFY
1228
1223
```
1229
1224
* `htlc_success`:
1230
1225
```
@@ -1276,8 +1271,8 @@ A HTLC-Success transaction has the following structure:
1276
1271
* `htlc_script_root = tapscript_root([htlc_success])`
1277
1272
* `htlc_success`:
1278
1273
```
1279
- <local_delayedpubkey> OP_CHECKSIG
1280
- <to_self_delay> OP_CHECKSEQUENCEVERIFY OP_DROP
1274
+ <local_delayedpubkey> OP_CHECKSIGVERIFY
1275
+ <to_self_delay> OP_CHECKSEQUENCEVERIFY
1281
1276
```
1282
1277
1283
1278
##### HTLC-Timeout Transactions
0 commit comments