Skip to content

Commit 48472ea

Browse files
committed
Use official feature bit for option_simple_taproot
Use the official feature bit and name for taproot channels and the corresponding channel types. Activate taproot channels support by default (without support for announcing such channels yet).
1 parent 9cb49ba commit 48472ea

File tree

10 files changed

+58
-32
lines changed

10 files changed

+58
-32
lines changed

docs/release-notes/eclair-vnext.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,28 @@
44

55
## Major changes
66

7+
### Taproot Channels (without announcements)
8+
9+
This release adds support for taproot channels, as specified in [the BOLTs](https://github.com/lightning/bolts/pull/995).
10+
Taproot channels improve privacy and cost less on-chain fees by using musig2 for the channel output.
11+
This release is fully compatible with the `lnd` implementation of taproot channels.
12+
13+
We don't support public taproot channels yet, as the gossip mechanism for this isn't finalized yet.
14+
It is thus only possible to open "private" (unannounced) taproot channels.
15+
You may follow progress on the specification for public taproot channels [here](https://github.com/lightning/bolts/pull/1059).
16+
17+
This feature is active by default. To disable it, add the following to your `eclair.conf`:
18+
19+
```conf
20+
eclair.features.option_simple_taproot = disabled
21+
```
22+
23+
To open a taproot channel with a node that supports the `option_simple_taproot` feature, use the following command:
24+
25+
```sh
26+
$ eclair-cli open --nodeId=<node_id> --fundingSatoshis=<funding_amount> --channelType=simple_taproot_channel --announceChannel=false
27+
```
28+
729
### Remove support for non-anchor channels
830

931
We remove the code used to support legacy channels that don't use anchor outputs or taproot.

eclair-core/src/main/resources/reference.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ eclair {
8888
option_zeroconf = disabled
8989
keysend = disabled
9090
option_simple_close = optional
91+
option_simple_taproot = optional
9192
trampoline_payment_prototype = disabled
9293
async_payment_prototype = disabled
9394
on_the_fly_funding = disabled

eclair-core/src/main/scala/fr/acinq/eclair/Features.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,11 @@ object Features {
312312
val mandatory = 60
313313
}
314314

315+
case object SimpleTaprootChannels extends Feature with InitFeature with NodeFeature with ChannelTypeFeature {
316+
val rfcName = "option_simple_taproot"
317+
val mandatory = 80
318+
}
319+
315320
case object PhoenixZeroReserve extends Feature with InitFeature with ChannelTypeFeature with PermanentChannelFeature {
316321
val rfcName = "phoenix_zero_reserve"
317322
val mandatory = 128
@@ -351,11 +356,6 @@ object Features {
351356
val mandatory = 564
352357
}
353358

354-
case object SimpleTaprootChannelsStaging extends Feature with InitFeature with NodeFeature with ChannelTypeFeature {
355-
val rfcName = "option_simple_taproot_staging"
356-
val mandatory = 180
357-
}
358-
359359
/**
360360
* Activate this feature to provide on-the-fly funding to remote nodes, as specified in bLIP 36: https://github.com/lightning/blips/blob/master/blip-0036.md.
361361
* TODO: add NodeFeature once bLIP is merged.
@@ -399,8 +399,8 @@ object Features {
399399
ZeroConf,
400400
KeySend,
401401
SimpleClose,
402+
SimpleTaprootChannels,
402403
SimpleTaprootChannelsPhoenix,
403-
SimpleTaprootChannelsStaging,
404404
WakeUpNotificationClient,
405405
TrampolinePaymentPrototype,
406406
AsyncPaymentPrototype,
@@ -421,6 +421,7 @@ object Features {
421421
TrampolinePaymentPrototype -> (PaymentSecret :: Nil),
422422
KeySend -> (VariableLengthOnion :: Nil),
423423
SimpleClose -> (ShutdownAnySegwit :: Nil),
424+
SimpleTaprootChannels -> (ChannelType :: SimpleClose :: Nil),
424425
SimpleTaprootChannelsPhoenix -> (ChannelType :: SimpleClose :: Nil),
425426
AsyncPaymentPrototype -> (TrampolinePaymentPrototype :: Nil),
426427
OnTheFlyFunding -> (SplicePrototype :: Nil),

eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ case class NodeParams(nodeKeyManager: NodeKeyManager,
131131
// We use the most likely commitment format, even though there is no guarantee that this is the one that will be used.
132132
val commitmentFormat = if (Features.canUseFeature(localFeatures, remoteFeatures, Features.SimpleTaprootChannelsPhoenix)) {
133133
PhoenixSimpleTaprootChannelCommitmentFormat
134-
} else if (Features.canUseFeature(localFeatures, remoteFeatures, Features.SimpleTaprootChannelsStaging)) {
134+
} else if (Features.canUseFeature(localFeatures, remoteFeatures, Features.SimpleTaprootChannels)) {
135135
ZeroFeeHtlcTxSimpleTaprootChannelCommitmentFormat
136136
} else {
137137
ZeroFeeHtlcTxAnchorOutputsCommitmentFormat

eclair-core/src/main/scala/fr/acinq/eclair/channel/ChannelFeatures.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,14 @@ object ChannelTypes {
9595
override def commitmentFormat: CommitmentFormat = ZeroFeeHtlcTxAnchorOutputsCommitmentFormat
9696
override def toString: String = s"anchor_outputs_zero_fee_htlc_tx${if (scidAlias) "+scid_alias" else ""}${if (zeroConf) "+zeroconf" else ""}"
9797
}
98-
case class SimpleTaprootChannelsStaging(scidAlias: Boolean = false, zeroConf: Boolean = false) extends SupportedChannelType {
98+
case class SimpleTaprootChannel(scidAlias: Boolean = false, zeroConf: Boolean = false) extends SupportedChannelType {
9999
override def features: Set[ChannelTypeFeature] = Set(
100100
if (scidAlias) Some(Features.ScidAlias) else None,
101101
if (zeroConf) Some(Features.ZeroConf) else None,
102-
Some(Features.SimpleTaprootChannelsStaging),
102+
Some(Features.SimpleTaprootChannels),
103103
).flatten
104104
override def commitmentFormat: CommitmentFormat = ZeroFeeHtlcTxSimpleTaprootChannelCommitmentFormat
105-
override def toString: String = s"simple_taproot_channel_staging${if (scidAlias) "+scid_alias" else ""}${if (zeroConf) "+zeroconf" else ""}"
105+
override def toString: String = s"simple_taproot_channel${if (scidAlias) "+scid_alias" else ""}${if (zeroConf) "+zeroconf" else ""}"
106106
}
107107

108108
case class UnsupportedChannelType(featureBits: Features[InitFeature]) extends ChannelType {
@@ -127,10 +127,10 @@ object ChannelTypes {
127127
AnchorOutputsZeroFeeHtlcTx(zeroConf = true),
128128
AnchorOutputsZeroFeeHtlcTx(scidAlias = true),
129129
AnchorOutputsZeroFeeHtlcTx(scidAlias = true, zeroConf = true),
130-
SimpleTaprootChannelsStaging(),
131-
SimpleTaprootChannelsStaging(zeroConf = true),
132-
SimpleTaprootChannelsStaging(scidAlias = true),
133-
SimpleTaprootChannelsStaging(scidAlias = true, zeroConf = true),
130+
SimpleTaprootChannel(),
131+
SimpleTaprootChannel(zeroConf = true),
132+
SimpleTaprootChannel(scidAlias = true),
133+
SimpleTaprootChannel(scidAlias = true, zeroConf = true),
134134
SimpleTaprootChannelsPhoenix,
135135
).map {
136136
channelType => Features(channelType.features.map(_ -> FeatureSupport.Mandatory).toMap) -> channelType
@@ -150,7 +150,9 @@ object ChannelTypes {
150150

151151
/** Returns our preferred channel type for public channels, if supported by our peer. */
152152
def preferredForPublicChannels(localFeatures: Features[InitFeature], remoteFeatures: Features[InitFeature]): Option[SupportedChannelType] = {
153-
if (Features.canUseFeature(localFeatures, remoteFeatures, Features.AnchorOutputsZeroFeeHtlcTx)) {
153+
if (Features.canUseFeature(localFeatures, remoteFeatures, Features.SimpleTaprootChannels)) {
154+
Some(SimpleTaprootChannel(scidAlias = Features.canUseFeature(localFeatures, remoteFeatures, Features.ScidAlias)))
155+
} else if (Features.canUseFeature(localFeatures, remoteFeatures, Features.AnchorOutputsZeroFeeHtlcTx)) {
154156
Some(AnchorOutputsZeroFeeHtlcTx(scidAlias = Features.canUseFeature(localFeatures, remoteFeatures, Features.ScidAlias)))
155157
} else {
156158
None

eclair-core/src/test/scala/fr/acinq/eclair/channel/InteractiveTxBuilderSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ class InteractiveTxBuilderSpec extends TestKitBaseClass with AnyFunSuiteLike wit
480480
val targetFeerate = FeeratePerKw(2500 sat)
481481
val fundingA = 150_000 sat
482482
val utxosA = Seq(80_000 sat, 120_000 sat)
483-
withFixture(ChannelTypes.SimpleTaprootChannelsStaging(), fundingA, utxosA, 0 sat, Nil, targetFeerate, 660 sat, 0, RequireConfirmedInputs(forLocal = false, forRemote = false)) { f =>
483+
withFixture(ChannelTypes.SimpleTaprootChannel(), fundingA, utxosA, 0 sat, Nil, targetFeerate, 660 sat, 0, RequireConfirmedInputs(forLocal = false, forRemote = false)) { f =>
484484
import f._
485485

486486
alice ! Start(alice2bob.ref)
@@ -1997,7 +1997,7 @@ class InteractiveTxBuilderSpec extends TestKitBaseClass with AnyFunSuiteLike wit
19971997
val utxosA = Seq(340_000 sat, 40_000 sat, 35_000 sat)
19981998
val fundingB1 = 80_000 sat
19991999
val utxosB = Seq(290_000 sat, 20_000 sat, 15_000 sat)
2000-
withFixture(ChannelTypes.SimpleTaprootChannelsStaging(), fundingA1, utxosA, fundingB1, utxosB, targetFeerate, 660 sat, 0, RequireConfirmedInputs(forLocal = false, forRemote = false)) { f =>
2000+
withFixture(ChannelTypes.SimpleTaprootChannel(), fundingA1, utxosA, fundingB1, utxosB, targetFeerate, 660 sat, 0, RequireConfirmedInputs(forLocal = false, forRemote = false)) { f =>
20012001
import f._
20022002

20032003
val probe = TestProbe()
@@ -2385,7 +2385,7 @@ class InteractiveTxBuilderSpec extends TestKitBaseClass with AnyFunSuiteLike wit
23852385
}
23862386

23872387
test("invalid tx_signatures (missing shared input signature, taproot)") {
2388-
testTxSignaturesMissingSharedInputSigs(ChannelTypes.SimpleTaprootChannelsStaging())
2388+
testTxSignaturesMissingSharedInputSigs(ChannelTypes.SimpleTaprootChannel())
23892389
}
23902390

23912391
test("invalid commitment index") {

eclair-core/src/test/scala/fr/acinq/eclair/channel/states/ChannelStateTestsHelperMethods.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,8 @@ trait ChannelStateTestsBase extends Assertions with Eventually {
263263
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.DualFunding))(_.updated(Features.DualFunding, FeatureSupport.Optional))
264264
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.SimpleClose))(_.updated(Features.SimpleClose, FeatureSupport.Optional))
265265
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.AnchorOutputsPhoenix))(_.removed(Features.AnchorOutputsZeroFeeHtlcTx).updated(Features.AnchorOutputs, FeatureSupport.Optional))
266-
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaprootPhoenix))(_.removed(Features.SimpleTaprootChannelsStaging).updated(Features.SimpleTaprootChannelsPhoenix, FeatureSupport.Optional).updated(Features.PhoenixZeroReserve, FeatureSupport.Optional))
267-
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaproot))(_.updated(Features.SimpleTaprootChannelsStaging, FeatureSupport.Optional))
266+
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaproot))(_.updated(Features.SimpleTaprootChannels, FeatureSupport.Optional))
267+
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaprootPhoenix))(_.removed(Features.SimpleTaprootChannels).updated(Features.SimpleTaprootChannelsPhoenix, FeatureSupport.Optional).updated(Features.PhoenixZeroReserve, FeatureSupport.Optional))
268268
)
269269
val nodeParamsB1 = nodeParamsB.copy(features = nodeParamsB.features
270270
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.DisableWumbo))(_.removed(Features.Wumbo))
@@ -275,8 +275,8 @@ trait ChannelStateTestsBase extends Assertions with Eventually {
275275
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.SimpleClose))(_.updated(Features.SimpleClose, FeatureSupport.Optional))
276276
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.DisableSplice))(_.removed(Features.SplicePrototype))
277277
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.AnchorOutputsPhoenix))(_.removed(Features.AnchorOutputsZeroFeeHtlcTx).updated(Features.AnchorOutputs, FeatureSupport.Optional))
278-
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaprootPhoenix))(_.removed(Features.SimpleTaprootChannelsStaging).updated(Features.SimpleTaprootChannelsPhoenix, FeatureSupport.Optional).updated(Features.PhoenixZeroReserve, FeatureSupport.Optional))
279-
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaproot))(_.updated(Features.SimpleTaprootChannelsStaging, FeatureSupport.Optional))
278+
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaproot))(_.updated(Features.SimpleTaprootChannels, FeatureSupport.Optional))
279+
.modify(_.activated).usingIf(tags.contains(ChannelStateTestsTags.OptionSimpleTaprootPhoenix))(_.removed(Features.SimpleTaprootChannels).updated(Features.SimpleTaprootChannelsPhoenix, FeatureSupport.Optional).updated(Features.PhoenixZeroReserve, FeatureSupport.Optional))
280280
)
281281
(nodeParamsA1, nodeParamsB1)
282282
}
@@ -287,8 +287,8 @@ trait ChannelStateTestsBase extends Assertions with Eventually {
287287

288288
val scidAlias = canUse(Features.ScidAlias) && !announceChannel // alias feature is incompatible with public channel
289289
val zeroConf = canUse(Features.ZeroConf)
290-
if (canUse(Features.SimpleTaprootChannelsStaging)) {
291-
ChannelTypes.SimpleTaprootChannelsStaging(scidAlias, zeroConf)
290+
if (canUse(Features.SimpleTaprootChannels)) {
291+
ChannelTypes.SimpleTaprootChannel(scidAlias, zeroConf)
292292
} else if (canUse(Features.SimpleTaprootChannelsPhoenix)) {
293293
ChannelTypes.SimpleTaprootChannelsPhoenix
294294
} else if (canUse(Features.AnchorOutputsZeroFeeHtlcTx)) {

eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForOpenChannelStateSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class WaitForOpenChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSui
7878
test("recv OpenChannel (simple taproot channels)", Tag(ChannelStateTestsTags.OptionSimpleTaproot)) { f =>
7979
import f._
8080
val open = alice2bob.expectMsgType[OpenChannel]
81-
assert(open.channelType_opt.contains(ChannelTypes.SimpleTaprootChannelsStaging()))
81+
assert(open.channelType_opt.contains(ChannelTypes.SimpleTaprootChannel()))
8282
alice2bob.forward(bob)
8383
awaitCond(bob.stateName == WAIT_FOR_FUNDING_CREATED)
8484
assert(bob.stateData.asInstanceOf[DATA_WAIT_FOR_FUNDING_CREATED].commitmentFormat == ZeroFeeHtlcTxSimpleTaprootChannelCommitmentFormat)
@@ -88,7 +88,7 @@ class WaitForOpenChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSui
8888
test("recv OpenChannel (simple taproot channels, missing nonce)", Tag(ChannelStateTestsTags.OptionSimpleTaproot)) { f =>
8989
import f._
9090
val open = alice2bob.expectMsgType[OpenChannel]
91-
assert(open.channelType_opt.contains(ChannelTypes.SimpleTaprootChannelsStaging()))
91+
assert(open.channelType_opt.contains(ChannelTypes.SimpleTaprootChannel()))
9292
assert(open.commitNonce_opt.isDefined)
9393
alice2bob.forward(bob, open.copy(tlvStream = open.tlvStream.copy(records = open.tlvStream.records.filterNot(_.isInstanceOf[ChannelTlv.NextLocalNonceTlv]))))
9494
val error = bob2alice.expectMsgType[Error]

eclair-core/src/test/scala/fr/acinq/eclair/wire/protocol/LightningMessageCodecsSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ class LightningMessageCodecsSpec extends AnyFunSuite {
304304
defaultEncoded ++ hex"0000" ++ hex"0107 04400000101000" -> defaultOpen.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.AnchorOutputs(scidAlias = true, zeroConf = true)))),
305305
defaultEncoded ++ hex"0000" ++ hex"0107 04400000401000" -> defaultOpen.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.AnchorOutputsZeroFeeHtlcTx(scidAlias = true, zeroConf = true)))),
306306
// taproot channel type + nonce
307-
defaultEncoded ++ hex"0000" ++ hex"01 17 1000000000000000000000000000000000400000000000" ++ hex"04 42 2062534ccb3be5a8997843f3b6bc530a94cbc60eceb538674ceedd62d8be07f2dfa5df6acf3ded7444268d56925bb2c33afe71a55f4fa88f3985451a681415930f6b" -> defaultOpen.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.SimpleTaprootChannelsStaging(scidAlias = true)), ChannelTlv.NextLocalNonceTlv(nonce)))
307+
defaultEncoded ++ hex"0000" ++ hex"01 0b 0100000000400000000000" ++ hex"04 42 2062534ccb3be5a8997843f3b6bc530a94cbc60eceb538674ceedd62d8be07f2dfa5df6acf3ded7444268d56925bb2c33afe71a55f4fa88f3985451a681415930f6b" -> defaultOpen.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.SimpleTaprootChannel(scidAlias = true)), ChannelTlv.NextLocalNonceTlv(nonce)))
308308
)
309309

310310
for ((encoded, expected) <- testCases) {
@@ -378,7 +378,7 @@ class LightningMessageCodecsSpec extends AnyFunSuite {
378378
defaultEncoded ++ hex"0000" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty))), // empty upfront_shutdown_script
379379
defaultEncoded ++ hex"0000" ++ hex"0100" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.UnsupportedChannelType(Features.empty)))), // empty upfront_shutdown_script with channel type
380380
defaultEncoded ++ hex"0004 01abcdef" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(hex"01abcdef"))), // non-empty upfront_shutdown_script
381-
defaultEncoded ++ hex"0000" ++ hex"01 17 1000000000000000000000000000000000000000000000" ++ hex"04 42 2062534ccb3be5a8997843f3b6bc530a94cbc60eceb538674ceedd62d8be07f2dfa5df6acf3ded7444268d56925bb2c33afe71a55f4fa88f3985451a681415930f6b" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.SimpleTaprootChannelsStaging()), ChannelTlv.NextLocalNonceTlv(nonce))), // empty upfront_shutdown_script with taproot channel type and nonce
381+
defaultEncoded ++ hex"0000" ++ hex"01 0b 0100000000000000000000" ++ hex"04 42 2062534ccb3be5a8997843f3b6bc530a94cbc60eceb538674ceedd62d8be07f2dfa5df6acf3ded7444268d56925bb2c33afe71a55f4fa88f3985451a681415930f6b" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty), ChannelTlv.ChannelTypeTlv(ChannelTypes.SimpleTaprootChannel()), ChannelTlv.NextLocalNonceTlv(nonce))), // empty upfront_shutdown_script with taproot channel type and nonce
382382
defaultEncoded ++ hex"0004 01abcdef" ++ hex"0103401000" -> defaultAccept.copy(tlvStream = TlvStream(ChannelTlv.UpfrontShutdownScriptTlv(hex"01abcdef"), ChannelTlv.ChannelTypeTlv(ChannelTypes.AnchorOutputsZeroFeeHtlcTx()))), // non-empty upfront_shutdown_script with channel type
383383
defaultEncoded ++ hex"0000 0302002a 050102" -> defaultAccept.copy(tlvStream = TlvStream(Set[AcceptChannelTlv](ChannelTlv.UpfrontShutdownScriptTlv(ByteVector.empty)), Set(GenericTlv(UInt64(3), hex"002a"), GenericTlv(UInt64(5), hex"02")))), // empty upfront_shutdown_script + unknown odd tlv records
384384
defaultEncoded ++ hex"0002 1234 0303010203" -> defaultAccept.copy(tlvStream = TlvStream(Set[AcceptChannelTlv](ChannelTlv.UpfrontShutdownScriptTlv(hex"1234")), Set(GenericTlv(UInt64(3), hex"010203")))), // non-empty upfront_shutdown_script + unknown odd tlv records

eclair-node/src/main/scala/fr/acinq/eclair/api/handlers/Channel.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ trait Channel {
3737
ChannelTypes.AnchorOutputsZeroFeeHtlcTx(zeroConf = true),
3838
ChannelTypes.AnchorOutputsZeroFeeHtlcTx(scidAlias = true),
3939
ChannelTypes.AnchorOutputsZeroFeeHtlcTx(scidAlias = true, zeroConf = true),
40-
ChannelTypes.SimpleTaprootChannelsStaging(),
41-
ChannelTypes.SimpleTaprootChannelsStaging(zeroConf = true),
42-
ChannelTypes.SimpleTaprootChannelsStaging(scidAlias = true),
43-
ChannelTypes.SimpleTaprootChannelsStaging(scidAlias = true, zeroConf = true),
40+
ChannelTypes.SimpleTaprootChannel(),
41+
ChannelTypes.SimpleTaprootChannel(zeroConf = true),
42+
ChannelTypes.SimpleTaprootChannel(scidAlias = true),
43+
ChannelTypes.SimpleTaprootChannel(scidAlias = true, zeroConf = true)
4444
).map(ct => ct.toString -> ct).toMap // we use the toString method as name in the api
4545

4646
val open: Route = postRequest("open") { implicit t =>

0 commit comments

Comments
 (0)