From ad276533bb78b792f33f30cbff06e1e3497a26fe Mon Sep 17 00:00:00 2001 From: Thomas HUET Date: Wed, 9 Oct 2024 12:45:11 +0200 Subject: [PATCH] Peer storage Replaces the custom channel data backup with the new peer storage (https://github.com/lightning/bolts/pull/1110) --- .../kotlin/fr/acinq/lightning/Features.kt | 12 +- .../kotlin/fr/acinq/lightning/NodeParams.kt | 3 +- .../acinq/lightning/channel/ChannelCommand.kt | 1 + .../fr/acinq/lightning/channel/Commitments.kt | 3 - .../acinq/lightning/channel/states/Channel.kt | 22 +--- .../acinq/lightning/channel/states/Closing.kt | 4 +- .../states/LegacyWaitForFundingConfirmed.kt | 1 + .../states/LegacyWaitForFundingLocked.kt | 1 + .../lightning/channel/states/Negotiating.kt | 3 +- .../acinq/lightning/channel/states/Normal.kt | 23 ++-- .../acinq/lightning/channel/states/Offline.kt | 4 +- .../acinq/lightning/channel/states/Syncing.kt | 7 ++ .../channel/states/WaitForAcceptChannel.kt | 1 + .../channel/states/WaitForChannelReady.kt | 1 + .../channel/states/WaitForFundingConfirmed.kt | 9 +- .../channel/states/WaitForFundingCreated.kt | 1 + .../channel/states/WaitForFundingSigned.kt | 11 +- .../lightning/channel/states/WaitForInit.kt | 2 +- .../channel/states/WaitForOpenChannel.kt | 1 + .../kotlin/fr/acinq/lightning/io/Peer.kt | 109 ++++++++++-------- .../serialization/v2/ChannelState.kt | 3 +- .../serialization/v3/ChannelState.kt | 3 +- .../serialization/v4/Deserialization.kt | 4 +- .../serialization/v4/Serialization.kt | 2 +- .../fr/acinq/lightning/wire/ChannelTlv.kt | 5 + .../acinq/lightning/wire/InteractiveTxTlv.kt | 1 + .../acinq/lightning/wire/LightningMessages.kt | 85 +++++++------- .../fr/acinq/lightning/channel/TestsHelper.kt | 14 ++- .../channel/states/ClosingTestsCommon.kt | 2 +- .../channel/states/NegotiatingTestsCommon.kt | 11 -- .../channel/states/NormalTestsCommon.kt | 52 +-------- .../channel/states/OfflineTestsCommon.kt | 37 ++---- .../channel/states/ShutdownTestsCommon.kt | 20 +--- .../channel/states/SyncingTestsCommon.kt | 8 +- .../states/WaitForAcceptChannelTestsCommon.kt | 2 +- .../states/WaitForChannelReadyTestsCommon.kt | 6 +- .../WaitForFundingConfirmedTestsCommon.kt | 11 +- .../WaitForFundingCreatedTestsCommon.kt | 6 +- .../states/WaitForFundingSignedTestsCommon.kt | 17 ++- .../fr/acinq/lightning/io/peer/PeerTest.kt | 12 +- .../StateSerializationTestsCommon.kt | 33 ------ .../fr/acinq/lightning/tests/TestConstants.kt | 2 +- .../acinq/lightning/tests/io/peer/builders.kt | 2 +- .../wire/LightningCodecsTestsCommon.kt | 57 +-------- .../nonreg/v2/Closing_0ba41d17/data.json | 5 +- .../nonreg/v2/Closing_0efffae3/data.json | 5 +- .../nonreg/v2/Closing_2fd2a3fa/data.json | 5 +- .../nonreg/v2/Closing_3bb07fb6/data.json | 5 +- .../nonreg/v2/Closing_8f1a524e/data.json | 5 +- .../nonreg/v2/Negotiating_f52b19b8/data.json | 5 +- .../nonreg/v2/Normal_e2253ddd/data.json | 5 +- .../nonreg/v2/Normal_ff4a71b6/data.json | 5 +- .../nonreg/v2/Normal_ffd9f5db/data.json | 5 +- .../nonreg/v2/ShuttingDown_c321b947/data.json | 5 +- .../data.json | 5 +- .../nonreg/v3/Closing_029bf8f3/data.json | 5 +- .../nonreg/v3/Closing_0ba41d17/data.json | 5 +- .../nonreg/v3/Closing_0efffae3/data.json | 5 +- .../nonreg/v3/Closing_ebbd24bc/data.json | 5 +- .../nonreg/v3/Normal_fd10d3cc/data.json | 5 +- .../nonreg/v3/Normal_fe897b64/data.json | 5 +- .../nonreg/v3/Normal_ff4a71b6/data.json | 5 +- .../nonreg/v3/ShuttingDown_ef7081a1/data.json | 5 +- .../data.json | 5 +- 64 files changed, 252 insertions(+), 462 deletions(-) diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/Features.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/Features.kt index 3f834bc8f..df4a493d7 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/Features.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/Features.kt @@ -133,6 +133,13 @@ sealed class Feature { override val scopes: Set get() = setOf(FeatureScope.Init, FeatureScope.Node) } + @Serializable + object ProvideStorage : Feature() { + override val rfcName get() = "option_provide_storage" + override val mandatory get() = 42 + override val scopes: Set get() = setOf(FeatureScope.Init, FeatureScope.Node) + } + @Serializable object ChannelType : Feature() { override val rfcName get() = "option_channel_type" @@ -224,7 +231,7 @@ sealed class Feature { override val scopes: Set get() = setOf(FeatureScope.Init, FeatureScope.Node) } - /** This feature bit should be activated when a node wants to send channel backups to their peers. */ + /** This feature is deprecated but must be kept to allow deserialization of old backups. */ @Serializable object ChannelBackupClient : Feature() { override val rfcName get() = "channel_backup_client" @@ -232,7 +239,7 @@ sealed class Feature { override val scopes: Set get() = setOf(FeatureScope.Init) } - /** This feature bit should be activated when a node stores channel backups for their peers. */ + /** This feature is deprecated but must be kept to allow deserialization of old backups. */ @Serializable object ChannelBackupProvider : Feature() { override val rfcName get() = "channel_backup_provider" @@ -337,6 +344,7 @@ data class Features(val activated: Map, val unknown: Se Feature.ShutdownAnySegwit, Feature.DualFunding, Feature.Quiescence, + Feature.ProvideStorage, Feature.ChannelType, Feature.PaymentMetadata, Feature.TrampolinePayment, diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/NodeParams.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/NodeParams.kt index 94f519965..be0d10965 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/NodeParams.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/NodeParams.kt @@ -158,6 +158,7 @@ data class NodeParams( val paymentRecipientExpiryParams: RecipientCltvExpiryParams, val zeroConfPeers: Set, val liquidityPolicy: MutableStateFlow, + val usePeerStorage: Boolean, ) { val nodePrivateKey get() = keyManager.nodeKeys.nodeKey.privateKey val nodeId get() = keyManager.nodeKeys.nodeKey.publicKey @@ -207,7 +208,6 @@ data class NodeParams( Feature.ExperimentalTrampolinePayment to FeatureSupport.Optional, Feature.ZeroReserveChannels to FeatureSupport.Optional, Feature.WakeUpNotificationClient to FeatureSupport.Optional, - Feature.ChannelBackupClient to FeatureSupport.Optional, Feature.ExperimentalSplice to FeatureSupport.Optional, Feature.OnTheFlyFunding to FeatureSupport.Optional, Feature.FundingFeeCredit to FeatureSupport.Optional, @@ -254,6 +254,7 @@ data class NodeParams( maxAllowedFeeCredit = 0.msat ) ), + usePeerStorage = true, ) /** diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/ChannelCommand.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/ChannelCommand.kt index 951ceb106..b11b71717 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/ChannelCommand.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/ChannelCommand.kt @@ -60,6 +60,7 @@ sealed class ChannelCommand { } data class MessageReceived(val message: LightningMessage) : ChannelCommand() + data object PeerBackupReceived : ChannelCommand() data class WatchReceived(val watch: WatchEvent) : ChannelCommand() sealed interface ForbiddenDuringSplice diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/Commitments.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/Commitments.kt index a094f456c..247dca70b 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/Commitments.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/Commitments.kt @@ -566,7 +566,6 @@ data class Commitments( val payments: Map, // for outgoing htlcs, maps to paymentId val remoteNextCommitInfo: Either, // this one is tricky, it must be kept in sync with Commitment.nextRemoteCommit val remotePerCommitmentSecrets: ShaChain, - val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty ) { init { require(active.isNotEmpty()) { "there must be at least one active commitment" } @@ -794,7 +793,6 @@ data class Commitments( localChanges = changes.localChanges.copy(acked = emptyList()), remoteChanges = changes.remoteChanges.copy(proposed = emptyList(), acked = changes.remoteChanges.acked + changes.remoteChanges.proposed) ), - remoteChannelData = commits.last().channelData // the last message is the most recent ) return Either.Right(Pair(commitments1, revocation)) } @@ -849,7 +847,6 @@ data class Commitments( remoteNextCommitInfo = Either.Right(revocation.nextPerCommitmentPoint), remotePerCommitmentSecrets = remotePerCommitmentSecrets.addHash(revocation.perCommitmentSecret.value, 0xFFFFFFFFFFFFL - remoteCommitIndex), payments = payments1, - remoteChannelData = revocation.channelData ) return Either.Right(Pair(commitments1, actions.toList())) } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Channel.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Channel.kt index 3083829f0..4671a5d7c 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Channel.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Channel.kt @@ -62,28 +62,12 @@ sealed class ChannelState { suspend fun ChannelContext.process(cmd: ChannelCommand): Pair> { return try { processInternal(cmd) - .let { (newState, actions) -> Pair(newState, newState.run { maybeAddBackupToMessages(actions) }) } .let { (newState, actions) -> Pair(newState, actions + onTransition(newState)) } } catch (t: Throwable) { handleLocalError(cmd, t) } } - /** Update outgoing messages to include an encrypted backup when necessary. */ - private fun ChannelContext.maybeAddBackupToMessages(actions: List): List = when { - this@ChannelState is PersistedChannelState && staticParams.nodeParams.features.hasFeature(Feature.ChannelBackupClient) -> actions.map { - when { - it is ChannelAction.Message.Send && it.message is TxSignatures -> it.copy(message = it.message.withChannelData(EncryptedChannelData.from(privateKey, this@ChannelState), logger)) - it is ChannelAction.Message.Send && it.message is CommitSig -> it.copy(message = it.message.withChannelData(EncryptedChannelData.from(privateKey, this@ChannelState), logger)) - it is ChannelAction.Message.Send && it.message is RevokeAndAck -> it.copy(message = it.message.withChannelData(EncryptedChannelData.from(privateKey, this@ChannelState), logger)) - it is ChannelAction.Message.Send && it.message is Shutdown -> it.copy(message = it.message.withChannelData(EncryptedChannelData.from(privateKey, this@ChannelState), logger)) - it is ChannelAction.Message.Send && it.message is ClosingSigned -> it.copy(message = it.message.withChannelData(EncryptedChannelData.from(privateKey, this@ChannelState), logger)) - else -> it - } - } - else -> actions - } - /** Add actions for some transitions */ private fun ChannelContext.onTransition(newState: ChannelState): List { val oldState = when (this@ChannelState) { @@ -301,7 +285,7 @@ sealed class ChannelState { sealed class PersistedChannelState : ChannelState() { abstract val channelId: ByteVector32 - internal fun ChannelContext.createChannelReestablish(): HasEncryptedChannelData = when (val state = this@PersistedChannelState) { + internal fun ChannelContext.createChannelReestablish(): ChannelReestablish = when (val state = this@PersistedChannelState) { is WaitForFundingSigned -> { val myFirstPerCommitmentPoint = keyManager.channelKeys(state.channelParams.localParams.fundingKeyPath).commitmentPoint(0) ChannelReestablish( @@ -311,7 +295,7 @@ sealed class PersistedChannelState : ChannelState() { yourLastCommitmentSecret = PrivateKey(ByteVector32.Zeroes), myCurrentPerCommitmentPoint = myFirstPerCommitmentPoint, TlvStream(ChannelReestablishTlv.NextFunding(state.signingSession.fundingTx.txId)) - ).withChannelData(state.remoteChannelData, logger) + ) } is ChannelStateWithCommitments -> { val yourLastPerCommitmentSecret = state.commitments.remotePerCommitmentSecrets.lastIndex?.let { state.commitments.remotePerCommitmentSecrets.getHash(it) } ?: ByteVector32.Zeroes @@ -329,7 +313,7 @@ sealed class PersistedChannelState : ChannelState() { yourLastCommitmentSecret = PrivateKey(yourLastPerCommitmentSecret), myCurrentPerCommitmentPoint = myCurrentPerCommitmentPoint, tlvStream = tlvs - ).withChannelData(state.commitments.remoteChannelData, logger) + ) } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Closing.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Closing.kt index be378bca1..59bbfc731 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Closing.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Closing.kt @@ -281,9 +281,6 @@ data class Closing( null -> Pair(closing1, listOf()) else -> { logger.info { "channel is now closed" } - if (closingType !is MutualClose) { - logger.debug { "last known remoteChannelData=${commitments.remoteChannelData}" } - } Pair(Closed(closing1), listOf(setClosingStatus(closingType))) } } @@ -375,6 +372,7 @@ data class Closing( is ChannelCommand.Funding -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingConfirmed.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingConfirmed.kt index 9d32ce837..bf7926a00 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingConfirmed.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingConfirmed.kt @@ -80,6 +80,7 @@ data class LegacyWaitForFundingConfirmed( is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> Pair(Offline(this@LegacyWaitForFundingConfirmed), listOf()) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } \ No newline at end of file diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingLocked.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingLocked.kt index d1963c119..2419bb55a 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingLocked.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/LegacyWaitForFundingLocked.kt @@ -74,6 +74,7 @@ data class LegacyWaitForFundingLocked( is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> Pair(Offline(this@LegacyWaitForFundingLocked), listOf()) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } \ No newline at end of file diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Negotiating.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Negotiating.kt index 321f2062a..cce81fcbb 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Negotiating.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Negotiating.kt @@ -89,7 +89,6 @@ data class Negotiating( closingTxProposed.last() + listOf(ClosingTxProposed(closingTx, closingSigned)) ) val nextState = this@Negotiating.copy( - commitments = commitments.copy(remoteChannelData = cmd.message.channelData), closingTxProposed = closingProposed1, bestUnpublishedClosingTx = signedClosingTx ) @@ -127,7 +126,6 @@ data class Negotiating( closingTxProposed.last() + listOf(ClosingTxProposed(closingTx, closingSigned)) ) val nextState = this@Negotiating.copy( - commitments = commitments.copy(remoteChannelData = cmd.message.channelData), closingTxProposed = closingProposed1, bestUnpublishedClosingTx = signedClosingTx ) @@ -179,6 +177,7 @@ data class Negotiating( is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> Pair(Offline(this@Negotiating), listOf()) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Normal.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Normal.kt index ad0e24621..29a13c3ef 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Normal.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Normal.kt @@ -178,7 +178,7 @@ data class Normal( logger.info { "waiting for tx_sigs" } Pair(this@Normal.copy(spliceStatus = spliceStatus.copy(session = signingSession1)), listOf()) } - is InteractiveTxSigningSessionAction.SendTxSigs -> sendSpliceTxSigs(spliceStatus.origins, action, spliceStatus.liquidityPurchase, cmd.message.channelData) + is InteractiveTxSigningSessionAction.SendTxSigs -> sendSpliceTxSigs(spliceStatus.origins, action, spliceStatus.liquidityPurchase) } } ignoreRetransmittedCommitSig(cmd.message) -> { @@ -298,7 +298,7 @@ data class Normal( } is Either.Right -> { // no, let's sign right away - val newState = this@Normal.copy(remoteShutdown = cmd.message, commitments = commitments.copy(remoteChannelData = cmd.message.channelData)) + val newState = this@Normal.copy(remoteShutdown = cmd.message) Pair(newState, listOf(ChannelAction.Message.SendToSelf(ChannelCommand.Commitment.Sign))) } } @@ -308,18 +308,17 @@ data class Normal( val actions = mutableListOf() val localShutdown = this@Normal.localShutdown ?: Shutdown(channelId, commitments.params.localParams.defaultFinalScriptPubKey) if (this@Normal.localShutdown == null) actions.add(ChannelAction.Message.Send(localShutdown)) - val commitments1 = commitments.copy(remoteChannelData = cmd.message.channelData) when { - commitments1.hasNoPendingHtlcsOrFeeUpdate() && paysClosingFees -> { + commitments.hasNoPendingHtlcsOrFeeUpdate() && paysClosingFees -> { val (closingTx, closingSigned) = Helpers.Closing.makeFirstClosingTx( channelKeys(), - commitments1.latest, + commitments.latest, localShutdown.scriptPubKey.toByteArray(), cmd.message.scriptPubKey.toByteArray(), closingFeerates ?: ClosingFeerates(currentOnChainFeerates().mutualCloseFeerate), ) val nextState = Negotiating( - commitments1, + commitments, localShutdown, cmd.message, listOf(listOf(ClosingTxProposed(closingTx, closingSigned))), @@ -329,14 +328,14 @@ data class Normal( actions.addAll(listOf(ChannelAction.Storage.StoreState(nextState), ChannelAction.Message.Send(closingSigned))) Pair(nextState, actions) } - commitments1.hasNoPendingHtlcsOrFeeUpdate() -> { - val nextState = Negotiating(commitments1, localShutdown, cmd.message, listOf(listOf()), null, closingFeerates) + commitments.hasNoPendingHtlcsOrFeeUpdate() -> { + val nextState = Negotiating(commitments, localShutdown, cmd.message, listOf(listOf()), null, closingFeerates) actions.add(ChannelAction.Storage.StoreState(nextState)) Pair(nextState, actions) } else -> { // there are some pending changes, we need to wait for them to be settled (fail/fulfill htlcs and sign fee updates) - val nextState = ShuttingDown(commitments1, localShutdown, cmd.message, closingFeerates) + val nextState = ShuttingDown(commitments, localShutdown, cmd.message, closingFeerates) actions.add(ChannelAction.Storage.StoreState(nextState)) Pair(nextState, actions) } @@ -670,7 +669,7 @@ data class Normal( } is Either.Right -> { val action: InteractiveTxSigningSessionAction.SendTxSigs = res.value - sendSpliceTxSigs(spliceStatus.origins, action, spliceStatus.liquidityPurchase, cmd.message.channelData) + sendSpliceTxSigs(spliceStatus.origins, action, spliceStatus.liquidityPurchase) } } } @@ -844,6 +843,7 @@ data class Normal( is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Init -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } @@ -851,13 +851,12 @@ data class Normal( origins: List, action: InteractiveTxSigningSessionAction.SendTxSigs, liquidityPurchase: LiquidityAds.Purchase?, - remoteChannelData: EncryptedChannelData ): Pair> { logger.info { "sending tx_sigs" } // We watch for confirmation in all cases, to allow pruning outdated commitments when transactions confirm. val fundingMinDepth = Helpers.minDepthForFunding(staticParams.nodeParams, action.fundingTx.fundingParams.fundingAmount) val watchConfirmed = WatchConfirmed(channelId, action.commitment.fundingTxId, action.commitment.commitInput.txOut.publicKeyScript, fundingMinDepth.toLong(), BITCOIN_FUNDING_DEPTHOK) - val commitments = commitments.add(action.commitment).copy(remoteChannelData = remoteChannelData) + val commitments = commitments.add(action.commitment) val nextState = this@Normal.copy(commitments = commitments, spliceStatus = SpliceStatus.None) val actions = buildList { add(ChannelAction.Storage.StoreState(nextState)) diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Offline.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Offline.kt index 10264fb9e..987cced99 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Offline.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Offline.kt @@ -1,7 +1,6 @@ package fr.acinq.lightning.channel.states import fr.acinq.bitcoin.utils.Either -import fr.acinq.lightning.Feature import fr.acinq.lightning.ShortChannelId import fr.acinq.lightning.blockchain.* import fr.acinq.lightning.channel.* @@ -37,7 +36,7 @@ data class Offline(val state: PersistedChannelState) : ChannelState() { } is ChannelStateWithCommitments -> { logger.info { "syncing ${state::class}" } - val sendChannelReestablish = !staticParams.nodeParams.features.hasFeature(Feature.ChannelBackupClient) + val sendChannelReestablish = !staticParams.nodeParams.usePeerStorage val actions = buildList { if (!sendChannelReestablish) { // We wait for them to go first, which lets us restore from the latest backup if we've lost data. @@ -126,6 +125,7 @@ data class Offline(val state: PersistedChannelState) : ChannelState() { is ChannelCommand.Init -> unhandled(cmd) is ChannelCommand.Funding -> unhandled(cmd) is ChannelCommand.Closing -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Syncing.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Syncing.kt index a14f9e471..f3ff06197 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Syncing.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Syncing.kt @@ -20,6 +20,13 @@ data class Syncing(val state: PersistedChannelState, val channelReestablishSent: override suspend fun ChannelContext.processInternal(cmd: ChannelCommand): Pair> { return when (cmd) { + is ChannelCommand.PeerBackupReceived -> + Pair(copy(channelReestablishSent = true), buildList { + if (!channelReestablishSent) { + val channelReestablish = state.run { createChannelReestablish() } + add(ChannelAction.Message.Send(channelReestablish)) + } + }) is ChannelCommand.MessageReceived -> when (cmd.message) { is ChannelReestablish -> { val (nextState, actions) = when (state) { diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannel.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannel.kt index 007e519c0..b8d26f2c8 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannel.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannel.kt @@ -156,6 +156,7 @@ data class WaitForAcceptChannel( is ChannelCommand.WatchReceived -> unhandled(cmd) is ChannelCommand.Funding -> unhandled(cmd) is ChannelCommand.Closing -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReady.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReady.kt index cff67ea29..ccce8596c 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReady.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReady.kt @@ -106,6 +106,7 @@ data class WaitForChannelReady( is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> Pair(Offline(this@WaitForChannelReady), listOf()) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmed.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmed.kt index 7667c4e68..d6feb1d5a 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmed.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmed.kt @@ -60,7 +60,7 @@ data class WaitForFundingConfirmed( } is Either.Right -> { val action: InteractiveTxSigningSessionAction.SendTxSigs = res.value - sendRbfTxSigs(action, cmd.message.channelData) + sendRbfTxSigs(action) } } } @@ -210,7 +210,7 @@ data class WaitForFundingConfirmed( } // No need to store their commit_sig, they will re-send it if we disconnect. InteractiveTxSigningSessionAction.WaitForTxSigs -> Pair(this@WaitForFundingConfirmed.copy(rbfStatus = rbfStatus.copy(session = signingSession1)), listOf()) - is InteractiveTxSigningSessionAction.SendTxSigs -> sendRbfTxSigs(action, cmd.message.channelData) + is InteractiveTxSigningSessionAction.SendTxSigs -> sendRbfTxSigs(action) } } else -> { @@ -299,16 +299,17 @@ data class WaitForFundingConfirmed( } Pair(Offline(this@WaitForFundingConfirmed.copy(rbfStatus = rbfStatus1)), listOf()) } + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } - private fun ChannelContext.sendRbfTxSigs(action: InteractiveTxSigningSessionAction.SendTxSigs, remoteChannelData: EncryptedChannelData): Pair> { + private fun ChannelContext.sendRbfTxSigs(action: InteractiveTxSigningSessionAction.SendTxSigs): Pair> { logger.info { "rbf funding tx created with txId=${action.fundingTx.txId}, ${action.fundingTx.sharedTx.tx.localInputs.size} local inputs, ${action.fundingTx.sharedTx.tx.remoteInputs.size} remote inputs, ${action.fundingTx.sharedTx.tx.localOutputs.size} local outputs and ${action.fundingTx.sharedTx.tx.remoteOutputs.size} remote outputs" } val fundingMinDepth = Helpers.minDepthForFunding(staticParams.nodeParams, action.fundingTx.fundingParams.fundingAmount) logger.info { "will wait for $fundingMinDepth confirmations" } val watchConfirmed = WatchConfirmed(channelId, action.commitment.fundingTxId, action.commitment.commitInput.txOut.publicKeyScript, fundingMinDepth.toLong(), BITCOIN_FUNDING_DEPTHOK) val nextState = WaitForFundingConfirmed( - commitments.add(action.commitment).copy(remoteChannelData = remoteChannelData), + commitments.add(action.commitment), waitingSinceBlock, deferred, RbfStatus.None diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreated.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreated.kt index 535543b39..5c7d0fcd7 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreated.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreated.kt @@ -156,6 +156,7 @@ data class WaitForFundingCreated( replyTo.complete(ChannelFundingResponse.Failure.Disconnected) Pair(Aborted, listOf()) } + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSigned.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSigned.kt index 7e8ed19d9..345c69294 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSigned.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSigned.kt @@ -41,7 +41,6 @@ data class WaitForFundingSigned( val remoteSecondPerCommitmentPoint: PublicKey, val liquidityPurchase: LiquidityAds.Purchase?, val channelOrigin: Origin?, - val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty ) : PersistedChannelState() { override val channelId: ByteVector32 = channelParams.channelId @@ -53,8 +52,8 @@ data class WaitForFundingSigned( when (action) { is InteractiveTxSigningSessionAction.AbortFundingAttempt -> handleLocalError(cmd, action.reason) // No need to store their commit_sig, they will re-send it if we disconnect. - InteractiveTxSigningSessionAction.WaitForTxSigs -> Pair(this@WaitForFundingSigned.copy(signingSession = signingSession1, remoteChannelData = cmd.message.channelData), listOf()) - is InteractiveTxSigningSessionAction.SendTxSigs -> sendTxSigs(action, cmd.message.channelData) + InteractiveTxSigningSessionAction.WaitForTxSigs -> Pair(this@WaitForFundingSigned.copy(signingSession = signingSession1), listOf()) + is InteractiveTxSigningSessionAction.SendTxSigs -> sendTxSigs(action) } } is TxSignatures -> { @@ -65,7 +64,7 @@ data class WaitForFundingSigned( } is Either.Right -> { val action: InteractiveTxSigningSessionAction.SendTxSigs = res.value - sendTxSigs(action, cmd.message.channelData) + sendTxSigs(action) } } } @@ -95,10 +94,11 @@ data class WaitForFundingSigned( is ChannelCommand.Connected -> unhandled(cmd) // We should be able to complete the channel open when reconnecting. is ChannelCommand.Disconnected -> Pair(Offline(this@WaitForFundingSigned), listOf()) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } - private fun ChannelContext.sendTxSigs(action: InteractiveTxSigningSessionAction.SendTxSigs, remoteChannelData: EncryptedChannelData): Pair> { + private fun ChannelContext.sendTxSigs(action: InteractiveTxSigningSessionAction.SendTxSigs): Pair> { logger.info { "funding tx created with txId=${action.fundingTx.txId}, ${action.fundingTx.sharedTx.tx.localInputs.size} local inputs, ${action.fundingTx.sharedTx.tx.remoteInputs.size} remote inputs, ${action.fundingTx.sharedTx.tx.localOutputs.size} local outputs and ${action.fundingTx.sharedTx.tx.remoteOutputs.size} remote outputs" } // We watch for confirmation in all cases, to allow pruning outdated commitments when transactions confirm. val fundingMinDepth = Helpers.minDepthForFunding(staticParams.nodeParams, action.fundingTx.fundingParams.fundingAmount) @@ -111,7 +111,6 @@ data class WaitForFundingSigned( payments = mapOf(), remoteNextCommitInfo = Either.Right(remoteSecondPerCommitmentPoint), remotePerCommitmentSecrets = ShaChain.init, - remoteChannelData = remoteChannelData ) val commonActions = buildList { action.fundingTx.signedTx?.let { add(ChannelAction.Blockchain.PublishTx(it, ChannelAction.Blockchain.PublishTx.Type.FundingTx)) } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForInit.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForInit.kt index a29d5fcbd..00308b8ea 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForInit.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForInit.kt @@ -8,7 +8,6 @@ import fr.acinq.lightning.channel.ChannelAction import fr.acinq.lightning.channel.ChannelCommand import fr.acinq.lightning.channel.Helpers import fr.acinq.lightning.channel.LocalFundingStatus -import fr.acinq.lightning.utils.msat import fr.acinq.lightning.wire.ChannelTlv import fr.acinq.lightning.wire.OpenDualFundedChannel import fr.acinq.lightning.wire.TlvStream @@ -151,6 +150,7 @@ data object WaitForInit : ChannelState() { is ChannelCommand.Closing -> unhandled(cmd) is ChannelCommand.Connected -> unhandled(cmd) is ChannelCommand.Disconnected -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForOpenChannel.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForOpenChannel.kt index 0ff314252..969b4402b 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForOpenChannel.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/WaitForOpenChannel.kt @@ -149,6 +149,7 @@ data class WaitForOpenChannel( is ChannelCommand.WatchReceived -> unhandled(cmd) is ChannelCommand.Funding -> unhandled(cmd) is ChannelCommand.Closing -> unhandled(cmd) + is ChannelCommand.PeerBackupReceived -> unhandled(cmd) } } } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/io/Peer.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/io/Peer.kt index ba7833d6e..9ed03998a 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/io/Peer.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/io/Peer.kt @@ -254,6 +254,16 @@ class Peer( ) ) return state.run { ctx.process(cmd) } + .let { (state1, actions) -> + if (nodeParams.usePeerStorage && + theirInit?.features?.hasFeature(Feature.ProvideStorage) == true && + state1 is PersistedChannelState && + actions.any { it is ChannelAction.Message.Send && it.message is UpdatesChannelData }) { + Pair(state1, actions + ChannelAction.Message.Send(PeerStorageStore(EncryptedChannelData.from(nodeParams.nodePrivateKey, state1)))) + } else { + Pair(state1, actions) + } + } .also { (state1, _) -> if (state1::class != state::class) { ctx.logger.info { "${state.stateName} -> ${state1.stateName}" } @@ -1088,58 +1098,57 @@ class Peer( processActions(msg.temporaryChannelId, peerConnection, actions1 + actions2) } } - is ChannelReestablish -> { - val local: ChannelState? = _channels[msg.channelId] - val backup: DeserializationResult? = msg.channelData.takeIf { !it.isEmpty() }?.let { channelData -> - PersistedChannelState - .from(nodeParams.nodePrivateKey, channelData) - .onFailure { logger.warning(it) { "unreadable backup" } } - .getOrNull() - } - - suspend fun recoverChannel(recovered: PersistedChannelState) { - db.channels.addOrUpdateChannel(recovered) - - val state = WaitForInit - val event1 = ChannelCommand.Init.Restore(recovered) - val (state1, actions1) = state.process(event1) - processActions(msg.channelId, peerConnection, actions1) - - val event2 = ChannelCommand.Connected(ourInit, theirInit!!) - val (state2, actions2) = state1.process(event2) - processActions(msg.channelId, peerConnection, actions2) - - val event3 = ChannelCommand.MessageReceived(msg) - val (state3, actions3) = state2.process(event3) - processActions(msg.channelId, peerConnection, actions3) - _channels = _channels + (msg.channelId to state3) - } - - when { - backup is DeserializationResult.UnknownVersion -> { - logger.warning { "peer sent a reestablish with a backup generated by a more recent of phoenix: version=${backup.version}." } - // In this corner case, we do not want to return an error to the peer, because they will force-close and we will be unable to - // do anything as we can't read the data. Best thing is to not answer, and tell the user to upgrade the app. - logger.error { "need to upgrade your app!" } - nodeParams._nodeEvents.emit(UpgradeRequired) - } - local == null && backup == null -> { - logger.warning { "peer sent a reestablish for a unknown channel with no or undecipherable backup" } - peerConnection?.send(Error(msg.channelId, "unknown channel")) + is PeerStorageRetrieval -> { + if (nodeParams.usePeerStorage) { + val backup: DeserializationResult? = + PersistedChannelState + .from(nodeParams.nodePrivateKey, msg.ecd) + .onFailure { logger.warning(it) { "unreadable backup" } } + .getOrNull() + + suspend fun recoverChannel(recovered: PersistedChannelState): ChannelState { + db.channels.addOrUpdateChannel(recovered) + + val state = WaitForInit + val event1 = ChannelCommand.Init.Restore(recovered) + val (state1, actions1) = state.process(event1) + processActions(recovered.channelId, peerConnection, actions1) + + val event2 = ChannelCommand.Connected(ourInit, theirInit!!) + val (state2, actions2) = state1.process(event2) + processActions(recovered.channelId, peerConnection, actions2) + + return state2 } - local == null && backup is DeserializationResult.Success -> { - logger.warning { "recovering channel from peer backup" } - recoverChannel(backup.state) - } - local is Syncing && local.state is ChannelStateWithCommitments && backup is DeserializationResult.Success && backup.state is ChannelStateWithCommitments && backup.state.commitments.isMoreRecent(local.state.commitments) -> { - logger.warning { "recovering channel from peer backup (it is more recent)" } - recoverChannel(backup.state) - } - local is ChannelState -> { - val (state1, actions1) = local.process(ChannelCommand.MessageReceived(msg)) - processActions(msg.channelId, peerConnection, actions1) - _channels = _channels + (msg.channelId to state1) + + when { + backup is DeserializationResult.UnknownVersion -> { + logger.warning { "peer sent a storage retrieval with a backup generated by a more recent of phoenix: version=${backup.version}." } + // In this corner case, we do not want to return an error to the peer, because they will force-close and we will be unable to + // do anything as we can't read the data. Best thing is to not answer, and tell the user to upgrade the app. + logger.error { "need to upgrade your app!" } + nodeParams._nodeEvents.emit(UpgradeRequired) + } + backup is DeserializationResult.Success -> { + val local: ChannelState? = _channels[backup.state.channelId] + val state = when { + local == null -> { + logger.warning { "recovering channel from peer backup" } + recoverChannel(backup.state) + } + local is Syncing && local.state is ChannelStateWithCommitments && backup.state is ChannelStateWithCommitments && backup.state.commitments.isMoreRecent(local.state.commitments) -> { + logger.warning { "recovering channel from peer backup (it is more recent)" } + recoverChannel(backup.state) + } + else -> local + } + val (state1, actions1) = state.process(ChannelCommand.PeerBackupReceived) + processActions(backup.state.channelId, peerConnection, actions1) + _channels = _channels + (backup.state.channelId to state1) + } } + } else { + logger.warning { "received unwanted peer storage" } } } is HasTemporaryChannelId -> { diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v2/ChannelState.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v2/ChannelState.kt index 1ea499568..bd78c47ad 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v2/ChannelState.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v2/ChannelState.kt @@ -403,7 +403,7 @@ internal data class Commitments( val commitInput: Transactions.InputInfo, val remotePerCommitmentSecrets: ShaChain, val channelId: ByteVector32, - val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty + val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty // Legacy field needed to deserialize old backups ) { fun export() = fr.acinq.lightning.channel.Commitments( fr.acinq.lightning.channel.ChannelParams( @@ -445,7 +445,6 @@ internal data class Commitments( payments, remoteNextCommitInfo.transform({ x -> fr.acinq.lightning.channel.WaitingForRevocation(x.sentAfterLocalCommitIndex) }, { y -> y }), remotePerCommitmentSecrets, - remoteChannelData ) } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v3/ChannelState.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v3/ChannelState.kt index 1dc862ed1..a92f0df93 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v3/ChannelState.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v3/ChannelState.kt @@ -396,7 +396,7 @@ internal data class Commitments( val commitInput: Transactions.InputInfo, val remotePerCommitmentSecrets: ShaChain, val channelId: ByteVector32, - val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty + val remoteChannelData: EncryptedChannelData = EncryptedChannelData.empty // Legacy field needed to deserialize old backups ) { fun export() = fr.acinq.lightning.channel.Commitments( fr.acinq.lightning.channel.ChannelParams( @@ -438,7 +438,6 @@ internal data class Commitments( payments, remoteNextCommitInfo.transform({ x -> fr.acinq.lightning.channel.WaitingForRevocation(x.sentAfterLocalCommitIndex) }, { y -> y }), remotePerCommitmentSecrets, - remoteChannelData ) } diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Deserialization.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Deserialization.kt index 5492af611..e90a6e4fd 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Deserialization.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Deserialization.kt @@ -669,8 +669,8 @@ object Deserialization { }.toMap(), lastIndex = readNullable { readNumber() } ) - val remoteChannelData = EncryptedChannelData(readDelimitedByteArray().toByteVector()) - return Commitments(params, changes, active, inactive, payments, remoteNextCommitInfo, remotePerCommitmentSecrets, remoteChannelData) + readDelimitedByteArray() // ignored legacy remoteChannelData + return Commitments(params, changes, active, inactive, payments, remoteNextCommitInfo, remotePerCommitmentSecrets) } private fun Input.readDirectedHtlc(): DirectedHtlc = when (val discriminator = read()) { diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Serialization.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Serialization.kt index 637fdfc10..ad9bd8a8b 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Serialization.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/serialization/v4/Serialization.kt @@ -610,7 +610,7 @@ object Serialization { } writeNullable(lastIndex) { writeNumber(it) } } - writeDelimited(remoteChannelData.data.toByteArray()) + writeNumber(0) // ignored legacy remoteChannelData } private fun Output.writeDirectedHtlc(htlc: DirectedHtlc) = htlc.run { diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/ChannelTlv.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/ChannelTlv.kt index 227c7c5e5..58f512f47 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/ChannelTlv.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/ChannelTlv.kt @@ -115,6 +115,7 @@ sealed class ChannelReadyTlv : Tlv { } sealed class CommitSigTlv : Tlv { + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : CommitSigTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) @@ -168,6 +169,7 @@ sealed class CommitSigTlv : Tlv { } sealed class RevokeAndAckTlv : Tlv { + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : RevokeAndAckTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) @@ -190,6 +192,7 @@ sealed class ChannelReestablishTlv : Tlv { } } + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : ChannelReestablishTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) @@ -202,6 +205,7 @@ sealed class ChannelReestablishTlv : Tlv { } sealed class ShutdownTlv : Tlv { + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : ShutdownTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) @@ -228,6 +232,7 @@ sealed class ClosingSignedTlv : Tlv { } } + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : ClosingSignedTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/InteractiveTxTlv.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/InteractiveTxTlv.kt index b3c2e6f68..daff84c51 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/InteractiveTxTlv.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/InteractiveTxTlv.kt @@ -183,6 +183,7 @@ sealed class TxSignaturesTlv : Tlv { } } + // Legacy TLV needed to deserialize old backups data class ChannelData(val ecb: EncryptedChannelData) : TxSignaturesTlv() { override val tag: Long get() = ChannelData.tag override fun write(out: Output) = LightningCodecs.writeBytes(ecb.data, out) diff --git a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/LightningMessages.kt b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/LightningMessages.kt index 608e0715e..17b0ac172 100644 --- a/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/LightningMessages.kt +++ b/modules/core/src/commonMain/kotlin/fr/acinq/lightning/wire/LightningMessages.kt @@ -95,6 +95,8 @@ interface LightningMessage { SpliceInit.type -> SpliceInit.read(stream) SpliceAck.type -> SpliceAck.read(stream) SpliceLocked.type -> SpliceLocked.read(stream) + PeerStorageStore.type -> PeerStorageStore.read(stream) + PeerStorageRetrieval.type -> PeerStorageRetrieval.read(stream) else -> UnknownMessage(code.toLong()) } } @@ -167,25 +169,7 @@ data class EncryptedChannelData(val data: ByteVector) { } } -interface HasEncryptedChannelData : HasChannelId { - val channelData: EncryptedChannelData - fun withNonEmptyChannelData(ecd: EncryptedChannelData): HasEncryptedChannelData - fun withChannelData(data: ByteVector, logger: MDCLogger? = null): HasEncryptedChannelData = withChannelData(EncryptedChannelData(data), logger) - fun withChannelData(ecd: EncryptedChannelData, logger: MDCLogger? = null): HasEncryptedChannelData { - // The maximum size for lightning messages is 65535 bytes, so we only include a channel backup when we have enough space available. - // Our peer needs to be able to send the backup back in their channel_reestablish message, and we don't know the size of that message. - // We use an upper bound of 60000 bytes, hoping that it will be enough to make it work in all cases. - val sizeWithoutBackup = write().size - return when { - ecd.isEmpty() -> this - ecd.data.size() + sizeWithoutBackup <= 60_000 -> withNonEmptyChannelData(ecd) - else -> { - logger?.warning { "c:${this.channelId} could not include encrypted backup in ${this::class.simpleName}: too large (${ecd.data.size()} bytes)" } - this - } - } - } -} +interface UpdatesChannelData : HasChannelId interface ChannelMessage @@ -491,7 +475,7 @@ data class TxSignatures( val txId: TxId, val witnesses: List, val tlvs: TlvStream = TlvStream.empty() -) : InteractiveTxMessage(), HasChannelId, HasEncryptedChannelData { +) : InteractiveTxMessage(), HasChannelId, UpdatesChannelData { constructor( channelId: ByteVector32, tx: Transaction, @@ -524,9 +508,6 @@ data class TxSignatures( val swapInUserPartialSigs: List = tlvs.get()?.psigs ?: listOf() val swapInServerPartialSigs: List = tlvs.get()?.psigs ?: listOf() - override val channelData: EncryptedChannelData get() = tlvs.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): TxSignatures = copy(tlvs = tlvs.addOrUpdate(TxSignaturesTlv.ChannelData(ecd))) - override fun write(out: Output) { LightningCodecs.writeBytes(channelId.toByteArray(), out) // Note that we encode the tx_hash instead of the tx_id to be consistent with other lightning messages. @@ -1223,12 +1204,9 @@ data class CommitSig( val signature: ByteVector64, val htlcSignatures: List, val tlvStream: TlvStream = TlvStream.empty() -) : HtlcMessage, HasChannelId, HasEncryptedChannelData { +) : HtlcMessage, HasChannelId, UpdatesChannelData { override val type: Long get() = CommitSig.type - override val channelData: EncryptedChannelData get() = tlvStream.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): CommitSig = copy(tlvStream = tlvStream.addOrUpdate(CommitSigTlv.ChannelData(ecd))) - val alternativeFeerateSigs: List = tlvStream.get()?.sigs ?: listOf() val batchSize: Int = tlvStream.get()?.size ?: 1 @@ -1268,12 +1246,9 @@ data class RevokeAndAck( val perCommitmentSecret: PrivateKey, val nextPerCommitmentPoint: PublicKey, val tlvStream: TlvStream = TlvStream.empty() -) : HtlcMessage, HasChannelId, HasEncryptedChannelData { +) : HtlcMessage, HasChannelId, UpdatesChannelData { override val type: Long get() = RevokeAndAck.type - override val channelData: EncryptedChannelData get() = tlvStream.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): RevokeAndAck = copy(tlvStream = tlvStream.addOrUpdate(RevokeAndAckTlv.ChannelData(ecd))) - override fun write(out: Output) { LightningCodecs.writeBytes(channelId, out) LightningCodecs.writeBytes(perCommitmentSecret.value, out) @@ -1328,12 +1303,10 @@ data class ChannelReestablish( val yourLastCommitmentSecret: PrivateKey, val myCurrentPerCommitmentPoint: PublicKey, val tlvStream: TlvStream = TlvStream.empty() -) : HasChannelId, HasEncryptedChannelData { +) : HasChannelId { override val type: Long get() = ChannelReestablish.type val nextFundingTxId: TxId? = tlvStream.get()?.txId - override val channelData: EncryptedChannelData get() = tlvStream.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): ChannelReestablish = copy(tlvStream = tlvStream.addOrUpdate(ChannelReestablishTlv.ChannelData(ecd))) override fun write(out: Output) { LightningCodecs.writeBytes(channelId, out) @@ -1545,12 +1518,9 @@ data class Shutdown( override val channelId: ByteVector32, val scriptPubKey: ByteVector, val tlvStream: TlvStream = TlvStream.empty() -) : ChannelMessage, HasChannelId, HasEncryptedChannelData, ForbiddenMessageDuringSplice { +) : ChannelMessage, HasChannelId, UpdatesChannelData, ForbiddenMessageDuringSplice { override val type: Long get() = Shutdown.type - override val channelData: EncryptedChannelData get() = tlvStream.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): Shutdown = copy(tlvStream = tlvStream.addOrUpdate(ShutdownTlv.ChannelData(ecd))) - override fun write(out: Output) { LightningCodecs.writeBytes(channelId, out) LightningCodecs.writeU16(scriptPubKey.size(), out) @@ -1579,12 +1549,9 @@ data class ClosingSigned( val feeSatoshis: Satoshi, val signature: ByteVector64, val tlvStream: TlvStream = TlvStream.empty() -) : ChannelMessage, HasChannelId, HasEncryptedChannelData { +) : ChannelMessage, HasChannelId, UpdatesChannelData { override val type: Long get() = ClosingSigned.type - override val channelData: EncryptedChannelData get() = tlvStream.get()?.ecb ?: EncryptedChannelData.empty - override fun withNonEmptyChannelData(ecd: EncryptedChannelData): ClosingSigned = copy(tlvStream = tlvStream.addOrUpdate(ClosingSignedTlv.ChannelData(ecd))) - override fun write(out: Output) { LightningCodecs.writeBytes(channelId, out) LightningCodecs.writeU64(feeSatoshis.toLong(), out) @@ -1945,6 +1912,40 @@ data class RecommendedFeerates( } } +data class PeerStorageStore(val ecd: EncryptedChannelData) : LightningMessage { + override val type: Long get() = PeerStorageStore.type + + override fun write(out: Output) { + LightningCodecs.writeU16(ecd.data.size(), out) + LightningCodecs.writeBytes(ecd.data, out) + } + + companion object : LightningMessageReader { + const val type: Long = 7 + + override fun read(input: Input): PeerStorageStore { + return PeerStorageStore(EncryptedChannelData(LightningCodecs.bytes(input, LightningCodecs.u16(input)).toByteVector())) + } + } +} + +data class PeerStorageRetrieval(val ecd: EncryptedChannelData) : LightningMessage { + override val type: Long get() = PeerStorageRetrieval.type + + override fun write(out: Output) { + LightningCodecs.writeU16(ecd.data.size(), out) + LightningCodecs.writeBytes(ecd.data, out) + } + + companion object : LightningMessageReader { + const val type: Long = 9 + + override fun read(input: Input): PeerStorageRetrieval { + return PeerStorageRetrieval(EncryptedChannelData(LightningCodecs.bytes(input, LightningCodecs.u16(input)).toByteVector())) + } + } +} + data class UnknownMessage(override val type: Long) : LightningMessage { override fun write(out: Output) = TODO("Serialization of unknown messages is not implemented") } \ No newline at end of file diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/TestsHelper.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/TestsHelper.kt index a962506bd..1a9a90b81 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/TestsHelper.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/TestsHelper.kt @@ -144,6 +144,8 @@ object TestsHelper { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features, bobFeatures: Features = TestConstants.Bob.nodeParams.features, + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -153,12 +155,12 @@ object TestsHelper { ): Triple, LNChannel, OpenDualFundedChannel> { val (aliceNodeParams, bobNodeParams) = when (zeroConf) { true -> Pair( - TestConstants.Alice.nodeParams.copy(features = aliceFeatures, zeroConfPeers = setOf(TestConstants.Bob.nodeParams.nodeId)), - TestConstants.Bob.nodeParams.copy(features = bobFeatures, zeroConfPeers = setOf(TestConstants.Alice.nodeParams.nodeId)) + TestConstants.Alice.nodeParams.copy(features = aliceFeatures, zeroConfPeers = setOf(TestConstants.Bob.nodeParams.nodeId), usePeerStorage = aliceUsePeerStorage), + TestConstants.Bob.nodeParams.copy(features = bobFeatures, zeroConfPeers = setOf(TestConstants.Alice.nodeParams.nodeId), usePeerStorage = bobUsePeerStorage) ) false -> Pair( - TestConstants.Alice.nodeParams.copy(features = aliceFeatures), - TestConstants.Bob.nodeParams.copy(features = bobFeatures) + TestConstants.Alice.nodeParams.copy(features = aliceFeatures, usePeerStorage = aliceUsePeerStorage), + TestConstants.Bob.nodeParams.copy(features = bobFeatures, usePeerStorage = bobUsePeerStorage) ) } val alice = LNChannel( @@ -230,6 +232,8 @@ object TestsHelper { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features.initFeatures(), bobFeatures: Features = TestConstants.Bob.nodeParams.features.initFeatures(), + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -240,6 +244,8 @@ object TestsHelper { channelType, aliceFeatures, bobFeatures, + aliceUsePeerStorage, + bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ClosingTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ClosingTestsCommon.kt index 08c3e527d..769d72dcc 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ClosingTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ClosingTestsCommon.kt @@ -1176,7 +1176,7 @@ class ClosingTestsCommon : LightningTestSuite() { @Test fun `recv BITCOIN_TX_CONFIRMED -- future remote commit`() { - val (alice0, bob0) = reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = reachNormal(bobUsePeerStorage = false) val (_, bobDisconnected) = run { // This HTLC will be fulfilled. val (nodes1, preimage, htlc) = addHtlc(25_000_000.msat, alice0, bob0) diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NegotiatingTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NegotiatingTestsCommon.kt index c1226aaf8..48c064443 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NegotiatingTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NegotiatingTestsCommon.kt @@ -376,17 +376,6 @@ class NegotiatingTestsCommon : LightningTestSuite() { actions.findPublishTxs().contains(bob.commitments.latest.localCommit.publishableTxs.commitTx.tx) } - @Test - fun `recv ClosingSigned with encrypted channel data`() { - val (alice, bob, aliceCloseSig) = init() - assertTrue(alice.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupProvider)) - assertTrue(bob.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - assertTrue(aliceCloseSig.channelData.isEmpty()) - val (_, actions1) = bob.process(ChannelCommand.MessageReceived(aliceCloseSig)) - val bobCloseSig = actions1.hasOutgoingMessage() - assertFalse(bobCloseSig.channelData.isEmpty()) - } - @Test fun `recv BITCOIN_FUNDING_SPENT -- counterparty's mutual close`() { // NB: we're not the initiator here diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NormalTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NormalTestsCommon.kt index bce65898d..94bc08559 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NormalTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/NormalTestsCommon.kt @@ -724,35 +724,15 @@ class NormalTestsCommon : LightningTestSuite() { actions2.hasOutgoingMessage() } - @Test - fun `recv ChannelCommand_Sign -- channel backup + non-initiator`() { - val (alice, bob) = reachNormal() - assertTrue(alice.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupProvider)) - assertTrue(bob.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - val (_, cmdAdd) = makeCmdAdd(50_000_000.msat, alice.staticParams.nodeParams.nodeId, alice.currentBlockHeight.toLong()) - val (bob1, actions) = bob.process(cmdAdd) - val add = actions.findOutgoingMessage() - val (alice1, _) = alice.process(ChannelCommand.MessageReceived(add)) - assertIs>(alice1) - assertTrue { alice1.state.commitments.changes.remoteChanges.proposed.contains(add) } - val (bob2, actions2) = bob1.process(ChannelCommand.Commitment.Sign) - val commitSig = actions2.findOutgoingMessage() - assertIs>(bob2) - val blob = EncryptedChannelData.from(bob.staticParams.nodeParams.nodePrivateKey, bob2.state) - assertEquals(blob, commitSig.channelData) - } - @Test fun `recv CommitSig -- one htlc received`() { - val (alice0, bob0) = reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = reachNormal() val (nodes0, _, htlc) = addHtlc(50_000_000.msat, alice0, bob0) val (alice1, bob1) = nodes0 assertIs>(bob1) val (_, bob2) = signAndRevack(alice1, bob1) - val (bob3, actions3) = bob2.process(ChannelCommand.Commitment.Sign) - val commitSig = actions3.findOutgoingMessage() - assertTrue(commitSig.channelData.isEmpty()) + val (bob3, _) = bob2.process(ChannelCommand.Commitment.Sign) assertIs>(bob3) assertTrue(bob3.commitments.latest.localCommit.spec.htlcs.incomings().any { it.id == htlc.id }) assertEquals(1, bob3.commitments.latest.localCommit.publishableTxs.htlcTxsAndSigs.size) @@ -986,34 +966,9 @@ class NormalTestsCommon : LightningTestSuite() { } } - @Test - fun `recv RevokeAndAck -- channel backup + non-initiator`() { - val (alice, bob) = reachNormal() - assertTrue(alice.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupProvider)) - assertTrue(bob.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - val (_, cmdAdd) = makeCmdAdd(50_000_000.msat, alice.staticParams.nodeParams.nodeId, alice.currentBlockHeight.toLong()) - val (bob1, actions) = bob.process(cmdAdd) - val add = actions.findOutgoingMessage() - val (alice1, _) = alice.process(ChannelCommand.MessageReceived(add)) - assertIs>(alice1) - assertTrue(alice1.commitments.changes.remoteChanges.proposed.contains(add)) - val (bob2, actions2) = bob1.process(ChannelCommand.Commitment.Sign) - val commitSig = actions2.findOutgoingMessage() - val (alice2, actions3) = alice1.process(ChannelCommand.MessageReceived(commitSig)) - val revack = actions3.findOutgoingMessage() - val (bob3, _) = bob2.process(ChannelCommand.MessageReceived(revack)) - val (_, actions4) = alice2.process(ChannelCommand.Commitment.Sign) - val commitSig1 = actions4.findOutgoingMessage() - val (bob4, actions5) = bob3.process(ChannelCommand.MessageReceived(commitSig1)) - val revack1 = actions5.findOutgoingMessage() - assertIs>(bob4) - val blob = EncryptedChannelData.from(bob4.staticParams.nodeParams.nodePrivateKey, bob4.state) - assertEquals(blob, revack1.channelData) - } - @Test fun `recv RevokeAndAck -- one htlc sent`() { - val (alice0, bob0) = reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = reachNormal() val (alice1, bob1) = addHtlc(50_000_000.msat, alice0, bob0).first val (alice2, actionsAlice2) = alice1.process(ChannelCommand.Commitment.Sign) @@ -1022,7 +977,6 @@ class NormalTestsCommon : LightningTestSuite() { val commitSig = actionsAlice2.findOutgoingMessage() val (_, actionsBob2) = bob1.process(ChannelCommand.MessageReceived(commitSig)) val revokeAndAck = actionsBob2.findOutgoingMessage() - assertTrue(revokeAndAck.channelData.isEmpty()) val (alice3, _) = alice2.process(ChannelCommand.MessageReceived(revokeAndAck)) assertIs>(alice3) diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/OfflineTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/OfflineTestsCommon.kt index 9761b524c..a21b1c54f 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/OfflineTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/OfflineTestsCommon.kt @@ -22,7 +22,7 @@ class OfflineTestsCommon : LightningTestSuite() { val (alice, aliceCommitSig, bob, _) = WaitForFundingSignedTestsCommon.init( ChannelType.SupportedChannelType.AnchorOutputsZeroReserve, zeroConf = true, - bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient).initFeatures() + bobUsePeerStorage = false, ) val (bob1, actionsBob1) = bob.process(ChannelCommand.MessageReceived(aliceCommitSig)) assertIs(bob1.state) @@ -50,7 +50,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `handle disconnect - connect events -- no messages sent yet`() { - val (alice, bob) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient).initFeatures()) + val (alice, bob) = TestsHelper.reachNormal(bobUsePeerStorage = false) val (alice1, bob1) = disconnect(alice, bob) val localInit = Init(alice.commitments.params.localParams.features.initFeatures()) @@ -92,7 +92,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `re-send update and sig after first commitment`() { val (alice0, bob0) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val cmdAdd = ChannelCommand.Htlc.Add(1_000_000.msat, ByteVector32.Zeroes, CltvExpiryDelta(144).toCltvExpiry(alice0.currentBlockHeight.toLong()), TestConstants.emptyOnionPacket, UUID.randomUUID()) val (alice1, actions1) = alice0.process(cmdAdd) val add = actions1.hasOutgoingMessage() @@ -160,7 +160,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `re-send lost revocation`() { val (alice0, bob0) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val cmdAdd = ChannelCommand.Htlc.Add(1_000_000.msat, ByteVector32.Zeroes, CltvExpiryDelta(144).toCltvExpiry(alice0.currentBlockHeight.toLong()), TestConstants.emptyOnionPacket, UUID.randomUUID()) val (alice1, actionsAlice1) = alice0.process(cmdAdd) val add = actionsAlice1.hasOutgoingMessage() @@ -224,7 +224,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `resume htlc settlement`() { val (alice0, bob0, revB) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val (nodes1, r1, htlc1) = TestsHelper.addHtlc(15_000_000.msat, bob0, alice0) val (bob1, alice1) = TestsHelper.crossSign(nodes1.first, nodes1.second) val (bob2, alice2) = TestsHelper.fulfillHtlc(htlc1.id, r1, bob1, alice1) @@ -283,7 +283,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `discover that we have a revoked commitment`() { val (alice, aliceOld, bob) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val (nodes1, r1, htlc1) = TestsHelper.addHtlc(250_000_000.msat, alice0, bob0) val (alice1, bob1) = TestsHelper.crossSign(nodes1.first, nodes1.second) val (nodes2, r2, htlc2) = TestsHelper.addHtlc(100_000_000.msat, alice1, bob1) @@ -349,7 +349,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `counterparty lies about having a more recent commitment and publishes current commitment`() { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) // The current state contains a pending htlc. val (alice1, bob1) = run { val (aliceTmp, bobTmp) = TestsHelper.addHtlc(250_000_000.msat, alice0, bob0).first @@ -401,7 +401,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `counterparty lies about having a more recent commitment and publishes revoked commitment`() { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) // We sign a new commitment to make sure the first one is revoked. val bobRevokedCommitTx = bob0.commitments.latest.localCommit.publishableTxs.commitTx.tx val (alice1, bob1) = run { @@ -455,7 +455,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `reprocess pending incoming htlcs after disconnection or wallet restart`() { val (alice, bob, htlcs) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val (aliceId, bobId) = Pair(alice0.staticParams.nodeParams.nodeId, bob0.staticParams.nodeParams.nodeId) val currentBlockHeight = alice0.currentBlockHeight.toLong() // We add some htlcs Alice ---> Bob @@ -512,7 +512,7 @@ class OfflineTestsCommon : LightningTestSuite() { @Test fun `reprocess pending incoming htlcs after disconnection or wallet restart -- htlc settlement signed by us`() { val (alice, bob, htlcs) = run { - val (alice0, bob0) = TestsHelper.reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = TestsHelper.reachNormal(bobUsePeerStorage = false) val (aliceId, bobId) = Pair(alice0.staticParams.nodeParams.nodeId, bob0.staticParams.nodeParams.nodeId) val currentBlockHeight = alice0.currentBlockHeight.toLong() val preimage = randomBytes32() @@ -555,23 +555,6 @@ class OfflineTestsCommon : LightningTestSuite() { assertEquals(listOf(ChannelAction.ProcessIncomingHtlc(htlcs[2])), actionsBob.filterIsInstance()) } - @Test - fun `wait for their channel reestablish when using channel backup`() { - val (alice, bob) = TestsHelper.reachNormal() - assertTrue(bob.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - val (alice1, bob1) = disconnect(alice, bob) - val localInit = Init(alice.commitments.params.localParams.features) - val remoteInit = Init(bob.commitments.params.localParams.features) - - val (alice2, actions) = alice1.process(ChannelCommand.Connected(localInit, remoteInit)) - assertIs(alice2.state) - actions.findOutgoingMessage() - val (bob2, actions1) = bob1.process(ChannelCommand.Connected(remoteInit, localInit)) - assertIs(bob2.state) - // Bob waits to receive Alice's channel reestablish before sending his own. - assertTrue(actions1.isEmpty()) - } - @Test fun `republish unconfirmed funding tx after restart`() { val (alice, bob, fundingTx) = WaitForFundingConfirmedTestsCommon.init(ChannelType.SupportedChannelType.AnchorOutputs) diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ShutdownTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ShutdownTestsCommon.kt index 661444daf..32a3c2ab3 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ShutdownTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/ShutdownTestsCommon.kt @@ -355,18 +355,6 @@ class ShutdownTestsCommon : LightningTestSuite() { actions1.hasOutgoingMessage() } - @Test - fun `recv Shutdown with encrypted channel data`() { - val (_, bob0) = reachNormal() - assertTrue(bob0.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - assertFalse(bob0.commitments.params.channelFeatures.hasFeature(Feature.ChannelBackupClient)) // this isn't a permanent channel feature - val (bob1, actions1) = bob0.process(ChannelCommand.Close.MutualClose(null, null)) - assertIs>(bob1) - val blob = EncryptedChannelData.from(bob1.staticParams.nodeParams.nodePrivateKey, bob1.state) - val shutdown = actions1.findOutgoingMessage() - assertEquals(blob, shutdown.channelData) - } - @Test fun `recv Shutdown with non-initiator paying commit fees`() { val (alice, bob) = reachNormal(requestRemoteFunding = TestConstants.bobFundingAmount) @@ -549,7 +537,7 @@ class ShutdownTestsCommon : LightningTestSuite() { @Test fun `basic disconnection and reconnection`() { - val (alice0, bob0) = init(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice0, bob0) = init(bobUsePeerStorage = false) val (alice1, bob1, reestablishes) = SyncingTestsCommon.disconnect(alice0, bob0) val (aliceReestablish, bobReestablish) = reestablishes val (alice2, actionsAlice2) = alice1.process(ChannelCommand.MessageReceived(bobReestablish)) @@ -569,8 +557,10 @@ class ShutdownTestsCommon : LightningTestSuite() { currentBlockHeight: Int = TestConstants.defaultBlockHeight, aliceFeatures: Features = TestConstants.Alice.nodeParams.features, bobFeatures: Features = TestConstants.Bob.nodeParams.features, + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, ): Pair, LNChannel> { - val (alice, bob) = reachNormal(channelType, aliceFeatures, bobFeatures, currentBlockHeight) + val (alice, bob) = reachNormal(channelType, aliceFeatures, bobFeatures, aliceUsePeerStorage, bobUsePeerStorage, currentBlockHeight) val (_, cmdAdd1) = makeCmdAdd(300_000_000.msat, bob.staticParams.nodeParams.nodeId, currentBlockHeight.toLong(), r1) val (alice1, actions) = alice.process(cmdAdd1) val htlc1 = actions.findOutgoingMessage() @@ -600,8 +590,6 @@ class ShutdownTestsCommon : LightningTestSuite() { assertIs>(bob1) assertIs(alice2.state) assertIs(bob1.state) - if (alice2.state.commitments.params.channelFeatures.hasFeature(Feature.ChannelBackupClient)) assertFalse(shutdown.channelData.isEmpty()) - if (bob1.state.commitments.params.channelFeatures.hasFeature(Feature.ChannelBackupClient)) assertFalse(shutdown1.channelData.isEmpty()) return Pair(alice2, bob1) } } diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/SyncingTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/SyncingTestsCommon.kt index e69527e5e..7cf10e8ef 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/SyncingTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/SyncingTestsCommon.kt @@ -350,7 +350,7 @@ class SyncingTestsCommon : LightningTestSuite() { companion object { fun init(): Pair, LNChannel> { // NB: we disable channel backups to ensure Bob sends his channel_reestablish on reconnection. - val (alice, bob, _) = reachNormal(bobFeatures = TestConstants.Bob.nodeParams.features.remove(Feature.ChannelBackupClient)) + val (alice, bob, _) = reachNormal(bobUsePeerStorage = false) return Pair(alice, bob) } @@ -381,6 +381,7 @@ class SyncingTestsCommon : LightningTestSuite() { } fun disconnect(alice: LNChannel, bob: LNChannel): Triple, LNChannel, Pair> { + assertFalse(bob.staticParams.nodeParams.usePeerStorage) val (alice1, actionsAlice1) = alice.process(ChannelCommand.Disconnected) val (bob1, actionsBob1) = bob.process(ChannelCommand.Disconnected) assertIs(alice1.state) @@ -390,7 +391,6 @@ class SyncingTestsCommon : LightningTestSuite() { val aliceInit = Init(alice1.commitments.params.localParams.features) val bobInit = Init(bob1.commitments.params.localParams.features) - assertFalse(bob1.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) val (alice2, actionsAlice2) = alice1.process(ChannelCommand.Connected(aliceInit, bobInit)) assertIs>(alice2) @@ -404,6 +404,7 @@ class SyncingTestsCommon : LightningTestSuite() { data class SyncingFixture(val alice: LNChannel, val bob: LNChannel, val channelReestablishAlice: ChannelReestablish, val channelReestablishBob: ChannelReestablish?) fun disconnectWithBackup(alice: LNChannel, bob: LNChannel): SyncingFixture { + assertTrue(bob.staticParams.nodeParams.usePeerStorage) val (alice1, actionsAlice1) = alice.process(ChannelCommand.Disconnected) val (bob1, actionsBob1) = bob.process(ChannelCommand.Disconnected) assertIs(alice1.state) @@ -416,13 +417,12 @@ class SyncingTestsCommon : LightningTestSuite() { is ChannelStateWithCommitments -> alice.state.commitments.params.localParams.features } val aliceInit = Init(aliceFeatures) - assertTrue(aliceFeatures.hasFeature(Feature.ChannelBackupProvider)) + assertTrue(aliceFeatures.hasFeature(Feature.ProvideStorage)) val bobFeatures = when (bob.state) { is WaitForFundingSigned -> bob.state.channelParams.localParams.features is ChannelStateWithCommitments -> bob.state.commitments.params.localParams.features } val bobInit = Init(bobFeatures) - assertTrue(bobFeatures.hasFeature(Feature.ChannelBackupClient)) val (alice2, actionsAlice2) = alice1.process(ChannelCommand.Connected(aliceInit, bobInit)) assertIs>(alice2) diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannelTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannelTestsCommon.kt index ad9881e56..5d4a3ecee 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannelTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForAcceptChannelTestsCommon.kt @@ -194,7 +194,7 @@ class WaitForAcceptChannelTestsCommon : LightningTestSuite() { requestRemoteFunding: Satoshi? = null, zeroConf: Boolean = false, ): Triple, LNChannel, AcceptDualFundedChannel> { - val (alice, bob, open) = TestsHelper.init(channelType, aliceFeatures, bobFeatures, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf) + val (alice, bob, open) = TestsHelper.init(channelType, aliceFeatures, bobFeatures, aliceUsePeerStorage = true, bobUsePeerStorage = true, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf) assertEquals(open.fundingAmount, aliceFundingAmount) assertEquals(open.channelType, channelType) requestRemoteFunding?.let { diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReadyTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReadyTestsCommon.kt index 965cc58b5..08e0edef1 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReadyTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForChannelReadyTestsCommon.kt @@ -159,6 +159,8 @@ class WaitForChannelReadyTestsCommon : LightningTestSuite() { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features, bobFeatures: Features = TestConstants.Bob.nodeParams.features, + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -166,7 +168,7 @@ class WaitForChannelReadyTestsCommon : LightningTestSuite() { zeroConf: Boolean = false, ): Fixture { return if (zeroConf) { - val (alice, commitAlice, bob, commitBob) = WaitForFundingSignedTestsCommon.init(channelType, aliceFeatures, bobFeatures, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf) + val (alice, commitAlice, bob, commitBob) = WaitForFundingSignedTestsCommon.init(channelType, aliceFeatures, bobFeatures, aliceUsePeerStorage, bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf) val (alice1, actionsAlice1) = alice.process(ChannelCommand.MessageReceived(commitBob)) assertIs>(alice1) assertTrue(actionsAlice1.isEmpty()) @@ -183,7 +185,7 @@ class WaitForChannelReadyTestsCommon : LightningTestSuite() { actionsAlice2.has() Fixture(alice2, channelReadyAlice, bob1, channelReadyBob) } else { - val (alice, bob, fundingTx) = WaitForFundingConfirmedTestsCommon.init(channelType, aliceFeatures, bobFeatures, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding) + val (alice, bob, fundingTx) = WaitForFundingConfirmedTestsCommon.init(channelType, aliceFeatures, bobFeatures, aliceUsePeerStorage, bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding) val (alice1, actionsAlice1) = alice.process(ChannelCommand.WatchReceived(WatchEventConfirmed(alice.channelId, BITCOIN_FUNDING_DEPTHOK, 42, 0, fundingTx))) assertIs>(alice1) val channelReadyAlice = actionsAlice1.findOutgoingMessage() diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmedTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmedTestsCommon.kt index 51c66cc51..e720eb1c7 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmedTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingConfirmedTestsCommon.kt @@ -380,6 +380,8 @@ class WaitForFundingConfirmedTestsCommon : LightningTestSuite() { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features.initFeatures(), bobFeatures: Features = TestConstants.Bob.nodeParams.features.initFeatures(), + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -389,6 +391,8 @@ class WaitForFundingConfirmedTestsCommon : LightningTestSuite() { channelType, aliceFeatures, bobFeatures, + aliceUsePeerStorage, + bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, @@ -402,9 +406,6 @@ class WaitForFundingConfirmedTestsCommon : LightningTestSuite() { assertIs(bob1.state) assertEquals(actionsBob1.findWatch().event, BITCOIN_FUNDING_DEPTHOK) val txSigsBob = actionsBob1.findOutgoingMessage() - if (bob.staticParams.nodeParams.features.hasFeature(Feature.ChannelBackupClient)) { - assertFalse(txSigsBob.channelData.isEmpty()) - } val (alice2, actionsAlice2) = alice1.process(ChannelCommand.MessageReceived(txSigsBob)) assertIs>(alice2) val fundingTxAlice = alice2.state.latestFundingTx.signedTx @@ -495,14 +496,10 @@ class WaitForFundingConfirmedTestsCommon : LightningTestSuite() { actionsBob3.has() val watchBob = actionsBob3.findWatch() val txSigsBob = actionsBob3.findOutgoingMessage() - if (bob.staticParams.nodeParams.features.hasFeature(Feature.ChannelBackupClient)) { - assertFalse(txSigsBob.channelData.isEmpty()) - } val (alice3, actionsAlice3) = alice2.process(ChannelCommand.MessageReceived(txSigsBob)) assertIs>(alice3) assertEquals(actionsAlice3.size, 4) val txSigsAlice = actionsAlice3.hasOutgoingMessage() - assertTrue(txSigsAlice.channelData.isEmpty()) val watchAlice = actionsAlice3.findWatch() actionsAlice3.has() val fundingTxAlice = actionsAlice3.find().tx diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreatedTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreatedTestsCommon.kt index f0e069a46..77cc51ac6 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreatedTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingCreatedTestsCommon.kt @@ -55,9 +55,7 @@ class WaitForFundingCreatedTestsCommon : LightningTestSuite() { val commitSigBob = actionsBob3.findOutgoingMessage() assertEquals(commitSigAlice.channelId, commitSigBob.channelId) assertTrue(commitSigAlice.htlcSignatures.isEmpty()) - assertTrue(commitSigAlice.channelData.isEmpty()) assertTrue(commitSigBob.htlcSignatures.isEmpty()) - assertFalse(commitSigBob.channelData.isEmpty()) actionsAlice2.has() actionsBob3.has() assertIs(alice2.state) @@ -284,6 +282,8 @@ class WaitForFundingCreatedTestsCommon : LightningTestSuite() { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features.initFeatures(), bobFeatures: Features = TestConstants.Bob.nodeParams.features.initFeatures(), + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -291,7 +291,7 @@ class WaitForFundingCreatedTestsCommon : LightningTestSuite() { zeroConf: Boolean = false, channelOrigin: Origin? = null ): Fixture { - val (a, b, open) = TestsHelper.init(channelType, aliceFeatures, bobFeatures, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf, channelOrigin) + val (a, b, open) = TestsHelper.init(channelType, aliceFeatures, bobFeatures, aliceUsePeerStorage, bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, requestRemoteFunding, zeroConf, channelOrigin) val (b1, actions) = b.process(ChannelCommand.MessageReceived(open)) val accept = actions.findOutgoingMessage() assertIs>(b1) diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSignedTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSignedTestsCommon.kt index c8020305b..b6f561397 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSignedTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/channel/states/WaitForFundingSignedTestsCommon.kt @@ -34,7 +34,7 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { bob.process(ChannelCommand.MessageReceived(commitSigAlice)).also { (state, actions) -> assertIs(state.state) assertEquals(actions.size, 5) - actions.hasOutgoingMessage().also { assertFalse(it.channelData.isEmpty()) } + actions.hasOutgoingMessage() actions.findWatch().also { assertEquals(WatchConfirmed(state.channelId, commitInput.outPoint.txid, commitInput.txOut.publicKeyScript, 3, BITCOIN_FUNDING_DEPTHOK), it) } actions.find().also { assertEquals(TestConstants.bobFundingAmount.toMilliSatoshi(), it.amountReceived) } actions.has() @@ -56,7 +56,7 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { bob.process(ChannelCommand.MessageReceived(commitSigAlice)).also { (state, actions) -> assertIs(state.state) assertEquals(actions.size, 6) - actions.hasOutgoingMessage().also { assertFalse(it.channelData.isEmpty()) } + actions.hasOutgoingMessage() actions.hasOutgoingMessage().also { assertEquals(ShortChannelId.peerId(bob.staticParams.nodeParams.nodeId), it.alias) } actions.findWatch().also { assertEquals(state.commitments.latest.fundingTxId, it.txId) } actions.find().also { assertEquals(TestConstants.bobFundingAmount.toMilliSatoshi(), it.amountReceived) } @@ -85,7 +85,7 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { assertEquals(actions.size, 5) assertEquals(TestConstants.bobFundingAmount + purchase.fees.total, state.commitments.latest.localCommit.spec.toLocal.truncateToSatoshi()) assertEquals(TestConstants.aliceFundingAmount - purchase.fees.total, state.commitments.latest.localCommit.spec.toRemote.truncateToSatoshi()) - actions.hasOutgoingMessage().also { assertFalse(it.channelData.isEmpty()) } + actions.hasOutgoingMessage() actions.findWatch().also { assertEquals(BITCOIN_FUNDING_DEPTHOK, it.event) } actions.find().also { assertEquals((TestConstants.bobFundingAmount + purchase.fees.total).toMilliSatoshi(), it.amountReceived) } actions.has() @@ -148,7 +148,6 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { val (alice2, actionsAlice2) = alice1.process(ChannelCommand.MessageReceived(txSigsBob)) assertIs(alice2.state) assertEquals(6, actionsAlice2.size) - assertTrue(actionsAlice2.hasOutgoingMessage().channelData.isEmpty()) actionsAlice2.has() val watchConfirmedAlice = actionsAlice2.findWatch() assertEquals(WatchConfirmed(alice2.channelId, commitInput.outPoint.txid, commitInput.txOut.publicKeyScript, 3, BITCOIN_FUNDING_DEPTHOK), watchConfirmedAlice) @@ -175,7 +174,6 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { val (alice2, actionsAlice2) = alice1.process(ChannelCommand.MessageReceived(txSigsBob)) assertIs(alice2.state) assertEquals(8, actionsAlice2.size) - assertTrue(actionsAlice2.hasOutgoingMessage().channelData.isEmpty()) actionsAlice2.has() val watchConfirmedAlice = actionsAlice2.findWatch() assertEquals(WatchConfirmed(alice2.channelId, commitInput.outPoint.txid, commitInput.txOut.publicKeyScript, 3, BITCOIN_FUNDING_DEPTHOK), watchConfirmedAlice) @@ -204,7 +202,6 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { val (alice2, actionsAlice2) = alice1.process(ChannelCommand.MessageReceived(txSigsBob)) assertIs(alice2.state) assertEquals(7, actionsAlice2.size) - assertTrue(actionsAlice2.hasOutgoingMessage().channelData.isEmpty()) assertEquals(actionsAlice2.hasOutgoingMessage().alias, ShortChannelId.peerId(alice.staticParams.nodeParams.nodeId)) assertEquals(actionsAlice2.findWatch().txId, alice2.commitments.latest.fundingTxId) actionsAlice2.has() @@ -326,6 +323,8 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { channelType: ChannelType.SupportedChannelType = ChannelType.SupportedChannelType.AnchorOutputs, aliceFeatures: Features = TestConstants.Alice.nodeParams.features, bobFeatures: Features = TestConstants.Bob.nodeParams.features, + aliceUsePeerStorage: Boolean = false, + bobUsePeerStorage: Boolean = true, currentHeight: Int = TestConstants.defaultBlockHeight, aliceFundingAmount: Satoshi = TestConstants.aliceFundingAmount, bobFundingAmount: Satoshi = TestConstants.bobFundingAmount, @@ -337,6 +336,8 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { channelType, aliceFeatures, bobFeatures, + aliceUsePeerStorage, + bobUsePeerStorage, currentHeight, aliceFundingAmount, bobFundingAmount, @@ -352,15 +353,11 @@ class WaitForFundingSignedTestsCommon : LightningTestSuite() { assertIs>(alice2) assertIs(alice2.state) val commitSigAlice = actionsAlice2.findOutgoingMessage() - assertTrue(commitSigAlice.channelData.isEmpty()) actionsAlice2.has() val (bob3, actionsBob3) = bob2.process(ChannelCommand.MessageReceived(actionsAlice2.findOutgoingMessage())) assertIs>(bob3) assertIs(bob3.state) val commitSigBob = actionsBob3.findOutgoingMessage() - if (bob.staticParams.nodeParams.features.hasFeature(Feature.ChannelBackupClient)) { - assertFalse(commitSigBob.channelData.isEmpty()) - } actionsBob3.has() return Fixture(alice2, commitSigAlice, bob3, commitSigBob, walletAlice) } diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/io/peer/PeerTest.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/io/peer/PeerTest.kt index 5bcba2e0d..8dca68aac 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/io/peer/PeerTest.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/io/peer/PeerTest.kt @@ -1,6 +1,7 @@ package fr.acinq.lightning.io.peer import fr.acinq.bitcoin.Block +import fr.acinq.bitcoin.ByteVector import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.PrivateKey import fr.acinq.bitcoin.utils.Either @@ -21,6 +22,7 @@ import fr.acinq.lightning.db.LightningOutgoingPayment import fr.acinq.lightning.io.* import fr.acinq.lightning.payment.LiquidityPolicy import fr.acinq.lightning.router.Announcements +import fr.acinq.lightning.serialization.Encryption.from import fr.acinq.lightning.tests.TestConstants import fr.acinq.lightning.tests.io.peer.* import fr.acinq.lightning.tests.utils.LightningTestSuite @@ -305,7 +307,7 @@ class PeerTest : LightningTestSuite() { nextRemoteRevocationNumber = commitments.remoteCommitIndex, yourLastCommitmentSecret = PrivateKey(yourLastPerCommitmentSecret), myCurrentPerCommitmentPoint = myCurrentPerCommitmentPoint - ).withChannelData(commitments.remoteChannelData) + ) peer.send(MessageReceived(connectionId = 0, channelReestablish)) @@ -338,6 +340,8 @@ class PeerTest : LightningTestSuite() { val (nodes, _, htlc) = TestsHelper.addHtlc(50_000_000.msat, bob0, alice0) val (bob1, alice1) = TestsHelper.crossSign(nodes.first, nodes.second) + val backup = EncryptedChannelData.from(TestConstants.Bob.nodeParams.nodePrivateKey, bob1.state) + val peer = buildPeer( this, bob0.staticParams.nodeParams.copy(checkHtlcTimeoutAfterStartupDelay = 5.seconds), @@ -348,8 +352,8 @@ class PeerTest : LightningTestSuite() { // Simulate a reconnection with Alice. peer.send(MessageReceived(connectionId = 0, Init(features = alice0.staticParams.nodeParams.features))) + peer.send(MessageReceived(connectionId = 0, PeerStorageRetrieval(backup))) val aliceReestablish = alice1.state.run { alice1.ctx.createChannelReestablish() } - assertFalse(aliceReestablish.channelData.isEmpty()) peer.send(MessageReceived(connectionId = 0, aliceReestablish)) // Wait until the channels are Syncing @@ -367,6 +371,8 @@ class PeerTest : LightningTestSuite() { val (nodes, _, htlc) = TestsHelper.addHtlc(50_000_000.msat, bob0, alice0) val (bob1, alice1) = TestsHelper.crossSign(nodes.first, nodes.second) + val backup = EncryptedChannelData.from(TestConstants.Bob.nodeParams.nodePrivateKey, bob1.state) + val peer = buildPeer( this, bob0.staticParams.nodeParams.copy(checkHtlcTimeoutAfterStartupDelay = 5.seconds), @@ -377,8 +383,8 @@ class PeerTest : LightningTestSuite() { // Simulate a reconnection with Alice. peer.send(MessageReceived(connectionId = 0, Init(features = alice0.staticParams.nodeParams.features))) + peer.send(MessageReceived(connectionId = 0, PeerStorageRetrieval(backup))) val aliceReestablish = alice1.state.run { alice1.ctx.createChannelReestablish() } - assertFalse(aliceReestablish.channelData.isEmpty()) peer.send(MessageReceived(connectionId = 0, aliceReestablish)) // Wait until the channels are Syncing diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/serialization/StateSerializationTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/serialization/StateSerializationTestsCommon.kt index 5742b35eb..2682faef6 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/serialization/StateSerializationTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/serialization/StateSerializationTestsCommon.kt @@ -88,39 +88,6 @@ class StateSerializationTestsCommon : LightningTestSuite() { assertIs(res) } - @Test - fun `maximum number of HTLCs that is safe to use`() { - val (alice, bob) = TestsHelper.reachNormal() - assertTrue(bob.commitments.params.localParams.features.hasFeature(Feature.ChannelBackupClient)) - - tailrec fun addHtlcs(sender: LNChannel, receiver: LNChannel, amount: MilliSatoshi, count: Int): Pair, LNChannel> = if (count == 0) Pair(sender, receiver) else { - val (p, _) = TestsHelper.addHtlc(amount, sender, receiver) - val (alice1, bob1) = p - assertIs>(alice1) - assertIs>(bob1) - addHtlcs(alice1, bob1, amount, count - 1) - } - - fun commitSigSize(maxIncoming: Int, maxOutgoing: Int): Int { - val (alice1, bob1) = addHtlcs(alice, bob, MilliSatoshi(6000_000), maxOutgoing) - val (bob2, alice2) = addHtlcs(bob1, alice1, MilliSatoshi(6000_000), maxIncoming) - val (alice3, bob3) = crossSign(alice2, bob2) - - assertIs>(alice3) - assertIs>(bob3) - val (_, commitSig0, _, commitSig1) = SpliceTestsCommon.spliceInAndOutWithoutSigs(alice3, bob3, listOf(50_000.sat), 50_000.sat) - assertFalse(commitSig1.channelData.isEmpty()) - - val bina = LightningMessage.encode(commitSig0) - val binb = LightningMessage.encode(commitSig1) - return max(bina.size, binb.size) - } - - // with 5 incoming payments and 5 outgoing payments, we can still add our encrypted backup to commig_sig messages - // and stay below the 65k limit for a future channel_reestablish message of unknown size - assertTrue(commitSigSize(5, 5) < 60_000) - } - @Test fun `liquidity ads lease backwards compatibility`() { run { diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/TestConstants.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/TestConstants.kt index 52aef868e..209f9b0d4 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/TestConstants.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/TestConstants.kt @@ -80,7 +80,7 @@ object TestConstants { Feature.PaymentMetadata to FeatureSupport.Optional, Feature.ExperimentalTrampolinePayment to FeatureSupport.Optional, Feature.WakeUpNotificationProvider to FeatureSupport.Optional, - Feature.ChannelBackupProvider to FeatureSupport.Optional, + Feature.ProvideStorage to FeatureSupport.Optional, Feature.ExperimentalSplice to FeatureSupport.Optional, Feature.OnTheFlyFunding to FeatureSupport.Optional, ), diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/io/peer/builders.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/io/peer/builders.kt index 4b5274a7e..e0e972335 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/io/peer/builders.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/tests/io/peer/builders.kt @@ -164,7 +164,7 @@ suspend fun CoroutineScope.newPeer( nextRemoteRevocationNumber = state.commitments.remoteCommitIndex, yourLastCommitmentSecret = PrivateKey(yourLastPerCommitmentSecret), myCurrentPerCommitmentPoint = myCurrentPerCommitmentPoint - ).withChannelData(state.commitments.remoteChannelData) + ) peer.send(MessageReceived(connection.id, channelReestablish)) } diff --git a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/wire/LightningCodecsTestsCommon.kt b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/wire/LightningCodecsTestsCommon.kt index 45ba39bf2..9696b33bf 100644 --- a/modules/core/src/commonTest/kotlin/fr/acinq/lightning/wire/LightningCodecsTestsCommon.kt +++ b/modules/core/src/commonTest/kotlin/fr/acinq/lightning/wire/LightningCodecsTestsCommon.kt @@ -429,13 +429,9 @@ class LightningCodecsTestsCommon : LightningTestSuite() { CommitSigTlv.AlternativeFeerateSig(FeeratePerKw(500.sat), ByteVector64.fromValidHex("2dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db252a2f914ea1fcbd580b80cdea60226f63288cd44bd84a8850c9189a24f08c7cc5")), CommitSigTlv.AlternativeFeerateSig(FeeratePerKw(750.sat), ByteVector64.fromValidHex("83a7a1a04141ac8ab2818f4a872ea86716ef9aac0852146bcdbc2cc49aecc985899a63513f41ed2502a321a4945689239d12bdab778c1a2e8bf7c3f19ec53b58")), ) - val backup = EncryptedChannelData(ByteVector.fromHex("fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c303a6680e79e30f050d4f32f1fb9d046cc6efb5ed4cc99eeedba6b2e89cbf838691")) val testCases = listOf( // @formatter:off - CommitSig(channelId, signature, listOf(), TlvStream(CommitSigTlv.ChannelData(backup))) to "00842dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db2505e06d9a8fdfbb3625051ff2e3cdf82679cc2268beee6905941d6dd8a067cd62711e04b119a836aa0eebe07545172cefb228860fea6c797178453a319169bed70000fe4701000041fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c303a6680e79e30f050d4f32f1fb9d046cc6efb5ed4cc99eeedba6b2e89cbf838691", - CommitSig(channelId, signature, listOf(), TlvStream(CommitSigTlv.ChannelData(backup), CommitSigTlv.AlternativeFeerateSigs(listOf()))) to "00842dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db2505e06d9a8fdfbb3625051ff2e3cdf82679cc2268beee6905941d6dd8a067cd62711e04b119a836aa0eebe07545172cefb228860fea6c797178453a319169bed70000fe4701000041fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c303a6680e79e30f050d4f32f1fb9d046cc6efb5ed4cc99eeedba6b2e89cbf838691fe470100010100", CommitSig(channelId, signature, listOf(), TlvStream(CommitSigTlv.AlternativeFeerateSigs(alternateSigs))) to "00842dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db2505e06d9a8fdfbb3625051ff2e3cdf82679cc2268beee6905941d6dd8a067cd62711e04b119a836aa0eebe07545172cefb228860fea6c797178453a319169bed70000fe47010001cd03000000fdc49269a9baa73a5ec44b63bdcaabf9c7c6477f72866b822f8502e5c989aa3562fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c3000001f42dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db252a2f914ea1fcbd580b80cdea60226f63288cd44bd84a8850c9189a24f08c7cc5000002ee83a7a1a04141ac8ab2818f4a872ea86716ef9aac0852146bcdbc2cc49aecc985899a63513f41ed2502a321a4945689239d12bdab778c1a2e8bf7c3f19ec53b58", - CommitSig(channelId, signature, listOf(), TlvStream(CommitSigTlv.ChannelData(backup), CommitSigTlv.AlternativeFeerateSigs(alternateSigs))) to "00842dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db2505e06d9a8fdfbb3625051ff2e3cdf82679cc2268beee6905941d6dd8a067cd62711e04b119a836aa0eebe07545172cefb228860fea6c797178453a319169bed70000fe4701000041fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c303a6680e79e30f050d4f32f1fb9d046cc6efb5ed4cc99eeedba6b2e89cbf838691fe47010001cd03000000fdc49269a9baa73a5ec44b63bdcaabf9c7c6477f72866b822f8502e5c989aa3562fe69d72bec62025d3474b9c2d947ec6d68f9f577be5fab8ee80503cefd8846c3000001f42dadacd65b585e4061421b5265ff543e2a7bdc4d4a7fea932727426bdc53db252a2f914ea1fcbd580b80cdea60226f63288cd44bd84a8850c9189a24f08c7cc5000002ee83a7a1a04141ac8ab2818f4a872ea86716ef9aac0852146bcdbc2cc49aecc985899a63513f41ed2502a321a4945689239d12bdab778c1a2e8bf7c3f19ec53b58", // @formatter:on ) testCases.forEach { (commitSig, bin) -> @@ -744,43 +740,22 @@ class LightningCodecsTestsCommon : LightningTestSuite() { // channel_reestablish Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point), Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point, TlvStream(setOf(), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("fe47010000 00") to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point, TlvStream(ChannelReestablishTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") + Hex.decode("fe47010000 00") to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point, TlvStream(setOf(ChannelReestablishTlv.ChannelData(EncryptedChannelData(ByteVector.empty))), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("fe47010000 07 bbbbbbbbbbbbbb") to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point).withChannelData(ByteVector("bbbbbbbbbbbbbb")), - Hex.decode("0088") + channelId.toByteArray() + Hex.decode("0001020304050607 0809aabbccddeeff") + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") + Hex.decode("fe47010000 07 bbbbbbbbbbbbbb") to ChannelReestablish(channelId, 0x01020304050607L, 0x0809aabbccddeeffL, key, point, TlvStream(setOf(ChannelReestablishTlv.ChannelData(EncryptedChannelData(ByteVector("bbbbbbbbbbbbbb")))), setOf(GenericTlv(1, ByteVector("0102"))))), // tx_signatures Hex.decode("0047") + channelId.toByteArray() + txHash.value.toByteArray() + Hex.decode("0000") to TxSignatures(channelId, TxId(txHash), listOf()), - Hex.decode("0047") + channelId.toByteArray() + txHash.value.toByteArray() + Hex.decode("0000 fe47010000 00") to TxSignatures(channelId, TxId(txHash), listOf(), TlvStream(TxSignaturesTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0047") + channelId.toByteArray() + txHash.value.toByteArray() + Hex.decode("0000 fe47010000 04 deadbeef") to TxSignatures(channelId, TxId(txHash), listOf(), TlvStream(TxSignaturesTlv.ChannelData(EncryptedChannelData(ByteVector("deadbeef"))))), - Hex.decode("0047") + channelId.toByteArray() + txHash.value.toByteArray() + Hex.decode("0000 2b012a fe47010000 04 deadbeef") to TxSignatures(channelId, TxId(txHash), listOf(), TlvStream(setOf(TxSignaturesTlv.ChannelData(EncryptedChannelData(ByteVector("deadbeef")))), setOf(GenericTlv(43, ByteVector("2a"))))), + Hex.decode("0047") + channelId.toByteArray() + txHash.value.toByteArray() + Hex.decode("0000 2b012a") to TxSignatures(channelId, TxId(txHash), listOf(), TlvStream(setOf(), setOf(GenericTlv(43, ByteVector("2a"))))), // commit_sig Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000") to CommitSig(channelId, signature, listOf()), Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000") + Hex.decode("01 02 0102") to CommitSig(channelId, signature, listOf(), TlvStream(setOf(), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000 fe47010000 00") to CommitSig(channelId, signature, listOf(), TlvStream(CommitSigTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000 01020102 fe47010000 00") to CommitSig(channelId, signature, listOf(), TlvStream(setOf(CommitSigTlv.ChannelData(EncryptedChannelData.empty)), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000 fe47010000 07 cccccccccccccc") to CommitSig(channelId, signature, listOf()).withChannelData(ByteVector("cccccccccccccc")), - Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000 01020102 fe47010000 07 cccccccccccccc") to CommitSig(channelId, signature, listOf(), TlvStream(setOf(CommitSigTlv.ChannelData(EncryptedChannelData(ByteVector("cccccccccccccc")))), setOf(GenericTlv(1, ByteVector("0102"))))), + Hex.decode("0084") + channelId.toByteArray() + signature.toByteArray() + Hex.decode("0000 01020102") to CommitSig(channelId, signature, listOf(), TlvStream(setOf(), setOf(GenericTlv(1, ByteVector("0102"))))), // revoke_and_ack Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() to RevokeAndAck(channelId, key, point), Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") to RevokeAndAck(channelId, key, point, TlvStream(setOf(), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("fe47010000 00") to RevokeAndAck(channelId, key, point, TlvStream(RevokeAndAckTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") + Hex.decode("fe47010000 00") to RevokeAndAck(channelId, key, point, TlvStream(setOf(RevokeAndAckTlv.ChannelData(EncryptedChannelData.empty)), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("fe47010000 07 cccccccccccccc") to RevokeAndAck(channelId, key, point).withChannelData(ByteVector("cccccccccccccc")), - Hex.decode("0085") + channelId.toByteArray() + key.value.toByteArray() + point.value.toByteArray() + Hex.decode("01 02 0102") + Hex.decode("fe47010000 07 cccccccccccccc") to RevokeAndAck(channelId, key, point, TlvStream(setOf(RevokeAndAckTlv.ChannelData(EncryptedChannelData(ByteVector("cccccccccccccc")))), setOf(GenericTlv(1, ByteVector("0102"))))), // shutdown Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData to Shutdown(channelId, randomData.toByteVector()), Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData + Hex.decode("01 02 0102") to Shutdown(channelId, randomData.toByteVector(), TlvStream(setOf(), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData + Hex.decode("fe47010000 00") to Shutdown(channelId, randomData.toByteVector(), TlvStream(ShutdownTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData + Hex.decode("01 02 0102") + Hex.decode("fe47010000 00") to Shutdown(channelId, randomData.toByteVector(), TlvStream(setOf(ShutdownTlv.ChannelData(EncryptedChannelData.empty)), setOf(GenericTlv(1, ByteVector("0102"))))), - Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData + Hex.decode("fe47010000 07 cccccccccccccc") to Shutdown(channelId, randomData.toByteVector()).withChannelData(ByteVector("cccccccccccccc")), - Hex.decode("0026") + channelId.toByteArray() + Hex.decode("002a") + randomData + Hex.decode("01 02 0102") + Hex.decode("fe47010000 07 cccccccccccccc") to Shutdown(channelId, randomData.toByteVector(), TlvStream(setOf(ShutdownTlv.ChannelData(EncryptedChannelData(ByteVector("cccccccccccccc")))), setOf(GenericTlv(1, ByteVector("0102"))))), // closing_signed Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() to ClosingSigned(channelId, 123456789.sat, signature), Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() + Hex.decode("03 02 0102") to ClosingSigned(channelId, 123456789.sat, signature, TlvStream(setOf(), setOf(GenericTlv(3, ByteVector("0102"))))), - Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() + Hex.decode("fe47010000 00") to ClosingSigned(channelId, 123456789.sat, signature, TlvStream(ClosingSignedTlv.ChannelData(EncryptedChannelData.empty))), - Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() + Hex.decode("03 02 0102") + Hex.decode("fe47010000 00") to ClosingSigned(channelId, 123456789.sat, signature, TlvStream(setOf(ClosingSignedTlv.ChannelData(EncryptedChannelData.empty)), setOf(GenericTlv(3, ByteVector("0102"))))), - Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() + Hex.decode("fe47010000 07 cccccccccccccc") to ClosingSigned(channelId, 123456789.sat, signature).withChannelData(ByteVector("cccccccccccccc")), - Hex.decode("0027") + channelId.toByteArray() + Hex.decode("00000000075bcd15") + signature.toByteArray() + Hex.decode("03 02 0102") + Hex.decode("fe47010000 07 cccccccccccccc") to ClosingSigned(channelId, 123456789.sat, signature, TlvStream(setOf(ClosingSignedTlv.ChannelData(EncryptedChannelData(ByteVector("cccccccccccccc")))), setOf(GenericTlv(3, ByteVector("0102"))))) ) // @formatter:on @@ -792,34 +767,6 @@ class LightningCodecsTestsCommon : LightningTestSuite() { } } - @Test - fun `skip backup channel data when too large`() { - // We omit the channel backup when it risks overflowing the lightning message. - val belowLimit = EncryptedChannelData(ByteVector(ByteArray(59500) { 42 })) - val aboveLimit = EncryptedChannelData(ByteVector(ByteArray(60000) { 42 })) - val messages = listOf( - ChannelReestablish(randomBytes32(), 0, 0, randomKey(), randomKey().publicKey()), - TxSignatures(randomBytes32(), TxId(randomBytes32()), listOf()), - CommitSig(randomBytes32(), randomBytes64(), listOf()), - RevokeAndAck(randomBytes32(), randomKey(), randomKey().publicKey()), - Shutdown(randomBytes32(), ByteVector("deadbeef")), - ClosingSigned(randomBytes32(), 0.sat, randomBytes64()), - ) - messages.forEach { - assertEquals(it.withChannelData(belowLimit).channelData, belowLimit) - assertTrue(it.withChannelData(aboveLimit).channelData.isEmpty()) - } - } - - @Test - fun `skip backup channel data when message is too large`() { - val channelData = EncryptedChannelData(ByteVector(ByteArray(59500) { 42 })) - val smallCommit = CommitSig(randomBytes32(), randomBytes64(), listOf()) - assertEquals(smallCommit.withChannelData(channelData).channelData, channelData) - val largeCommit = CommitSig(randomBytes32(), randomBytes64(), List(50) { randomBytes64() }) - assertTrue(largeCommit.withChannelData(channelData).channelData.isEmpty()) - } - @Test fun `encode - decode on-the-fly funding messages`() { val channelId = ByteVector32("c11b8fbd682b3c6ee11f9d7268e22bb5887cd4d3bf3338bfcc340583f685733c") diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Closing_0ba41d17/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Closing_0ba41d17/data.json index 9df86d5ac..0e0cb7eee 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Closing_0ba41d17/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Closing_0ba41d17/data.json @@ -245,10 +245,7 @@ "left": null, "right": "0312a332a6afe99e14c9dc4ab0512448441be3c4c369be8b7d37c5086682b33799" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "73267938ec3fb5ea5dc04e15eb163c30b5ff1ae4b68be8f1036418fdfaf595fb4090788cd267462f2f54005b0e18bd8741f363f4604e97033c5c69189518e80a2970316a58a96ffafff202df6313fef9ebf1e64a9425f6dc6b91bfcde58d82612f6275f3568df8adf20394169cae4e236304f2de2d5a1e576141ed2d5eab806b5e8abcd85c7d58c5353835f160dcb2f7d33aa447cffc64295a04f3503a339e926fb9ed0ea9355c01fa7b4064b72cc4b5b89b7b3f05710bf5cafc66e50bbd1085bdd0080990f4207a05332a92b64ad795ee61db4722936e2abd7a675b72a1a138ee4c8112e117caa529aaa879a7ccdc4a59c20fb8d6b1c4d5514aadf0f7a02a2a13d4db90209f6abc3a62eb1a027bde93065cdff27886d8009c3d1366c0c973c4cfccd993253900d625c776026f4d16ddcc425e264fc3e6224ede6cdecc577db5ff0d226c382a60f2e25e87eb495eb2ea107c26feb3fbe807b072e2de53d77187d76285f305d0462738cc4f013ff670b55cb88ea9dd30a75754ce7822bdebba1b5f89c598cdd1de5fb0d78f0c460979a509ee4b0760a2724ba822aa7a0bb2436387c4bf1e85aa0460abb36971a9e209f4349b2cbd1aa0093a22a3a9a358aa987c73b4f3a081b30abd76a5282b5579a26483fd3e7f0034e565baf7350d25143b3f3f83575a1e7669ff52ea23fcc58c762d544e19907c01e1d41874c3cc026f3275e2fb22fdff98a66b55f6ce0582eb3203cf0594e2b91fb921401fced7c3d8a48ab67de2f4112691071a306f2222d55264d0d4b73ce9d7f3c3002c53baf788b98a0ccf3c772f5276a83a1d755f1ec5539038374adfd39a5251302a464551372852755e9a8106412c86a8ccce6983e4b390c364d9445d63fe01d71a7f6714b182375f856deee803db882b7bf60aaf0db989b0e1d404306e6e6bf0ae6cc09b57126ce06c150cd89a03a6d33470febf74bc1508ac4825ea6b4289a323ba007004c4ed4d83167f6cffe70fb0ec45908d0e12699a55ecc648055272f57c4e84597a72448b57fc67b3f9d698e9bbdd2d6045c0abfcbcc04a611077d1840ce283f2f85d4312c8c30576f5ebf2629e8b6a35b486ea7f18561ccc2ced23f499b11d795168296574403822d320fca5c03ed5e98ae7851444ceac1766ef01902c4174e5d6b8b6e6816621e9a3909d81045060d330b3493ca3b580bc6401a37973f871ebf32d1aeb598f4aeb8d94e6484217344a78528d56a59d607318a66403d82bc43e7a5131b751e82dce1581846ef91de58a206e63302efa2caaa4699072e97d2cc5044abbabffdc48dc7a29851e14303e5bcd9063f71ce00d5bd841c831e3133d8425bbb7a5be701e7dbcca578a8162c204a75318c013b239dfdcbb16cf91c1ca05daec0bb8f8933594ca71b782c5eb644c70a5c02ff86bdd45e1d83045374cecbdf5dcb98da290bb5bc1559c8385abf3c055491bdd5a836efd6ab0c982c91725d632715527d5f6a0384b594015a4b2905fe7a1f8bbac9ee4fe0f21a820a30e02dd0143fdd17fdf997cebbd710cb6e21161f85e5875caac2e05ff4d6ed9dfb83f222e2d7cf6ee6eb164959a947e5dbfb23e8eb6086007fd45be398a55aac04f6e616fffe1178265b71781a792e960eb12661d7d20992b129b8fa6256162c2791807d526275ebf358a6e2afe64a9c5c4059aeeb3f9e1abd751df38f91857d7e6e187e6e6288bf7ff51ad29c41eb5e0338be2150d62a9e650dfce428603fa0853f13e53ee576047465ac208303db5e295f5594f932aebd7a28d593c3fb424bf00d6c2e057d4c28cd94a7b2a5d9b8154fda681e362a3b2a7f9296b0a858f89d4f89802952b1fc5ab3be0f2801f1dc353e0b44958356787841bdecb444797cbf7861863c2c75c34a6fbbd0e1c929e5bb3838a56e3dc45699354adcb89518f0c936e15fa0d35ac91bda263e808b1c62fe2eb79e623f4998fb4519234ba62f04651adf0a144e65b40c2d049f9e4b7cd7b760654c3b3bde806ddea2043798112cf413c6fe7a934016afacebdc69ef9cfcb42f65cbd940edda3d7e86db0f654df8e61626b8142e75a88c4454586f0a0f849f6d8cdce1b8e93137c3c63cee73535c12ab12306727f2530bf839b0924785b61ff95fda48126d4b95e1d16e63ae84f950f3ddfd2a3c1b86087fa605deab7adcdaa4d5e44f360817d17c42e6cb7d1cbcae6b92a1a29872acf228e07489b655cd4ce5650d5a0c4786fa6c9b7279493d1dae37146a9dcb087840dc3135c1a62fc0ce297a60c2254a2282180ea13338dd9e9d83a3976ae7632c4dff6abe29854469ec0c9f58216ca3eb56e8a271facf21570a9f1458f6e2dbd1bff2c0c24d5ee340cfdd08f5ea15ce9b764a014214573578d9cafdc3c925ca3fa6fd725aaf109bc2a67edef6f4ff33fde4f546fff607f06430d88a9e21865fa52195d6cc4e084e08ece1bbb88159357c9622663d2c9cf1669b08fba76bc3f39fabf4931ef78054736b2753413918fc00f41955d0e2761891f51c480d25179d7ac95d8415fe86961e127bfbbe55dde8ae85c6212e32645bad8f21a50e9f05256b1cf0a60504c79d3d172b20eeeb2410841c08fd8ef99c4c4260ffa489470b51044780a365655d9e171a399e23fbf4e94b9a610931a7dc4b323ae7b990e705e5568a637250fe70532f18c96595570762f9f149ac361839d59935a0ac655aecb43a6191e828b7aca27e98a1f8f68451e5d4ba456c685ec9886b610ed3786465266c59280d02f71c95cdac40fd61d575b422d73e4fbd15f503690b23e23580e2178bc5bdcea5390169c510b3f7de2dbbf79a3167b1fb6453803699151a3d3f551ee43fe41d67e06fa925bf587a4a2d299a4692a763ae7b2acdd6b432e76abbd91a482cce3895c647718e192a8159266afeb2f9d310a9ea0ee4e01b434bb3eab9b022882c5f196b2212d7e813c6c2e4af305c966dbd899224626dd9ad80627fdbb958bd471f7a9ba8eaebe0effda63d3c4b84b85557b0fdd80373f96b60d9bbdd664a7753154f640ba1f8eb1cbfe4212b7fc3ef9e44c93cd8210192b05b365d77cbe81fe004d2ed1fb3ae6587de8afc2710c93d7faca81490a3ae59b18ec2fc00cada9c718067a013f66aa67e1204cdfbcb9c9ceb405aaa8f625e6b435055f8c6d07e1e6ae8870cb1106b7c978ffd0f9417f481c79ebe51f0bf0dda3d30e0f944a1f037340b81308a0cf0b0a28502e805b285351144bf60f886a56d44d234cdbe589a01888b4fec9161d2900851dc44958fc5063e98e5f765c03ef208a13e5184b06385333e706e5dc63eb95f0c611b20907cc0211f2fa8f27ca8877bc9d0d6e92f8fc0d121c231351895d6e619d091bebb4e53af89036bf8fbdf8bd8126ea40f56703ca4d32d965b97cce5450bd7192e36caa9f54fb21a49cff86e6fa2f46c8230a2632f1219a8fab1187e9a7bce655c8f0973456f88d1f0653fb22b06f482fae5976056756584ccb08b9cba6fe8577304d0f9edfc96e03da97dd16877d15774de1613f3c6ab7e362e513c560a5750d47bfa2fb41bbecfa5989d7635038b5f4b8ea48fd2c2c13fd842f1ae199d5d382ec3f3824c66058f20da2feec3cb3854ecf357efc3b68d33ecc545271de838b12efe2669adf929504d4826d6eb2385483d86388f932013c07f8ecc66806c038b4a9f76ef0a942e4900289c3f212333bfda32ca493a77029e1c8cec4cc5f9e8b8e526853f7865408f352a5fc3ececab77f51fc177ebdb0bf19f03bfa3f1301d06bb8ae183f3ef51fee7a9d7ef797e517fcdc4abac56896a0279f3f84f093c1613107e5997c1268609cb34961e03f12e1160713960de286613b737bfd51531a980b14480ee7cdd8994f36cbf814bf7c5dc8638b8f52f00ae59ba86af9e836b4c3e4e78b38a2dc4bcff3cb0cb272a940fec253728f3d90c3fb2ce50c00f0357f5646ea2cc8a3b1feb4b7c25b093c59dcfa43aed3b8cf050b9d1edb5efcad35147dec5baadb0dc0caf38e01b7d89394908f50853fba05e173357c9ec63f0c17b4914b28c6be9bcff256ea628b2dd9a7a6bc72df034f979f3ffe2485941555786ea131b2f164ba79269e5b35807e90d4c4d73ca18aa5f8bd44c1f5545d4a0e334f3171aa5e08dca72660505c5d39082488ae64155510e54b3d999d15aae89cfae172733d0e13c9322f487c6e5f9bd76ee46477f7c460a20f3e1de49fb4a8b32087acea660959e2212690941dd02af8d19068dd53ba062e1d8baa47269d53ec801afff8cbb9caee4ed545f065359ba826c5987a3e73482f7a38615b427e47128ac7f54cc5b109fa8602ef8d0ece0e3f16714cc9498a6218c4e757e95f424ea64f970c43fec345d1cd02b809e1efb5522402a675661801b8e72b68e065b9d0b789963e1b8823fe8ada499abbd9a64b3b5f4b533a8d31df8412fb1b4b2b2b5ba6347edb7bcb33df9a850bd49e7fe7c1155ae97a53d4fdaa28cda7a4ec1d261052765be2b3e87205cb6ce843d2c8e95a2416fbeaedef809267d8cd72bc2bc19260bf9607450d6615026e6d15a70d5bd31c7b1c3811fc5fb2c1da6f2b080ae66acafbc13a81cd6ea41850b60933c80cc5fc88bc39e513fd7650f24857e90c386a7bb06f16790623c382f9b4c8100d4bc963750449f3989e3f24cd9edabd0ac395c715ac2b66c2529bbb48726d7c0b468c6aa7a6a206a4cea8d93568181c571de72ab6bc0bf066cedea7ae40a17dfc1890e2ff9318bb7d9ec60e0b60d61f9679b2b23c9a2f07c4a3784ca2713dd21e508ae47713666eb439bafb601fe8e0b677c03eca62680874f1b33bc04e3c7807c31eea06ab3759a7d0e1be3968e5dcb76d7f2885e1f4539e5b7968e1cbc2d6d7d519c757f401a17dac837b20cec445fd975e823cfdd28cfcc6284aae236c70423b4904eafabee1c7cd9e6d02069fbd912e3daf48985821fb66259ff0a42fdcb3c1d2f045975a9f154e5807224acd87c92d0c9d30205a500db9d1884e61ce835e88fda33bd4a6ceada13629515d46c278563afd549efd6a5513e89afb16f80a15f0e7ab518e7d18b65103f36534a94cd795d28247637762eb972422247e34fbf2fff1e775d540e025c2a59a3fabc412f988c908609604026ee63b82894aab9675430afc58c7ef9c857aefa94776194446cce84e67985e30c6232ecb82a3ad139dae0559f5c37b2a2c5c0e957bb947ff4bcfd86437ecdb033abc4baa558a81220e12" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "localCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Closing_0efffae3/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Closing_0efffae3/data.json index d6913f41d..c5ef91b5a 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Closing_0efffae3/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Closing_0efffae3/data.json @@ -171,10 +171,7 @@ "left": null, "right": "0323e9618cf8548e5b78a14529e1c8df51895e47ae6026bf23f5f130299bbc92b0" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "af86858a35b5f1157fd7aaf673c32e67ca2d0ea39247b28f0807e32bcdb54d5248fe0dc200a4f126eba76515c03b4b8f7b66b5954d9614bf91ea309191db82c31e52b7b73bd0e1500e24e3357cd7ff6b67af31637a0359591abb1c6442c180e17fd25eed846e08e53821b9024a92423a6bfd1f50017a124565721665a6faf0042fe57c7c1fa69110c7c61e29aa7efd6600d54956ad0ac7242569bd12b5c76ce83e7616e2b5dc03a3e8323d870675723da9fccf6e7b6a9b51ede780737edaf10c3beb9c51cb32a9c28f11bed5bf19a37b81fb6553d322010bdd737c82405ab45e6b60b6b0c01d1a2099e05bf81ae3899efbf447919a99bacf31f4dfaaf1bc4fe266b7eb162215bf390bab1b86952a427ded6869bb2671c57200737170e667dd26eac1ac2be9ba5bad16575a681b04261c77a38fcc268b38b16fe6a1ac10c991aa4c603eaa7ecf3f2b2f48fa4de31ea44fdf4d7d4af605b02adb72822c96c334a15f5319e0f6f608310abaaf4ab56860d1584b6bcce7eea0f04dfe7da82937cb4df88ee4c1e82316b717f6aec4fc079633ae974a7cac797cdbd64608f37b904b98f9bcfeb4ee528089136a18ccde52f16fff46888b197d12e07a82545fdd8d6aa35326f2974c7e52920608f0b072e654536f2ca7c04b297756bbd1f6d14747dd7a5c020c9436bf6cee3f6f493c93d7c99332570ef7bd7f332b3c67550e75a3ac2030edb71e50574b446655f073722d83a0472a4ba051841d8a51645c24ce32f29b971a115d008d5d9861be104bebf869b1352aab99065094826f528d7546985a97535d7530d464e110d41903559912d86a125d3b91045928074f7e079deedf58afb0f1b26daa45f62a38989848d379c82f70543f102f647eba30211d57e1bf4072fe1bb4a285e7013a448de126368ff5c15a69c6fc59a9823548e0b629d8abdde62a3aea29c1dc3e99345193b076d3364e4afffc23557da48d03dd407efc18b6d13a353a2bed406ab9ec788bed9a2a09082ea5d60413a7bca50b07a78b01d5f8eee2d7109a6c8ff25c8f103cb5fa099ba373156352e279980a4c8d0561e4f2d5c11c113f18dff31d281f81820ee3a1e3021753ea891e2366ef0cd4c97fc870da0fb1eb0674a73bc4320085795f514102930b9975d385a9bb2dc9886296eb4efb2ff3dbda14803a1b4838899dda19f68554c9369db83e8ce22473cee3c94bfaad5e0743bc40c4f94d8e0de0946429e88a96aa7485bee65c7ec5053133700b699fb884ed7663f9a563c451f4f4e4a63dac66a90019704158ce8d419b22a62defe24872f4484c40c1d75eb63a4fd114b6b8d5ad20d222b13a0d39851ca35d9322be5b826a393072b376daeec127673b9c96dde60c1fe071d3f8b561ea397b32e199ce694c7f30358ae33fecd4509804650bba8c7ee106c2246adb89a8cc1077bb67b3140e2f544393f8e33e47768bac0e94e5a284150ec02ca22bd99cb5c746e4e72535b7cd22aba375bb7248f155a9e75fdb074fc7d4a54f6ec17b424cff1f96ba2f3d027fd4781a6f2053e85c69800c9cd321d6379b3051ac540370ca5e97d0f4a1c2a39da97ca9945b49e881bb612bf3c8c7112903f8c66edd837a22bf3a6bda66cb3f12bee916649ac06af4f1c9790a7af21bd3dcb5aae21755cad75c591417ad962310bcafede7d1ed307b13176709f8bb1f9c3fdf0809dbbb28dfaa2a26bd076d119a34976417c78a4973b98f9c153a4b4233520594ff81627c121e4526171f66838e0f00c58cc4253f0e24c9bb23f7ef43e91ce3c6300b65c8a5b84e67da9f0e5b29f3217e280db53a3168977ab9bcd98f04c94cc202e9ca839e1129dbbf318d5e621a573a3928c4786df99838ffbdc2482cac10d14510240f914833a0b4470831c14a84686ae1c0f12c935bd5d780f7b513096a1e4bb78efb03133668deeb4cb62621e5876e3005db805788d35fad046ec9043838ea036e65c282d87c5895ba322ecf443346f8f737fd2e5c0d5a2887a25ed9c1d0c53d989d6cf8679579c7361cde49870e0dd2b846a2ed8815a4e1213f73ef927cee4184631fd4d7d542d5ba639bcabb3d98b6d03ccb3a86b895925394bbe5d386d7395026457c950149228e5a5edbbd315ebafe822a37e16917518075c392eead699a38cfeaf5a08fe15c993a32d8b0c39a01661cde7d1c7d3de3f71e3342a40087b385475e40848ef45507b13ae05a7d492f9a0979d093facc04ebc63492e0c74cc72f30142a4039c1f66597ae6f63972028d8a718740ce237da4d8c3c09a824ac6fdc042bcc33fdc4f417c4f1d0f0823bddc6f71e6f72529ce3f3ba0f62e9edb26c2f042f7b21c9086d4a61b8424fb8dbbe831540d8db329c0f75d10f5e2bc4549ad44593ce2bf045d1d3e67fc59bf63dcf369327c1570bdad0cdcf98948515d27b0e2c25232955a4a603443ba332b7377938b920006a899e00c92827123883feb24161f5051beec48df36b608381224726ff5accf5f2c73aab9da3f9137dd5ca201a881bf35660d179f0fac7e5c69d1f4d0318a57b07b7a53d3ac5a568328080c47b12575cf07b1bdb047432e93c2f9029eb9d8fe51555698485eaaa6f74ff560601678985d7bbce969c204c7ebcfddd3d51c246e3639af4416e62efbc3ce9798cd9043d2d8ee00802140d60be622575288cc7cc1db082f50e148f7b778e95aa867df6bcb7bb542fdd7261859618e65d60270fa9cc37917e4a14f8e13c95c31671023e3848e8002e3fe25dff069078e3983240ba3ae99e212844310431af49aeb7b9328a2394115b642179e3859deb8aac311386a3571d53fd50e309ef6c5e044b78183ea450abbd92848505fe3226b1481b100e3474f12009157341e4c73a3438d105ec52b9f34ffbcab5ea5d3d65168d36a1f558bbe4fd255b950b20a78a97462ac8aea5b1acad474fdaa97d3f2b17c5b5353e48e79f64860f8e2b1a16d31f2ec3f596ccdc9eca8b0efdafac72704eee3add0a0be5e9a12a34a7f300cecab42464c929028fddf06146c9b918e8fc88316fe26155804657adcf3a4890e199c55603e3a86c0377386917fd39a58c72951a949a834ed99f707b350f2ec70651a5e4f4016f52b3a5b7e6633a95c7a606bffb65c8f764a30069d585d242761a4fef3a2fe6e88509ebdda0c2c064e35e58319e26583f7111fc6cad12b36f6671ea9460718b1c9abbfd8bb7c7a0ec6bbd66506bb14639ab41989deda3773e8f044f4ffb97e8cbdca5e73f847c218b527ed18faf2fae95c16d89f0389c8f02eb87f39d3be33cab5e39c0aa32cec82f067b36b16aca96cfd13117198bc463a5f39b55a3878147882d1257b0b8cfa9047038db1912f4b943db55ec490b019054b530e73056889489914df98308002175ed472501c86b74f598cf36640211b6483881d614da24872004c33ceb7f9c325f49363341028349376a6ee554820e01d60bde0cd822f70dc01a582edfb8784dfa03ead20c9aa235861333af90439980a40edcc056f0ad948725f494969bcd1cf9878aefef14e9952093a1467277ec9e4be3a9d18ce6131157959658a10d23f75831628e57d85bbfc8c90eb4b5b9803c6fdf8f10eef91647f4dc38367dbdc6caae7d064b04a4fd121642c6c995263d0eb4896fa4f66751b6c6efc57bde182f15abbe38ab5d55917d9f4f04c6c25f3179f816dd6ec47f89099d2fbc05417703b6007fa86d2ef108c983cc7c2f59f015e5469252bd58a1b14131f69a1385ebba1eb46bdd45b081f4ecaa147c780319c34c2a2e6dd281e6183ef4adddbe0e89fa9bb14e4e6e51b849916d1d7f1d6c7f89f0a8e090e5647206bfa94e0bf2242d606932b7033196cff04bbf7b91fa03037178c4042bdb1d4cbfe072136511bedd30c355ab733cb569a0e25254499ccab2ac447b584afcb01357282f28ac890165a99ef5a6979c036fd24afe7c06564ee5b47341d2c7e8d6bb99e6f04d04f2cd7a60dfeed7a95b47a3a0730744e7576ad92fa27be5ecbaa6ed07cacfa3d5f3bbead8e82a959573cfcef637dedac9ec54d98fc3aa7b51d56839cdcde74c5a7bf17f62e4ae0ca80f8d1443521f2d71253e190bb1cc0b0c0cded2a283f1399bde1c06fed0da92b1199db9a8dd52e20cc32ac84a9a6eb65d7d2ddf45687f6ce18c472f65fded8378e3f699277a754c75c7c94b242180cf018a09548a52206a8e8f0488c15a2d07c6e2a98622b265c6100a09a28c5dc66e3b0caaef29ae76a88e6cf1b8f155bdad84a747f5e2063041cd41b49912717b2e54f62b51afc82de929e9307c803aaa26dea29dc7f7c7d66cdddd6d4e6fe43a0aaeb1057fee4a52cf48ab8c81f7b76aaa16501003c0c28ea1d82d4322af24917b04f9927c01489218703213a6f2f369bbf0649040fdc3f2fb99db442b391c87a930e41d112d1b73f7476d5c10e0900811c78556e3316936f709560182306fcdacbee35d20dc62ff4a973359f62803a1aad02cff001be7f5be361766735b0d140ebf0ce1a34187459964ed98338d221b6f347937abc388a42e6031cc84fc8c00a99f33d83e4dd70ec5da629d5f7bc086c229331ccfda15c91291dd4128b9523d8f018dc637134739b9601b2d007830c8034106e2a6e4bc944c0e6d744f60bf38fc3fa702e3aa473dd15b5338485acf7e5d0b15ee95357de8224ef7fb47db1a268ed815512910a9a56430e04bb223ef5f9246f433bca6b046ffd20e2f55a26e41fa0da7f60ab90924afac4b827913dcb98d90304ec2f4c1f69fb1e25d47e622004b14932fa7176a43252c47f80e0ded5df71a3f2f8ff0961bf8d12273260c93a4f258d8cd89c8b55a3b20bf92670ecb4695ddfc6101a43f61f83ad029fbc1f7c9e91e5e51bc19d5f111efe98cd0b00a0a4603352fc69157f64ae04d02f0cf9bdbcd67616c3a718b2b6bc49922653e841f91bc4f3da3fdc3ec7a766f67f792997d2a83c00eff7ac9c17507c6c89a96cdca38fba3532163adeb253b7202abf192af8f71312d6a799ae36ba980c3e7bb2abad997df3b0986fbee7cc7de0a28887a9c58cfd96dc3f83413e60a1d784962071b2f20db112aac11126f41bd34c6c8b103d8d1b83c2bb8d8652e09ee8ec1aa4c1fbcd4e414da9eefa64a56d93c97573bbc6de1cd8c6e12fabb874175921259fc57ea31a5f25b40d259c09ccef8c5bf0b327bc814179924cc55f62f6fd51a396d86a94b4f58b5535e4859dfd2124791e25e69bb65e677" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "revokedCommitPublished": [ diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Closing_2fd2a3fa/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Closing_2fd2a3fa/data.json index efd21a097..d4f4a4c40 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Closing_2fd2a3fa/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Closing_2fd2a3fa/data.json @@ -397,10 +397,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "3ebc7e07fd1b8f9867602ebb7f28ca9e58ad885cc8f9fbd46d6763a170c3298e795f4d66cbd379de86e5ec4477eaf84b6b37fe10ad1ea371a9098007d7b0ce89e9d899f7c06af85bba8edaacd4b0979a78aa5eadb44a4796de8d7f4891cdbebdbf1c9e39225821fcde020711899cd535d5bc4c65c1883d9e242158d51097051cf5af8fee1844b2078e598dc8361e22351898e494963fadfd2bd4f7abab133043646172ef05949d4e34aa330ecffad25ab616ac4160b6811f77559c822f767d7249e91040b2123bbdd6f1d090f75e939ab89c35d2b0d0379f0c63bf9e45bdfcb87a0308b81e2301f213f7a785daf2da042a5ae048900026db6392d8468d3f060b83e2152d052f998559682bb7e41e0b8e453d1943392e1c3e2a15c92547901d41025b1581bf99c7ef254b0143f4f94f6ef72a08e8ba5a1f05b7130e33cebde1401013555611d24bc85d5a370568ca4d6c5c0abf36e1c9e0c79dfbc6c3954da9f6f9ef8292199582112d1b702976bb06a7042306c61a2766c69e913e7e40b21120a44c12db60a6b79fa94c5c9162d1db369b679babd2cfd8963c14b98fd314bafaf1fd45b4f88fda28d8039466b59f9cd9e1ed182ad9643d9611de15b3bfa4eab92aa0925c68745872fd4d23bc53a9fd5229604b431ff019757f8a6e96531b780001af81b14b6f8d11e138d323ba2aa0ea46fb4f7b06c9521943e56425199dfdcafccee05b2aad74f881f9e25073e7cc8709100d4ef1ac51b363ffbf2a3587337f13d3ec93711a93b273bc24dd0281f6ee53fd35336e39a99c5a01e337345bf72a6e9af8760d805a6bfaaacbe62772e06cd78b051f1bcb62d420e51dfdbbf860889f87191178a28408c6049cd94439d47ea25ee95e5a930970831e02200871ddfe525a334240236b5f5c8e2212ff3c1206f66e5610fbd8581d0fc4bf35939f6e643c627b298ac9e483b276c89e6fb0516d02b2680e9cd18122877a8df4d888e8323711ea433476d1e50ab83c65f6c7660a4b7679e55f9b7fbd06eced16cb56d4ba9b3ba2a49e8c3d7df98b34136bb9748799053c4ba112c29413a8c97ff599123bae383901f40b9016b4dcc930fbc9a9399d1cd98e8f711ab15fee118ba4d4f446adb97dfddddf1b4f50329aa8c76e1ff6fc66d6b780b7d36320bf6ca0265047cc0d9ed4f94939f57809792f99933587c7090b4a9946ca1e7cde98d95ce04ef40c1dd6511f477dff5ad3142e0eac2945e13d030fb25cb850ac47d35b3bb4f0be1c6edbff695e593ddba1b875942359a9f6d4ae8b1396a4f81aadbbad371c826d5e3a1cf0e6f0ba5cd2ab011f974de4e45dcdfd471721ce7ce6a26d09a22f78a7b9688a344d7fe75f5c9ad945b033e357079598b5fae7860957cf2fe53be7698efb4929418eaf5fc29ebd82fb97a19ee210340b85f2cea0c7281b3dd9b31115f18b41b6908e27a88540fcd176001e258022979ec18d269037b345fa6ba34bcad72af9559b95afb85429f58ceda03189b2baf28a8787c634b8c4b3779e05a045d98a22aca6b31fdc13d60aff2b0b11426a4d0376b1d1dd8b79f403123bbd92dc65b85aab7ca8e72555f390d149f4b0441aaece4eccace4a553c0587ff7cdb4e9b6be120de0b086f08928b0704575618d917ba7aac4e99f17f779f29c324c40cd99f52b73fd22b9baefd2b764c363250dbd151748067f390389a3f4fdb6cb7d5e03ec5170850a0a5254d5fc04a705f33c37b8414ca349e2c04429e6a816e1d1cf6a1eaa9125f34ea3eba3dab66a3bea64374b33ea50ed259edefc028e2c2aa0b2deb365b7cf6769fb13edc5cbf81cac1e9053c8fccc469c7f0ce783d636e8751fd5daad83048acaef83c09ecbb70e856e09ff42e5992d7c690cd855eb83ef00af41f8b22201dbedd0f22034b9b275a4936e1c8c9d5313e32bef3622eff2818726e179e514e5497ef8272263c0e5ede9a1932142d86217f395b64ef85ffbe267f2f369386c82dcbef705a63cb60b6b1466f9671263dace21063d7f9895eedcc627ec10f2b9974ea3c3b67ff6b88744ce015e124efabad9328e7949ac41cb509eb5319ab3c2299cdebc349be011ad152d44cb37577e1e3e3ae63ca0c9d295be661e7e518767a435a79ec995621c128cbffe9f45c2d0a32ca30d2ba0d548e1f0e09b2b34940f09401f14752da945fcb00e152d38feb5038bceee6c6bd9ea84be96262d611293b235a0b81f94d562364c08de25c7483a4b8613d0f88b44560d814fd8bca53fa2b97f099efd498d15f4d7ba9220689dd1717c3504ed3be2d57558c3fbab2d44556b3eecc09e2d5207b7da9f8e6713f3e2e05d71b705e7933ebf32718cf477c73318c691ee89c88fae55c90f3455326cc02c0ad35b7466ab72e61d1ccbc10cf4406d42b8c6adaf0c1539641d6718ed12b2c68200673768a281210edaed7205e282f723fbfdb7154c1cc3d0d0d8a8fad1c7e72478971f901b4e48265303abd3d6643c63cc5dca1b18e97755dca4ad96c7e46309be99e8ce527ee67213498ea5a8a6f24d26a170798b295d7d8b33d57d46410c45db148101468e34ae50703e8f07035fafdd96fc422994787ff3af23ca48068edcb423eaa21d5c84774bf8b39eb9eaa03f5207ec582184859f1d7cca53361f909b8f347940cf90c0a3f203ab43701b0a4908becf26ccaab822c0a288fead67f0e42bb6469320a7eed448e78275a5a43a84805abc18f0888bd1237fa52418a8cb54743437eb24d2662e211962165d4eb227a2d18473878b8cf3e13ea93021c8ec90ef7499cb6fc5fb4344c6eeccaf87b42d0d8e74b66d0061b75f18cc7849687550b1392abd36a4ec4ec8e6ec597c4b4221517f43611cee2158e2cc3809dc08ac517e676774479c9985680b95108be4ef1a9bbf691c3975bcc16a90b7bf02c8933dab05e33454e91256176e6021381e9b234a003877990488b0eb4894e650a558f48adc85907f7fb6c6a599540947ccc10c98ac8683b65d875811c1251092395bb39f7f7f14db38885122c6138fc9cd5f9968424efaa0fe836fb3365af5b8d567025752746deb64ff4b01f4a5cfe8fb6fde3bc7aa8b1e5ccd080fbab1d7fc1611d2c8a41f3fc045903b6a2d3e3867580b1b556c209bc31175a83c2d08e7956ed34e6d2cc27fd35b408b346046474167bfad3573e68b7ddc9cc43d9f2fba79bc32e9f744dfdc9dac599929f915bd66546c2d11c95d25b3c01f4ea32c43baa7bbcbcd74e814655548791be3e270925c6253634b0483d5e173871854c43469351195ddaaf979ccf27d2f66c2daec40d43c4ceac176cc288af03ba9ea22e455b3780976e856dc97375a2d221d75072f0a6a06fb6000a6665920b927c16bf1ab634025232e4b9367d508bdd820695ae42547ffcb259cedb6b08614a8888e689d4f1d67a761c46750476a0a2bd27c0727c522c8c18dd36a5327b416d44011b879d2ca123e5bb28158d214469e84d83e7fc17b36b653a88b0c24fea35fb093ce6dcc2dbeb21ec5b07c3564cd5c76327dd0cd7de00bc335fe2d381d7adb1611f21c761001595912776b0d234ae3c50048ce48ed8a09211991ba76ecbf6d6c5cb421c1ea0da50ea08bb60c4ede8c6e954568a854ce749bdce255ebe6bb42a5a82081cf86a888dfbe73d6a5d1b0b5cf72c5962cf668904349eead8c90d35fe65090e427e89d592f86ed789c5c0a89b2fb3d598f46b1d0cd20da0d68d2a516469ebaad5e720b58129518fd4563920230ac5cfb2324574d535fe3dc2a7fc5918d5a8618642f49a662bb47ae777d83985ff056c93129c9824b9d695ae5ea4ea7206ac9a81593509779225b6ed672bacc016a29256931364ac9df106abec4b1f5b873de86b754ee6d4a19d46e1a2688078a41f43d9bb442457542d20382e9a8b5380fb2b125dc7711de44ea6b52b386cddb6a88df25fa844b7a99c3d3f7024d1ef0f2af016d9bd8e227cd29d8de66982a229a05d50139e5f7c07efca97af92169175f1627b15da635177ec7fb3a2944ff0b22c0cf49fbcfa4c386d849411435e8ca216a07e09a544af117c2dda6aebd29e0c681ddf628c76875b3c2b8479d42bacb1c7d04aaed235d8d68ae96e07d47e900571e0491f59a274f3060dfa214d51e492c7cfc6ed2f6f031e7ac40f1cbc841f51961e00cd96dfc7f54237302cc21c5c5bf1b90d10743d1706781fa814dcb26cf153809c9ef03ace017949fd9abb8e0b90abc4dcd62dc9c9ee1960ef25aba359bb3e5f5dabc4f2a17b1f4f81b59b9db227adfd3adaec80e19565ff7f8edaafb4dbb6db1bebfb5c17897fc131d3e08dfd861b8a08fb5cbeb5e4a3a20b8761e79c783e9983e63527692ab97ff60ffc476d2bef1b13f66b9959e78843de25e0f829ab1ad814a67bb332d161ce3097c182d7f8cd5fcaaf4bb2ec626ea02826e2cf422731cf895d4c1f5d311d3c597e56be118c421c0593352b3deab77c88b718b32eb85aae3e2f017e97f391b5f5b1cc918d5149753735a2b51353dfb8b83be0169b79079d18dd806db4ca6be007def35573db4ff4c2c8dd904fe0c97462ed6b171dc0b1b53aacaefa79f4925d7946aff85c97886bae218d2a17a2dc666925bf81f694ac2cf6869b6878cf9d0c8b6e74e53d0a387040b585fa2462b517e63aafbb95c12ce892b12b3d73d5d97412e98d94728fb8aef96f3c31b1ee46cbccd202222bc28bde5dffee3ba83932ad8b20e1a3fc93a97ac059e8287a1686eee5ff5ac375becbf8f7e1d3c34cce14b2cfb12a35fde9a840802a0cd121fc4b544c4c94dd9fc2251749b4efd64f26aa3ba46fc9c39f66f4ec2e9a3de5d8c43341ddac0c2fed83d01a7d5356af924ae47169eb46676580270a1e4429624db6c630d2acb02260946082c45fcfd16fb6f618dfbbe1f0d14b804facf2bac2ae43f515c04d2cf4cc1103e6323037b6b0c74e5ab3e6cbeeaeb6fda9e9c21ced7db1d94aaedbaee4246555a4fbcc0ae6f0713d9100a1d04de3bed37cccf78af8bb427c89b113c52fc7032629fb37fe802d8c7e3961d5a7b6183be5475a5a53a1ef520895c284cfeafda109c23e0705d39d978b997868a3b91ef3930685b6e406f98ec9952c35bdb144b8e5a172367b4dd6428a69b4b1020bf4e4dee1413114807582a6347240ac26b374bb0b4edb9c29f0cd6d08c997df10558d97efb5b09a8648b0b0ffd367ed9a25af40e98a6f2a965ce0fcc138571a0c488273ba8fc935f16dd4a97f8" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "nextRemoteCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Closing_3bb07fb6/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Closing_3bb07fb6/data.json index 01168c1b0..d8b199001 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Closing_3bb07fb6/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Closing_3bb07fb6/data.json @@ -245,10 +245,7 @@ "left": null, "right": "0312a332a6afe99e14c9dc4ab0512448441be3c4c369be8b7d37c5086682b33799" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "e9be61fb16d68c464063d2c5d88736c677c9bd37b43da36ca6d66bb79d653b7b1b8ad94e7945bb46923d3ef877cceea88ce8af842c73ee0aff520db045a8b581ab19aee9837951dece8f1d6eff19f2375855135c8a517a4d6d2e9e6bccfcb4cdc90779c577b1a75cf4d9b6ff53a7b89978f5cc239c3b11bf999549151efd5f3c1a7d751276079f3eb3741b63d263b6dea7c9bc71380e88b6650f9008633f6bfeb0055932dc97f6d1fee22f24811a44cdd249c53495c2be7dbada65f67dacf95bd4812c4cb144de96459dc52612b82c8d5d57400f02a478e7411868d2ea375f27905c7c44f99f999cd4853c5d1222b8250861cd2bf18b15508e4fed4da0c9175fc56e6a79b4d386f33dc26d793cd696295bd1b7bc42d2a3ff5cecbcd59eca1861760886f762979a987d0d3b34716bf87cc7f6f5e11e894b8a69e24fe3940cb2d63431aef3994ccce6f9ab40cd1d1ca000d3d4cd261033e94458d61811b5b1d95ab485462f2c912258f134249f60eb20c66445e7f084907f787fe62053007afcf47dd225b90a8fa419cfbf94385046d6ab6932651f3d343091e41d463fd57c98383949421ab62f0ffbbea3809ecb7807703843525c29aca6265d5d156b1594e3dd6c05443303a9529429908c1a97476ffec7c1ed84f3f1ca523526c6baf7f6be3818d3f55ead9cd20062faabc6cb5d2f7653590e617cef291f46250805f9031f79bde194af796d942b67f91cce1b198d2fc44ca284fd9c56d1de1e97f8766648e7b116a2d8c0b7fc3e8d9b700d2a7376d053299a79fd70735d41d43d92421b3579063eb5cf96804e9593c598f461035f43a56a282402f0c1f10799b3c918cb93465ee33f2d153a55fc74e35ea989f4da7b8eaa27243a4f2c6e526620180b224abbaf42bb2e8d3da5600334385a3503b318e745a2e80ded0696808634c1f3bd4c1515d07dd943a31f005790a439f4737ec85be41b635a0a88f71c3333a5ef7ce68046cdc2c320ce4d55eff0f82b863ee7ee68c1a284b6bb5337330106e0845436f26d5c33f3bb63cd962100e7761399f575f2b88ef56f3b74c1f41a68badf476a3f9097c8f96a975fc16aaec9eccc5800b280c1aa73b5a2cbc036302ee374d703b963399af99872f8b15316a19915ff877c901110b253cd7bbf7c4c1caa6f5ddfe168e930e75a6547022b4931a134055183d2758689f6d2b94548718b6c870ee4748b0654a53bd68f52cd597798513e529283ead26adf043ae816f8eefc9de704bd30d612b0f421d1d7f600eb0500d5d67120ed87244c1cd07d130461aa057e6305be01dbdbc3c3aec4a8d1b188d20e2ba3493a77622f27f54652f028fc7c23694e4c1b3cbd77d5b2c362daed5b406ba5ceb9b674ce29a8a36871eb1ccecfede3f28be0e0f3bf74aef50ac240c07209e4a19aa79279c7a6d0ee04c15191292ed407775e48acfb8b47e12eedbdb94295007ad0b916fae7d4c06fb7e0beae95fa440027d35a9bc3568f0817e29674314a1397fde8f23f569a05bc231c1ab6d81dbf585e483e5f1e3a2331fd316f5232c03286caad7b3f2d8dab725c3248a6d1e092f0b95cc321c9d420d815fa78e552d4c0359a72b43068fcc195c3df93316f0a62f1844d405e510940b03c4f376b7e88059331249f97e7aea7d39397ea0947c771b18bc065f9c1b79617a340989080e5b3548493ef73670930c06bae8654eb2673f57271add34599728cddcf4a189a5ab0a10a439694e5afba886d046301756e7a155a30550a7e8bcec333efd81dfa0fd0724aad420961c94912ba8b2466d6500ace9aab7e78a31f6b8836766f788bc1be8cd6b337f49620d09c07e9519d41fa78d0d1e397cabbab03a7356c7bb271d2aa2e7c83f48527b393bcd03c18c558fd1dacfd9d2610ac779e5dd30fdf3b363480c45dc1d41fde4e2a988322525e48a756360ce7813f118fa5ae72367494d74198ac974793a9bdb5867bf5ba9be4d6df57e2ed27c85d3973a91fec28162fb2ed4b664582857e289cdafd850d8ff9071e51ca17e4f369aa5385de5579233c3ab7a1106a623272ba76ca95b53ff56054a28309419d46af37ffd0371516da829a0c6331bf1412d2c6fe3c0b467bdd16a4b74c8d5085a3af756cc8b4a6214ad7c3f3c16ab718d6bdc04812703e87c91cd19bb046d1a4053e72d5e5db028044f900edc6c780bc1dd9ac3240195ac765fd72b078248a2efffcbb6b2570633a84a8022ec1ca908f12c3990fe1667baac6a2e92d991c5538839b3614d42c642e414f0c319f9068f526bb8f46578c8cfccabbb2120ec4c6f85e618a37fa02e342011187d2074649caa3a56945ef64a64958e794fae707a9ad1d8db01be8fce080ffb14069e90afb800599867f7ffe3f3448ee35ef58519d1f537a4343f370997e5c1d6a5c24893ec2554fed73cbc205dc6a6c73142c8ecb78638edd9f9b78c35e6464c8daa73ad43ad0df80c06c9692281a522cbe9d72820f567944cf7cd98e79acf9da6ce8d2ec079cdd5a064ec378356a27160b974eb0c93f0a1eed874c6dd9c75133428bb048ea5133c1da0c2945e1dbcd1d22858550914b30510458cc45a9c518e7ee1ffddba061dae72a2f203105a14f55d8296b7969c5af6fac7d4eff9bb0c740c3840befebcc1285bf250ca009a40cbd5a07ddeaac43ebe1b3cd6a715e3540e0c589c5b1ba40638cbfa9660bd58522268c2c480bd8aefe4de0a0e23d828d7039197b5976fedecad3b1114fb56d9222111f430bc2fda7ccf415c15296fbd0142ff6da4bcbe1b2a922bd77f78a7616431e271968692ad63ca590d2b37de714c94ac00f2d7d2d017f0746d3604c35f445d186151305862a769aa67841fecf5c0569179191d3014a1977971d6f6af3155a562a66c7b7f3b0567b8fae708a401231f7fd240a458a0df3c64c3ed3b75ac2914252d5fe2078a6f73cf358e3cc63e1b8e2295f6a5421693cce2d2b75cf96ce9047bbcb6510fc493ae3dc7b351b6ea0d48fb9fc4608c43bc37ed6a2169be3821fd5e10cba97c6052329965a149007ea9c4a2b65b269acbe72373fa092b607a17a1b39e1df438459a179011a718eb6e60c2926ace34c8c9ff70d29f389de90ae6ec95a12fbc179bd4cd010e7f5fb4048db92c7168513f2a2ddc2e6047d9bedb25bd35caac540b4e7f22fcf0c8acd0b7bc97b4d719accf3126f06473d1a892c7c60ae989332abf4ed47785b63809db98b65c94556bbda9eff2dbd21fde24b24fdd6f30a1bf0cac372fac580a0aed482fa331ba4f8cde993bb8b3c85f960e9a98f4c0ee386cc520785ace7e26671640e1a6dbfbd2aa35e0f1eccd12a041bf2bce62d114048f2dc7109ebd182debe8ada5be4025993f31f208acf6acb8bd99050441ca57047898061f3fc2d0239535f6b990ae133e9723e0b95522078765352b37c3d3f24237ab003c42c33c211a968b38ed8f01ea3f5072af95a5cac8457299734ed6bafb14f5d76df8aeaf8f134b19a4a886e5fed2b17074a43f8e9657375c4fd285c36268532e9eb6609e110107539c61a86cbc59fb4594874d9eeeaa36f4f3326afb214dc408e6adf9fa7d161fcb2112f865052263b1a46d38caa6ee5084a3ab4dd00c54336a0131c344b59028cf7dcb6f5f8bd36482301585cce7996f86d30878050b12cd8813ffd5771211185d1349caa7b2c727921158ba9f3daa870708c1b8e0cb7d63089b7aff76ef473f42c981dd2f4566031299f5445e66eca2fac24430f6ad15b039567d2078831328f89854ae898e1b3357c5f747eda1847af70bf653448c9cb7bb4df8679a8a55911b049164a6526bb8bb727d0901b19dd7460d69710e1bd507a308f114afae0bc53d342e4428387b1bf40c4964ae8fc02f91744d99ef8f11e9cbeddb48fd9e4c7ee004dfb8dd02e03c7989cc9cef5822ae2564dab46d09b123390a6783033f244510852bb3daac5e6160ce87e23247b2c8ce2ab8f80f8801f2d8767d3b13b7fc831c8ccdad6b06dd93df07495e7b3bcab93f3948cd5a25221b4138dd648e5f92ddc1f4fb82aa7eb043b610c92ca1c6727a668591a21e24c8c9624101e63d5c3721ec5b1ac2a681940ca9852dd22f274c566693d911c81035327730f547cf5ddf4167c7c1a19accf53e874fbea5c377cb512eca084499c5619110e50108fe96b4803871b70947487e7d3c2d6cf2ffc5413f50e294e65efa98a893d4730cf7ebaf8316fa21e912f3a13122dbf4672f51d0f5b7e0c2e369a6195b7c7acd78a12c31eac9cfcb4b4292f9f3b6187b8bb9c09713daa4f7fd44a8136e65314c594c0578e5397f4d7b357e8c4525e62c445bbe8787187f663b8c965ca8dc285d5cd8fcdf4c6abb6077195bfc91d0111fc230a294d299ef6e6a92be63a1391d4a3f78115fbd62e4baf7f7ec6f44043b7ccfd19b7c91f18de11c97ff4fab4b107da0ee971546ad4b506217422f97a6680f3907c7658038e4136795bd34d4679372bf14ac98d871f0c70f488d6514320dcb94723ab8c40de45431f6b1396feefc87b2f444fe6419ca4e135d9243c1879dd46f17207176afa9eed87c31bc1822455b427e6190df6f1d3d8c38ace10e93e1695b1eef13b43a17b1aff27f723d203bcaf5b60762bacb24b6369f2e724895a06c05257a5ab644180e701df34bc0a5b188f849c623533106ac6f6ccea8661b9fe18b627394acd4d6380bc125d833920083257b0849843e00b0f719740738d08d08e77975fc2f5c900cd27c1c07a301f7dd23a34de19f18a0e58f98af08c305cce74285ccc1ae97ffe557a9a7428d4991825004a4bf388a1931725905472f0ae800679a4172441377e6c0916c0459a896b496c0db738fedeb557188e83ec9f20b1d8ea8adfb24127e65a174e3ed331a5bca2a2bd3e0bf967c073437070a5e24afcebaad9cfcfd2fa1bfa03e7707da8aa815d7d3b880460199507fa489330e62a678ff976f74a822d77265ded6e8a672fe141e41a856b02183444ee5708d62b4719d257c091762d9da8f07d5c69027710e9d672393a576c766fe4808932c4349cf0d80ee6479ee3ac64da259cf23b588456e7aa6de6857801f3c4d6ef1d631367e547d837560bd69af5cda7cb3592910a279361b039abba970e5aba31d1c3ada4a67fb400a56d8d697da736a8001bf5083103682ceccd6c360058bdefb41c85d02704812a2102016649399f8dc69db1b7930049ba43dcc6cd9ba208b19f0a1efa3b5a968f2b7f" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "remoteCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Closing_8f1a524e/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Closing_8f1a524e/data.json index f85fd3400..34111ed47 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Closing_8f1a524e/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Closing_8f1a524e/data.json @@ -171,10 +171,7 @@ "left": null, "right": "03c57839fd412868a398bea05d01678a752661126a2d1357a0f7cb6f0c60311125" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "56ac7d2006dabb7b7e26a032ac384ce15362f230e007a713e45ee0a514aef433db46a55d4650585517be36dc68babddf369cbfa743e9ad976640545119c378548729fd5750f0772ae26e1ac80a288f3baa7ae2416e9ea796403fe0b2111a919370021aba83cc9c3abd6671ddb7e2c54eaa64701b86d5b70ac2a44f723e399c449ff1b9ccb8e20481ea1ab6b9a752b38601fb202f4cf960cfdf3c77c91829747fbff494ab3701148abfb09bdee3bffe1bc46d157ae16e9d701764532db299530a3679b6ecce62fab88a75a8524b1b7484faf08b9347e1e3e92623286b98a27f8236f9d94831c489c9b66846d2e65b4c75a2850bf30b3268a3122589a58223265e5d62df74cf77ab3e781c3c1612142810b30c5e45775c70e6f17b3829688d69b5ed8769bd70018bc19de67fce65240ed94f1179087e74ca49212edd8d735f015a077e5cf6328d426d69e31898c0aafafe6d21b5784bf337508ba33a13c88a34a2d04e9f48e0f3ce7ad704524b9360adbf70d91b7900ccd2a53ce4da6f7b66226c860936f5549c7065f572e9e6debcec7560d5f2ec49bd257cd23a0da2dab7b72cc3118ee72826c15cc033bced6d35187d955019d1988549be9712ce4561ca1247497a6e60b506cb7f21dea80205fc66d2e13382998538a5c0dae806d18b8fce515a7538a881c5a12f67bc11e838b1154901f4fc84eb3165477f4bdf02dcf3d8ab42ba2ade55ee22cdf07bacf2b561cf05ebd3f8eca283c451ec09f0a8cd7b3ecbb83d17157e9830bb3d85d7143ebab10306544820b3811e89b7ce013d96db368bd9eff243e575dc10b2e7c576b9df66ad6c7379e6dda3423bde90a564d9995ade0a72842816996bbdbfaae0946ed2747c3247904fafae4bbe792bbba66ca29b1f9b0179a4093bb363dd3abbc6478441528b28daf1797d2d8fd3f200f0a6fdb8bfd4dfb02506bb16d4db103531d6f13d9c46613d4f03b84be135e19c4ede30717613efc50d6f28b6a36b5e61839ccd7a36a0d8ad6e81691f0772cff88f0e800bb9539e71ea3f1a52f281a9ba7c469fa917dbc75d8b7dc9e702c6a70d5d46b453804771adb6bc8cf85476ac31657776e674b632358f1e49ac1a9a4934736830224a136d76be62cf925af87746be07ef128b11a06d798ac7780843d46a2a5d3dd12eac27ef1af0a12581ec423df8be05aa0473b7cc30e55cf77d7255d1b2f9d0223e3dea9912552aee6fc1c9d3266d69266d40c8b85730e1a4327c956a51e06705e8b3f47463ab4bac168253ae55583523ed4220d97908932efc57616b4977e2418f26eb1077a4320386abf788ff8456bf044f5b95821520f8985f734a97dbcd5ad21d66d1b870a73f5bba1c4f382d369a3c8ebff86ce0b7fa29cd589053f1fbdc1fc392ccac7d548f11326ccc22cf641b7f10afa5d79c1b2015b768bda455fe573bd15001259a9ef3a0c47e3e4937065a4712d2d8d49c989bd59e3d8c130913fef431d954fd34b09947d40dce38a6301602ef65bcd1d874ae23bde4436cd0c0c2d8c671f0f73b42ee20fe083de4ce2380b4a33568eee72b82e6bf157dcee288091f9ffcc0837ae75ab3aba9eb7e081a5e491239a19e778dca132b958ee845a8de97876721766507191e74dd6b5ed4c08ba9b9547525fc0b809c46a4a7dc529df6f9b33f27905f355043c31f4a32cf2d1f7086a6af0455fc424da920ec2906a7464823b9f8bab0d693c8ea8a55317df43e6c6bda79015814558da1fc2c92ed6c80863544788dac519f418349a7707d59a1dcd160ea4867a562dd04c780c954d3e43bff6c8186eb4b80359ed267e216c96b0ef3d57fd3d39a99cc7e034afd2d3f6c62cfcdea85eec1f2ef1f2fc5f272a6117034b6c8b5085a1d02892d942b952a17fef041d4082296a0fc800497b86760d89b7eaf03a90c5482fe5304fe81fd4bda06a8a333a03a819b3341ab9335f12dcdb8fbdb27c235d80ee0d41844c564f9c84de48c198064a9111d236e6c3e60f36e3c656216c191097f17b285fba088391f5b65a430e92eeaae792b243fe05c88887bc9d52480bc63628e5a1e4821a977e1411dd22d343aca4aebe1b9b6efd23197bb3701fcbbbab1d5f2f426b85601c5ff37d79377f41dd8ebd16af52ae50ed0b45d4db319b1d6789cd2b6c3fa2e1ba2abb2a00d1267e0fe7467aa2be5a76af028c15f9ce9f5edb31c1aea177795ee1ccee5b667bac787f6115659a264fd5be27cd77e4eab64c4ac30a57eec78bcf3b13a0119ea60a0e8953d2f955c10295a5b0ffe4e653042deed40473a143e6201a1f64052f0d6edaa5796a4956e477745b0e00805f4cf4e0e3300ce338d8f27e8bd6c3fb626222f3e09ce38ac076bb49726e31aa4e48372f3638e7ddb66451496387e4a8c9d0ed3268f368455c3a055e70edb94bcf7961a51c740c9e1de1cbbc70c189dd48c1208a86b0fc85264659597bcd3c0980c87146446d6d2edee022b91573f8f734d2d8e21b6b1b78873c39ec34dad9b90d9b6214c33dec5dc087c108c9c8a70de64b6e5cb794cc35f581af2416831968d0021ce6e7d56e4880c34481e99cc6ac41a36619fc0de2628196f4d6f4b10ac82ff810302bab14cd58b6c10143a758f93a4bc99893d6d0a6391c5a4cd9c90ca2ce6e8310d4293305548a618cd0a5d4477dbb7911ce5bf92fc8810d549cb440ff9d5607811ecc5a0e878b780c51814fda3826dc4f108f63ac9e2a74cc0a375a5be4c9eed9dc836dfd3761f966f58a6eb60ca6d8102d34d5640cab6c253b7fbb6a17e0eece493f2541dbb9c43b6ea618deecb816cc5af8ad9b1914d445d622656cbfe9e5e22aa341412fdfb0b59b6baee4c56a9fe1ae146e47e7d3aa3f9b2eec7492e6ec1d01eb9ecdf1c9488c3c8a02b5582e145256cc6df17bd3947e4528941e358a83bc32802a047d7c3564e8c8f4f3869a5d66a34421efdc67dde9cafc5fbe685be01d0c420f764d3a7f027225d9b3ac980a7b3af4536b7bf89abbce5d9a4474f461240097ec5d81e21d969a41065b3818b7936231d28f208b066c272641d011c2412e0ecff7115feeca6bf137068a0da8d88360e9741fd1c9147208355b0eb466dc00b48e1845868834dcdc21d2719eea5e0f40df5e04dbb45a87ef473212f0ffd2ea97f82487938a25893eb834ca6b9c27b1910c9e3a4fa57d7c453e25bb9a193d3b71df314f93f10b7ee2dbc0498e16dff70aa79cb61c2b22cf471014f4046f71358ed17082dd0a797c8e4a624bf79d774ef1892232c7f2fb8cb9958b3912d120e84adab1f4f9c943311212f9f006870741dd47d109fde5de7f3973aad517bafb3b83c9249c7283e5e8b977488068e6f7a90418b87824b55abb62e045d3605cfe8271339a0e6d5090629d33882c9339533ec4ae2436d6e0fd48e853c56d68744cec5b5acb0c3246c301d5dbc96db9f8bc38adb66fb9e5d8712f3f6761abaaea03a57a57a9dd8c4fdab4969770fd3f3afe8545e7f12152d01eada01133a0578391a2ff9a57d828dbfeb558cfba31dafdba1b629dd497352b8f92d630aa20ce9e95d416f5d65ce95efec6bc62fa3822127b19285e9a3420a48227bac6dcda6d3531ce57f401250cf581fa8bba6f1c23fc3269d6b01a347369225619a784f08f9a84b03a2b2d44874fe943712811555898f4812f4c9cb622dc2a9cd49996d086d6a7df33eb0436746ff3180d408e19aea960f4beb0ca12170549e874c23fdf27654fd870708bde5ff98f26d26defdfdf5d2dab2e29db10d53579a6913a1ea31c49d0bc6aaca7ec0babff6e5c251d72198adbd5b1192c33d756ecd4fe4b1e35a2d43dcd4a3ed292cb4a26b236d986d83cca36b4e31ed3d1cb1409b3dff0f437b2b3897300cb8de1672e6b878a7bfff9dd75e01e16b6bff56d06b392c0349cd85b99de6cfffdf9e93c3ecb2f688d3b2b7442dd257b0893572cfbf348b2f28989eba7b8579384884b0352a77207af3d5c18d9acb09f944e6881d9deb9a1a9248c4b9f74f341982122777e95da9667cd0f1f09dcad04de4899aa0cc6bd2ee428ef3a4224c37e911c202328262192ec8180d0cd8329e569caf9bfb515819872e65066433b92ec6ee289f278e8fde4eba02a6c09e695643ff3f439687dbb3a20e7cc4d99ccc54727bc19f831ff28efb29717036dbf78465ca8b63e2d1154d6629b4f4c576bd967f9a5cc554862728fd2a7bd7ac9c1f9b628b3542acf023013baf6a8002feb051e2d2ac8ca66c97d428026cea6e428aa72d96b7ef53bb185360a3ac0f079e9e9d11f51829262eb18b1682d48bfc5024e65fd7af0f94f5b940c5e7b2760ff841def1506855cf85e679cb904dcf829687aede7fb70840e9ad6d9b7ad7b27ffb6def8a840f40d11f794bde4bbced2b5b63fc2c263461ade7f02fee63a4e0907a7f1b44a0e3656c8e4ccc6f00731972e9b1337dbe72d70fe715b93ee4e106ca3c330356a5983e74dec3a5e75d20b5e5fad7e51f28ce38f966bf83a44bb83a6a9ec694a2d61d71f536f6bb3da3c787f2c763cc2045067d56d2600aa0f4f24bfaf43b37fb8fece78d91ec511fcce7680bbda8684cdb0e9a619cd9888321bbd3d60ebec5ce4787b9ce687ffcd136db1f2a2877143c7dcb17bcbbdc7c8b5e3850097e7a12691211b4e607361a4834bf6f8f73575c3009a0dc6f2fc257c23404fc293933e3b1c31d0975968da2d4e54ac082289ab76c725f38913d0480cb61c6bff80b3f30b25662a39459619417d820cd25b34265bea62809d9e52b57a7e1c604ee4390e39d6185f6391dbd46f514dd6af3978de827adf594da0f0d430a5f9e216a003f128533bf40377b5c0c5bcd391f77c9e3e9aed8994a514c21ab5e38ca0176c8427d742e66db449d5657a05266d96f4fa3f2adefcafed21bc955c9b26cffe1f98e3a17b002387c14eddd1cc3ddda603e1076669bd0d6eda1079c9fc976437cd999c37b655ae612587c74b7cd00ae658e54572818be38c62f9c2ac0c97cae81c4eddfe4940ba79a545e54b0cfb439b81336e7d8f191b5885d19138c3d57badcaec8a1320715304bccd54c7f04a0577a80f0c600a92719982844f27130cee8932577e5b237c8432fcbf80e0c1dc97e5ae31a9eb4027964465cbf531cc9ebe8fd1750d681bfb1590265801bf7c8bbb876b17daa008876961fc7db1a7e4d896075248d845035817e1aafa68ce8f4a6cb1f344d11056ecbe423f3df6b2c9d22db72f9cb35860c096d3c6a960012420b4133c6b567" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "mutualCloseProposed": [ diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Negotiating_f52b19b8/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Negotiating_f52b19b8/data.json index 4e47c6c15..fae483b68 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Negotiating_f52b19b8/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Negotiating_f52b19b8/data.json @@ -171,10 +171,7 @@ "left": null, "right": "03c57839fd412868a398bea05d01678a752661126a2d1357a0f7cb6f0c60311125" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "8c0ca0219d38704b18133d3e9c6f2fff5fcba2fa4d7ddca7cd38361c62d91123930e013d96e802c4ef5e6c9cb1f101aa956ff6fd3375a525dd9a1483c4e39135fc8d732b2109b7965a03f4acb1a4b0c3e9de40ec5d0b075f0b9a6d7ee71f6fba369ba60c5de117d04338216a29a4034ab7a3fe6b162d2fffd8d8ffb1a1e120aba163590a45add7b0cb61a56acd91fa206fadece0959b20d127e7b64ee0a2dfd945bcd9b31cade08fb9dc778e101f6de98b23d805c82415b48f72bad94058c651a9bf017a75c518d7cd8975e2ee114691aab5c05c5178273744408ecbdb20119eb638019cabb65baf2f379bdabeba39fab76c027b7ef802c5561cc9d80675621aef1cc1a60d27ede5b54c40a92e71ea7579376480583bd18be60875b4789f59197c4647eb0581a6b777d0e0cbef26166cd73a501a39133f9f7d529b8cd7a67356c9509f0d0254edb193434b72e34235adddec1bb43ad0605fe92651d3f68499a96e788aed0d641e15a166eb45c181d3a71f87bd92fbd3a309026534da87120a24c8b0a87ec13bd4eae6954085b8d1b3a0b1316f8602974a2949d0daf65b915ed77c78a67d78c49d1538a2365e50da0931237df3ea18613f3dedc1ed6d73686528b7fba8a84270a88d715879630e7bf2bcfcbc26e3d02ea691aa23f7cb9db872933aed347c86068f422111c22f2d91a509792304771274dd8c34dbd645bc319ef17ebacdc42dcba613105bab6e0f520869dcab50e7591fe803a4dc1301997af79983481b803b71800d3f552ea3401dfb93e9019c4e566d7112aab6169f05e0017f522776942a2b26114fa11969daf6a761933d1650a75f1d645943e85bb0be8338721bd43671c5e6d18052420dcbff9c28ed02888e8e5bb89bbd45f3d043887289ab36bc311621a62e5c874cc333e28cc275cc4242f4e524c0ddb9f5ea9199eedb0668f21048b11f486c5ba712d5edcbea80e85148e4a51a3a1c84842ed7db02b88c121d0426335183ee62e6a20ceb1040a658e769fc261e27eafed669d7c6bd8bb58111325a8e5c1faf44ed32ceb1791a8b1d2a482a6353beb4e7a4bded388408c1bbb72823e846a16a5e65612d412dbf9a0d6c21545fb965f3d43f4e16b9a1daa885433a4dbcb45cf25e5cf8e43bfadc4c6663061fee3894da75582ed83201a1e171271c638057a9c3d8faed7036c4f7e2a6bb45ab87f102803f4b9d0ebfe6342740c5082367dc5257652edb933f96a90113775e738bcd22e97730596f3d1631bf0ef05d96c8579f1f6a503631dc79c8238cdfd1e6ba4ebdbc1a6884f455f1048d66d275fa4deeff73bea7f6611e100f7e7ec94276fb85b8fb1f47cb08b2e09e97e744f64c0733e8f9e340f2e6e2d75adf7693692de5f4360aa5f666707db1488ad6be41312689ae6e8d6f7f1113c757f9aeb690a3545493c6a26b6f01926efd9da9747d444c11d60f3da935de3007c8bf7538e696663c8aa98b1b58881f666ba00d7c619747d385e59e3f5885d6a4d1ddc70df9ca2d6c871cb6143647a194bd4ada7baf8f3421faa74dd7e18ee66d57e9281f9235e749a09ccca9b15e0a5bcc2bc49ee8aa7d9b9321e173863d40e3625412f1d0bd115e9dc07fa3addc5e6df48e3464c09b06c2fc02929fafb6b848f17e0d0f234c27280412754f651763caaa55fbf90e911b2bb64a69b1d2c79b4430bbde2f07630e635f7937d827686bcb622f287049c607944af8a3aacceaf74a7d709fecd909d99722486654d097c63781ac283347ab4f37d8d9d15f5638ae3f2780930752a8d1c19f25b904e59837464680b57901d7d09dd029bc3d0201d0929616ba5e7c7d967618678885c05da4abb1df78cbf3def8a5c7c1497a78266a62670471da7eeb65c1127275b9f534e4162bd33f4d77036a0823b0f53fb33bb6ff41f419379e4b21723feaa0d627a693625af1b1030a5436bb487fc4b8f8dda4bf513a58d44637df3901751f006e560cd8e53bf46e1512b7c449a79638bb14624af9b1409bcf301d32d4dcbf9078f2efdf356af11cdcee29fff984134de2003898cb60117ada37c2c20c963bfd337cb2c9c70b78efa746b6137fe70140aae2c7cb30697e54a5baa2a5ab4188b7ac8f4910a53f195537965e5229a41511c0a02b046a2f7b92acb0dfea2c2ab34209c04f5b92296fc4214c2644536ccf9495a79da81a53688f86a2b070f727b39e0dfa1d379c4bbaebe0d9f0c907fa90cb43383dbb033bb859e4dcb43efbcc388f1a235eb40979ef295a3bc1099aa0cf9788f776fca622dd8589079d20fd2c265e3b4d6812588ad226dfb61efb00eac0536409cb9b51d46a838dc347b8c1b9c521204f3cf99157e892ccad0a046a6c8bffebb810ef374cd7bd31d390706d53f983ade51bc920c5fbe8625fed4b34304207964e8ad12bd78c4b4590ed4d224e7f8b366bf1af81e0000b9a2543ac84a57a64d04d8be82e7888974dc4bfdc64772402952f0e0b42d4857aa7081c54f93313c74b5a5abe10615086458815ed93d226a80528383d9336dc21f8d5d40ec40c1cd954be32d8a31c777a96eef4e36bd9acedaa1fe1d806a73623e31c19992c741018f876da5b88dc8c3fffa82363273cf10952444f53308d2e6f40f52cff30b68c7dc38b56763aef19c29bb742bdf5d7b60b59a7c50075a258c9a8ab3ebb04eb7080555b5a114fb9e7ce9760f819a72217fd52b27c7beabb14a2ab837e73dbe64e31fae6b1051bb50df8d7866d38de6b119eb37bc7036f8896c096efd3b453cb9658eb72431cecb54a9c487e52ee32416a08784fae535df25a2518244d19abb78e3cc8485b5c89123c0f1cb5eca8ad96c95c6539ea14440e5d9f299bd8bba6259481b7b0401b3b5b26d0e755c996da5f9668ddc76ab96c61f83233e24b3fa6b27114799f3ac0d17951883cb1cdad6ab72384a1f821d9ffffb728aa288d6aaacb93558bfba2ec59e67fc67ecf278eb11ac844894f67aa4bc4799da7bd39644096fe737b81d6adc69dbc06f4a153b5b6c3e57e544fec36deeffdc9e24a194a8e1abed5a361f5131c38d6e0cf05b86886a217283c865aca2919a6d46886ece53bd43cc5af069619fb12c812f92c007df3b504c66e7f10a593fdd8d3c4e6a8c743ced232732ad438a667df097bac7566de7fdc85225845545b189d85a83b18d4053f3c6fc2105fbba0e254c2a5c753b97d1791045630527672f82eadeaec0db03c3f880377de04e1b7cbf09fbf87c04def97cd8dee544581e877788f21b7567a955dfd7a06a816dc7ac11529400acb16abf4e7730f16c3312ac43a84b62e9aed266134ef2ee0db3bf2aedbc12f838eec6d0f1427defe77bdb650aa5398dd4989b94b9236a70e68d48c2e4f5bab36312fd1f1e4593cd9995878fd6a2b12515c0d41c9f0aeaac69fb77a013d8d4704ab4a173574d595edc90882c1bf947e9fdbe0ab1d680e3b4ec6e497cdd6a8e00e8dc9bca52066997d1c973ba27aadbe36876f1011dc11d6835acbbe5c7cfd6c3204b2a44dbf89b9715fd4797cf4200a4ca858705f624a1b48d75e166a1cb0c68e8dc0c994d69e199835e9f62f9b24167f28781f2f35ea1149f53bbda63bcb27b74f0e3e4704026e84e873306de2300488e9a182d2e85e46ac04b89c94277bc1f883a7047f62d117e45055bba398612091e9fcd4bbdd0d15e4b41c97898d9acdf904aa6cf144ef62ef7dd26f755c2fe353ed5eff1aef005ab99b7e355111a9ba5c5d03874914526e0356bc78f09543d6419e87be1df37d34393b12f87c676f49556a6ae5c91c194bbecf27936a91f3688a501c2ccb9a32fea57e195d3b0e0fd0b4640840400ec086678ee67ba0bd774de3c111979708409207e4d4bd1dce2321b77ccc71127be8318fe92e6ec730a47112bd069c9cad37361f693d07a90b0a37e5875938b06d6370d1f1c1c280bfd83fc5e2d0b803e467eacfd37c48ca37721193859cd499653f5dfd78c26e4b181e82b5005cac0e9bd55fb2850dd4c70cc1e3fe5c81167336f36839fce30f245061191282585ff911c9e4af395ad4cf77b6e4f17d389ae8fbd61a3a3a4e73ccae0716507afa7ac4d0f2349c3aa56f47b6aa78806d7c20b50e125ee329921ffe96f8123d3e4be8be89b2318b6e016c385728b7a02f7dbb14552e2863453c33e3854047e6d8f84fe9f56c9200962025182d418580a294a0d09e9740e187e3be88236f62542b56bf08f72a859ae8a809e78a90e86b9b2cde799f9cca6049d5f49e97365744bede14be8cf680175cca275444e37327ea04d624faed898e0fc7751f1ac7d6241d93472c2d6ee8925fedc9169539799701174a81d3d6e00a9ac9647286d08b6c982c6baf86810d1e9f91c581f0c755273009389019bcb68a7ffbb4f0bc7de1ec45004c93f1a04a8c4cb60490654f616250c14bb54e9fe1fa1ad866830451afe98559d3e0e85073c2950d181feeb935c6cb69962a644ba8736535c11e7a9efbc17e9669b1c232985e9c5eaad29618ad9f461f1438d8c35c691d3d3bf80642a11f57cbf19ec1a7e63b2289d7c0e178052b6b344267d99e018c3f724f44ac465097ddea64d35e36c78736cfe6488991c4469d25b132db3560744e418be6ef3452ab5a73f66205e1ba67944cf1a556e60b037fb9ec6579f8638be744e075e0fc99722bcfc40efaf603c00e16b714ada2b7390cf2e9867df6c5961d96cb63298037df5f20e69b3b4bd2d2a24f68c48e02538fc1b2723fff9b52f18012d2024c40bfefb202b6292065b2cafb67aa1539e9d8b96ca039cc08e232fbb44cb46d7ce5017b14cd7f4e4e1675c2bd0b8d74958ac3c1232134d91dd02d701eef4ab953237b548f289f7e9ff902e7b39c40226596037271dd3296865618fd62a0abe228adb4286217b6049d157bd3a91b8997730fb29f0b086c9a0cd56f7f0ad198eedf098c86371570db86a7e2e972d58c8baee2e9e7aa34534e3f11e210d21ab8bb9de9517910e67d24881c8d2a72baa26b440bcdba17aa1c0d3448e3b78c62ad09bdf8a686af48107386c8a2fe1e8b575f9be0780a642305e9e9147f93fbc71447780dda6bc865d3412e5aecf0e842603bf65f059c9a3c3515ed949152e68d386415aaad1e8048be59bef3e4bab26d9cdc15a81a84f51dad584db81558c2c12c0728b0a028ea4729b6f032585d45feae6bc12e237febab2bef1117c366380078d163de200e03fa31640e9e927737f2679c8104f74b7ac4d36e32bd4a7d84632a2cf95e161fb3b5fa81321d5afe02467f059d13f440a03592a3f2b2ee93f667e2ed66559ef53cd734bed10b16062d6581be18e4717cf8837443653a5ffe6da47a73883210b7129bd1543b745f5ada684a84003f8955ae9150126f22397d5e38c814899b67" - } + "remotePerCommitmentSecrets": "" }, "localShutdown": { "channelId": "2f7c825b61cbbf0e685aef20f8923a8cd28943346e59301b629cc89b4e27cdbd", diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Normal_e2253ddd/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Normal_e2253ddd/data.json index 19c16c145..fdf3cf122 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Normal_e2253ddd/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Normal_e2253ddd/data.json @@ -342,10 +342,7 @@ "left": null, "right": "026c604452e1a154575f1fd5966389c2c686c0b4b72370da0b33764c66b5a8f40e" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "8feea322d066d4e3cd8858cfaf6ec9de1c51418af54140ebc5a99a4dc10fb098d7e97d0a0c44ac8a1e0de44f53f02a9b5a759cc4a1aae91391d80f459e4d5cc45c26f7eaa41871a4b083f7a8ee67b69157d517137d936b86b50f13cec26f136f79f1f9725b9d270fb455124ee2a7623a69f1610586351ffa281ab3de26a996e5047bdf09370e8672d1f7ad361f4e685a1270c9e4c10fc9d6ea3d0b3d83801f09880aa7716e7a3ddc7b5bddba5f7b818d714de9088ed769980564461394a6374b72fe347ac22a63143fd71ba51e4e4af6f9d51b4d8fa3f7627ad8d406672f016a1d94ac8152b34eb59b9e142e14ea553541440207fc268ee367ecbe7fe0053420fc28204c27db6ef42a29395e28625e3ec2a253d73d3a77a6cd847857fd20502e00d217653b994a8496f4b783842e36e68309985e4f8a06b33f13ae7ef12955495bbd48b127306e24f351f5021207f887e52efd3433eddf237606f92bf26a38c9480a2b2a95169a2e8a1d4fd575638bfda643d77609a08b4e083f1471d64e2e4337350942dff807db3530e4d96b00e33c95530506c743bcb5fd2248ce62c7dd0506fec42f21a4dc7153e06601075da0667f8d8de527758636c1140f2e5da640832111c1cd9efd4eb2b81d3c2a03e764fcffd9a5feddac08a9a734f895999203b16776baba5e52d367f45058762c510426270cea4ae89af0f88ee98ecd7b7f99092159071fce312f853a9e8ef78181fc312a4aeafc99d1fca74241330e0673fb9af4a3931a4fe54ec046b25a687cc85aa96b0f1193ff7d1d8d5b6a1f5ad2ca3ffebfa0dfa11418561189a32a323d171ddd233fa24de895ac21732de40927a71d12b552bd9095d9eb5d51ce62e6cb1859e697669fbd3e6d348ee52173a1de0a58abb4637011df5580b5a25e0f713f02255e9a7bc289b4cef8c3e1c98bdbace8770703ee0fe8e612cc3e82a696573ec930d94ab9ef7486d9788f1caedacbdcac7423a66d9074f65555080389a00b0c9c38ed41801062140d11701f997f7d31287e27420072ca52b46c5c98aa0b7a8ceb97f40c921049551d201e71d1ec40a9b479dc7814cdfaf894e8ac5aea35a86de722abf8948a48115d76ce411147f86d6f7013498acf884b4a0bb918df6856151e355c9969b0ffce04d62e96e308d35ad31f0ca0a1b3f8b4e9eaa4e94a7038d2e705c1fa759f4eba475dd3cc9c5843e19b5ad1c068633fe86d6e27b6c758ae4c4a40176a4af1f9bf7f358238128ecbca99eb231bd2eebc48a117b115d983811f032b22a93cf92ff8b09b8467821e8b14b16825b743bcfe6a7cf75e28661f5e35014370079e1f17abe62f23f396c3c1cf42992046a3a08d916d4ee61df67d732df0b3ae3060c4011d5dbe59f80c8f7470a3803b0d0d756ac1891d76aae887e2462407ce5b2402968845d9fda3fffcc325f46ff5857beed116d766f1580a2d9c3ca30d907df050daf8751df72be14d01fe4e48132bc3a386a4962949088d2e3fe34d344be3b64f99503c9d02117bfd4424631828043da39d5c4b8516c38bb2a5adf44cf7ccc0618b167053d45d187a88b4ace66086d5c25912aae249b3648da2734285dc05f87e4f1aa11d4aa120d1129467953388e7036f41a95d4d30d872a120979ef6293186cc0e5cf9c33f04d98a32cc6f7f131ef452ceeaf05349bac43a455e88e1e5229c6cdcabb0dff4e14a7e039ef83bb43d04057a00a20b34f144981c87d0eb5b165f62313acda8ef24b4ec87599a61d7ec83275f3bc948d93684182d4c27cb52b301400e4ae7770b0c53e1f93a12e526279f65f42e5258072350e463d73dbbd2773417e28ee30250ff2009eab8d5413ff284190549a92bc5359ea32ce3a1a33e6530de5f0522eedf1f6f21fe26b830fd12be3be35874ef167b7503987c71af02c33eeac46dc7da0e4892907a5134a5d84db4450d50e0c8d4aca999e7248432177a62229558e2043fd0a2b9a9634562e75bfc5fdf2e489310adbeedbdf6f02e9a0c7edc0c008e5e232c938260bb65c156bba17b6e500b97f2f7d5df5879d8e062af132ebd3afdb0054007e91049824a9d61f1d23d9f1025df017e6b9703482d23159bc73f4882ae43fab47b6ed8020d2d5be8c137669e9f7695f5890dad5008b734f7dd46885cd5412403c3d5043140b6ee1d3cbe444b77bd4c830161c37bc22580f349f99a25861ae30924567e27e5f438087619224073d95de422406b236fbe9ff13c4fe199bde6b6b1028ba891e2ef921996af01e2ea4ac389b9d7670a25a7b614786b6c18a863a56a35f86aa2f00ce785d5a2454f4c6cb6d0bdad70c8b4eacd3e129dbbe600effbbed0157f23cbf401254a6cbdbe4c6bd1d2e799ba3627fefca8b01eb4757ca0b92ab8138dacb3aa292f010332e6d64f5a71974e5d3685d23708b644476383fd61a091292766fc83f5c497734535e56355579a90cfcbec0e3422d68c3c63875a9931af3e9b2fdaa6746df659ad4dfa596f8a6881703a8a918157a204f7b21c81fdfb7195455bea4018d6f74a39ab8ac4530a7bbb3add963ed9161e04c5fafe9b93299acec3f9c6006f428a2eba8c9f9abe16ea45f5926188ff026a645bad92fb67c0b48d15f79a3cbb5fe7efd46f72b2c3d91904716c841e4daa39fcf6e070958b29745b8a6bd1aaa56d15f20604038a32b004b11d8af1fa13969aacb0dc131f2e33922845ffb41f5daa6436050891e86e67f7c76f46412de8907e687554e44f08c840730a926129ab3f2a4aa3a7800e18b4438d16c1e3debaa227a826df5c4e0a8ff22fbb8363fdaf3b48e2be0490dde382c491d32407d66043785f8a8184baea18c28b4b80903a9d5efb98018300c3ad849f2c432075a677874f74fc27d24b684b775c741afb98eaf7af851b9327c12f5606f0db1be5d8bc5412bbc0dd32b1ed775c6a72de4a3f3959eab60359591ccab4baa85d9f667a232d164d2232edbcd32108816b5c0cfd7cee1e4d7127cae44b69f9d53b2394be83f7bd670618a4ee936eeae98b9d1ab47dae58791285085d1781acff37bf291970862c8af1d2fe12790cc963a6c7f3e81442976a1784c8f69b3f571be717490e7d84945ef8589e684358d3c885ab03282ea2f1d32bc455d0e85544c845a4447c360b4192afa56406fcee9242f6fdca24b78590db51e23924d97728d054ee27838f5f5501eddf29c7e87881c88e5cdcbde75cf1a60d0b5dd4be93b7bab8b85199d047d99e78ed7f38ac930742d34bb97647c4692d9bd2e8fddd0b4eeec1482bcd823f3d4ef9fb995a3c0585d86e0e87fa265708e48594d428e2b71f25094f10b5ff262cafa1c2efbfd13a0e69933e3cc76bc4b7ba30f7f07762390e8df3afb9e79315f018011c39faa6fae56c4404da01bdb8c62eaf63549444a153495ecc4d74a57be34e605cc5751d8e66072786d314616b6519a76beebdcbc42e730172450282dddac8b3b1cdeeecdbb6e558efb17da91a47f8cad09e50120ce6cab38544c9e31fcc24ed93afb73625140c7711f07f76078aa7b0b456e548b2f2aef829e3a60717c941d4e0115bdd934f5e4197e1688323e941e48b0b8d0dd8f9f5728c7f0b12db3d6011660f770cb43af8e40a1d1faf5b7bf95be996ddad7a4e2145c35b13185f0ba2b4b8e87b3ed6238c9615c8751e55d1d190a9ac1df0c80d3d985e18a6c0727e613989092a8c03319349e16aae3fc68d887fa05c9cf062143c416939e02fb7a46c559793aa78706f6b1a546988fa6d23067f6b84cec84678bc1afab65b7194cdb09eaf1be84d5020d048664f56b4d22c424af6058bb3bbe9b3a5fd9d96faa5b32adba90f04e86b4ea44e942bacf764becc490c8e5d772ec83b66faf646aa3373db4c30048de42787deb0a0abb59c54263620735499a44ba91eeb3228fc302e566995c1fecfdd12f7d275ae41801b9bf017fef5ea3cd2b89bb53a55951a9c2b2b793b87e40c059e573b66b1f1ba6545d2a49296aeaed26f4a1b20af094578ac8f1e47ee97c2f3bea13e813361368121f3304d125df7cd7163a8513ce0eaa55b1bc9e8454b4bc015e910d5b645d0c8d99e933efc9c57d21a481f03919bb38a8f763011ee75fb149d7be22ebe9863dfe6088ec3325f49b936a1e33a580e65ee66dc099a961bb991f1192ef008f7c3b0d2e3934efbd6ffe2abe5219adac1dba7e39592909fc727f4d0ecf73ad23151eacec893a48bfd6540a731ee89a8439a1c3017f7c215da4f216d32cd9b46161b311a677aa8cff37253ec0e922ff6663e75f79200fc2dd676782b2b0326251711e2a62d98580bf5c25a2834bdbaddc58dc0d8a7f1a0eae6efdaa9ec1316b48a18ed3418574b6c565a2272b3f95902df9907a611b90b2e99f77326fa0e9539d9da8f02dbb4a5d1f3840edb4f6ce23d1cd7baa9377c989a2946fdbf114c44012abc828871b5e5a2574a2ca3ed41d08bf90b0c55c3b79760ea7a4faa6ffc9a6dc644a812c7a003859b9911e22ecb9dbeabdc21008d95b226154024834b885534f6af8d6c599ed664d7c6253311d6debba2e3062db5d4f884adf2c08ee4dd3541cbfa0dfed8cdb8f87aa7083eaec22ee5f8d4984e24d9afd9f6859d1a5b6c2e0a255126abc3bab846d78a4263da1c8f436e08ccb66240da88a27e712faf128b780e62816523544b7a1f6faf9b31ae02505a04ba8897428c636028481249fd9f8642cec85a9244e98c35036f59f02c348b224a159ac15fd65032ed7eb17b0206ec4ca452eb10a8a710b82f84dc18ae033480f8c4252c9ab6a4e9b12e77c14800ad7bec8f24c3499fffb70a585eb0787563e11f4ec14ad6c205e800c08dd5444e0b6dc7e9c8e7a7c54ab4bdce78be0dfb12b9cf30b293775aac78a48c0c78b3588456541fc0b58e487c5559a70a39ba06c7511286595c3ccb32e53b1e8a1afeb49b144e311ba2fa1f8ff4fec02c50ce8bb2efcfafe506ea963185d72f1608460185492ac409a4a95ae1ea82ea318f0e4edeabb223b1c2b3486d582ffd482323566f0c15cc8bbab3b6bbec54cb35b0f12098103176022e08ff07e664e54ecb5f85155e19b02e91840d506fee36df7ab28c86d4a6b0c067898dfa579f6d357242761124c3a8f58b2a399922f1d6b60ff549e3b45e9a9734ef1c7501d07b5d1fd1fd63dc662b0da3d1a9bb5c5c584039891795ed02d4b69aca515299a2ab8938ca9c8a2d38a98a63f1dd1e9c073558deef9c015d30d77ef7830f9324" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Normal_ff4a71b6/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Normal_ff4a71b6/data.json index 074594c09..960302f78 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Normal_ff4a71b6/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Normal_ff4a71b6/data.json @@ -350,10 +350,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "0604e2cc07a6a6f4f76baeaccce8d3571d9112b8cda1132fb4ce96614c8a6f31a237323899890ed65aa1f1f2d2ee3bcda264a60e93e06cc953ed00b33827a7663ac10c9967dd1ef5f9eac23859aad530f8535ec69622a3fdf433b0d69377f8af8eb22a32948bbc5fc4bba70c6d517d75d548fda5beaccd19bf60c16a8c52893912ac862db63cc5e977f6aa2f3833765f81fbd4dba5462f74ba0b3ee2ea5582f2c503b897a8c703f03fddde1b12203bc42f8dfee976ab3471de4deeff10231ba47cd11cabdb3b7396d4b7259ee60d8bb4b0bfa017de4899aa8ad1c656acdf24a67c5a4d33e15a27953aa618d721ab518612b2a38ef287c3161e559ec3647ff979fd56e124b13a5f7330df250be2497f2a004658606018b74281b63e2c8c22215662e1d44a23cc9b62e232753a9b61f6d8c1c5af016e58708098b02746ff3aaaab58f7c5ff26044b927d206930967acdc32771e9f7a2f655f9dae0b88bf5545b427b0d9336b902fab7344fcc35df9300142889dac9084e9d3a92f1107d28dc09e20a368a367a3af68b1bac6768920aa5a1f63658a3a1caf1eb26de6bd4e1c3df88f5e48e4951fc1e0af7a9feff9c6f879ebcaf886e45130db3149d13c291731dc87a6c575efa46290a02815cbbbea2050c10438e7191d8c8ddfde36358c3f2d9b0f713c1c82992a1bbd15d592c88eb2a8a255d7ed8fc36e6e5a6233eeba6f625974f8faffa2d02c8a478cc8dd1aef5122ed7fb72354df5f62c6133fa83127da0093d26a29812514a048b65ab77a5253114cf9d2b218fa2678f18f54665f653fb35e17cdbd0e15a0a8b0e6bdc950c8f50f902c096ac74e6d02c21d0fff6fd39702802e451a854f4dce094296830de2b9570c3a9eca23dfb41640eb650c73ae9fa0d8c73a073a5fa4663f2d8329f0b46c9ea7fcc8deac9d55d49923aa48c5de0fa4f9fa2c970581ff0737f4fbba3c44da799a65611ab2af8df807654a71c6a70354fe43ce51490b8f9c240a548f819e8059a9691360fc4627c9ac17ba7707d20d01bd1f4829d499faefcbc2cfc602f8ea730c2372e5604608ac255cf261750b5a8427752f29b3a9e7d850cff8bf5171d9a3bf354c66e27203397c89cbed10746fcd4d12c7b4cd248162de87b90cbaf571b4d4f8b460b33a16fc52a1487264e5208252bdbb21b7f1645af46097e2aac9f2eee194bc72bda0124a8d92b33173e23bdbdb1495a506235953a203c0f98371b8d44067664007bdc87a7f567ac8b79f20ab398d727f5ec1dee7beadad010aca6aa9de0aaedc581e136c0cba641d0206d036603554baaf6d03f5ca647c5f019cebf49f81b380126735c76c7e519fdffb0337896f8ee46b437d8fbf29957d05514851a8fc9e15c54a3990db96dc2c55f04eb4bca0e72a17c24598bb2268a9ada03fb606fb9c1de5217df32bd729a06044417672e7547367af426eade1b00b7037bb6324f3b79a0fbd12476596bc70f79ea67de0c63e8450904482107c33d5559d1a1404370b8dc78ae9f739780f3caef407d8d59d46873897f2cedd1a6b9e8c39afd68f1cb65180b791a1a5412ada4c0434becb6089344a97fc754ab0bb675dcad2a6a3b4a405a60d152372bded8a3f1e6c26fd1eb10f4969c3d42a4d6c724711c020a3377ab749aad2163150f4954091b71e806536d9dd41298f359db8ef41f834353b9abe9d8c7456c5f1cf1fd78a0ce3134a5e8e809ba084428c384e856eaaf19cfff5f89e1da7f89cc1dfb87391beba81f99f64a8d691689971a59bddfb6362b0a71c97592f983a024987f25fe471e477ad640657b15350e042201a441fa07da7826d13798158243e9e8bd30de9e5e0e6c913277e1312f9dba0e7c3201659431bb2f894127b7e1a2d7802e8ddd449c20ac366acc91aab037e2bbf2864d6ec13226ecec4aedbf75e8c0306cf36d9652bb7177cee6542ea2e2e69fcdbf6670204e8b87859c7e34aa602dc1322997480936342eff46e820a37a07acf46b291652f17e5f06c950f37a4fbcab553e77bf20926b2af9163984f59dc424c3bb3cfcf6333ab7b362b8243ab86565b9aa2de6bdda1693b6bb139fc45fa1a7eadffad1202551afec9954174e40f1c2fc20bb3c5c9fcf19b79e4776e9c30134c1d9c935ca617101914bd5906c9af159849a69c7f623e457f2353bc6cc89ed11c047298b5d7736a8a2e3796790a4e512fe90e33628b97f4506c24bdb63f7b327abdd9cf8a3c71eb079b09ddc3d23d8977ecdb45a687fb755e6ed821a3c7f7adfa37676c66877e4c00c09e2ab8f465985fd79869d0c41a00ab493e45271998506c984eac915b07fd50324259b85de1443e186ff3635beb76be2743effffa62c4165d15d853b2667b76438ae17d8417c0c8c92e960d972ec1d60e7a922b49c659dc60443c589e20c5e94a5bfff81bb088e68b609594d7632d0656984150c34df7e02aece15b4ffcde19f788abcf795a75b0aaf565e8e9ae0efbe544f210213775586d3b4db383be0940068ae9f2a6f4f586a39132a64e53b5e344bafcdd33b6908de068f991fb8595a9606c7a34305406038f7820d91acdd209d02bfbb91f6a772112a84754541dc0c6b2d9f9e209bc6835646846ef4923173036d52352f6ebb456794c4653eea97a54a8b9f674c7083f73d622f8f76757311987bb4fd1c12942ddc019e3a2e3119093b2cc514191e5ecc18e91958fb69badba63ba3f5bd17ef10366b909aa133f578a080123aea1160ca4390e3290440b6bf6dfedcd1f849639711bf088db0a67c93ed5871343678a4bcd2cbdd6dede5943184103b21b583caa7fe0606672a4412e675b11a9f2f2c1acdbc5008d104de031c9a7169bb2b70221449b64b0ff1b1922143e3a43280011875377c8a92a24f4bd2fec3cbd0e4239e67e4cee4aac0606a90064ec7d926c69dc873f40804bff7fc1f8fff4d094b2e9450835e5ced8dff6af1e231aa49fd908bc91d09f4521c4676e73874602076e24c305ca4050db485f4207b6704e86de980dce1ca90ab42b5971667faf7519ed95631a1cb5d6a907df6d7177ccc6a55fec25591b310ace50c7146839a5dd6fd1dfbccd514a17391661d5960d8376249c4a249338bdba4028c4b0431b4814ae55c36b66eb243e21f7c0fd483a9b461fa305875997d2ce727c3f7955ce0f05ef85ee6aaca942a70b73fbd9ced11b28147005730107a4ea0152a43cb80b75da653656f680e453b6858e9fa27f64a747dbec4dfc9a90d14d178f0f6f32ba6a39deecb981c84f4994db22a8bfd925f4a92a95e6b31b161a681be21760a5f7fad811afae4da168864e8eb3ff8798b6ac3a96051abb79436b14727888cc49f8ca100064a1cc83654dd218bd58f3f777bc4b7b73bbc687bb9d8076484990a2272b54efc1a041ba57b6ed4d62a16885cd9b087dae57120e4954936a4ad0a9e5da75a21fd058c503d264f8d63e50a3c4affc90f1bbebfbbad750cbfa52ee8e89aef826af4dc0ad49b03accda524f0c4307dc545eabd1db4acba25190cf30a8b03f640f2ea89cb239ab6c250241ca31e16d17cb560508243a2116dd0c16d76784f511eb5435f0466b49d2bfa004c3651b0152bc5507e64f5a41cdd1d0da5a21b2d51cb4110c5f5de61b743c34740e620618c3bf426964250271005ed3fceab7e4e6f554d4d65588c6b39ad857e267a319c779e2f9b8ccb749597d2e8cd000f2b2266543f2755022ac5ce31011543f6e7d31ce4a3a862d4d8e55f895005a8ce766f00c40e79279d221d084584b5060e40966586d8a091d6721929ac125360c9298d9c094db3c7be23d72fd17ead90cb33f0444f1c6e2a5ab77223e446ecb5d95b238cb72594f25524c07df22a50118160a954d66c91ddef25dd7364cf7f799ac941109f84f2a53d846c25ccc46b58ea6848c1dacedbb8bb7f7a1db1194c331c2db1e7e49d23422184ac3d1803815b64158b8bbd32d92e79c5dbc49b9500d568db25fa7729a1ecb6c3a88f574aec6202098ab89e2cf685e446cf28559fa7cce28a8545f298b14e74ed7039408dff99d7366ee966b1a5f67af3841cb4e112c870e29e56cfc9cab340117602d9dd104effd72bf424fb91ea770f5b65749bb90bf6521ef365c07325cee76df867d53450549976739870572bf40b4f70008387a3376071702b984805c721b83a7b6f30249855242e289e18c302c6331fbc1664befd25fd0c4c3b1e2e5e1a9cc4c7ad693a0fec5ad98fa391a8610ffd65fceb0318225b2fc3fa990a340ba4018fedafcf9b29445a5fe12169f87bb174c9ab4a697adbfc9f890682c3da79c61c83e9bb4eb362b9b79c8f051b0a69b2057eed7d6e8809bf458701e97d052c85469113f5b156bc93a27abdc3cffae7a3bbd075f38f17d4f98afe7847d91f420b913cee1743433b5e31328a10bb95fcffb8651e3fc2246306cc575f95b3237e821cf9f2e82470d0c09809d2506fe53ec00efa984b2fb31bcc1bdaf86ccbe8f1bd5b42fd9c7e7a4b0aca3d40bbbb5911e45edf53980efb6368de25b46c88c1b168dabcb436a19ef31da31432fa5068aba62f255596bb159fc3a266be4a2a839b2e8552c7c41b357890ae4eceb84722f2f737e44171eafd88fab05bda5dc147d13cb1c6c9f4cc0377d34d1025a0c5de10f02de8c2e11066af97ae4973a1dfeccacaa13cea263ab7455b1a4e886c0f50d095095591fb4b07ce981c8fe5dd80712c42b8efde5fe42f988d3956b94e0a41a1bad7119412ebd27405c0b19fd92d0174ae74bbb204aca06b0150b5a06c9a822bdd03d11959e0f213a66b395a7d11eee53f74fbad37de86874ea0c6e372296caaec1bb50de1586192b1b469968896c4124c39837553134f66c0b8a7d2c0708861f4706801c0b41ae10bb18e2df354ffb0fcc88390155e93a4e5ad221be8751feb7136283ff55efa559bcfe6a06e69ff33b9c949e1f06d3d84eaa6b64615d75d0f36d924a65e79920e1864d2b4993df333ccc3f3e5fad84e860f9fb0e0173bc57621e4b2b7ced1488453a62e81ac8e1452b13ed69cf82e2938e10927c6981697e6dc856244ca40f00daae5a1118ee177d41fa59ef06cc465c05d1bd24695f48f8efdb59c90788cabf3522dfbd5b61b9967e1d82182ca748e2b3fe6cea05fb948ce561379b64f87e1e43050b823ca7951eec02e0325405115d52b5b8d5f4a015e3e95753ca6dd9c0258cd389f16af5e89be5f20c0bfca119b9aece1f66f2346f7e7" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/Normal_ffd9f5db/data.json b/modules/core/src/commonTest/resources/nonreg/v2/Normal_ffd9f5db/data.json index 379308d25..60d2e36cf 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/Normal_ffd9f5db/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/Normal_ffd9f5db/data.json @@ -199,10 +199,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "0d40bf80015515b5aa86918d9d8dd94b681522e06253416b445e66d9ff3e96831482e5829e016432fa02608c05619f28a8bc1d17c3f13424c42ab614b18a5c8c5392d29bfc8073f433bd66d371b11bfbdd5b003e56e7811fd5c32868547a0d95ca390da17c0f169ba5dbbcab700144bcff9d56a2ca71cf894b735477a4ddfef30d9fa6940dfed01957da58f0bcab920d9192bac1e0d5ac38327b954341d2265f1aa4de1234ce4c2e610ea04afca4c384831976fac7b4d62c7bbe829556e67f067e045f6b04d2337eaa3053104b06a34f766aa6946c143fddd17329418e2f91b0d9e2e81a68f5f230a718137bdaa12031cd7a4e197a16dec4f1bad013abd256f5e109172e2f88e66f38663e1bc1e04a78eafca9aa992f0301e34754d8e0c50e012d1d19b8e619ffbd8e0a43752b9bd2200e6b47b3e2a8d0a1bc9fbf7cebc6160c9647c1fe7884e819c3b0c0baba752681b82d7a5fd74c35f8ceaf5f9cb68d0a47c85ca3f5a3c5627e13bc88b8087819da84424caf28871ef802e5dc2523369b55086449435d9229cda7769750c179024400d22dc0311dd63b93e227844f247e7ae7699201a2435f3fb6ae38314c6eb68536de5626e497389a8b2e08aa169676f1ed98984a21618483638e5621701697a0305c520bf9df86641316981a97ee1475acbc0749ce49b8c718611e208aec624ee65b261f4a381634a58da51bc2bfdeb4b54819c87b384c7d544da98525ff98fc9e82bb92df5fb325ea3b0fe73b480e85f4d8a51e37e94fda0a574d9a85dc4639982b7ac2e7420c674721361ab3e51ef4455b9f59933d2bc04836a232a7a53de0719aa121f58e6d14fe3b71f2178115581a45fc4cea15593f7fb4cf0dfbf85fb9355830d6fbe64a5d5ccebe9b10ddddfb88317be57869db944a16d724eb5b658bba3560f2df7757dc6b582859da5ab579f5d0d7d43999d9930d6f2377eff51da6122d9a2bca213fc9368a0ba9253df32ed6cfd45d4dbf72574496d5295323c18a263bf90fcefbb7b9c9b5579604cfab39bbf6982a098f27de5dacca003bc1fe54b6d1aa63fc269994720a31b887909e60b0846c2cc75b9e65ed616493b8a09b873c50e2a60cf50678a2030ed5b4ab5d54886b6bd90830a00579e1b03955ee2caeb889a8b470a969c6e8a2cfe57a33bcaafcbb02e5166347916b3dacb3ff43f348e57e1bef9351c17213ef7499b11d2a8e50d1dcff53268fab218fb8b9c4d2cbb8579cf5641a54020c9ed9e58b3ff55c1cd9cc4da8e8aa2b234e6d5df538b2de5431c32fb6c177bf5f3f85ef0031005e24e14701ebd5e1fd9e76861bcff3cd2b80c3c7ed25d07ce8d74f0b049a064705ff366d17625d1dc0619f430ef375ed587d42d4ac0e936cae6920cc637756d0272df2709f1964868446eec86e946815ee132c458ac0344a425375ac68b793f5b60a8428f0421b87e4a4e55c44e4df67a2e8c6ace566b524470f6ce44f29df8891dc5de19c43d65f82336eb8200b86750952f5e39af5de6fbc8543bca005ff6e77ab6f64252038edb272d892508ccb761843be09b3b8d90b7487bedb92550c6d12b0e1289275452643ef99614b19faa0c54437f171fc12586d13395aaac9cb556d4daba90468c2955d143a8d294b0944c47a46b56b89dadfa05f355e008a768c2546c7f0e33be9980e1428e36c0c856199dab9c2739fe912f468baff12db809cfbe50e4029eb4e17e7cb3ffa1ef6d1aba9b472613c362efd7ba63306dec48f44423b7f15ee2658b2f51dd410ded6251ed9892b98a3a6bc36fe2023f538aba18548a17b812f22183837b830ba5ad6f4516fd091ba9c387eebd00377eaf1df5633b4c6e572f1a859d0b56d077b159629b5dce2d9c26ff185d3426f0c2759a27ad2fca6436992b823839a22ae6a1891f243e72abec715af0af733ddb8408c134117d64e3b2c7e417df9d5cb5158d91cc6994cee7ce048b41b4623169235e29bdce3d2d775a745da5698467bbe646aed844fc0490cf13a8e144525a949ddb06fffbf86d0135f37ce9e6654ff2ed02eae6652d9f6393a38b1dd815203c9d65f5aa238adb89ce6a378d0be9d9c0eb87fb540e5a23a7bc790e725a4cb1705c5b71cd11e2c21a39b929ead9372f200e8a44c38174cbb4e9f3de0b25b714aa085890f334e24fead287804b0ecbb1202ea1052311f5a30a0a282332435f2c8e9188dfbe3b35ffd1d39daeb3849f5077ee31093e3e69e788f5ec615968a42b4ebc27ef9ba81f6aad18792ca043bcafa5dcf7413aa5397373e3910982e83bc40a574c932ccff521e9f208e950bc103d2677628205977ebc0fdfddebc1025f3266669913157ecfa70439682904df36f651112285a4960a001ccacbca9c2f9e0b048cb515af8a8b12a7024666c0100ff457b09d4e5ca50921c24ddf27ef5bca9989c08ba146c06f77bd91f63d6b44fb77101e3301e42038e2a9bd5bff636a22faad6de75fbaacef183331534d61bcc5827ef0ffc13f08057a3c3d99beb946aa8ccf8b661d16f28cc9cd9d0465d00caf55850f9ea721d2396c7678a298869802ce96d24e14d534ac0d29d03d70d4c2b65bb80c9715fa02646e2f2a41c9eddbfde55c0146f552fcdce0eaa47bf1a3737ee20095256a6498bb50091ca1774a39cc5887069a346b2c6d25395cf07ac2de53027db764cddd41ea4e607cc67d0623d730cbf79e47a3d880d74c878a7e157bc90498f4dd4a8dd578e8288a9bdfbf75079c952e9cd1cbc7083c8714a4ccf8aa87bd202cedd66aecc6e1768074b09797aafa09b801b3216d13299da908e2b9e76a943ac9d893766298a140d128beef78d077fe973e736a4b89dc9df434a591916674f25f7156bce775a5dd3f9fdf77efd6ac59bdd6eb540cafef4ef011a4eb2933465b21eeef8affed5e7a308a670155750c21c824eadb287b90e8fe7bcca8bdd50a324f3a7cf922ae53144167c645cb77259e00ccd8dfe69c68e76d0b437019da1997533ce6c93916d2d2d0acacaf295da3bf5d4f93aa4eee07367617cb19dce82cd8b1fbef60e5bc95fed7fb1ac02b9540d91941e1a663f014c07902eacfe94a9d11b9d4ac8d7e9fa269e5cb43d4dc31672249b0f5e2d7867213527075c21df3a69732615e9e797c8a11b1ef1875cce770094b8a9bc3daa58ab03bda624ea0d1dbb9d02ab0848be47f005f0d4a7c86c71aff69953d6af5e63c23e390c3dc61666c1f6fa2644f58cba07d70b0844485d5ca847843780497389c01d4d882e235368dad945ad4705ad14642756c7c1bbe30292bcc417a56283eaf47e1abf752d6d913692b8241e8d6a9b992277e0efcfe7dbb49144c6a184ee13be8128e961f71859533b8c5941e6d19e29f73154918684f428171b78330b7337e194fbb504660999e53bfc3124a71f5c9494c1b0ea9ede867f9fb87cef135795dad1dac116c28a6742eb64cf9de27a07f9864977ee9aa579f175299bba9837dcab6d2eb7918dc68d243128f19890d2697c92ddabd78980b32a11867a08bc8510dbdc8c5682b8d37436fc3401b2c712ea15b23e35c3a26e33d9f7ae73b7e81d61c1a486524a4ebd7c97200f15f8d4d12694ad209b8d5489fcfebc632871a7b0b3147ff0eabdad941ae9c7f4a3223182d57e8dd3510f0e430ec662655e32092c126ac284102a2397968f66436463e55205485bca96dae57da6230a60865c391e49d2b527e7b1508f3752302a6dbb9e3604d67cc8d9d1b71117d0e3cc0eea998f50f61cbd42522e08a63daacfaedeb7b0ba56b984c0184a9bae7b5adc588caa830d5a693a699f62f0017d0fb404d8e656e0b378700d3a2f43c2b25efb73457bd2de729a17653e580a9e3ae5e7f5b09fefe65c3fb3838e53245045876d32f8b4e0ba438b56db5c8cfc2e866dcf90b81825413dd945d0c6e7ba67352afa4e225f852c6bca9796649caa64e72a53903b0b3645672c38eb3c7a4d84f2bf805b6500098610441df24ad3a3d60d0cc9a69b185c7e2572d9e402641a3a3cf03d23089874052a3c1702b5686bb931ccb974b7003568334ebea35dbe15b95eaa3e9a0346d56651c5199496b8977919753ffb0f836142003b1e1712a023f1de756f477747237158a01be15478c980c678197b36456efdc01192fbf1b88b46bedd92656a98a8ae008e3e795d627f44803f150ac135f08ad4d966af6c10b1782e2ce95b34d185777ab3df3572028889ca6d2f1bf6c63e26f6ddb2f207b3d59d2c2a5b537a4fcb2e206fda70cbadf8c7195c4652404ae6775d026a604e3e2021dc11a7cefd0c43cf0738e90ed311bb633a032e2d8aeaf88d30e78b0e1377e7422e66118df460de5e887b257db20b20eb9d0975e8254763e87046d3e6252cb20b0afdd2b0baacdba0474776473789efc65d32d3d0ec1945717079aea8de188569965151d57f724648bee71d0407c008e9ce3114646993fdb16245b131bd6d4d657686742ae64efdcbc8eb084518cb9460c1ad24188d3b17ad9996b56caa3cc0d6eb8e5417442405fa94a5f46e1af36edb365170a433c2d5c6daa39930b14e1c893919a057ce7c1bd28d5351a4ba44b195e3d1d022b2faf651b0d6d27dd1526db910c5ee66f7a0636c27116411875daa1b1ec2b009a6bcc1fc1087a8f257ccb1a30193d18b368ef099ea6811118e2304cd894ad741e2d411b18fb39f0dc0f1573922b76f2f3dfe2a1ada1d9f68fff6cb49baf4ce6073404a89710f5127a23a4bacbee24477799ce39e313423e32d4cbebdc8a800fa0226644794c586ea286a9e137d9990cb9e4515bc3b57ed80fdf3f21e3044847be0671f9e53e8f44c45bc667fc05c35d6c7c99aa70f08ea1839b50393c8a205fc4ddc30529d9df5243a4119c9dc57b656fbf7109dd7e56268c1245e89975acc4f180a6663ef51e586bc6220b08377d64440a4e21c3c2b26985a0f5a8aef251ccbb1f71e3f1fb25a3facc83dcdeb9d0f9144a6ac12a4d7657cf04e933420239d1729f284e2c1b3783cf08cce2a9391292f03c8f1af295b72f0be0c8642e4a37c1f81ccb32b2cd1ef210546af165f47e28b01e616a1b33cbb6ac16e8bd06d4e8a41a14b238ff4ddc6e6c9cc4ac6b716616916af845b6b6e225ee2e751a542c0fa82da127f0796ba460c53069a1ce2a720f238e498d5ecc63d56014c7386d8ab4abd5fb6c02b1ba5df24962cf0b95cd6a99fcb42e2cf54a9ceef85355861010ee9442ad7ed30a7370c243d0e76fbb9" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v2/ShuttingDown_c321b947/data.json b/modules/core/src/commonTest/resources/nonreg/v2/ShuttingDown_c321b947/data.json index 51a957638..fc0161c06 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/ShuttingDown_c321b947/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/ShuttingDown_c321b947/data.json @@ -239,10 +239,7 @@ "left": null, "right": "026c604452e1a154575f1fd5966389c2c686c0b4b72370da0b33764c66b5a8f40e" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "efbff61a8ce1624a44a273370dabef3744c5a740f2d42d643d17b01c8c13c22d2ee1a38bde2d57cc45f50101c4c38828585275ccdf87eb272674b855549c3d48be0e7d2b6bb086918c72eaf2fe3c801d86dc3e25a6b86c4a2c3904d6c7528db5d643d2afd583afe9ad466a5f192b126215229753a975763b8e074ff7856da46867fa80e35b8f8b92b3a1a34b0f7a4dbde0c60366fb531d0f2d50fdfd432d04b1f55c86ce4ee5c0a740a847c71d9159e2b0d5c33386291424d744704385fc6b6c4de7aef575cd65d17f5960fdfd845ff8ba33c49e7bea33d113d28c82d8befe4670a464da366c58ee4f57e64dc1c1644614b6e12c63c59f2f6c216341abdd6f5cdf8977bfb925f52eb897d646675ab74ef73c78d975b143ec6973bb2481f59ce93cc7d059da222fb41f5e7e6fca2565509ba4a3e87597a83f196b72ee1953c71c93d447e2285f4c86889edb77bb82a9223b5d52573b8f9b225da629a5e512a3b2f8e684d7cd9375fa39962261f6791e424865a7ff39823d69d9b75e7bdec047bc77a6bf55983b582666f3edfdfe5c8b89409abdafccdb9d2dd6786d9b1f5993159fa195a24355508cc05b8a6bd4619ad027071c9382e02f1bf465c9a654829c473febc3110e3bab8a5d97ff37ac7d1afb5097b32f86bbd995be219513f3eaf3f9740f8f8da12ae66ff76831397e84c969742ab10770d997916b6bf61dc8b5448cfa262934d02724fe11a0cffbceee11e346761fa376c3f180c9bfb515f8747a122ded534e352fa885e4e410b2cb712857a58ecce8c2a6208f9bcabae27a5ab74fd9165a94d17770a8ef8952ba7fbe1c672aba15dcf4495889e99704e038a510a640570411d49318a4f3cdf091a3b208c4eeb348ec321506f3e5769a7f428016f4d452c5a6839fb4aacb65535accbb8cc7b1be80c941d57125d192942fd6135abb4f2d3a38471e0553ad764ba1c2c6861210840af3aeec5b767b6608754007f6353252b52f836b86f58be05c6d18774bda6b77b6781bd1340e07d87ea2d39c73bce8f14aa5833e8d07d22dfe0d0bc80b140e6d4b88377d9c6175c8cade12a863370ec5549bf18caf637be6cc6a18ac4a237979f2741878bc32bb14fe12bc1f23c967d7c6bb58e775310540d836a6d64c3253b8c65a8e3166f4287186d351b883ada22edff2e94802c1dbbe96e59ca21fad15ab754edad008c86d11dec0531bc60c95ba808f1ec6b2ed6284a089dcd7d556acfba7cca45688fb2c80f482f7d200735be022212a65956cf9f1dec388859b90bd7238b66f10cc33423f6b91a13cfeea9a26353f9ec44b0ec3381c50cc9407b1365e2293c300262bca19b4a386533bc02b5ea97207827dfcb58eeabd88bdfe9a1faa7d215137e70ae1446f953898c12b183336368dfad068186e21b826f715d04bfbb5fef7a450e9c4a9bbbf0f80c36cb37217d78f6556037b48ef406f2885a6906a3495bd1ca6ecaab0591c67fd06d5b23b4e7c4b085032414c246e49a3974956fd35278a18fcff71d784c69b733c0f5b8927df627e91ab75334d6c6dfff84c04d7678b069d52567eb842672f78958bc5f825cb3a5dde7f9903ccc79ab30e0f8b29b86ea7e26cc6beb22397da2742806692ea6fb4ac7e6e11fc816d88dd7d7e37ac482a023c0db4d3c782944697e0e4d8ca053ac5c7aba29e592a9b094e331ad6a8f09ad455f4ed86c135c75db443eff081bb039bfbb9a2c79f93944f84cd74bb0ebace4145dcac8f34b1b5efcad6e832d2a243aedc79604f942599f3b8bce92547006acd3b7e597fd7e37bc3ba3105d2afeb92a72fe7042a873e2f3a24c151f498986311c76630f58a06b57dd18f4be04d5cef8bb71a59f2b1e82fc915bcde7dccf844bbd657a463686ed6690e072f794ece3a5d66eee2541f9cf68be5f1d5c60f67aad450f560c080bb43c2ba0cc36f0b5792e5e6ed143c38ad59e9216fa33dc9bbba208c7ddad20d2f572977c83126232043812ac2d45f92283461626343dc90aa02d9e61aeaea79ffe9b94fa2a6bd217cae098248423ca24c27dbcb9116f19ac9b8c79158f95ae631f7374ba2621f9c6588dfebf25b3b1c4593640d3edbc41d69764cf727f16c82cfed5916538a893f965385ac4ae32f3ec6f723217994beb68dd344e62e5f240d27973fdb668c7587b35b92511f024d552c2cb7588203bd2b5c9f51ebf2db7675e5f241bfb3959fdbe8ee5eb86106303f2069da20e28dbc48bedce9f42d4ef17b5f830604efebab73635c9b15edc329d5dc250f780c62b0532baf08bb0c1860ce7e3b07fd2d259d9e4dec7b7d64903c787147b9ca85cb13f1acb0189cd13b1f481dd139d2be646afc94db164554cc22262745ecb0c4ae59d8ba90da5b2aeac35277a5f9fc02fc9970ef7f630f0dd084dd32a8be25a94197441388285334ba5426f1eddd1dac35c17979ad0a8a5e50bd18aae24a0bf1c4d29d16c336c48dd7289564d0e85de3cdb7b055fdba2c09f181bf29d85e9fb7fd4f1ca503e35b297716f0a0606521c0aa934aae4a8259a00c45ce1332ff998c9ccc499c858a6c2db465c981370427bb595122a20d6a491b2888f85488a2ca5cdff32163c5d68300107462f0e094f3e55c31cc619f71562985c124bfb29de4ba8e7e1d845802be099bacad8748063c7df520591cae9f056723c3d8b47b07e014a679e81b51a6aff5a958baceeb9cbc97a20ceb52852ea7a0c80fdf6462d08c7dd1d9131648df378306cde261d42cf5f85b15d0c0a14ef5316d5d7fcc6f37761f810c2ee460c936dce16e3da7a60dc175766edcaa32720b123c698e46befd7fd1b2cb1779a220db6dec482c35841cd1a84cf6306a82bc26691ec50ebb314d1e05491222d88adb43a1ba48cf1bb46940ca4a025b8bb6f2219dedf99c414e489e7ff43faa159399c1aa5cb8910ec8ff35801bd9606a1d7e1a057e2d8380657a96e171b09fe51d1fb6eb7d8111b16cadd856ee5f829965b7acec5acc8500e64cd38713e2d23e4727fec677e47fe9dde3b4bc5afb147c482587423b33659b17fc80bb8a9a7770d31eb4d8f8c4c1ec49a37ea59e0572c94f3cc8f0535c8b29c06598a7d88923e281af37ba8e405c4ef3b3fb23134833270516ef9fa0cf7494a6d44587d6517db69cda4208f9709029999d6b3b4eef613abc6f9bd22c7901feb1601a2b069e0ffd48ea55c613253a6ada53d0549cdf42051d89fdc108c7825742a08a0d940cd78d8266d39e00d2ecfff35a227ddbdeb657f0fb3c401510a6ed313778eeec99b43e2ce70f39e581c171fcb6c76758f3b28ee43d39dff5f7fb31111921d909455ed07c3038c5002cfae21f9629135d1449d69b094b4097e889f5639d9a912f03ef8d04632b2e4ccdb4cac9c56851f4f1058919ac8062d9114a3fdb893f1a023209eef1141af7fb1aa2f469e639ceea1e9230d98796da426ddf2eb91d893bd4f47e251869a7a345cd8be2350db12edfed4a8252bda54906a631c7828f8af0611100dd29458c02e5a491dbbff319b8814e7e39a9fdf36d3933aa01e249ab0162136ddd8f7c584b9be7445d1e9690db06e59446aa5469c6abad3ede543c871dbb3ef11f5a5bbefbb0794fb4929751520f0a62986636f79ab38c87f8f18fe5ed6df384dbe0fb37ec199eb80b4ae63e4117931a82ab41d3a46367fc5b5611087f956ac2cf0f573d69f484289d2134f4fa01d28a08ef1d5655756ad447eab3a7e2b60959b43ea82a894a2e70809bd9834059d2404cfc174dd3370a55234a7131b4a53f1de3d1726739e4cf266446bbadc380fb66ea6c3468fb2e6789ae6214e6cd90982c4fc2eb55bd501e3502b65410e252281944f9c62500e55da3440f985463aa9d0229b5280e9d09271e2fd142f0f4fd2ff9b736618055a1395e0418c0927f6376211b5b6426166bd6cda9109437cfcf81009562c7f2b2f766369d71ac72c3d1bebf4343b698a33d2bee82e6a465fc33f61a3e92ff3d6d3b22648f87df4208170142f1e734890215a991f8a6ad80e4ae1fff2e9b366c7958c39be8fe2cc25c8617135a5351e1f460d59f5242ac6bf6b775c5fd4a1cf3bc417a21af653e83dfda481a1fe4e4fc0b8ff227c32e7c26c791a19b01539f113f98517167fb7ad9e560dbd4044a62630b80948b80a18b28cc5bf57c2c9b0d256292dc5dc5111804537f08333e2058fcca3b9ea34f5a1a812cc778e632df90c4fb9c577e1b05ab2f5600ba09f36b34118cca8f3ac84188c55a7cd27081a67c94e7790066ad1fc7835cefcf571188733b4fbdbe697711eecbbea278479d72ca21fcd62e4024978ab5ecdacf5985f4e6959e7714c80a493a62a7626b913171257b4a7bfe57f826f4e40de4b01f251d830bcb62f200774bf0881f493ae1e73a412c29308e8d6bfafff5bfb925b3e7d4e7e20a1203e71da5cd5c6320943590cc3ec89ec53dae9605292fb57373aff3c805d058ac2b0c82f668f9d0137c717c00359949921cba3be8570511d9bb47265e547a6ab75e0f85aabca1c84483c75549751da39773419a089e488f95a9bc214741c59299a0b0226eac0fc34698c228675b107ab644a46fbdf7f96bb578a2458afc92f29ded5052105fd6a29c4a0889d7c9abcd09fb53e817e99961286347eba150becdd1c2e591c0885e2e756cb79e4d4acc1f855e215c0f2995b45cbda23dcc67270f9b4e0bf7bb49217ab0b2ac6589a936613c7828d6ac46f7858b4010b33a0625d6220fc8f3994d5cb39609a67c018b120fa0dbed73d2809688dc80976c24b9124281af8f9b1b4c51c1218dcbc3bd9a0b9e729b949562804b30b1e39a654d63daf00a51f02041bacba7a383d0b448e99472a5dcfc9a0736a8c635b6d6285452453a15a26dfbb18c2ceb7da40d33000e04a43471104fb52ab3ed374c2e5e3a603b9266fb32f55e2f7c388e56bbc82082dc2d132429144764031fefb24fe165c0572d3a4d8f30ed4ef9e14b3ed4ef3e12a66b7bd555955e07ba435dfe71de41eb7d656b2e7bc32ace12ffa8385b9b617c233ea4ab018f9d7f794ce070b01e94bc5ab1a511aafbe07bd2b95f8582c776643e2326a1f75ebf4f52d893219cdaeb33236c99b058278e34a0b8f78309af14f067eee7aa2e63a6c2adf0afc2f166b5b02ccf1f03db25b8f260dc26f3e9dac99096ce0864e5d13ad743c2a41209a8716445ac51205a99ea73c380321e636f37f47a97dc5e8ec58d7db1f54293eaab386e28726cf223efdae502cba2ecff73ab69a4d467133ad7ea0b22b0e6f4526c6da4759b82ceabd9c5e5c95949d7bd6badaa776c70dabda5ab64c6659bd21ee459a957a39f40108e4f9c0d19861b211f48003870a0f514d524d2599a4515290cc79deab43a71de4e263c2af4e88eb04325b5bba5f632bf15f735ca8d87effea35d4fee2630f282e30fce610200c759acf4bd8f92057d7266511631571d126bc325897f137ea5c0ea91d388511010380aaf89a0b2addf90408e83baa35f837daee3ac9d9196de28a367e59e33cadfcd6c2df85debdb40f1f41e163e6db85c8dd624de74cc94f8d304fd69b1f51d5117fa98834db5aa8a2458f8c2b7a44082e87a82a352d5811c93551cf0cbda8b356035dfd21408822095fec8b910aea02b1600c5c477700877aaec59303b8931de823a99e981ab0d25449c0bbd65ee388d6ff091fcfb192c0b1e8870463bffe7fbfca3c7621c809ec1167f3174ce34f41b2090e8eb945f9c48dc2b3e9600c638b32e98e6adc46f01bb8d0925e79c8403d6e517c6b704d54f64553fca562f232e8b018c048f7accf14a791a36e15ffd2463e215a7bb291f6a4f082d108cf2d12c488f43c35d1c13553949979e72a57881d7f693d748ab16d6b4a0ed03193e90493c59f5e4a2fafcaa6bb7fda644a17056a01e1e287ddf3de25e7a6a1c868672ec59963201669987d142348ac0c9837970395b3fe22476a192c8057bfc521c142d196d41e45e1a3a4a797ae68e15238b086100d50b5b9cea598f802dea865bed1eee8c5e5abc5da24372395deeaa9b980919c886f9fd5225a7aaa02999bd4a02a559243eb66cc1ab12c4a257e17ce1495151a5a2197a1a047d24f8d800043d6dcc99db1728808b5778783ba17b62aab3a0a872d090c414aba7c855086e9aba12f212c3e10007d041269a84701eeb9a4caa454d73bd43b19f71efc159bbd6a80f082ea5494a5d937cd6fdf05dae74231e630c838b80a1434dcc7e0f009a0eb84a9798aadb3fc73bcced1961994267ea349de055537847b72f316527da2dc2dcc79133cc5533aa8a533024804e3848ed3bbe652dec75ac43bd2345a0fd4adc0a9e3831506f6adb53b9acb4f925b9b37804ebbbc37ca7332295dc7f66829ad3fecde19452a1e569e2daf69b8801ca860c8da723b422adf2ca5efc07916783849c259216f2ee8c73669f76c26e979720b856381ded90ec404b99046632d35d00f8a0316226c7cfce5b005f907c05275f2aef478a0d0d2e03c5961c2f431268d118e86ba1f98d77575893d5ae5be7b793a8af1261bd1cda715861db80487c965d57d1766e6fb9f149b4f9c61e3610c01dfa1d9108a0a219bbb867049c6e45f83a57438656f5ba2b1cb61997858236d11c51ac7bc5ef324bd8fb0834ed045686b205e5a9f985bbe1a96f16e1d368b49e1868bfec950073d488010272938a766aac169bf0456bee6278b173e108a8f92329218b88562130b6e40c342c56c9a13c0a521faa25051bd1c172ae206c13340dd21eec67944afe3d700e5d304cb3cc470270ea13dc9439af82e5c9fd83d796301ebb3c00dc48fa7d4bbcf424d64ee0bf1e99ccac07620936b8f4e65468bc51534802e9d2834bbbf90a011339bdb54a52927468b8d166c85f6296040859df2fadba6a0a4f2f18d27db98efed66c2bbb764ebc9306afc3fb4ab20bc65389f04a64b6610520d329e58badaa25f7a6475624450af5858cefa9c8ff61845e3b6a7d3d44ceba47c882a5e06bd230cb98a192e92a78bd47e2442be74727b6514a7ad2140a94069b463fd6f6ce39e03b691a23f6b84f5351ea0a0a160fe59236718c82825c1d077d23f084b22e4fba6ba5f1a54f19d5d206102678a93637085857009d35c423f4c328efbf77a7a95050b5e4383621d75b4c84a67ddb6df01f53dfd2e06827b76b4de0144f265270dee16f7cdb2633354feae7256362fae4b9357023ea4b9d163a6852d4f09adcebaa17b6b2595bfe4567cc9bfc2d070ce388337af87a37676389b85ff6815349f0d046ce79988b0fefce1b6e23ef3a729d7ee1624892aeaa70f52b67e1053e91fd0a40d314d47143551a14e1c034906fed2b7af0ce05e61e2cd4221468847edf4ee473511495875d551093f9ecb53e4dda439d8f1d63af925282fe71480564fd0a85c695c67b6b8344de310b0619301023c825ec0a151f5d4b6df427e62e41930b602db488836b08f4b1148658bd81d87a55aa349a9c05e35202306cd393f6e4222b23a2afdc0718753f3423afd5874e3e4bcf7f3f5a56c956cd62ebe8a877a583648115f819f70afc4ce885ba44d7731441407a0e8d8a43fb1324e89fa4e19f2b5ee776a6b0472132db1b39b585d2de6d93dafe9ff02e5e6685a77fe433d4897b633413e94e15fcffb6718136f7c132fa6df37075570bd04be1ba159a0b075efe860fb47bc43bc8da8089c37a50b52637ae2adb270c2242cca82f3cac8fea2fae9363b6f969cfbaf088361e27c6d9b2bfc2538f74b7a28a8391c68296e38be2d4b4173e9eeffd8d6157987a46aec7e7c6395dccde74f6850ab247158a623ecb27c38443463a3ab374357e94736b7ac9f0ae83248cb1d77a2472f1550a6ab093f400eb4f39ca2f467f0cc88e8e0ee6a39c55c6396320c2af43485835f8b015ba47af5b101742d66c0198e364d7546626f7dbf08b594bae52ba5748950b6a8b9fd168915c92116fe896c7d88e6931cc93cc4078266598644d564e547f2d668dc71be1056e51391eb0e59a65389db4b0ad83288cc22ec68cc166510d1d495191eff11fbc8d69a60764fa1d62b0b900c4779d09c5096414f9457bbdc5fb2004766aea576e374b33b259581c6adc68f4393d46d53fef3882841790cf75b40241d20823c8bdb6c3501d66a1aff1fc906be0aa8106241c023ca4738b66390852e16bee9e041bdfa1dc5de8b21c113e82278abe9a86158f9523c1a840507d50aa79bee2a3eded7f78782b2981e835caaf396122fad8466b27320acae5f8d0c8ee73c2a990d0f7dfc00d6e85c154a1c26543276ec271b72eb95375fee11955642a584c94546975c8c258214715b131b28d0718dbd53ad72e1e03ada412fe1e5ede62060dc223fb6368d1f5856ede5d6f2f74470b14cb5bba51dfb711a9687314c795808e84eab928527da5bda701e3f14faa451df38400a0e322ea6f155efc05b1c5b8af190efe5c82924967fbd0bef054e77a9a97fa463b71277ab54c135cb06d4712a2426d390adc6336ae3a4e6d2068c44bd6d919059cd011f9d36adab4caafb08416795c38c2a8c34a4631bfdf218e57b6740a6acbc8a8a3b081dab4a44e748fbec1787ec451ce53d13cde20e389c2d2c06470bd786f436d693efa320f9d4166d01615597657b3eaaf8ae932b1125f9abdb0025f442bd553a4afdd9e0cc018157361adb9b49f739dccc0598bc63fb6ab7d0bc01ce1b9d8707aa45b48ccb11730165c4d7839fd95215f38985a1c969b64e990c8309a5e963406923ac92b6ae092eabb5ffba671d3229882fc03e12deac82d0f16b2f1d259ffa628a21556898ec578e8e26152a4cae4a9ff07dc3fa49435990329dbb131e942b77ab3acb5a0ed8de88b742c854441b2deeced59dc6827ff8eb7510b16d9375a54ac75d58f364dde4bd8aa596b0bc4caff53f94b6fb2295371ef7782205f38f897437a8dcdbc015ab5d1cfa2917d7f412d506c9803a2c40416d1b8338f3cb7254f4a379bb7fde18066f677cb8961015f4d452af876ecc211c272da4a7088396106d8769caa5adef56bdc117295505324afb803f49a8fbbf5e7e30a900270e11d2f93102ced92fe18b711416c9d5a17401e36fc5e6e059b21d8de123c5d9bbaeaf59495eb665b30a98f90d5ff43c51913e8896fd7262f89d5e40029cbca4c73a52a795e1a12f684c88ca96b73daf355da8a622e4bfa39ab12368feff9a1536a2bd380039c5f3b38f5b3d69c07535b872fd056fe83d0a90ac3aa4ebb99570583a652442e5b42b09374ffae9287dccb55dffd48397d5dfe0b1a94ba8751243fbf3a03c50ea5010b641ce6d2897f77f506f050f88d0f1e1dc96b81a578677cc2c7ccd7eae1afc3e28ff5d6ffa60020451701caef692ef4d1ba5a4d80fe99bcedfa490c92c5b6c8d0ba2553ef1ce3118bbeb3908ce42871bfc2fc71051ce2ae878b0a05bb42c95268808a2dc5755e4161e429ac36e09c5c2805a4dccfab353a0d3e3b8206381a8d2201429a77b17aec506f4d778c7ca055862820af054f17780b3ad60c778f0dbdae22a9d76bd264e7aee9ce38d2ab00b29fcab4590acb843aaab249807fef5b83b7a7014048b915695cf00af8c4d770b3ead87514293804c463ccca63fb6bded300e10a95a159bd4c01003c0c4ebb7102c1d7eef139729c2827da4b60cca622ba7d78808f5df5148a6b87a240bec20630272691e18e708cd402a16402520b6a1a765732a01db8278c5b47f68fb2ae96ccd3e3d3dac1102c1fd944c6a7f8d0f3d9ae64f7c8f479ce0c1d55aac30080ce835d0d1b477fbf0b439a898befc0b5a13c10e80f449fd1314bb83771593a4744399aa961293336b8108918a74bc466960455408e66292499b9e40a24735a50f86eb90a6505c7408da63f94fe4e2cd8ffb896947300342244235fc49d30ece993a6de06bc88e84acc6d021ae746edd68df29b250bde1205bf3eb173454f31e0cfdf78db6478f2e5074e5626315ef909a13e1f6b8f95260da1e57c98c2daf3e695990cd52238cdf2d1ed0264e2eeebe6372b4eb3c87a92631747a37e87c69a5bc643a5fc60a543324417e577cf8d7847aaf8e4d3d951f97bbeb97cd005930cbcb74f893ca282ec61ed0737b3bb9608f6a2784237a563a34432113eb9de5cb88f061f240e7f67453a50f66e8dfefe7d981e67546b5df00b423b9606b7e1a832a9f2d4f2653bbe05a3f4d79b1ed4f71c5a7036127e733c48888fa747d2467bf18115ea078bbb134ce2a4ecb891ebfb07c37676c01577c234b67c0726322057056750b0c6b712a8172088bababefa810569add845ffe99d45fe375a214affa994db9514059a01b046e1a38b2bdde56fc1943e1aa60d7f7337adf55541a6582eec2b00265a4472b1f2e5ba3694ff357f5f9973c276e0c427fa816654b181a3abb3569c0bfce6d97f8aec83de0c41f6e1497adf8419f80fe9fc4b2c2f4f30f77ebb86fdae9ec05d41129be8db80388e200450727d9c5b150f18338826f5bcfdafc5fe3f313c6276f494bb39b0b7a6ce473097b948120695d127579f37b222ad4d318d161e0f3b29ce84638cd9f439cf1abc1b06b9214a86ce2a000b3e38f2abe7c4105cd68b50b33dc2a0fccd37eb40f1098a8dff86edf4353b53fc368ab670d54ff909961242fa9cbba7a976d7f8e0a3ce886800b896819aca98f50d6cc94f73cf9999c9ec6b61a92bf16e6c77f1b0dfa3cf6a85222f4262e33032e842b2f1377d74f7b09010fa0009bb11f705e1674d83f6a9df8210a2a7245727f1d112301c77d1656a7c0b97f9d1495dca1da73c48ed400c6261fda02cfe1db9659d0183b418198a6d8b17135611d34362fac2527315479f6495906b013b8b28d1b8fbb4cb4077f8a25bb379219e34ab551fe7ccbc407be82090dfa61300bab698c8e8bca888e489438304274e8646570fc866dcb2a2fe86b3e4304ece8f18fab58eb86507a0874dbf9a1181540ff91470e690634f537659d32f6f96d2f17608eeeb8c34f56cf7467b95322b3e6c571ff036c1802fb55ab9b054800d08d502377cfe1d4e546a2ae60b7d44656b5c1ea225417b733cf53f14aa83b3498abb6c45aea86a9e59bfa1260f085a424e1d3e39cefe034b18439278bee9c1436812605463108d99282381ada76ebe76425808a364946c1d959e1605f8d7e924854ef05e5dd77513f47b24bb192566365fb2e1b7a1e3f28c0cb0c30726aa296d722aedeb1752e81503756d4988434100dd7c46bf7651ff9fef9d8412dba285500c652eedfb4a168c38a403170be48dfa498bfc1f66e467dc69fc90f7ad896120981e8eafd38187bbd84d46e62836998baee57bb4cd82d95455871b23ed6ab3b792806eaa0083adccc9e5736bd47b85a766e4f2f9574b77758fec1f053ef5d9b603ad4ffa2c3c40a9764553c5db9ab29636f482875bcbbd423d39060e9a3376a4d24b47f91a83c240f919ef53a09e072fd6558d74490c56116df1ac26c2b197da9eb3260a7b182daa77474c050a2b0d7abe2334a258a9f6f0e559f1ad135f777b9cde5cda5bb953c285aa76c04d1fde1b27b8bfc17fa25fa6fe8587eb0f1e9bc8f815fb2f85acb841544a678ba49582152f1c4af1032a319679280d3e17ad743c08a952ba92c4fdce1c484239272cb0421e34df73bebcc864e38c74aa7cffa786d3275f17b006bb91a4d39f5c2901cf6cbcccf1f7b4878b77ffc24dd3c27d4faed7265c68aa95947e7f0a10178a06833363ae54639ccc797073d757032d704718f5a498a748673befdb9a33621eb37e99c6d142889b01aeb2b0c117af960909789036b04a01a957304fe0be5488e71b6f37918940d85519a901b40719aac88a9b405d90ef5f027ad478fe21a28624636963b38d72b36550f54761ba0bae137a118bce4593000aabff2d288ff08b8032c76ac8b63def8197fa9a75bec93d8d19694903b47cd79286e375dcc6421bc4da56f20052f470f685dac895af8ea05d35c53346afb199c15e1d2dea52c9785814e24d21c8dba9366ee6eff0138cc35c3530433a71e20ce71a7748ae0186e4d18e405a1e6555b6623665b4fe7d1c38f0f3d2e80a10072f7aedb96d49e686ac58d699842784ee185bb0f96f085da7b764d72485203711409ac7479c00718bed7c08d1eb4054a0ed6d0e3c28a14985cea98b66af3208c7c4b483756e4ccab186c6bedcf7b2e1924458944a0a658b24c4f9ee8710b7af726728ef9e53d5fd7ce535571d75686d25b750e61b115d57cf8e86524816caff558cd62a918521a0dd7f98d13069ad8751ff418e88fdad06f99999c9fdc171df667dfaaf5b6e17bec7cbb4106ed40e96240c39a6c90737f277704e73a8b951234cb1392db1fb551da8e711b93da62a1ae3431dc0a40996c79c4827dd05ce5643fc30a8bb517d6b61fdcd67dd6c0fd52a712915c166c138e71c9fab65ad35e72f4f533278d5aae11f0a94542e63d386dae83db2e7a41cb271205a9b39413650b2f00cf5e8eb198ac961d0b989f2e603fa53a6c9b3294c190a78ee6b7944d7d08f58ab954cf4f4168ed14895d274be5a3507930b38470c661f557310007f7de8d875624bdabe83c7f5d0b22036b1abcbe8b2429a9db97a3d2fd9d13d9fc7741996ecfc0b8f733d830d12b8411ab2d52d0b5aa9650e15cab4b2572ace0c1a9299087cb99abb6342c102ae2e48e5a104a5582cea7d34665893769c8d0543c2d66585b8c5def9792c5309a22917bae1f49ffb58a27c84c3775b8fda3fe40ba763ea96bfa49afae918607b9c46813d369f328dfba3c679090cfaacf0df547f00b1d30524cce32c34f574b092f6d44f1ab107de9bddd3ef8988b6b9d813ea4004d894d82ec05d59dd6c05f7b63b86a82dce911aa18b9c6b01d56a596bd83d1f22899be1fa22bfeb6ac98b86d6ea7ee5603203d158b3288f732bfd899456aa821b54234bd6af8086c9787d2ba7c49e45a90b461348595e9a54ace1602a34b87b5b00da2b1730fcc5a1b36274da196242be0c32d3bcba94a18661b2d191f42f4034d3f1495cead7f40f9b14d4b7ec6a62087ad1bef83d54bb22bd889c96da383624da870bb1b7b09de1370b2eed0d4848f1856f64df9a844190bde0fd83b1f346f1457325030de529ae2b5e1878acc9c6bfe01cc7bf484d4b5148e32cab8f43dee253d6722ef89df26e0df397a6ba90e3fead6905c972d7a8a4df2edff4f10c383e23f0c2571cc8c731d2a07c6e13819984e87cfa1d326ff69ba57cd0297a66a501bf7d950a78a6f643472793c5029c660aed1b9bbf4188b1a6d80c4d31ea18351a8d9a274c75bea91a7ad7fcb55c51cdaa830c10c956f8a81d39f8004ad44b3fee4cad68cebeae8a333df4a6e2804c7c253664ad862ee7d1a3a0db886cebbc60245d92897b3829e6f04083d2c4e0133f6498c88f3a61255eff59113625b17c815ab4da1c28981334c093a8f8fab2932075cc5378a1b1d598f6aa71de43e18717bbbf8eb410732ba09c1b3c2982f727ed32e8439b7e6c2924142f030cba2b948fbe126b9f608d1fe855f7d4966cde6faa61dcc7859217b8fab06a63fa0ad39c354d733c454c1c6d14043bca5f5c32f63332b89afd5d63748117d58a9ea73d093a6bc1569dbe7bd5aa69fd5c94e90ecbbd2cb6cf08320cb3c28fdd7038e4db260ef0b605076ed1d63560dd153bc4b2d1781df002c8c7d47b5f11ce45b7671c5e5afe027401df68b2793e5fd0f1bb9a84c1b25b1a695d0a1d35b54e76c9878e3665b89f9a88c5f2b5cf2b65450c401bd7a173c0e6e8654e90bb75ecfd4ab578deb17bbf2995bafb92a5874f6b100020ef7b8d3ab5290268d3751798c4bd5a8bafb452c054df7a3cd248c5ff7cb79a767a566297ac88671843a78f13f306d7aeeff57c52267a5b43a614d97b0d8e4b51c546f17a6737bf0c5b89f59146d82a8ead21759412fb84e998e9f5acedfde5f9bac97c868288b9f2d2e2a5616f5739898d412cd80a72b8057e65fc53cbd7ce788bd183d798f0497d9792abb84efb5ff6683b9cc4cf39b3197c4cf351d25a76ebb4a7fe58d3ed0cb174b02b301ecfdc56897586cd174d1a986d9b0fdeb5cc6114353d16ca3a46277a4aa5e2fd52d79264801916efc88bc7eec2909b6031b50ed566dcfa3319a7cb079c5b0ba643be2ae24d46d9cffa65f6ff952bdff2ab99aa84247e8bdefcef6950cbd6e05d2bdb87c70f07480550eb001a496f552ee281a2238f713ea3c583c75bc8b69fc64788b9cd5bde5c8970eafec7999ed71c6b11956a34b91349b961a82a1fded7c55158ac3da0b68cc79021c0a9bb203100ba1b28196e05012c33458f064f7cb889cdc80f7d32cc3ebd7e3492db2b52b23771dbc6a9a3ae1644ee5f1e2ba058df6e91d72b19b5086a95c134aa2d7b1255fe7eb8722d38d5878381ddb26b2996f9cc07d2791ba9938f0166cc9693088aa6972c7c88cf6428fb1fe66371e39428638df9c618bda09db016cc559390fe14f993fb509370a97c01715bbdd7fa0815d0c9cbe86ecf4c6668326d0efbedf863d5af542982ae44c0f7e3eb9aa4756fc4246b75df570af4907835a8adf08f3dfad6da772477090bcfeb0085665e57f6ae8011cb75a63b180cd2bb1d106f82c6ec3bdd97fd6f62877e6c4e5562ccff0bbb371caac3bd865904de528abb1f6a20773a3a64b59ac26fc8383fa591140e8fb3b6c13026a5ee37f040b8cff299bc8ad40041b306ab7ddf289e309925ff75ceaa53aae79bf162080a6a842051f7f6863fe5617c7215ffdda1946152a401312f5373640d0331a44018b2165c098ca6291182ca6f397efb781591a8ef6be2128e3e4d52228541871734042571c8c8424a8ecae50c8b727672e0c25a8bbb48d827e525513321d66a14bbde4f66ab9ff7ebd23a9297ed2c7d9c47c4990691669db24fe8d863eab17bb6d4f1d5b44b3b9588e5c6a0fd870554872b634f0a03642b9c1699bbc0fd78c79ffe7b73c21efe501a62d957d79e0a03d893832bfd188444ccf6b322c2e1bf4ba89c31627a0e90703363d4d02364a78d7cbc7e110914ee302c01e03a206291bd8379ffc41dfda6127c377676f8cc5f1d47547934f20333563c7b0d4afe1b557a99036b42a2557843e2c3ad0752a5447c4b2a918d8a150e1cc8e4573a8c4110a288a77fc2529f7d6053e09d9360b73b607b3d2905f75ab8f49565072de7d12cf0e24405299e589f3d6ba402e3d16a23d40ef7461a881a1e790e4ab7638cd56f9049a92d72f3d8912ac24618c8ecbdecae4c8b133c1a518a265b79adacf654c126f98bdf23bfa5b0b0130ab9a24f70b80d70747e150ee1b58edc7de7e1c000dfdfa0dfe63df050543dce1f28e9ff397b4f60727ea65b511fa65b9ffc4a7b96fa0ae3130f6b4d0bb340555c21ab5c60eea34a75215bf9c8d071fe8639c36e1f2b9c0e9fa8f5b179d4d887a4e0a184459af0b057b4a1c5afa70f0c79c067f426d24352927832c14f606564030879087962459216ff5aed064c78879f76aea1de30af5a1d0de1142e168917f7a5c8e179ae0c415963604508042333cd037733c9984a170d4079fb1b76364ac42ad49ea0402c876b48aab7d8c410cc8271e4a1de945e5ce40704589adf565d1bd4a77eaf61700b4ebf69eaccdc00da81c8ce7c50c4b461f03c25422c80d8aec6d57037119f18e863744a2d3a02aa866ecd0e19ded38d02f3e626cda9ccab94f759cd8ddae7847d0a1d6dc5b8f4c9fe6afecc63ff2b4c4a18f4a09181ccd50a7b76f8ef5e706aa726dcad6703b22483af3d77bec186361e361ab5bd77aa6bfaf15eb1e547e642c0fd7da114a124eb5a86f4f3b02c52160e57fe2ca7e2d62a7174622aa12f1de33f719e7831d1f2f463f16b1d4a6f5489f613347b91686f09cc17a4d8f8a756e0a51bc5c4112f0d0aa44e3e233c61b75fa9dcf333477771cdf9d150fbbc8475e2f0f529aca49783ef90d5139cc61658f5798b860fa6875bb9ac3f634db387f814fa9064a475074d5d6b" - } + "remotePerCommitmentSecrets": "" }, "localShutdown": { "channelId": "2f7c825b61cbbf0e685aef20f8923a8cd28943346e59301b629cc89b4e27cdbd", diff --git a/modules/core/src/commonTest/resources/nonreg/v2/WaitForFundingConfirmed_ff74dd33/data.json b/modules/core/src/commonTest/resources/nonreg/v2/WaitForFundingConfirmed_ff74dd33/data.json index 404bec841..3548cb4a0 100644 --- a/modules/core/src/commonTest/resources/nonreg/v2/WaitForFundingConfirmed_ff74dd33/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v2/WaitForFundingConfirmed_ff74dd33/data.json @@ -171,10 +171,7 @@ "left": null, "right": "03bd8a174751163f38af0abc6c513d98f05d66080e67061cadf5e2b11b665579d9" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "2f7edc2aaf19044090c45b2fff7f644ccc3a8e46dfa833ffbbbec0053851644d3dc2178a3b9f9f1c97748d2819eabb3fc4bb1247292e313b0110f410ff68ed4ddc9a72b18eceed357436dff3a175cb7a5382fec74a47854cdde1f40413737b3bfd8a30ddf78e762b86622ee24d71e559b1db503b9c45225c787dcaebc78e0d0a203ed894c9d09211ee782603d1cb60a2b7a1d189028373676e687cf152472742defc9983ee1062d93724018d7b57ce2a0c87a8719a9c26d64d7b89255fd4e09c564b209dbf4234bd94fdee819216ce2688fb28c177b643b1ed1592a91612b03b75fc7628444f8f4b167e0621008feee70afe1424eff8f6fab0229efc4b2222b635d695d5b907ab1d775be189433dbd58a63deadb2efade687a06b6167c32aebe41b8166ec32ec8969f3d5b5bc560e5fbd9c4dac4453397373c1144dc51f8382a785bd71efe8e89fd727f7b8a0272623638c72e654e9c6a4327da3c9dfda6d54ffe3dd688efeaf49b38d0db45bb2104b27ae8fc150605856eb2fce77a17e55a302f2aca121b69380b7deef05d152fab0e846260a6c8acb7e296603b22cb912e10722b0e119802f220d900f26885f51fc244c1c2d699f18b8037c023ca95b31e12503040d15f889c0633cd501d527f28ba1c5a03738ab02e2dc25f48942e96006b8f3468225692d9726417453afee08a436de7470810a839025847a9d634d20adeeb444dbf410a451fad2fea468a585fe7c66f79da1371f1a29a0fd9da0efa2252f5e6befe9e6a9005fe04f03a05eb5fc083b213dbe249aafdd98f09b0ca71417749a373d07187a33d92530123ea05a459455873fdf0dc1179f8989cb5d85402755078705e7810a08a3c94332a9e9c0234f5a157164cf56642195c3255cf671d2ca12485b5828f4f7d31d2f23389565b40b8db54bec68c42a2d67a8d942f49ad563ec8ca6bd379920acfb21cd385f3589f8c0b2fd2b8d59d38cb026916d19a1302573abb7a1e5bb516445ebf75f5ed0a0d2d405189723d0c378082820e780929427604a1ee362e4734de3a056ee8b10a1bd2ee88b265256011f2a827b262be69396673060043d2551d8c7c4d8e4193f64373e4884c6ee221cbbca1a020d700468b579d416d931b504a6645e0368efea75a6e791f7e63ee86a69505fe829dcea4f4be3a50fb7ad812c62e0bf68e4233587a7bee34a354e9582b9b985d8dbda8eae1be3e1b2e35f31cdb8306d627e599490486f295b0e216377fd82c4500b8e2885385de2f021222a72d8481361c7fba8364d0b7bc62ea8d46748bf13ebbd91a2db97d7e17aaa621edb3b7a715c9d62c6a8a3becd1d938065883752a504da9c50b7363a415e2c0c7e925a57070113f626cac667dea80e83060cb0b9db82eaa77ef9a12759bae777dc3de68ee725719d105af1adf4f93092f96bbd12a51aa7b7ccc44209fe33e1dcc90f58e2fcd6e2ec561d03522a9e835f1780d92e7e93bc557ab138d8abe679842203e65255130ab4db1556e35ced5b2f2b99574538b54c516f0dc42a73207de9213ca99ef633d925405f883d32e05f910b972f79738c4897fd2154ce20d2d1f0fe03fbb247b30e1c3a8cb1da396fda7699cab8472e2f296cbf30a6d1e87855814fa3df7ba4dec87b8d7f5a1b24302a47c7f33460835c912379169e49353159619b5f09cbe050e08334d61bce620e83e4cf496c4953cc86ef8e84f114b62c579ec51aa6305cb056e69b6230ce109ec13b5529b72e9eac965fd7c4a4d3e4be02e21074e59b6c07b3b3c65a3e2f1e3458da0a0cbef6b69ae54464ba06e675f5718e5b28e4e1b2542f87d8d970cf04cd200a36f08cbc4b17a99d41aadd58e562d591077e603b1bc6433551bcd5b2a87e9454aa191d102412529037aceb1ab86819c4766c1b56dc6953264f2d6caa016f1a2d582363fa4c7c49e742cceb9b3a4fc38dadc2263c296c886402e05102b42cc316aff8cb73e8fd4ed72df93789730664a62ceb3ed950ae4a2a6caac8b45dbe055fc764722f80bc3bd8494cde1367b34c1aef3765a53c70cab60287fc2f2ed1253758dd5b30993ad968dd87641a269ce72a99e9d19378417cd5522e207bdde7948bfc70507d6ad14c3f25d3723ac3203e3dff6fd6e970f4e450daf267e4fa8f1e2decf36efaab9f9a6d4e0874f2400eba70d728ccda9948d8fc6f9ea09323322c3365e31f494fb8a953273acc78b5021633e913ae8a0a028e33abe87eada41847a2e4bd0b8e28e19f6cddef7adb16dd72b0f51e7a21e699d880e97c96c4a13f568d1fc4537af36a7fd04e36c084bfa7fcfcd85b1507d26315d795385cc7c9ead66349bc264c691442eab3d0dda64cec7684663a1d81fe86753fc2b40f9a17759c4992a51631e7a6e755b324d5f6b9ffd09e121e68522b782b485c85da6edb92dbb06e2ca35edd208c9245bea83b1586154a21939ab9c4f4e9a51a39ce34d1684e929467cb3461784591ed50a309dba95ac3d2d6febfb62b0ec7ed327d550f9522c2a80684b002b75d1c3e738c1f4a0e04f528f08e69336c676eec9581c8c218212bd64a6eb8c88f12bb01bf18b81066aabf6a66eb69ffe01187163ecaa1a73fe363341b977e24c4f696c7d525c1f4509655cad80a1f9edf08534e7109081eec230356023bd5b8f0576d563e49a91b63605ab84ab9e0c53232a50039b0aac128ddee708c770fe14adc52d009507f638b294d1d4564386784da0296aaf69487d34d969a4968060394be2faa0ac7e6e07183693ae3809b0822c6c6f26b5cdc3333a65cef83fba26b4cc9b44b11ed9b0b48e3b6b401c83772cb2607872584c3aa0047cd97c224a2a52b8115c6a40dd943eb4eb8407d0bb66b665c514923da85252649a075180dcad10e8dacac2710ee8760cae7185c1cebdedd278fab47a11fd32817a5e67841cd8a4761d5ff290862dafa987b7044171a53d4d881aa49717186ddd6834363d3e99df011a28af4d7513d038076c7c88ed1419eaccce33cc7ff76af9504e52553ac606e395ef337b09b37f8cab53353af8e813204adeb34f98361c579e7ddedd835be38859b4a9f128938c31365e9711f4b1bc7263692bf3b69e57668db47d8a925fb473a929c8ba3c6168944cef96bacd91ab699c85d9c09e5b9342d69d79cfe3ee91c21a07758add7e1fe26ad3a82ad2937919b5b678357208a3200ce5f76a4d2780a0c7478cb21041cf0d38db5542904a05c1b5794cec0f66a0775d9f396cd10fd362500cedaeadee2326566fc3a6525ea2edd6b4d876e206bbfa06e46ad2e648faa9dc7ae726c5d9854646ca956da0a33008dd2e5d9310a3834d42234745ecb5fec6255884cfaebb79d096a8a26fff606b2c6636b942ee45f7045738de3f3b0a5f5b509ebd40752c62c99dbeec314c7f06fc278b97245e96bb8eed207220afb4abc6e3e4c81441a14955c925d044613fab63e64d63dd0ce9864ffbf1a5529837445557b261877161b32b92e62c8692b2f666bfbb2b1b475fcc2fcf5f66e5b282023a313d6cb7ffd24639df67ba083db7508064a74970959801de5f653a447c95cd0bdafc2f8224ab4278178028c2275709939208d21170716ee5e3d42e9965fc2e584486b1cb5fbabd2cb23de0546ab8d3817b62f4f0043a7903170424cd0da5ac37dbea30e4457b66e8641b1a5297b00f2c93195219ccfa872db4aa17d628b889c15c746a4d95a8e779c504519b34ac3edc7c9b08dd140de7f818c7dc8de4963f6514fd6317f678bbe058622104fca2232ae32a9fab82106d080daa8e7c040a2d958686b34923ee05d75f684bec64b829c1072c04057bc3992b44cf631ddbd5897c8902cf54d094a8986db85ed67ac989ac0509af123c95a9200a3418ae5200643d37b74675ea17b8dd9a334450dfa4f1d50c294bc1bab463c2acaaadbebcc36ba4510788fa2c2e5b7f7b02f3b7df3126e7f8100d9a913040bcb2b738de6687d46cb4df92f4c952b78c65b23d9aaeead083654141c1bea00e9de6b4033cf33b8ea5506abef3197b2aa687b436998cd0f10509638385b204ea0b14c9d76fc4ea64e50b261b3255364ef09cfaa52698f275c248b1dd4bc38096db272b28afc8fe5dbe96f683c75d594a576341b6baf7d91fe610dff3fe1f10481fa46fe1ab60405ce8e2b3195a3f8f3584a5719e9e837289d8aad48a9486dfb23c8704a1ebba550432d0193a9eaa7e47f520a5859bd9e6c590d36147a2a96658338c96243b535bff2a61bb20a0ef932ffe12866c1d82dd37f3526622b2d908de6682aa5aa133757168a80a589e68689f7e2db0c4957064a148d87911b4fd0c7a53ee3cc85f98b09c82430108e03a984149421f281b15ccbb8b03b38fdd808e17b3d87ac04f84be7b4d349d5fef01ce3618ce60a465589349d0f3a6a65a6060a72bcf4e238d058ef66e37f007efb74114fadb75b91ab05c255e31bed4db4eca0493ac05e30ccd97fb2251bba8f75782115069f032961936de1f8b8b61784218756775e3b7a58c2c2b1d49eaf643b4b8a532dc14b7b17073ffdf8d7a68b7b52c1dd01951363a8dd25158ca49a489abc196b41323e8466c979c933478bca5e8ef0c7bbdfb00914bdfc2e508f92e0c3ad08b0d4c39b242c222a63261bf9ee07c04587eb7488e2092de8a8e400b2e5333c971f6fdc371c7984f2bd09e2d1ebf044dfbad9024f36801494d51819f79a851328f3bd8a18579dd0a1d58875716a3390fba8c0b02af6847676c5467337331365c477dde935216a8ad6cdf4bca2408035fab3a2db43ed13d3c10149369283ad1c6cf80cbb569cbe8c427ce5aaed912a6a21a0d51caf81888a063be329cb74a40ac0933530be2e048de543c8e28f5b85d98c1c803cd5ffc53a15980df9307ed250d5f6839eec69a914a557b229a3f0c5d1917c906103685fcb2de8e0782d67fbb5a9fc3a9e99495c5fa588f93e5b54e7a5ded9f55b1670031d095a0bd0fee384a7f5d539c3aeb6a3b2fcb59dff0abfc0da0afdf36345f82a7d6bd629274d9991ed0291b60ce09eae8603a72ff6204eb190ba10790b05be027417606751c57a68de165b899180dc6d1359451c2eebf9d212c706878f75dda39e6b8f96347ac5cd36b3e2fad6300d29b5b65b60e47d51b96bc2facbbac95a6bc95bff3e5747f91f8eb549de44e9db4af4ca210102fbab9fa341b2d8ad56ba1650e4d016c56767cad66718fc62cce46670d80a8c25a5d544a21a931bf136d47" - } + "remotePerCommitmentSecrets": "" }, "fundingTx": "020000000100000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0140420f00000000002200204ba42b50e089764e60e9e0c76c57e41d252d6beb976332f14a7b255bbb5322b800000000", "waitingSinceBlock": 400000, diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Closing_029bf8f3/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Closing_029bf8f3/data.json index 3938b1644..ecb123855 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Closing_029bf8f3/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Closing_029bf8f3/data.json @@ -392,10 +392,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "5de29f41beb1139cca140898918fb6077c10e5db556b67e3ab11ff05a7e0bef6b791df640f9f31ab4ee849395b56e16e1976edca2c2eca4f6f66069a1e18d579c98326c82f2e77e0437e7cdb99089d354d6cd76415b8bb14bd620555823e323c432be7fb622906602a934faaf5ab1cdad769f3574b06403dc7597c9baaeb0e53fc45e3a46162cd52493dd132299aaf7e830917afa2b3d9a325e1e578a8aacf882c7908295ca70171bea5db44a33e1264206373bd1143f377c9e8b8de3b027e983f30d828036e51e5ce52f19e6d93ec4d9e0647731507a42fb60cbb8ac83f663eedd061e5bb29b800e0ff08d49f8763de1aed441b6929113c66be86cd279ac79bcffe601e7da19a2d712d4189f1091dec7cd5f1041f520adad3b8ec3c2b16f3dfc8298120c5b7d9c17354a2de753a19f8a36c4379822fb524a093ac0a3996c5fd5e01ebf1e972a47eccd1554f79d8cf8574739dc38550bd5b5fe04a42e83410720cba5b04056b2c5d9b526df45c312eb6aae05a6be8890b2aa197dfdb7a00c468ffbd6ca8bbd006d29d9505e4e6dec28996caaf39f9d3789f859ddf1ece60b8a78679d4118ba9a127a12b7306fb823f531cd84d24f71c3a0ed9b43f580ea81910467929f11ebef56d09191783879d0aaf5302e3759cf060f28e3c5483e3fa0ae182e4ef9c40810d399d5037f8b91f7e0fac9da2dcd3395312bef360b208590ff13aacc9a838be6d59488d8de5041fbc9f3a4a8a0727d6b2fc8442ff7a02f1710c81b7460080a9beb0b51e5d39972c1d1827c9882a9dd744ee4e078fcf7ad2a5b231a65415d310341974bdeb83843723c9b3fcbf34812ebfda9a4eadc053c2e0f1fcefbfb10939506cbd7e858b09a9cf5dd2e99581bc1a41ddb6893f7efb91fa6c172bf01b205c3ea33d941202a243de56645ade023685ffc19dde4a0608658b50389cf111900eba9e4980d67b7ca2e3fb8f13e0253af6544ad5e6cae12b8a9c93d49d1adef5292be29d58d14b3dea5df958ec501828191dbb5ee075af3c659cdc7f34ac8ff130dffdbb12bce477c988933bf018e83a5f693ae6ffdf8bf97727c5d911f7b2c88ce231e96647c9f9c01c962e860793ebd5e7deb7d29085931747552532a1ae835db46ea588896c79331054f14dabb945fc76edb345f0f93447cdf922d39bbe0b030bc89f719fb3fcf21c0bab9e44e51be2fdfa70fbf69b20a12ecc6137db90fe01bf1b6faf0ce4b02306983d0fbba896c4a39437164d47313c7a30f0cf928c1c8d1faafea9e953b94dc0ce6348805a834c631baf154d98a966dce358dbd2258abe48e93ab5f03d6c59c971aa2730416f877348fbf28820beaef96ff1d5228f7a3a9d9436e5adc6ef0e6462e3291f60937b1a0d6d729c59affae939e7cd5d7c7a349df84f1d6410aef2b4081967d3e2697b973bda1acce8603eebf8b7f43b46c2112bf3d5bc83685126ba472ccaf489b93d5622fde316e113517d7d50550713a959a1648f71693b5a7036e9ec41832ec43f838fe83bc610163e2f4361884c5d5b1ae6907f8a4c6f9aafc6ff5b0d989c66881e373ac85a75964889255eecf2d67dd3d3748f2d723e4d149b9743ad4e11b59a9f0adb2cd816431dcda3ee458f99de9ef8669003c3ab75408380a24e09082462429cb5ae2c07a30206145bb6aa783b45311b35e62cfe298ca275a1fccda142201d8e5d779184be788afe0c93b393d8710fa7fbc08cc2034e1b2a1cbe9058b5bfc655e410e5f63c1398c773407a2b17faa6c6b966598ca175fc7968ad303ab6aea1e0d57486564203a9de95d9aab8ba7a2b70598c5d9f4ea89ef10d26ccbb0901e0d72c18534901762abb4928d5b6ad157a064381d26965061030439634c8b6429d02e002b1a00f55c1bc47a20ba8166540fc5cdde8e569287c44db5ef527eee068c87654e6290e92dbc00034ce5e3408f5db4ab6d7036eaba86b56c8c86220cd34b446adb93b74f074200e577d22962f5f2caf5075abff968a61084ddee8463d71672e9e2078d04b534993e469b96a0984668041832471484e0b25c88de65dd414f851e379a08456e00e686d92d7f0a63901362d25c61f19e40e130f3311518f6c11fe9d18acba3a4fac5a7c242ecb043080b4b9a953ea8f242ef9423bf3bce69878b7750e8fe2acbdb9deab755cc7d038a052c847b3ae508fb60c9d74158c806bf02f268264d21bf73f6a02a277bce491062a25928f571f779890dc984463a31a72023ea0da0e8e3ae393c59e1432baf63e1bcd837fc18f67b7ea68211e8ee2a276b0f462df10bc6b840427371cbdd0990936e365ed6a362f940b8a6aa7b6c0658212b9b618ece4a5089170038815e7329eef1f1e5a2d2bb7cc6d13bb6e162d365feb2bfab706b521ece4a267a1aca9067cff6492933565b8a41a3bd4b31d449930cabe8b488f7184e57dbbdcc6fe24aa69c409375d1d27c7610aa39145c89182d23ea816dbcc8a0abe4c05c2c6e128a0bf216e2e8ea667fdbc502cce53acad05aac86f2689856e32494a458a8f64aed60297575e8e12875bb2812f6f8cc2dbb07e97b2d6fc5a4600f9ae1da3b40265b98be1b2fc3495cf70ef1ad51aee16d5b3be9408e1951fbb35464de45ac208c57710d47aef3aa9f2f7bf214d24b397babbb1bb4c13c233bf61be791d6c15f31405d45167b96998fc2a2cb89d034643cacda0252fb160c33a47dd45977b7f17a61a069836dbfbbf3207521762be50c3e46de2a98232b9d6bffca30325e527085671caa20af4ea79a576a86b5b3ed3941e1bbc7bf820754310b996dd96fa151dc8f3675500a99960c40a180f706d0180fb157d2ca15869a7c505f95e44cf95ed3f999b7452e89a3fa33396967130418366400a0ebe394a41d5790e2b08563535625dcb9d1e5a6ec46d131a31ba4fbc69c59eb00e65ebbdc7fae12b243b91723c93eedbefd05a3ea81a3b2957a4afcf4e9b45302652433646dae8d10e0bc2f5b353e80c3f4a336baf9eeb8c60635a805dcb420a8e6e31358ef4e20be65fba2dcbded2c8db7d62b3a32347dbdf324e198311460702c719728ae9fadf2652d5f95e1436bb64cfd6d2edb0757b3767abe07b393afc7fb7466a43db5801ff100ad006f531aa8848a8dd80d6b91836dbb53ff62c2d8f0452f97676f4af0881dffd397ebf51157529c3fd7107599170bb9fb0b6a8934748a21f9dc33d8e9ee6e52724773e93ac544036878f169a434fbfaea049a5fa693e0649b41bb54728b4ed901065dd8f5db51c7f4cb2c312f24befe1701dcc80e406f1d914776724b9ece0fad8af9a173efccd883704b16ca89e7228f32a2ee4bae5f97d75d1d332d884e460b478bd9f7d46d460492dcd9bf62b47732587e1363dbdb420d2cbe5731509270415f9f800ada8cc7f83ee51114994b7e5a1852e7bc147c6ae74956647d961a96a793cb90a83fa6d85c3b72bb85fc45e76bc4fef8ed0d6d5b475a8f69c82ea0ed28162a8c852591f34d14ab48b40e93e3ec72831dd42a874d38e8b6d11d2dabc5f22703218d5749fe1ae9776efa1afecccaf1ada81102bd26d2807e93b063fc774b1d4b3925b927392beebfcbaff94a377677f7d1800e95c68886316e564bb344f9bf75c32b10bee07a7c7e686a5d21c678a58946c6896f55815eb8f0b8e5bcd50d10a3e76b64ec5cc32bd3abf82e21b3c36017724e0275d5be23f9c6dba732bda122773b06d6360df3c9932cc1a1eea5257fbdd37dd12564ebed5a6c33a2453e24d09d6581afde56fcd3487899eb1f918b99e70250a73114eece82371f246ed00c7b9afde7da71826779e668831a309c3f4043513d7cbb25a609bcbd827f3603298c474bc61d7bbe681fc45e764d5c7697929bbb00a3cfc7d383524d1ac0c5f9ee6a233c376b00dfd730509f566f6fb13118d5785d3ae666f21517c1d465d702f4c9d0acfc4c909cb4c3c3773828faba15c8d736d537ac6c44af035cbc25f347a205e86bd83093641eade1fed91b2ba753732ab7c7bf55056e3262f777444150dd122d695d75ee05eee65b40e1ea78d453b9fd58471cd6ca6b38765d3b0b8006681e1962b5034ef51a6d1c0838da6f74518df614a98a16c4478e9466a24a1a1ffcf93af22dba9315adfb024fd2890859aa61a69f7de14956fa8b51f5b0ea107f190bcb3604f20a78cefa7a8fe877062d91d1312850c2892cd829a8857f11b17ce88cfb76106e0668d29e42f22f3bc63013196caa2940b8e7d8d109d5a9bd0bdf6df7540a2edef34996012181d52313804e40c0c9a1a47657bc199f6612256a3d8ce7f27d9e42d0325af9666143c12579072c518a3a25e8097fd38d5412cc6474588f7c9cd97331709a0f7f94961c41ea410af13c2727ea3d029905daad8f4ffedffb2dfe082c9efeb72c01d251bd88f75c10e739864900ec458db01661da7593c119a95470861fb997d6c0afd403d4ee6e608f5a4eeedf4e975fa30728d100f1b5737087995414f6d02a90c4220ab07ebe3680d6afdd5dd4ee5e4b526888f0e7c6253d7e75e38ee23bc47e9eea25fd2b0bca2c62ceb7bcd4021a1ec0ebcc75bc53340e65dbca291cc384048f61d9a8f1a62a05e78bda566eb79f0ef5d71df46793d964c2c425e7674263103d4e4ad768d2fc1bad4d74e3af4ceb36e5efe569cabbf216bee722cf6386e372c0e6f464fb51f29077bd751aee5e24900bc7869a82a137c21ff126ca0489e579db4f9ab39d0f405377119eaa78f4324b65219bd042cbc987faaabcdc6ff9487e20089de0b9fb661c1e50992d09c67c1fbbe1f726efbf8af66211c452d0cc060534dec4b5344b55889095c8afd050fc082ab59b91174aa32b65f498bb65f8446f0a91498d2db4924339fccc5be3ac63a74c7e931343aa433e276442882b8b2a78b38ac8a29433f101ea0ef829725764bc7ab630b18e5b33d85fd7d83e94bf5a01da79737cc3c11750ee438b20c6fce9ba024c6c3523279ab25c7ce7b8f73f0cbc7b3335fc497a4e4186d29361f6a711e2d7e6ca87039173d4f0432ed2787dd4c239b7f5757d0596c31c24bb7d1165f02ad90c3b363ffb85c6f423438fa748f0bc0c7efb00848f30444808fee9f9373e48a99c20b5cae11c039c908889e424c953e8f22e97d0068dc7474b4c8bc2ec98b73c50fe9302185ae6fbaaaab19ee2519e94202619b7a8bcadcbf250c2f6f60f8c0c1c416c750b78de71bf3109179cf815a2d0ebe3de600544ec38f" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "nextRemoteCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Closing_0ba41d17/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Closing_0ba41d17/data.json index 84f7f42a6..6ef2c58bd 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Closing_0ba41d17/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Closing_0ba41d17/data.json @@ -243,10 +243,7 @@ "left": null, "right": "0312a332a6afe99e14c9dc4ab0512448441be3c4c369be8b7d37c5086682b33799" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "73267938ec3fb5ea5dc04e15eb163c30b5ff1ae4b68be8f1036418fdfaf595fb4090788cd267462f2f54005b0e18bd8741f363f4604e97033c5c69189518e80a2970316a58a96ffafff202df6313fef9ebf1e64a9425f6dc6b91bfcde58d82612f6275f3568df8adf20394169cae4e236304f2de2d5a1e576141ed2d5eab806b5e8abcd85c7d58c5353835f160dcb2f7d33aa447cffc64295a04f3503a339e926fb9ed0ea9355c01fa7b4064b72cc4b5b89b7b3f05710bf5cafc66e50bbd1085bdd0080990f4207a05332a92b64ad795ee61db4722936e2abd7a675b72a1a138ee4c8112e117caa529aaa879a7ccdc4a59c20fb8d6b1c4d5514aadf0f7a02a2a13d4db90209f6abc3a62eb1a027bde93065cdff27886d8009c3d1366c0c973c4cfccd993253900d625c776026f4d16ddcc425e264fc3e6224ede6cdecc577db5ff0d226c382a60f2e25e87eb495eb2ea107c26feb3fbe807b072e2de53d77187d76285f305d0462738cc4f013ff670b55cb88ea9dd30a75754ce7822bdebba1b5f89c598cdd1de5fb0d78f0c460979a509ee4b0760a2724ba822aa7a0bb2436387c4bf1e85aa0460abb36971a9e209f4349b2cbd1aa0093a22a3a9a358aa987c73b4f3a081b30abd76a5282b5579a26483fd3e7f0034e565baf7350d25143b3f3f83575a1e7669ff52ea23fcc58c762d544e19907c01e1d41874c3cc026f3275e2fb22fdff98a66b55f6ce0582eb3203cf0594e2b91fb921401fced7c3d8a48ab67de2f4112691071a306f2222d55264d0d4b73ce9d7f3c3002c53baf788b98a0ccf3c772f5276a83a1d755f1ec5539038374adfd39a5251302a464551372852755e9a8106412c86a8ccce6983e4b390c364d9445d63fe01d71a7f6714b182375f856deee803db882b7bf60aaf0db989b0e1d404306e6e6bf0ae6cc09b57126ce06c150cd89a03a6d33470febf74bc1508ac4825ea6b4289a323ba007004c4ed4d83167f6cffe70fb0ec45908d0e12699a55ecc648055272f57c4e84597a72448b57fc67b3f9d698e9bbdd2d6045c0abfcbcc04a611077d1840ce283f2f85d4312c8c30576f5ebf2629e8b6a35b486ea7f18561ccc2ced23f499b11d795168296574403822d320fca5c03ed5e98ae7851444ceac1766ef01902c4174e5d6b8b6e6816621e9a3909d81045060d330b3493ca3b580bc6401a37973f871ebf32d1aeb598f4aeb8d94e6484217344a78528d56a59d607318a66403d82bc43e7a5131b751e82dce1581846ef91de58a206e63302efa2caaa4699072e97d2cc5044abbabffdc48dc7a29851e14303e5bcd9063f71ce00d5bd841c831e3133d8425bbb7a5be701e7dbcca578a8162c204a75318c013b239dfdcbb16cf91c1ca05daec0bb8f8933594ca71b782c5eb644c70a5c02ff86bdd45e1d83045374cecbdf5dcb98da290bb5bc1559c8385abf3c055491bdd5a836efd6ab0c982c91725d632715527d5f6a0384b594015a4b2905fe7a1f8bbac9ee4fe0f21a820a30e02dd0143fdd17fdf997cebbd710cb6e21161f85e5875caac2e05ff4d6ed9dfb83f222e2d7cf6ee6eb164959a947e5dbfb23e8eb6086007fd45be398a55aac04f6e616fffe1178265b71781a792e960eb12661d7d20992b129b8fa6256162c2791807d526275ebf358a6e2afe64a9c5c4059aeeb3f9e1abd751df38f91857d7e6e187e6e6288bf7ff51ad29c41eb5e0338be2150d62a9e650dfce428603fa0853f13e53ee576047465ac208303db5e295f5594f932aebd7a28d593c3fb424bf00d6c2e057d4c28cd94a7b2a5d9b8154fda681e362a3b2a7f9296b0a858f89d4f89802952b1fc5ab3be0f2801f1dc353e0b44958356787841bdecb444797cbf7861863c2c75c34a6fbbd0e1c929e5bb3838a56e3dc45699354adcb89518f0c936e15fa0d35ac91bda263e808b1c62fe2eb79e623f4998fb4519234ba62f04651adf0a144e65b40c2d049f9e4b7cd7b760654c3b3bde806ddea2043798112cf413c6fe7a934016afacebdc69ef9cfcb42f65cbd940edda3d7e86db0f654df8e61626b8142e75a88c4454586f0a0f849f6d8cdce1b8e93137c3c63cee73535c12ab12306727f2530bf839b0924785b61ff95fda48126d4b95e1d16e63ae84f950f3ddfd2a3c1b86087fa605deab7adcdaa4d5e44f360817d17c42e6cb7d1cbcae6b92a1a29872acf228e07489b655cd4ce5650d5a0c4786fa6c9b7279493d1dae37146a9dcb087840dc3135c1a62fc0ce297a60c2254a2282180ea13338dd9e9d83a3976ae7632c4dff6abe29854469ec0c9f58216ca3eb56e8a271facf21570a9f1458f6e2dbd1bff2c0c24d5ee340cfdd08f5ea15ce9b764a014214573578d9cafdc3c925ca3fa6fd725aaf109bc2a67edef6f4ff33fde4f546fff607f06430d88a9e21865fa52195d6cc4e084e08ece1bbb88159357c9622663d2c9cf1669b08fba76bc3f39fabf4931ef78054736b2753413918fc00f41955d0e2761891f51c480d25179d7ac95d8415fe86961e127bfbbe55dde8ae85c6212e32645bad8f21a50e9f05256b1cf0a60504c79d3d172b20eeeb2410841c08fd8ef99c4c4260ffa489470b51044780a365655d9e171a399e23fbf4e94b9a610931a7dc4b323ae7b990e705e5568a637250fe70532f18c96595570762f9f149ac361839d59935a0ac655aecb43a6191e828b7aca27e98a1f8f68451e5d4ba456c685ec9886b610ed3786465266c59280d02f71c95cdac40fd61d575b422d73e4fbd15f503690b23e23580e2178bc5bdcea5390169c510b3f7de2dbbf79a3167b1fb6453803699151a3d3f551ee43fe41d67e06fa925bf587a4a2d299a4692a763ae7b2acdd6b432e76abbd91a482cce3895c647718e192a8159266afeb2f9d310a9ea0ee4e01b434bb3eab9b022882c5f196b2212d7e813c6c2e4af305c966dbd899224626dd9ad80627fdbb958bd471f7a9ba8eaebe0effda63d3c4b84b85557b0fdd80373f96b60d9bbdd664a7753154f640ba1f8eb1cbfe4212b7fc3ef9e44c93cd8210192b05b365d77cbe81fe004d2ed1fb3ae6587de8afc2710c93d7faca81490a3ae59b18ec2fc00cada9c718067a013f66aa67e1204cdfbcb9c9ceb405aaa8f625e6b435055f8c6d07e1e6ae8870cb1106b7c978ffd0f9417f481c79ebe51f0bf0dda3d30e0f944a1f037340b81308a0cf0b0a28502e805b285351144bf60f886a56d44d234cdbe589a01888b4fec9161d2900851dc44958fc5063e98e5f765c03ef208a13e5184b06385333e706e5dc63eb95f0c611b20907cc0211f2fa8f27ca8877bc9d0d6e92f8fc0d121c231351895d6e619d091bebb4e53af89036bf8fbdf8bd8126ea40f56703ca4d32d965b97cce5450bd7192e36caa9f54fb21a49cff86e6fa2f46c8230a2632f1219a8fab1187e9a7bce655c8f0973456f88d1f0653fb22b06f482fae5976056756584ccb08b9cba6fe8577304d0f9edfc96e03da97dd16877d15774de1613f3c6ab7e362e513c560a5750d47bfa2fb41bbecfa5989d7635038b5f4b8ea48fd2c2c13fd842f1ae199d5d382ec3f3824c66058f20da2feec3cb3854ecf357efc3b68d33ecc545271de838b12efe2669adf929504d4826d6eb2385483d86388f932013c07f8ecc66806c038b4a9f76ef0a942e4900289c3f212333bfda32ca493a77029e1c8cec4cc5f9e8b8e526853f7865408f352a5fc3ececab77f51fc177ebdb0bf19f03bfa3f1301d06bb8ae183f3ef51fee7a9d7ef797e517fcdc4abac56896a0279f3f84f093c1613107e5997c1268609cb34961e03f12e1160713960de286613b737bfd51531a980b14480ee7cdd8994f36cbf814bf7c5dc8638b8f52f00ae59ba86af9e836b4c3e4e78b38a2dc4bcff3cb0cb272a940fec253728f3d90c3fb2ce50c00f0357f5646ea2cc8a3b1feb4b7c25b093c59dcfa43aed3b8cf050b9d1edb5efcad35147dec5baadb0dc0caf38e01b7d89394908f50853fba05e173357c9ec63f0c17b4914b28c6be9bcff256ea628b2dd9a7a6bc72df034f979f3ffe2485941555786ea131b2f164ba79269e5b35807e90d4c4d73ca18aa5f8bd44c1f5545d4a0e334f3171aa5e08dca72660505c5d39082488ae64155510e54b3d999d15aae89cfae172733d0e13c9322f487c6e5f9bd76ee46477f7c460a20f3e1de49fb4a8b32087acea660959e2212690941dd02af8d19068dd53ba062e1d8baa47269d53ec801afff8cbb9caee4ed545f065359ba826c5987a3e73482f7a38615b427e47128ac7f54cc5b109fa8602ef8d0ece0e3f16714cc9498a6218c4e757e95f424ea64f970c43fec345d1cd02b809e1efb5522402a675661801b8e72b68e065b9d0b789963e1b8823fe8ada499abbd9a64b3b5f4b533a8d31df8412fb1b4b2b2b5ba6347edb7bcb33df9a850bd49e7fe7c1155ae97a53d4fdaa28cda7a4ec1d261052765be2b3e87205cb6ce843d2c8e95a2416fbeaedef809267d8cd72bc2bc19260bf9607450d6615026e6d15a70d5bd31c7b1c3811fc5fb2c1da6f2b080ae66acafbc13a81cd6ea41850b60933c80cc5fc88bc39e513fd7650f24857e90c386a7bb06f16790623c382f9b4c8100d4bc963750449f3989e3f24cd9edabd0ac395c715ac2b66c2529bbb48726d7c0b468c6aa7a6a206a4cea8d93568181c571de72ab6bc0bf066cedea7ae40a17dfc1890e2ff9318bb7d9ec60e0b60d61f9679b2b23c9a2f07c4a3784ca2713dd21e508ae47713666eb439bafb601fe8e0b677c03eca62680874f1b33bc04e3c7807c31eea06ab3759a7d0e1be3968e5dcb76d7f2885e1f4539e5b7968e1cbc2d6d7d519c757f401a17dac837b20cec445fd975e823cfdd28cfcc6284aae236c70423b4904eafabee1c7cd9e6d02069fbd912e3daf48985821fb66259ff0a42fdcb3c1d2f045975a9f154e5807224acd87c92d0c9d30205a500db9d1884e61ce835e88fda33bd4a6ceada13629515d46c278563afd549efd6a5513e89afb16f80a15f0e7ab518e7d18b65103f36534a94cd795d28247637762eb972422247e34fbf2fff1e775d540e025c2a59a3fabc412f988c908609604026ee63b82894aab9675430afc58c7ef9c857aefa94776194446cce84e67985e30c6232ecb82a3ad139dae0559f5c37b2a2c5c0e957bb947ff4bcfd86437ecdb033abc4baa558a81220e12" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "localCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Closing_0efffae3/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Closing_0efffae3/data.json index aae32e267..b82c3a74d 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Closing_0efffae3/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Closing_0efffae3/data.json @@ -169,10 +169,7 @@ "left": null, "right": "0323e9618cf8548e5b78a14529e1c8df51895e47ae6026bf23f5f130299bbc92b0" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "af86858a35b5f1157fd7aaf673c32e67ca2d0ea39247b28f0807e32bcdb54d5248fe0dc200a4f126eba76515c03b4b8f7b66b5954d9614bf91ea309191db82c31e52b7b73bd0e1500e24e3357cd7ff6b67af31637a0359591abb1c6442c180e17fd25eed846e08e53821b9024a92423a6bfd1f50017a124565721665a6faf0042fe57c7c1fa69110c7c61e29aa7efd6600d54956ad0ac7242569bd12b5c76ce83e7616e2b5dc03a3e8323d870675723da9fccf6e7b6a9b51ede780737edaf10c3beb9c51cb32a9c28f11bed5bf19a37b81fb6553d322010bdd737c82405ab45e6b60b6b0c01d1a2099e05bf81ae3899efbf447919a99bacf31f4dfaaf1bc4fe266b7eb162215bf390bab1b86952a427ded6869bb2671c57200737170e667dd26eac1ac2be9ba5bad16575a681b04261c77a38fcc268b38b16fe6a1ac10c991aa4c603eaa7ecf3f2b2f48fa4de31ea44fdf4d7d4af605b02adb72822c96c334a15f5319e0f6f608310abaaf4ab56860d1584b6bcce7eea0f04dfe7da82937cb4df88ee4c1e82316b717f6aec4fc079633ae974a7cac797cdbd64608f37b904b98f9bcfeb4ee528089136a18ccde52f16fff46888b197d12e07a82545fdd8d6aa35326f2974c7e52920608f0b072e654536f2ca7c04b297756bbd1f6d14747dd7a5c020c9436bf6cee3f6f493c93d7c99332570ef7bd7f332b3c67550e75a3ac2030edb71e50574b446655f073722d83a0472a4ba051841d8a51645c24ce32f29b971a115d008d5d9861be104bebf869b1352aab99065094826f528d7546985a97535d7530d464e110d41903559912d86a125d3b91045928074f7e079deedf58afb0f1b26daa45f62a38989848d379c82f70543f102f647eba30211d57e1bf4072fe1bb4a285e7013a448de126368ff5c15a69c6fc59a9823548e0b629d8abdde62a3aea29c1dc3e99345193b076d3364e4afffc23557da48d03dd407efc18b6d13a353a2bed406ab9ec788bed9a2a09082ea5d60413a7bca50b07a78b01d5f8eee2d7109a6c8ff25c8f103cb5fa099ba373156352e279980a4c8d0561e4f2d5c11c113f18dff31d281f81820ee3a1e3021753ea891e2366ef0cd4c97fc870da0fb1eb0674a73bc4320085795f514102930b9975d385a9bb2dc9886296eb4efb2ff3dbda14803a1b4838899dda19f68554c9369db83e8ce22473cee3c94bfaad5e0743bc40c4f94d8e0de0946429e88a96aa7485bee65c7ec5053133700b699fb884ed7663f9a563c451f4f4e4a63dac66a90019704158ce8d419b22a62defe24872f4484c40c1d75eb63a4fd114b6b8d5ad20d222b13a0d39851ca35d9322be5b826a393072b376daeec127673b9c96dde60c1fe071d3f8b561ea397b32e199ce694c7f30358ae33fecd4509804650bba8c7ee106c2246adb89a8cc1077bb67b3140e2f544393f8e33e47768bac0e94e5a284150ec02ca22bd99cb5c746e4e72535b7cd22aba375bb7248f155a9e75fdb074fc7d4a54f6ec17b424cff1f96ba2f3d027fd4781a6f2053e85c69800c9cd321d6379b3051ac540370ca5e97d0f4a1c2a39da97ca9945b49e881bb612bf3c8c7112903f8c66edd837a22bf3a6bda66cb3f12bee916649ac06af4f1c9790a7af21bd3dcb5aae21755cad75c591417ad962310bcafede7d1ed307b13176709f8bb1f9c3fdf0809dbbb28dfaa2a26bd076d119a34976417c78a4973b98f9c153a4b4233520594ff81627c121e4526171f66838e0f00c58cc4253f0e24c9bb23f7ef43e91ce3c6300b65c8a5b84e67da9f0e5b29f3217e280db53a3168977ab9bcd98f04c94cc202e9ca839e1129dbbf318d5e621a573a3928c4786df99838ffbdc2482cac10d14510240f914833a0b4470831c14a84686ae1c0f12c935bd5d780f7b513096a1e4bb78efb03133668deeb4cb62621e5876e3005db805788d35fad046ec9043838ea036e65c282d87c5895ba322ecf443346f8f737fd2e5c0d5a2887a25ed9c1d0c53d989d6cf8679579c7361cde49870e0dd2b846a2ed8815a4e1213f73ef927cee4184631fd4d7d542d5ba639bcabb3d98b6d03ccb3a86b895925394bbe5d386d7395026457c950149228e5a5edbbd315ebafe822a37e16917518075c392eead699a38cfeaf5a08fe15c993a32d8b0c39a01661cde7d1c7d3de3f71e3342a40087b385475e40848ef45507b13ae05a7d492f9a0979d093facc04ebc63492e0c74cc72f30142a4039c1f66597ae6f63972028d8a718740ce237da4d8c3c09a824ac6fdc042bcc33fdc4f417c4f1d0f0823bddc6f71e6f72529ce3f3ba0f62e9edb26c2f042f7b21c9086d4a61b8424fb8dbbe831540d8db329c0f75d10f5e2bc4549ad44593ce2bf045d1d3e67fc59bf63dcf369327c1570bdad0cdcf98948515d27b0e2c25232955a4a603443ba332b7377938b920006a899e00c92827123883feb24161f5051beec48df36b608381224726ff5accf5f2c73aab9da3f9137dd5ca201a881bf35660d179f0fac7e5c69d1f4d0318a57b07b7a53d3ac5a568328080c47b12575cf07b1bdb047432e93c2f9029eb9d8fe51555698485eaaa6f74ff560601678985d7bbce969c204c7ebcfddd3d51c246e3639af4416e62efbc3ce9798cd9043d2d8ee00802140d60be622575288cc7cc1db082f50e148f7b778e95aa867df6bcb7bb542fdd7261859618e65d60270fa9cc37917e4a14f8e13c95c31671023e3848e8002e3fe25dff069078e3983240ba3ae99e212844310431af49aeb7b9328a2394115b642179e3859deb8aac311386a3571d53fd50e309ef6c5e044b78183ea450abbd92848505fe3226b1481b100e3474f12009157341e4c73a3438d105ec52b9f34ffbcab5ea5d3d65168d36a1f558bbe4fd255b950b20a78a97462ac8aea5b1acad474fdaa97d3f2b17c5b5353e48e79f64860f8e2b1a16d31f2ec3f596ccdc9eca8b0efdafac72704eee3add0a0be5e9a12a34a7f300cecab42464c929028fddf06146c9b918e8fc88316fe26155804657adcf3a4890e199c55603e3a86c0377386917fd39a58c72951a949a834ed99f707b350f2ec70651a5e4f4016f52b3a5b7e6633a95c7a606bffb65c8f764a30069d585d242761a4fef3a2fe6e88509ebdda0c2c064e35e58319e26583f7111fc6cad12b36f6671ea9460718b1c9abbfd8bb7c7a0ec6bbd66506bb14639ab41989deda3773e8f044f4ffb97e8cbdca5e73f847c218b527ed18faf2fae95c16d89f0389c8f02eb87f39d3be33cab5e39c0aa32cec82f067b36b16aca96cfd13117198bc463a5f39b55a3878147882d1257b0b8cfa9047038db1912f4b943db55ec490b019054b530e73056889489914df98308002175ed472501c86b74f598cf36640211b6483881d614da24872004c33ceb7f9c325f49363341028349376a6ee554820e01d60bde0cd822f70dc01a582edfb8784dfa03ead20c9aa235861333af90439980a40edcc056f0ad948725f494969bcd1cf9878aefef14e9952093a1467277ec9e4be3a9d18ce6131157959658a10d23f75831628e57d85bbfc8c90eb4b5b9803c6fdf8f10eef91647f4dc38367dbdc6caae7d064b04a4fd121642c6c995263d0eb4896fa4f66751b6c6efc57bde182f15abbe38ab5d55917d9f4f04c6c25f3179f816dd6ec47f89099d2fbc05417703b6007fa86d2ef108c983cc7c2f59f015e5469252bd58a1b14131f69a1385ebba1eb46bdd45b081f4ecaa147c780319c34c2a2e6dd281e6183ef4adddbe0e89fa9bb14e4e6e51b849916d1d7f1d6c7f89f0a8e090e5647206bfa94e0bf2242d606932b7033196cff04bbf7b91fa03037178c4042bdb1d4cbfe072136511bedd30c355ab733cb569a0e25254499ccab2ac447b584afcb01357282f28ac890165a99ef5a6979c036fd24afe7c06564ee5b47341d2c7e8d6bb99e6f04d04f2cd7a60dfeed7a95b47a3a0730744e7576ad92fa27be5ecbaa6ed07cacfa3d5f3bbead8e82a959573cfcef637dedac9ec54d98fc3aa7b51d56839cdcde74c5a7bf17f62e4ae0ca80f8d1443521f2d71253e190bb1cc0b0c0cded2a283f1399bde1c06fed0da92b1199db9a8dd52e20cc32ac84a9a6eb65d7d2ddf45687f6ce18c472f65fded8378e3f699277a754c75c7c94b242180cf018a09548a52206a8e8f0488c15a2d07c6e2a98622b265c6100a09a28c5dc66e3b0caaef29ae76a88e6cf1b8f155bdad84a747f5e2063041cd41b49912717b2e54f62b51afc82de929e9307c803aaa26dea29dc7f7c7d66cdddd6d4e6fe43a0aaeb1057fee4a52cf48ab8c81f7b76aaa16501003c0c28ea1d82d4322af24917b04f9927c01489218703213a6f2f369bbf0649040fdc3f2fb99db442b391c87a930e41d112d1b73f7476d5c10e0900811c78556e3316936f709560182306fcdacbee35d20dc62ff4a973359f62803a1aad02cff001be7f5be361766735b0d140ebf0ce1a34187459964ed98338d221b6f347937abc388a42e6031cc84fc8c00a99f33d83e4dd70ec5da629d5f7bc086c229331ccfda15c91291dd4128b9523d8f018dc637134739b9601b2d007830c8034106e2a6e4bc944c0e6d744f60bf38fc3fa702e3aa473dd15b5338485acf7e5d0b15ee95357de8224ef7fb47db1a268ed815512910a9a56430e04bb223ef5f9246f433bca6b046ffd20e2f55a26e41fa0da7f60ab90924afac4b827913dcb98d90304ec2f4c1f69fb1e25d47e622004b14932fa7176a43252c47f80e0ded5df71a3f2f8ff0961bf8d12273260c93a4f258d8cd89c8b55a3b20bf92670ecb4695ddfc6101a43f61f83ad029fbc1f7c9e91e5e51bc19d5f111efe98cd0b00a0a4603352fc69157f64ae04d02f0cf9bdbcd67616c3a718b2b6bc49922653e841f91bc4f3da3fdc3ec7a766f67f792997d2a83c00eff7ac9c17507c6c89a96cdca38fba3532163adeb253b7202abf192af8f71312d6a799ae36ba980c3e7bb2abad997df3b0986fbee7cc7de0a28887a9c58cfd96dc3f83413e60a1d784962071b2f20db112aac11126f41bd34c6c8b103d8d1b83c2bb8d8652e09ee8ec1aa4c1fbcd4e414da9eefa64a56d93c97573bbc6de1cd8c6e12fabb874175921259fc57ea31a5f25b40d259c09ccef8c5bf0b327bc814179924cc55f62f6fd51a396d86a94b4f58b5535e4859dfd2124791e25e69bb65e677" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "revokedCommitPublished": [ diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Closing_ebbd24bc/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Closing_ebbd24bc/data.json index 6c50f2218..d8ebc4b7f 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Closing_ebbd24bc/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Closing_ebbd24bc/data.json @@ -243,10 +243,7 @@ "left": null, "right": "0312a332a6afe99e14c9dc4ab0512448441be3c4c369be8b7d37c5086682b33799" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "e9be61fb16d68c464063d2c5d88736c677c9bd37b43da36ca6d66bb79d653b7b1b8ad94e7945bb46923d3ef877cceea88ce8af842c73ee0aff520db045a8b581ab19aee9837951dece8f1d6eff19f2375855135c8a517a4d6d2e9e6bccfcb4cdc90779c577b1a75cf4d9b6ff53a7b89978f5cc239c3b11bf999549151efd5f3c1a7d751276079f3eb3741b63d263b6dea7c9bc71380e88b6650f9008633f6bfeb0055932dc97f6d1fee22f24811a44cdd249c53495c2be7dbada65f67dacf95bd4812c4cb144de96459dc52612b82c8d5d57400f02a478e7411868d2ea375f27905c7c44f99f999cd4853c5d1222b8250861cd2bf18b15508e4fed4da0c9175fc56e6a79b4d386f33dc26d793cd696295bd1b7bc42d2a3ff5cecbcd59eca1861760886f762979a987d0d3b34716bf87cc7f6f5e11e894b8a69e24fe3940cb2d63431aef3994ccce6f9ab40cd1d1ca000d3d4cd261033e94458d61811b5b1d95ab485462f2c912258f134249f60eb20c66445e7f084907f787fe62053007afcf47dd225b90a8fa419cfbf94385046d6ab6932651f3d343091e41d463fd57c98383949421ab62f0ffbbea3809ecb7807703843525c29aca6265d5d156b1594e3dd6c05443303a9529429908c1a97476ffec7c1ed84f3f1ca523526c6baf7f6be3818d3f55ead9cd20062faabc6cb5d2f7653590e617cef291f46250805f9031f79bde194af796d942b67f91cce1b198d2fc44ca284fd9c56d1de1e97f8766648e7b116a2d8c0b7fc3e8d9b700d2a7376d053299a79fd70735d41d43d92421b3579063eb5cf96804e9593c598f461035f43a56a282402f0c1f10799b3c918cb93465ee33f2d153a55fc74e35ea989f4da7b8eaa27243a4f2c6e526620180b224abbaf42bb2e8d3da5600334385a3503b318e745a2e80ded0696808634c1f3bd4c1515d07dd943a31f005790a439f4737ec85be41b635a0a88f71c3333a5ef7ce68046cdc2c320ce4d55eff0f82b863ee7ee68c1a284b6bb5337330106e0845436f26d5c33f3bb63cd962100e7761399f575f2b88ef56f3b74c1f41a68badf476a3f9097c8f96a975fc16aaec9eccc5800b280c1aa73b5a2cbc036302ee374d703b963399af99872f8b15316a19915ff877c901110b253cd7bbf7c4c1caa6f5ddfe168e930e75a6547022b4931a134055183d2758689f6d2b94548718b6c870ee4748b0654a53bd68f52cd597798513e529283ead26adf043ae816f8eefc9de704bd30d612b0f421d1d7f600eb0500d5d67120ed87244c1cd07d130461aa057e6305be01dbdbc3c3aec4a8d1b188d20e2ba3493a77622f27f54652f028fc7c23694e4c1b3cbd77d5b2c362daed5b406ba5ceb9b674ce29a8a36871eb1ccecfede3f28be0e0f3bf74aef50ac240c07209e4a19aa79279c7a6d0ee04c15191292ed407775e48acfb8b47e12eedbdb94295007ad0b916fae7d4c06fb7e0beae95fa440027d35a9bc3568f0817e29674314a1397fde8f23f569a05bc231c1ab6d81dbf585e483e5f1e3a2331fd316f5232c03286caad7b3f2d8dab725c3248a6d1e092f0b95cc321c9d420d815fa78e552d4c0359a72b43068fcc195c3df93316f0a62f1844d405e510940b03c4f376b7e88059331249f97e7aea7d39397ea0947c771b18bc065f9c1b79617a340989080e5b3548493ef73670930c06bae8654eb2673f57271add34599728cddcf4a189a5ab0a10a439694e5afba886d046301756e7a155a30550a7e8bcec333efd81dfa0fd0724aad420961c94912ba8b2466d6500ace9aab7e78a31f6b8836766f788bc1be8cd6b337f49620d09c07e9519d41fa78d0d1e397cabbab03a7356c7bb271d2aa2e7c83f48527b393bcd03c18c558fd1dacfd9d2610ac779e5dd30fdf3b363480c45dc1d41fde4e2a988322525e48a756360ce7813f118fa5ae72367494d74198ac974793a9bdb5867bf5ba9be4d6df57e2ed27c85d3973a91fec28162fb2ed4b664582857e289cdafd850d8ff9071e51ca17e4f369aa5385de5579233c3ab7a1106a623272ba76ca95b53ff56054a28309419d46af37ffd0371516da829a0c6331bf1412d2c6fe3c0b467bdd16a4b74c8d5085a3af756cc8b4a6214ad7c3f3c16ab718d6bdc04812703e87c91cd19bb046d1a4053e72d5e5db028044f900edc6c780bc1dd9ac3240195ac765fd72b078248a2efffcbb6b2570633a84a8022ec1ca908f12c3990fe1667baac6a2e92d991c5538839b3614d42c642e414f0c319f9068f526bb8f46578c8cfccabbb2120ec4c6f85e618a37fa02e342011187d2074649caa3a56945ef64a64958e794fae707a9ad1d8db01be8fce080ffb14069e90afb800599867f7ffe3f3448ee35ef58519d1f537a4343f370997e5c1d6a5c24893ec2554fed73cbc205dc6a6c73142c8ecb78638edd9f9b78c35e6464c8daa73ad43ad0df80c06c9692281a522cbe9d72820f567944cf7cd98e79acf9da6ce8d2ec079cdd5a064ec378356a27160b974eb0c93f0a1eed874c6dd9c75133428bb048ea5133c1da0c2945e1dbcd1d22858550914b30510458cc45a9c518e7ee1ffddba061dae72a2f203105a14f55d8296b7969c5af6fac7d4eff9bb0c740c3840befebcc1285bf250ca009a40cbd5a07ddeaac43ebe1b3cd6a715e3540e0c589c5b1ba40638cbfa9660bd58522268c2c480bd8aefe4de0a0e23d828d7039197b5976fedecad3b1114fb56d9222111f430bc2fda7ccf415c15296fbd0142ff6da4bcbe1b2a922bd77f78a7616431e271968692ad63ca590d2b37de714c94ac00f2d7d2d017f0746d3604c35f445d186151305862a769aa67841fecf5c0569179191d3014a1977971d6f6af3155a562a66c7b7f3b0567b8fae708a401231f7fd240a458a0df3c64c3ed3b75ac2914252d5fe2078a6f73cf358e3cc63e1b8e2295f6a5421693cce2d2b75cf96ce9047bbcb6510fc493ae3dc7b351b6ea0d48fb9fc4608c43bc37ed6a2169be3821fd5e10cba97c6052329965a149007ea9c4a2b65b269acbe72373fa092b607a17a1b39e1df438459a179011a718eb6e60c2926ace34c8c9ff70d29f389de90ae6ec95a12fbc179bd4cd010e7f5fb4048db92c7168513f2a2ddc2e6047d9bedb25bd35caac540b4e7f22fcf0c8acd0b7bc97b4d719accf3126f06473d1a892c7c60ae989332abf4ed47785b63809db98b65c94556bbda9eff2dbd21fde24b24fdd6f30a1bf0cac372fac580a0aed482fa331ba4f8cde993bb8b3c85f960e9a98f4c0ee386cc520785ace7e26671640e1a6dbfbd2aa35e0f1eccd12a041bf2bce62d114048f2dc7109ebd182debe8ada5be4025993f31f208acf6acb8bd99050441ca57047898061f3fc2d0239535f6b990ae133e9723e0b95522078765352b37c3d3f24237ab003c42c33c211a968b38ed8f01ea3f5072af95a5cac8457299734ed6bafb14f5d76df8aeaf8f134b19a4a886e5fed2b17074a43f8e9657375c4fd285c36268532e9eb6609e110107539c61a86cbc59fb4594874d9eeeaa36f4f3326afb214dc408e6adf9fa7d161fcb2112f865052263b1a46d38caa6ee5084a3ab4dd00c54336a0131c344b59028cf7dcb6f5f8bd36482301585cce7996f86d30878050b12cd8813ffd5771211185d1349caa7b2c727921158ba9f3daa870708c1b8e0cb7d63089b7aff76ef473f42c981dd2f4566031299f5445e66eca2fac24430f6ad15b039567d2078831328f89854ae898e1b3357c5f747eda1847af70bf653448c9cb7bb4df8679a8a55911b049164a6526bb8bb727d0901b19dd7460d69710e1bd507a308f114afae0bc53d342e4428387b1bf40c4964ae8fc02f91744d99ef8f11e9cbeddb48fd9e4c7ee004dfb8dd02e03c7989cc9cef5822ae2564dab46d09b123390a6783033f244510852bb3daac5e6160ce87e23247b2c8ce2ab8f80f8801f2d8767d3b13b7fc831c8ccdad6b06dd93df07495e7b3bcab93f3948cd5a25221b4138dd648e5f92ddc1f4fb82aa7eb043b610c92ca1c6727a668591a21e24c8c9624101e63d5c3721ec5b1ac2a681940ca9852dd22f274c566693d911c81035327730f547cf5ddf4167c7c1a19accf53e874fbea5c377cb512eca084499c5619110e50108fe96b4803871b70947487e7d3c2d6cf2ffc5413f50e294e65efa98a893d4730cf7ebaf8316fa21e912f3a13122dbf4672f51d0f5b7e0c2e369a6195b7c7acd78a12c31eac9cfcb4b4292f9f3b6187b8bb9c09713daa4f7fd44a8136e65314c594c0578e5397f4d7b357e8c4525e62c445bbe8787187f663b8c965ca8dc285d5cd8fcdf4c6abb6077195bfc91d0111fc230a294d299ef6e6a92be63a1391d4a3f78115fbd62e4baf7f7ec6f44043b7ccfd19b7c91f18de11c97ff4fab4b107da0ee971546ad4b506217422f97a6680f3907c7658038e4136795bd34d4679372bf14ac98d871f0c70f488d6514320dcb94723ab8c40de45431f6b1396feefc87b2f444fe6419ca4e135d9243c1879dd46f17207176afa9eed87c31bc1822455b427e6190df6f1d3d8c38ace10e93e1695b1eef13b43a17b1aff27f723d203bcaf5b60762bacb24b6369f2e724895a06c05257a5ab644180e701df34bc0a5b188f849c623533106ac6f6ccea8661b9fe18b627394acd4d6380bc125d833920083257b0849843e00b0f719740738d08d08e77975fc2f5c900cd27c1c07a301f7dd23a34de19f18a0e58f98af08c305cce74285ccc1ae97ffe557a9a7428d4991825004a4bf388a1931725905472f0ae800679a4172441377e6c0916c0459a896b496c0db738fedeb557188e83ec9f20b1d8ea8adfb24127e65a174e3ed331a5bca2a2bd3e0bf967c073437070a5e24afcebaad9cfcfd2fa1bfa03e7707da8aa815d7d3b880460199507fa489330e62a678ff976f74a822d77265ded6e8a672fe141e41a856b02183444ee5708d62b4719d257c091762d9da8f07d5c69027710e9d672393a576c766fe4808932c4349cf0d80ee6479ee3ac64da259cf23b588456e7aa6de6857801f3c4d6ef1d631367e547d837560bd69af5cda7cb3592910a279361b039abba970e5aba31d1c3ada4a67fb400a56d8d697da736a8001bf5083103682ceccd6c360058bdefb41c85d02704812a2102016649399f8dc69db1b7930049ba43dcc6cd9ba208b19f0a1efa3b5a968f2b7f" - } + "remotePerCommitmentSecrets": "" }, "waitingSinceBlock": 400000, "remoteCommitPublished": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Normal_fd10d3cc/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Normal_fd10d3cc/data.json index bc1a7bcdf..a6176d43d 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Normal_fd10d3cc/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Normal_fd10d3cc/data.json @@ -237,10 +237,7 @@ "left": null, "right": "026c604452e1a154575f1fd5966389c2c686c0b4b72370da0b33764c66b5a8f40e" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "c22de7c4dbb965f6418644257bcbdd7def220c33d298e1ebbcf04cd9f381521b9bee4d04e8f7a3429ed0b250b228632460c60d68d8f608968188f401215932933f8edd5f472a1129f3e9a34971ac10a13675f16d74d0dca4b5bb99a32141bbc8e1975b5d1e33bb889900dcdb07282d17ca0c0954506c1d31d724ae4e2629b99906c79de727f0b15cb89582b4ab042ea70ca81e92eb424018ead01f69e4eebb20b17920d758499809c65a188ba18c2be6738cadb8bdc00f479bd61dc4641945ce65ca3177b413098d5b17822bcf974c8b8e6d21ac7d024dc7f26eac1277963e0cff1cffe38dadbf722b5103cccafc327dee5a1e838310fa709c84411bd0fe455d16215f35773d6579fb8f3ffd7bd35e8f419fb5e00928003658a8f84c436f7d8e480c6dda05a449c4ddc5459b84e7508c9aee62412d89b9bd4eff1cd721ce19d7abc4cbc4e34528a8283b086772d4e225a64114892f7bc9f6f7462696cbf15ea90a5742aba485b6253eb1d0d80beb8730ffdf3bf490ee62385f7eae642c8ab525af6d21ee69e1f66e97f3c41c69d024676eddaed8aad8c1f6039696afe3d32b2c160f4a1438579f577055ef9989141507b07fe40144585b42ff58b2c18ee46aa2f4a782460f2ad117294d5c5ce978886a85f11b9906afbd6dce27c6567fb23ef36045c44d646e16d28c47fe637660cbc8c88524fec155b701f520a2eae4f588f0191f39efdb777af61893c8238ed85d1fe4d0ead8e24c5036a45b1d6b0cfc8529657028993e8778ca329240eb67cb5593c457c05e018f2299b374d765411c4c3216af82cef710ab882d5dff0cabb2a5b2bfd6b25caa335889d60f75d3b9e6bf2f33b2a6c6c5457ef5159ebc2c08871064c821d5450c8f31c9cda0d4b8bcadf23a305e4d77fbab2d05989ca7c5fc3d408cfd205e32f161f65e3ab7612a132c9a740632715362ee8e81d3935efefd3cde66654d4cf1fd03bd820ca7da5c91a701e5dd1743bb45a13fff950a162324d17a4bad0df6d57087b453fcc7afc9595c4ad9ffde0cd532ccc8bd49262bfe81b88b5b61576fe0fcb3d7506c08c75407d2a1215b74d61fbe36a2fa4b42f7633e6ca0fcae2aac0c6c9e3daae5a5e3ce69463cffb573abbb862c4bb4559bf72bccbef306e0cd76aada133fb961caa1935ca5a68676330caee3b6e45a1ac2545ca0cd7411b251616655d43f79d81955a8f0b6f42e043ef06622a5415ffc8782670525ac5cf8d9e27eb8b39e126144384625d3c9391620b08831ce02fa64a8289a142c78e941f6c4d0152712ddf0aab9b91219f2ff8983635f87436b194b660f12f81c0c3debabb57f925ed00a56209989bb4bda5e8293d0976abd285f9f13d309e7c2d8a3e48b65e660f8347d3d52772ec3ce533b66198c60aa107a751648b63b8c8cd604d4e7294c0b9eb8e34c1038beb29dea937b4f5c00e7dedb7752a7ecaa4eb27006b0a568f63268c6344ac068ba78d508d78c6ed0a2bf1710816ff4fbe389d11d8087a38f1c5d97b1fb19f6e77e37131847c1faa132dc579ef4fb3a6352aee4d2a6539c696ea82dde5de19ffd38f4219b5c0eb3198be205ef8f94079b56425170f16cb7b1960669dd4afdd96c8e338d4d542e311b4c1aead45a031f4180f5f4dbf5887d7f0f4b706c7c7ea87b0e91808bcba88697d1d71a726776042153b38bf23d68888b20da7300ee67814163fc437f7b66bbf13e2019b1579933fc30c99845bab8f45b9142f9cb93c449d45b0e76ffebb088b329aad6410de6b1c4a15e37c2cebe7e3b58adf3836271a470967c910025ac3dd90e73c08fb030be987b5bc40d595d1074377839f693b3613ea4cf8cc2feec7325d04aeb5be09f8c612011264745f5c847008a5d9e6694c195504b426e7a625a8bc1e1bb285e27d9da30a63e69ef8bef31d60eb4563abe38706040cb12fc30631c4fd65129c1038af870b6fc7624a7b10a549ffe298393091eeb0d40ac4140579e21b6d28ab80a9d321dd2ae7269d58e6a0a9162e3868e2373a044dea8c01b09b852df18101abf428ac5fc895a8f899cf33984ba842dec39da490570f9b6785afafc27dac4be4b19b1c825c15a1d01a51425c56e0f97ab5cafdd35b836993a055bff3e9b2ddffff32287632acc52e8a151d3f608b8346ab237c42f57c4724fc996ea637aae83a253dbafa91499c9541072a9912aca5a126d0daaa73a8994e59aa67e3fb6ed50be865f5e8de4b616f2d5d21643128c62fba6141b172723eb4775072ac814813bda5786b2647cb2d0317d43b7c2eed04b92dc0431d73b98ef3219d0e3515af91c3fbe9b1beb4d27c743d98c8e0f3ea29f241d7360a0efb44ba77508143e39f08ad2fca912195b394637ecdbd2c928a30fce1d7171bd3ca095513e734f31bac320f65ac4df8f887d67c5d77f501288a05e0291977683f0e7cbb47d712bb29edaaefae65a4979ae7ce9885b6c1d2181d7f9c458c89d403ce2b42a99235fc89afe679a6de20d5bd7a6e58274ea4d9a4f06e332b146e7ce774b4e23e93676292bd1da308bbda831e25032bcb96fc9b243a5434be8c127fbca0b11dc90cd070a546bf0538f602c76edf247e43ac29e580530a8bd01f383a00408784811f4bdf4cdeefce51f8e1f8000312570b93b15f609ac19caaaccf75ca20838a55d45eed675112d18274225bc382a73a3919c9232159e7cb2177dadd9bb538d5cee9f521c3ef2343902798afbab4f75190df6e00c0d113393f78422d0663d073d923c9a65e37b907a56b6e5d2310ea93aedfa563ead06a7e417a731e43183ff706574324043eb90946cce7964ea44c4c9746d309b29af8f93e287a2a6be8ebfbd560dcd240fd647c953dcabe53b56b122de2cdd4bd91b2265b08c4d1c83ae1494a2afe6a3c9f7cfa864b82b7075f8cccd53562472800f5b03081867f2bad11023f58c9e28aa98939c0d2eb42ff49fa543b843e5e288d961b14b58bcebb1565bd8f75f8a8a81983745e4015f6035a28faa24ac95acb919733f370943c5c7f2644320881c0bd8761da99defd8e0ce9b2712a9ba449e382f5c2f72aade7f7243dad94b4cc004abdf4cc75d10c1b95c9f84772f93736b6313ac50b7f2226fe8bddc197026ef033d423afa0b3406e57f7506f442b57a99d270437e51de96176c39f7ecca5ecdea6b4ccd7da0083311bbd89559c81b118aab92eacde00cea82b3c0636867b759da65fb9ca75c1ba0bf40054284c8743f1bb4072468b5ebf447e649f0e8eab6e4744d98fccab71f32dc5f064a2d383225123b14ee9905c0ef672ca098d3c73f303344f6cb2569afd75096acbe13ebee4b0b8e62005dbf6de7ba9e3f83e43e758cbaa58d8cb7ad4f8ff4bb9d08929c2168e90fe117803ea4195584be40947b9b8e6016d4735431251c0d2d9137dc02286eedb306ddfa1c202510c612c82cf2013b0908e62472ae53f8ee56fa545914afc19000bb9c97662cc8654698a139a3a5b5963f7929b330d106ce344b77df8a92601b9162284f4206bbfe0187e1cad7023a31abbbb2e91090a0039e5d2cf6fac5530797e0529584587953a3a1df1cf681f1f22225091e437f70d2dccd3a1045546dcb8d6b67ca4bc6b1e37ee7ac5b6ba84411f26b2db836244f3d00ebefabbe43113ca29947e7cbc9d44d3dfe948baf57a4c7e861b7405a31dae41a57c953bbf4fe056ecd565db74998d51301571d23e17d6d702852ca72665e0bfeb9312f16a5f1424d57afd3b59d4a5d2d266d048f624c729898dea0f51bc18ba19f1646d9bdf9fcfcfbacb62e017363d4f1c5c181d0594a5016ffd85dcbccf7508621bf6aae90f0a800ae63afe8076b9ede0d6a85625f58f1f54cb10f4ed4e6a0e65025f2fbac4c81fb103d7079c88686281cacb0006da43a29751ca49f9862b955cb68632bbb4898d571a37b0a67b1d0eed9895a554bf7182b747a56848db3daf2d8b568acd9f93c7bb69066b2d387bc5171b4e9c3721cedd6ea79ad0caaffc325e1cf44527160b8a32e2a0fbde430a414ee21cc9342a155b828496b1c1f6b63160c431740bbc84a2aee63d7c995c2bc31daf8a59cba61fa69fdff23bcb16ad62d9c489bcdc9dfaaf884ef531764a61a198f404d8484f3dd1875292575db94f9f534f66359d72a0d9a42c6d14422cf4be17ce84c3777e3ed2bf7d935d83429eed8af7d3e447c83ed8259dd9b0b06fbc5278f07828883a0f226d197c64a45531fc024421f1e229bd8a5eea0567627747683fdd64df8a5454c139d6d9c4a7c8b7efdca770c193f4208f79717110afb2e38f63374b17c37a2a03568c9a012fb969d4145a0918176aaf9334f0b20acfcca85ea35128067d127a71bb23cba933c2947f577802d2e342bf528e8749637dfdd6c6bc3fc339e15d91a0cc05153f11849f999b43ddf47f2a9cfa0778a0433c2ce4d08fbd96b260317e31ba993eaeba827eaa254ca601b3f8a2ed3ca8e44a0eeba0912916c8df0d1c7a7ebea8328d925075a13630cfee2cb016a8097d5056374aeba051b28b9f78c353ce458d2305ec93dd4a1712a11352d79419839a339be6a1e0e5b35eb128e52f88e8f1d2086a7cceaeee19f246a5a43b402ed03a2f795f8c9d6ce9f2d4282509d3cbce46a2d1177213199d94412425deba62bfc777f06e86189a86458595a48361587a2c2ff02f37f48273bba5520ad1f70e982e0826ebe550dbd0d682b1a24a06743473262fdb5afeff8d8e47f2240a0fea1daf660dd3cda8af269339a9d49340efdec0ec2a35eb0a7adff5a54454c6c51883c550c9c0076a9231197831174e55949c1e55311a37fbbf97e18489d698d47de825134a87c2291469a48e2df500b19734191c10a5d1bc2c1f178cc026c6afb4ea7805a3dbbe38f5d336cef8313b5987f1cd336b8cbcc7f49585c022b584697699dc98ddd45fb3cfe2214c85b5c030c1165bcde544e70089adbe074a6fee5d665b7d3d2aa87436c53e731160d7f74e27d4178ed6ba1ea2342ac9d1e2028e46a12de846c2c391ff4aac30b1e41caab901f3d57af8f25e55418ffb17d9bd75c2ffc8c1407743cdbc2e1904e3d140d1faffca8513b777331d0a698a39a1f81c62d749674e5ffe26f6868a7c702b59ae15ee7ebba76b9677500e64f7a8fb3f5cb6ef827f4e6b68342aff94b2087dc20060a45da450409987be4cff09e781c18e0ae5750386964f1664eb478fa594cd2aeac2c8a1e2c7fe3fefc3f3c6d8597970d56bfa8" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Normal_fe897b64/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Normal_fe897b64/data.json index 01a0bcfe3..3715c9bd9 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Normal_fe897b64/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Normal_fe897b64/data.json @@ -211,10 +211,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "cfec67f2ceaaf3222c246cfc9c550c93ea4c41e2247f68b68610f625aa4c3d812fffcc01d35842f87a8542adf7b4aab4a88bf092202548fbe0be5682118b6d0e36824929e6c5fe9b3a5bb88f3d3c28fb0f0a113ae2f7ec7fc325f5c205c3751737d1a5b28e003fac391f630bc96f470a18b341590ac2ab696aec2518384bb164a82036330200119f149c906aa8aefb0db5e7d0c3ee5f3f4b14d3c35315a3521d2d24b2c911177ad068c9ceb8a4e77daef8a68909d64bedf726c6bfdbd4e382e1de1b3f10c3a8fe2229ef50b95246bfd0fc77a8b1447752e0f2b68ab24b70d0051918ea4732eae441d8c103d60cfbb8ab0566eef2370d1ad1799d24d1b2af8289c1b72564ddea6152ffe764b97e7d59925716225f2bc1733505dbf1aeffa6725549cefa495daeb17d752c1e25ad8c4b183fe9dff452f85388ea359eb175783c985909825fd80098f0f11bc7dff45be84ea1f1bf35063673718ec0dbab04be9cdb83003c234be0932e48232fdf9a1c9ef7451b6a8ad03eb3014a2930c11f81bbc90c4b2b5be64e1d36baeceb68a6af256ec2a620dd497ea264b2f88a8cd2bf5605f2059799a2aba97af8e53a551e7f2e28ab00f62bfb53de719f640249139f45725366f9fdcc35ca516134b06f6beed60237765316b46f95995bd3bd25609520de670e90d9840575c6e6b6e86a8265e72e86aad4999159a8b23ce21eb7cefa74d177be2780de97add3dedba99ba221cf75f213e3a1492f7788ef3ba72862ba8657da0aaa077232882b82aa5831bc1308c7c590d7122d0a9b4c07aa967e4aa634a0a3cb251f51e0c880721dffc1626dcd05ecc0caa660d00d3df9e405f404cccc284cd8f37b23591b9e8b34010b02dc1e77769911d37b87455e4ff74da245a0e3c0f78775e0f8ed0448117a80e077919a2f28a934717a99158a04f139e2c3171242726319c0227781d03ff9c3f81fd1c9637e8af9b280808e4206293d5eb60ae1a5b5aae500e1b465624e1dd86d489cc394b366b626a4bdca64600936ad8fcd47155e5963811931624c8b1501b0fe8b5d4463b8f0cd7dfef119486bed5d7435cd371eaea3f0ea041311029ad2db90d914a4011805721af78295695a11d872e14dd39601a2c199325775f4cdcdf1c9711147caa57f3b1c31eb08937e02318940ef9447166623a224a1c3cf4727add4b05f199d7633ced8c5332793279bb6338b5fd4a926a14104e1cd5483e9c065f6768e8b34c1c786ffcdc817af2e860c53fd1ed5ccb99e7385429ee648dc869be252c5ac47b3d9c11dd3f0b8f07f7d44f30724b735d748e33f5c5fa0c2dede71e549bfb532f582c7f296c0e34cf8f7aed925d4eaf037ebcad9990a4a2644208473bc0c0c558312434552f8c1dcf70f8f5f315a7dfce6bff63fd42b8d2315fa116bbda2baa7b05a533115cf5c595b3b150a6ac39f7994f92044c3188ec38ba29d5692b007b82fed0d3bc50a5a72b49e3f697b7711c616dd73e3e198c7363e95b8c895a217f261c33a1a558e1dca510f408b7b018da392b0413520619dc5441367df95800cebd2b01dddb975d58813c7db8bbc92455280561456450eb3c2bc48c36474a521c6964a2f007f6d27adaeae73460730aa54fb9a6eb05a159c6d7604eae112ec2e160901fddf3e9db3bc94c3820ce268bef03f5d3b2323267bd52a9add854db7c2bd00166a929b6c321ea056241b2e852239aace0349bd83e8c425a1b42da486a5931b2dc06d7baf213e2fc2895169e31a03337eb7f63445c27df76541e5f2b9cc3d275b4985a9c5b92a3f5402feda2d81d0526bf60926bedde9a53b08bcd5887188a75230a4ff3b3d345c2b2758512b91148b8d67ffbbb6a7b3578aaa95a8aafef6b38951d83a1e7d18faee5e5a2af2ba03a7a5032ffcccdb8953271d2f303f49661a05b2da552a98d0f5fdd8306006eb53a9357e93f131d8faa6ecb95db71fe5197ec9d86d2ee1bb2594c6442dfab76522f473d9bdbfa078c5cda83e4a9bdfde8667cfea6ab57c73ff541936e39df298357ca9b8cb33203ffdaeb5592b7e704e557be3062215294eaba2988318d2577cbecb65905542e23cc0873bf5b7d4c7a9d118b4eb350690e264227dcb09f29370f6b07342b8f4f3feaffdbef012f5e35e873d597b4ad4d01bb6aee7f98d23a074128a2630591ff99b092454b41ac530618807e0ef0f2bb06553a53399218e4304c2d48355f84be060a8d01a5f25874d19c8d5f7e4c2545d4ee39fdeee7a167d6f4af5debacff2661cff8f87e67fcb79cd400a79990ed71f013aa03e4c961592c3ef37e69080229f335a927252371ac79b04555ce219c5a6c5849f4f8ccb4088b8be83c437177c99dc09a01e76f3481118a087dfa8ba5068fc409ee35f4586abdb52633736fdef2ca77cbb9be4f31862f54554f9cccf24d0430db5d824ba2828d039a0c0510052bad94ff5fbfb8a128043546edf85de81646f6b72977452b02cf1f4ae23dc234688dae98380554ae703dc047e051718dbc191dc4cc6e620cfb5332ff4e076492808843459d12f73ec3b71c505455119bcf352773404768f11715ca0c7fc0a40f1a9a5445ee85eb71083850c5a9480261dfff7a90a7aa625829dd2de337bc2b4505df81c0d58c3c0712149f20c105be675570ced31a71fb4d6e3cc2c7535323d971728b58ffca13bef38915564f9252e58af9b7043e0e073e3c6f7de80019fd614955ab6df5bbf806bcd91f311f105faef7dd0658d8d22736055414eebba35d80231c3c6d6483b29d6ca58b8ad4dd1bf45ebabef92228b024aa65b952ec3aa515eb5190b855be20b04fe0ae65532a7df504b1b311a794690c4043a080c754014e2d7eccbbcdc93b6e2aaea622672240809ec0b999d5c67836b47bdb3e58820315eb1fe2b96a5b2b50e4101e5bb92bf3cd8ecb53bb601d2a5d1919804e2b2fc826633c5dfb736875b0bd1336090d82f0fb57fe4ab24ef47ceec31f0c9f998ac4cac72567a6e1aa1794430ffcfbffc8cdf3364048f6abfa235a5254d676e31401c84099410fcca12f79d352333f96400ecbb10080e0a7b0afb31fa93826971d23d0eef56b7cd8ba871d94c2f43f8254bd4ae3cc21f0484c8984dabd8fe2b9d41b123201caebb4315bddddb837a4a6e5a00673ec5408ebeb81a98b470806105091c320a2b5bf2c4f5c0bda79aeeb36d6a42fe81d19d12b0bfdd31ba516939c4bee724f5c24160ce4a2df124b013075c6931035013daf26f421b8a387ea31d6e96e082dcf4705b84fc253fd911a2a7163faffd19c17d122bc6ac87056a20474196617ee7e182891360bb80e633c9a909aca212ca6d3496f955fa95542847819a768bdfca90af19d902e70631d55b4101e1616a51c80bb5137916ac7d7fb2ebd5505624076d048d42ae3db53380a4507c09e8c6a5d9ca8790a045a031ab07912092c6e3b2fbab226d667cf3e8696d89e658d55067d5abf63388eee9a1cc64a53a37f1d25c4a179609342427c95c1cf708279c08250c045dad82c91250045a9f5bf198ef90a76c53048c5174e9812ceed77de434d5eab4513e81e1fb91c24b1394caefb37a5af27baf6724bdc6d87315773f314b306e3e399e1b241ac0be2812398e613d19fbff0545cad10953cae7ac66fcf39163b24377ca23ce23961f2b5c63cb9415e18dc65634062710edfc676bdc292e35088d5925190bd588ece9936377b824c990019bb185d0dcb0266ff081abd01b2bda3c3e13df9323720e773e214f04ec046c7ed5888375aabdf6b5500c88d76ab7ead0c6925cc2b0863484b3ce0fd8c59dee1dc0a3d9038b35ff77990367e9703e25909b09aa7bfd79aa450b90a58b9c434c58634cc9130388405f5cdeb14bdd8234b7776d3468629aef166361e944eec93d77c6dd3683da5eafa87b58c5c5a3313753f479e9f2a242aafb8c790855e2f1d32dc6f7e9d420ffe8aa52ecd740db86b5afe5d6ac2b53b5cf959fc11daf5da83dfd44a0266aa3023e2caa0d2e1fdaeb37e1b125b3c29c42bee7c94f0949cbd08157032ba879484e02149e4171c191d67688cf6afdb9ee7f664942352905f543db1b736c19629281da3f3e048af0acbc0f517e5dc782573d932cdcb8153e252a2c6a002a2927b6231fc49f2d13a6c20ee00fe48efe88acdf0eefc737e67d2636636bf4b46d07e876932088ec39232b773dc17188309345542c1a9647b495152cacca1892f1c2c354031d9eb618e3b55fcd5be13a40ba46fd8099a1b7c6e851831f7f23816cb1e9bacb61e4f8b293c92fe2bc05dc65b29f8423a95732d398df25be6d24553992e70fe7b627bcffba620e1a16653a00dc91eb57422b5acd26ab84cec94899dbafd38cc664d14b5db08f7215415721820e5b1aef2634e5e6a310bee009f02db19d226067d2ab865d928325e61a7f5a719cb77d449e55c8a0c2f955d94e24469ffa216a5e8aee2d2178d2c746b3106e009307e2aa11642d6d6e7a93325f7a461381390096971ce87432108a6c624588bb6af29e423c8922b251f87d95845227f34523b2466ec6ea6ead6c16eb609d4e816e2568ed17bdf4106493c74a8b6e9993d1d751074265b13313d0c8310f21a96399a778ccf0cdcc5d39d50b429dc62bb39e508f5585ac1d26d8008b507566be6c0c6f2e5853a14881476b52e8658ac00387aac17480d1900ed790570ce2eca0c5cd091c2834ec53b740ce06d78043bc641f1560d883cc5917fa65d24cc4aa51fdbf19e4d8e38b2d7c60c3d4dce9b4cfa57f7226d8ebdb2e1a2866283b72ce397ed6b6a7bdba85e24445d754c43609ff829e3454212d19c6d0c36b71fe273447cf7b2696633e1556dada6d4d5081fac1fbabda277c762f5882766b9a5965e1f9782f1265865cc886e21e4fe37f4741826047ecdb850457f0233008ac0bdcdaf882c1096e8f311af9d53507ca6d5616feae10077c52311a2a0d80bbd17689cfe0cafb056cb36cd42bd104a9a42d3260f94ca8f5208334d185435f29c5675f6d0733870bc47cc242423ebee5790a6e23abdf7ea33fc96928b7145ac969a69937554f17896d4d4fef69dad517a527880838b8d3bac3ece757289ca2b1b97811cc80be42f2ac914fb206d5789163db8e96f29a4e1dcc166bc0fc5c92748b89776a4ca0cfe8f79a5e3f120d2e8304b1cd866e2d0fe07dacd4fdef94415c707155993525df50afa16ab0557e4d037ce162f78d8781103605beee3cbf824838df19" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/Normal_ff4a71b6/data.json b/modules/core/src/commonTest/resources/nonreg/v3/Normal_ff4a71b6/data.json index 5fe2fa192..722621759 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/Normal_ff4a71b6/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/Normal_ff4a71b6/data.json @@ -348,10 +348,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "0604e2cc07a6a6f4f76baeaccce8d3571d9112b8cda1132fb4ce96614c8a6f31a237323899890ed65aa1f1f2d2ee3bcda264a60e93e06cc953ed00b33827a7663ac10c9967dd1ef5f9eac23859aad530f8535ec69622a3fdf433b0d69377f8af8eb22a32948bbc5fc4bba70c6d517d75d548fda5beaccd19bf60c16a8c52893912ac862db63cc5e977f6aa2f3833765f81fbd4dba5462f74ba0b3ee2ea5582f2c503b897a8c703f03fddde1b12203bc42f8dfee976ab3471de4deeff10231ba47cd11cabdb3b7396d4b7259ee60d8bb4b0bfa017de4899aa8ad1c656acdf24a67c5a4d33e15a27953aa618d721ab518612b2a38ef287c3161e559ec3647ff979fd56e124b13a5f7330df250be2497f2a004658606018b74281b63e2c8c22215662e1d44a23cc9b62e232753a9b61f6d8c1c5af016e58708098b02746ff3aaaab58f7c5ff26044b927d206930967acdc32771e9f7a2f655f9dae0b88bf5545b427b0d9336b902fab7344fcc35df9300142889dac9084e9d3a92f1107d28dc09e20a368a367a3af68b1bac6768920aa5a1f63658a3a1caf1eb26de6bd4e1c3df88f5e48e4951fc1e0af7a9feff9c6f879ebcaf886e45130db3149d13c291731dc87a6c575efa46290a02815cbbbea2050c10438e7191d8c8ddfde36358c3f2d9b0f713c1c82992a1bbd15d592c88eb2a8a255d7ed8fc36e6e5a6233eeba6f625974f8faffa2d02c8a478cc8dd1aef5122ed7fb72354df5f62c6133fa83127da0093d26a29812514a048b65ab77a5253114cf9d2b218fa2678f18f54665f653fb35e17cdbd0e15a0a8b0e6bdc950c8f50f902c096ac74e6d02c21d0fff6fd39702802e451a854f4dce094296830de2b9570c3a9eca23dfb41640eb650c73ae9fa0d8c73a073a5fa4663f2d8329f0b46c9ea7fcc8deac9d55d49923aa48c5de0fa4f9fa2c970581ff0737f4fbba3c44da799a65611ab2af8df807654a71c6a70354fe43ce51490b8f9c240a548f819e8059a9691360fc4627c9ac17ba7707d20d01bd1f4829d499faefcbc2cfc602f8ea730c2372e5604608ac255cf261750b5a8427752f29b3a9e7d850cff8bf5171d9a3bf354c66e27203397c89cbed10746fcd4d12c7b4cd248162de87b90cbaf571b4d4f8b460b33a16fc52a1487264e5208252bdbb21b7f1645af46097e2aac9f2eee194bc72bda0124a8d92b33173e23bdbdb1495a506235953a203c0f98371b8d44067664007bdc87a7f567ac8b79f20ab398d727f5ec1dee7beadad010aca6aa9de0aaedc581e136c0cba641d0206d036603554baaf6d03f5ca647c5f019cebf49f81b380126735c76c7e519fdffb0337896f8ee46b437d8fbf29957d05514851a8fc9e15c54a3990db96dc2c55f04eb4bca0e72a17c24598bb2268a9ada03fb606fb9c1de5217df32bd729a06044417672e7547367af426eade1b00b7037bb6324f3b79a0fbd12476596bc70f79ea67de0c63e8450904482107c33d5559d1a1404370b8dc78ae9f739780f3caef407d8d59d46873897f2cedd1a6b9e8c39afd68f1cb65180b791a1a5412ada4c0434becb6089344a97fc754ab0bb675dcad2a6a3b4a405a60d152372bded8a3f1e6c26fd1eb10f4969c3d42a4d6c724711c020a3377ab749aad2163150f4954091b71e806536d9dd41298f359db8ef41f834353b9abe9d8c7456c5f1cf1fd78a0ce3134a5e8e809ba084428c384e856eaaf19cfff5f89e1da7f89cc1dfb87391beba81f99f64a8d691689971a59bddfb6362b0a71c97592f983a024987f25fe471e477ad640657b15350e042201a441fa07da7826d13798158243e9e8bd30de9e5e0e6c913277e1312f9dba0e7c3201659431bb2f894127b7e1a2d7802e8ddd449c20ac366acc91aab037e2bbf2864d6ec13226ecec4aedbf75e8c0306cf36d9652bb7177cee6542ea2e2e69fcdbf6670204e8b87859c7e34aa602dc1322997480936342eff46e820a37a07acf46b291652f17e5f06c950f37a4fbcab553e77bf20926b2af9163984f59dc424c3bb3cfcf6333ab7b362b8243ab86565b9aa2de6bdda1693b6bb139fc45fa1a7eadffad1202551afec9954174e40f1c2fc20bb3c5c9fcf19b79e4776e9c30134c1d9c935ca617101914bd5906c9af159849a69c7f623e457f2353bc6cc89ed11c047298b5d7736a8a2e3796790a4e512fe90e33628b97f4506c24bdb63f7b327abdd9cf8a3c71eb079b09ddc3d23d8977ecdb45a687fb755e6ed821a3c7f7adfa37676c66877e4c00c09e2ab8f465985fd79869d0c41a00ab493e45271998506c984eac915b07fd50324259b85de1443e186ff3635beb76be2743effffa62c4165d15d853b2667b76438ae17d8417c0c8c92e960d972ec1d60e7a922b49c659dc60443c589e20c5e94a5bfff81bb088e68b609594d7632d0656984150c34df7e02aece15b4ffcde19f788abcf795a75b0aaf565e8e9ae0efbe544f210213775586d3b4db383be0940068ae9f2a6f4f586a39132a64e53b5e344bafcdd33b6908de068f991fb8595a9606c7a34305406038f7820d91acdd209d02bfbb91f6a772112a84754541dc0c6b2d9f9e209bc6835646846ef4923173036d52352f6ebb456794c4653eea97a54a8b9f674c7083f73d622f8f76757311987bb4fd1c12942ddc019e3a2e3119093b2cc514191e5ecc18e91958fb69badba63ba3f5bd17ef10366b909aa133f578a080123aea1160ca4390e3290440b6bf6dfedcd1f849639711bf088db0a67c93ed5871343678a4bcd2cbdd6dede5943184103b21b583caa7fe0606672a4412e675b11a9f2f2c1acdbc5008d104de031c9a7169bb2b70221449b64b0ff1b1922143e3a43280011875377c8a92a24f4bd2fec3cbd0e4239e67e4cee4aac0606a90064ec7d926c69dc873f40804bff7fc1f8fff4d094b2e9450835e5ced8dff6af1e231aa49fd908bc91d09f4521c4676e73874602076e24c305ca4050db485f4207b6704e86de980dce1ca90ab42b5971667faf7519ed95631a1cb5d6a907df6d7177ccc6a55fec25591b310ace50c7146839a5dd6fd1dfbccd514a17391661d5960d8376249c4a249338bdba4028c4b0431b4814ae55c36b66eb243e21f7c0fd483a9b461fa305875997d2ce727c3f7955ce0f05ef85ee6aaca942a70b73fbd9ced11b28147005730107a4ea0152a43cb80b75da653656f680e453b6858e9fa27f64a747dbec4dfc9a90d14d178f0f6f32ba6a39deecb981c84f4994db22a8bfd925f4a92a95e6b31b161a681be21760a5f7fad811afae4da168864e8eb3ff8798b6ac3a96051abb79436b14727888cc49f8ca100064a1cc83654dd218bd58f3f777bc4b7b73bbc687bb9d8076484990a2272b54efc1a041ba57b6ed4d62a16885cd9b087dae57120e4954936a4ad0a9e5da75a21fd058c503d264f8d63e50a3c4affc90f1bbebfbbad750cbfa52ee8e89aef826af4dc0ad49b03accda524f0c4307dc545eabd1db4acba25190cf30a8b03f640f2ea89cb239ab6c250241ca31e16d17cb560508243a2116dd0c16d76784f511eb5435f0466b49d2bfa004c3651b0152bc5507e64f5a41cdd1d0da5a21b2d51cb4110c5f5de61b743c34740e620618c3bf426964250271005ed3fceab7e4e6f554d4d65588c6b39ad857e267a319c779e2f9b8ccb749597d2e8cd000f2b2266543f2755022ac5ce31011543f6e7d31ce4a3a862d4d8e55f895005a8ce766f00c40e79279d221d084584b5060e40966586d8a091d6721929ac125360c9298d9c094db3c7be23d72fd17ead90cb33f0444f1c6e2a5ab77223e446ecb5d95b238cb72594f25524c07df22a50118160a954d66c91ddef25dd7364cf7f799ac941109f84f2a53d846c25ccc46b58ea6848c1dacedbb8bb7f7a1db1194c331c2db1e7e49d23422184ac3d1803815b64158b8bbd32d92e79c5dbc49b9500d568db25fa7729a1ecb6c3a88f574aec6202098ab89e2cf685e446cf28559fa7cce28a8545f298b14e74ed7039408dff99d7366ee966b1a5f67af3841cb4e112c870e29e56cfc9cab340117602d9dd104effd72bf424fb91ea770f5b65749bb90bf6521ef365c07325cee76df867d53450549976739870572bf40b4f70008387a3376071702b984805c721b83a7b6f30249855242e289e18c302c6331fbc1664befd25fd0c4c3b1e2e5e1a9cc4c7ad693a0fec5ad98fa391a8610ffd65fceb0318225b2fc3fa990a340ba4018fedafcf9b29445a5fe12169f87bb174c9ab4a697adbfc9f890682c3da79c61c83e9bb4eb362b9b79c8f051b0a69b2057eed7d6e8809bf458701e97d052c85469113f5b156bc93a27abdc3cffae7a3bbd075f38f17d4f98afe7847d91f420b913cee1743433b5e31328a10bb95fcffb8651e3fc2246306cc575f95b3237e821cf9f2e82470d0c09809d2506fe53ec00efa984b2fb31bcc1bdaf86ccbe8f1bd5b42fd9c7e7a4b0aca3d40bbbb5911e45edf53980efb6368de25b46c88c1b168dabcb436a19ef31da31432fa5068aba62f255596bb159fc3a266be4a2a839b2e8552c7c41b357890ae4eceb84722f2f737e44171eafd88fab05bda5dc147d13cb1c6c9f4cc0377d34d1025a0c5de10f02de8c2e11066af97ae4973a1dfeccacaa13cea263ab7455b1a4e886c0f50d095095591fb4b07ce981c8fe5dd80712c42b8efde5fe42f988d3956b94e0a41a1bad7119412ebd27405c0b19fd92d0174ae74bbb204aca06b0150b5a06c9a822bdd03d11959e0f213a66b395a7d11eee53f74fbad37de86874ea0c6e372296caaec1bb50de1586192b1b469968896c4124c39837553134f66c0b8a7d2c0708861f4706801c0b41ae10bb18e2df354ffb0fcc88390155e93a4e5ad221be8751feb7136283ff55efa559bcfe6a06e69ff33b9c949e1f06d3d84eaa6b64615d75d0f36d924a65e79920e1864d2b4993df333ccc3f3e5fad84e860f9fb0e0173bc57621e4b2b7ced1488453a62e81ac8e1452b13ed69cf82e2938e10927c6981697e6dc856244ca40f00daae5a1118ee177d41fa59ef06cc465c05d1bd24695f48f8efdb59c90788cabf3522dfbd5b61b9967e1d82182ca748e2b3fe6cea05fb948ce561379b64f87e1e43050b823ca7951eec02e0325405115d52b5b8d5f4a015e3e95753ca6dd9c0258cd389f16af5e89be5f20c0bfca119b9aece1f66f2346f7e7" - } + "remotePerCommitmentSecrets": "" }, "shortChannelId": "400144x1x0", "channelUpdate": { diff --git a/modules/core/src/commonTest/resources/nonreg/v3/ShuttingDown_ef7081a1/data.json b/modules/core/src/commonTest/resources/nonreg/v3/ShuttingDown_ef7081a1/data.json index e63f60088..93524243c 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/ShuttingDown_ef7081a1/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/ShuttingDown_ef7081a1/data.json @@ -254,10 +254,7 @@ }, "right": null }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "8684daf9f2ccbca185ebd922cbbba98aef3f6934655497cbd9aca24f8d4e6e1cba43d85c8af61b75c248a0f9b359fa8a5456ce3b1e7042c1fbb840e4fe8c47001d372a6b96b41d96dbb2ef1f71d040be6964679e553f0895acd84cf6edb7571c0d24e16688bd8a0fcb4cd94d97b47df1048c61319112ef156107307b1b22adc91d5e5951fbe3692d1ac8947d26b0db93c016fe00e2dfa923c4e4f254cd995d3946b65c580b1914977d1088cac007aae1adc75675fe98a961b6ffc2cd7691cf9d323901ac018e5aa68161878dbb892df75d7dd80cd1bdb650b2ee734b04bd6ca89b7856bc40e458a91c48c888c001ba3c7539bd13c94022c6d25e7f9b489b7edcb500092a057567d135ffc3c6b6db4bc5ff4013e4c922ec359267bc65eb31e49e7e3801be6a9ecd56f5caa07e65532378280a5628357c6190c392141818e6a39cfc50f50d0c8a98ab54d955d01be8e5c5bd2702def14c58ab216ae0a29a9efb791eeaea060935a134ec516eea6558258f5469d55075424840a94a2ea8b4d5e49672be07d22f10ebb85db98686740e1142896eb4571a10250dd18faf0155615485e1629362211c97c912d61d40c7da6626ce6093f293d9f0d9922762fcf81eb7062b203e410c9e7834626449b39df1413bb2ba14a2345eb226f0a66c5a9016a368601b61678f6614172c8059bdb3b9aac7df859e6394e9393a88d616c31888ae2383ced54fc46c7577c66b4a24648f2f67221bf0b211e1c756aa8852c743d5a94e5b10b3ea80a6885834e8adbc1151301ced959eb0cf66e971b62b3d783b9323cbf0182e8a89e02ee7dbff88aa7c1e170b546011e161a6bd3268de96974f87f27b328dcbb06525c92f25cf525cef5905e52adcfb02fc49bfd1e3b3e6a458e4d774bf5298a595f6ba83c375d350b54638311d0483ed4c2cfea70c0cface17cb5479b3f8daa736107dea23627f9c7421dfbdd5878939d4f3e72db8cff9d946c0e8c1809fa5e6e848676f221d82589b8158e019825d0af676e793489f549e5509fc91483f6d49003bcb16089a5a0bd65c885518fba7b64e2c4c173afac0c765c3fe3b620c87d976a556cfd4d829abeec032b8b069edc22e4c05735bf8dcb41b99860d024051456261bff27dbc1dfae2f66d6258532be46b756674897ff625c7698928b6183617637aacff4f96d25f69948aadd9887e9af81cff9215dc533485d3f4cd7d63f2e81c6eecdb02ac37ec64416998d411ae3d1264502eae82b470ec39112ffdc53ce1f530642b4b1342b97abba42146e3324fe7fa6120d18ba9b70026cac8fd3c8000fb8fbcdbb82c04f2c30a0b74c9fc225c1ea80fbbd3aa4470548c601a9063eae80bd6754165c08d276f77ad21eaea63f113205fb0df292cd00f2188b4cc38eda1b4388227e92e036c2ef154104195b6cf5c48a8045171f1e2e31e64f2ce7407c6855f0eeaea131420874004624ad6dae00ffcda497711ff1d7bd508799ffbaff78213c50f67b5f68449e07858691b2a4cfc5c5bb56080dce6a6dd75a8673ea93eaa9c5aed4f3bd5c8393d8a356660f61baaf47e4b1b4eacc4421a8bdf0064cdaafd45dcf7633820f0731d9cdf6097c991318d36c33020bf13e9acaff58c5f2ee85134f3bc46fcbb4c4a9244732cfc5866fe38d29494872db6d5027ce24dbf58f30404650b63ca595f363b8abbd0a0301b220df142c9b1a423160649eae25a0431af84dd4646489d20ee961c24e6a8e382a9cb6ceeb9b3b9669f383df3f941016f81c0117db384266cf7159df3b4d23e56334003d5e6d60827e9436fd3859315225af19e2469ff1cef6cbeffee717b2043db454307669c9332d59a53eb5fdf5ebbb2c9be817fa1e09e08667ee5bf5c7caa17147d1fb14d7deaba3c9d578877b5272eb7b242c5ba454c23cb85985db02ecaf7c751532217b0636b574c6c7ea7fa06b9236b57d2f4055287fb4c8b0ff6997bdccfa6ab892342cafb0ef90acb75fd24e5597a40dafd604bb008cff0e5079c43b91b90c2e24f40a47718ca81db3e7dc5430b4a1ad5f40a7850e00477a49a3ec5cb9a07e09212e6207953f5a05c51f26052409a1867674cb144f5b024076a07459dbd4b0321109096143d9f3d4905ef8cce2d22be7ae24450cb32112f5d72b9ecc76f2d4f68e67353b4adee82dff86371578b3c69a7b01af0feec2cb0be2a3ff3b9e3b093e28da8068dba151d4da7935acdc32cfdbc6596e3e93911a3bd5da7783900465fdc629212d9c7399aa2342423fa5929683965c01e64e838b84d486bfb07ff744bbd970934493a20926d68277610025234e0dee9dac0ce51b1aa78bcaf85f4c708585080d10aa7deebbc4754449342e66aa6b3d770158efb41bbaa178412cc306f35ba7ccebe0fa2b6dc9bb966bd7e8fd55ae8c8fddda0fe95af20583a99217e267990a547cc16b07fc077cdf62c33ff5546d516eff2443c625d32c457224dff525bb74f57c4a7c7111a67e59c006f57b69229d57407f46e0d3fa477769ec8bdcd28213e212f0853fe248fc51e27a689b2b5486cfd578d80990e5f9a21f64847bbbf20f2d9b411af415ccd1d1d683a7dcd8954c8c51b3dbc0db3da6b82114e4c3f072cebd906c81d141aa78d6fac3db34aa041d9d5909be7d86cb300157946d764873d8586754001404d0de978a9039714c4f46c9721394a0e3063a7c08201240a01f8664bddf5a3220d6add43bbcc3f5ce0db8f90ad8bd3675609e4796f32bd1078ebaf00febe703fd45f9962ecc92752f1f9b64901f9445b94d91c29a08ba128730395370e465c311275ac0ea8854b174a52b99ab82a756b30be3e9cf8e56bf2c1756ea79380ca27e8337e2c8e798fa2eb7524cac45e42d577d49c9f9fa845760195494c275901999e9e5f5daa49c78980ef0d4dc306638e1d4f45ce0c532a1ea81d350b187da909a4c8db36daec5a4309005c0281718c157b54da11b693de481a1762269c1209d670972df7611659a1099cf8afa2b9fd78bca05ec8956a206ce985507bb84e49015e596e06730dc4ea3bd9c9dffbea554e60c4cab904c879be039a4c42dd5d02dc19c9bc142fc9498389b273d2a51791092531ef50ab27223a0d523fb33ab4f8869c10fa538095f2e44fec65f5055a9e6a2bc7087fded8bca334a8a9bb07fe4b4019d65827aa6a9a2a442126ea4ab2a7135eca3292292a4695cb9079ff7c1ef3879015b65a06641c674ac8cea191e1ae499841d1733b29c28a7c5367effcb3b7f2ad3fcff991e7678d5a5a528b0f4e55ba524adf73c0948d431334890d2a7259bc33bc9f3202630d2d10ccf9a041c4e3d2a6138922ed8df3647763016ff5216c9609cbc7ca8abac0505dbb4cdc66d180b7fc4fff77b09d5d06d111ea03b19b95d75b6700c787670b58b92375b85d581f3ffda871a1691da2685e761343cee7c6fae0fb95d947a453c05f2a9980e1463a8ea68c5b290a08a8e9f0c99b78595c0a56b2ddd9d5e6bce45b081dc6496f3b440ad1600747caba09705fc66966a81eba5399e35de58f60243882d7c31d6e1afe9ba4f717a33d099af3466e53d4d3048db2d9b24495b39bc6886e0ce61615643c5dcdf7208f6eeb81a1b952170478ebe172f4a228aed2380f98cb3cd7355dd95f35f3f8d04c66055f9aa0a33ee10bce81438935933c3fcbe47c574d44a41a7ef24f763ed05c7cb49dbd8c2967e93cdb8f6fc2ff3e59e73074d057d8db173d049a12b0a260aa2be9c8eecf728a8c31f1fe94b80001c12e23806f52332979ed463f61c733d273014b33ddc12e62471eb93979fe05c1f469fc44bf92e1bde7138b58b10de506059f308180c487cce856759ab610a56edfb7a69ac9a0deec944b45c8bc2aee39d57b33e704aef77a494677a7ba91a0aa31360f90756c33f0db5ab82a152eb0b5a456250c1cb6c6f8d25b55f5ccbcd4a66f869981fe7bbcb260b691d264264777e71dbeedea9121927604cc19757a1e47a364c103e05db22fc92e7862bd7edb8d1f1946cfb17096165e6c2aeea17496f3976b97c46860855d7273ec6ba28ad7d1d3b7106313ab8aa382900e914407470839e3a8c86a677a2132e72989dc996da059a2ac67e37e05ccf9f9e9fbebbd65ca4c662dab4961b0314119d789b412fd054b9b34958dda9507066e9e593c2e6d90bb1c4762c1c604e6cf22a485d5434b8b6a538596cfdd11496ceb6fa151e36bfd2633afcb499e2432621bdea4ba8e5d71c9cc6e173608c6d7bf72b57a234b586fa9d629db062dea33ff1dad7cf2a4980dd37e654cd185f51f18a90ffd327bcfddeaa50108ae0dfe0b535e7d25e346d04f8f487ce3de48722f60f35c9726b12a498bcb36b14076fe37a6e9b165b995795ee9ef12a256bbf5762daf5cfcf508c859cd5d3abc9ee6177029d4928b8332c2892421608af1685e4eee143b277b804ba9e08c46aeda2803af561d6151a30201b21730aab3c566c2ae43f3ee6f299294909623dedd92e5442b57654d7f6c8cadf1760a607f0125b48f253cb59ee1ad0e9ae651b56da97b9f3dae7eab2421b345a15b187daed8a9b785d143c2fada05df74257485abbcfcbec1c465afc14e7ef2d889bbc26b06e1c4a7a8b6f62b07c92219c02882068ad72127f2159e051cef009bcfb4436450761473cf256dd6b704172063487caf4f423677d4a01fb986a89c2be7c8cb8d995efd4a3c2f3229e904a4817f002da260162064395788f0ddf770fd9efb1ff956ada89ac6586b0f507bae54f3bfbd38e6203a610b2f70e3cbb0e1cc29c366f9b48ad2d5de8863c81c3974b0da9600bc937b138aa0d2c211e99a4348ae8214256b18923d3aa60b86b64508e3f8cc047f02c2ac0fc2272c835f49e6dba29600791ff2f94db0e57218c0b81aae6ab7092836f08a1bb7157153ab919a5b809606be1a4f6284ec8a016a7bed496473391d9f4058c02f9dbcfa959898a935bb3aaef3b747684b73771f7733c23a0d8b487e3b3d885a6d2e21b6d1ca2dfb74a0213c8d1228c07bca4b01843e06dd8458b21887b2d23d814e1ef9c0192b9f9d036867eb68a63519aca2d05b77e213e36d22eba1aea9295f6f8948ff1a42777ce1fc106a7212bbe78aeb8874b2210cf4ec4f732bae3cb0851c82a41d8f27157d4d1e22976ca15ede52f6de2f439a8623efd0cf4d12d8b548f3e7c9d2572e7b5a304db2d5066e8e7356d443067ac59c95582c8f2bf8769b1edc16de5b1f138d705a3c61e87bc74b5fe54984fa3c22b6808587435e95600e92eed5a5307c5113d67bdfb87d0d3323aad4c0d5c30f30fc37d6f3751846a73705ca88a393c35898d49d2b6a22e408d3e3382302fb6b47dee998d4f85f433e5d0105f6a605212ed1b54610cb46fce6d964a8e52a76c9fb83db8d8a6f0f7b2cb66f9f46685f34872ecd4e1c2ae55598e4b00eb1b4a06357f27bbfd46b2826b1bae551422cda7f85a5faeffc850ac3cbc79a7003249c6eded5c5e8bde382f7de2c223e5b2b11c7910d27a8d903263644e03994b9fa035928f729131341fdf4a247a56b32beedf07467802d7bfb732312ce8692538dbfac39cd7e6ca4ecad121d27c1c7eecfdfd6c9181a2415cb7913d3d5ad4a80a82d1141bb6e5a7df279e38f6cd999bcc5bb355f8b2e0e6169609a7d6a75057a3cdd65a703662df078a23b73f152d5b6f76b002398f6d0bf852f9f99194e076e42925c6b29d52954c014da1e560a46a8935054855ba45b50c3a136d5370d58e6d2c940da8307982089c5861c4a8042794812ff3e90e3125d8a257df8bb122e50d2b825e08affcd83f2d39653504bd1173b6440032635b200d620d05a585bf0a9d31c735502c673849a3dbc4dbebb13d2910df31741d8e457594ffe1021b69c92a05406d93910310c3656cfc89a077e4337a336000c975eff9944fbebc2263032785e1c4c3cbf31d4b59676f823b96bce35cb716329893c6b43b766cb085989524ca395ea58b787c1126d22420950470d2711ecac9cd1f437ce232184af58445ccb6a440f5bab7e0e87d0e9a13aa1ae645d3b14c9d7eddd2bde3517ab25f8ac7ed7171990b6066b1d1b79011bea4cbd04fb4b206aa9ab754090bd9718cff3dd9b897931c3c5509c78af70fbc57d1cf6128dbc1b7a9d0f2e9a9107a4d35d8b159be67b765a1406a327660fc2a39d2e55b56d5db412bf03f10bab6f9717a79c6d8252b4a967f2a0cda2fd828afc58fb277851ac7c205784f5129cf6c7e3d213a607622f6f9bf4f7eafe3edd7b9192194fbcf0deb609cc391c2835bdd562bc5dc03a6491067bd844b9c375ad8aee26816df7dd3415738c31331fdf2a424accba9bafe450abd0a820d127b3c2e0bba187b26fe1600bb534a878039aa8175ae219ef3fb8fce26d855a7d7e60e02e78cd46d05e86218d30ed86539f09a0fc27e683a9ad04de853adaa13c5517e9537842b1c57ddaae3250883379f1f226160c7ed4250b8b67a836e27027698869e6cd0b046f2d556214154554156f91f29eb5900165eea41c8f806324c7844b1fac10d0dce3d159bcca2089ef4ef87a326a5718591b1380789550bdb78b003acb31c577dcca2d07fa81e1d1b2ffcee024c81cca950d519a353a68fe2963a2b4fd00c4747cd86c31a632d939c9cdd13b45e4e0f748dd021d4a8a729736d83ba9081990e359e22bb853864f2cac3165b1abdfa4ef12f6e52ee2ee4050183e620fcaf128cade5e12ba30583369022f20d5e8b65d53ed52cd905143a02a1ad8a4959956699de4bd5a8091dc27fcab34dc8dc5100c96d7de2743fb4ab23b34e5da042c6dc0ad5aa38c0c8ceea5f354e31a93ccc61abec34466bd1eb8791171a9235d936f638f300d13359f8418a041b016354b5819acbcf69b451c23250530e90ca682fb312e34f2950fc8cfd2779d75be529695185d4f9da3398fd7922bee987134e95182fcbb00b9e6d0f83fa3a52479f4fb264722489df4adadeba2938d49934caa571e7e75e8fd67f5b58263e0b9050398de24f51bb946847ce2e318afcf890ff49507f7d309fc6c915b34fa005e00c59eca1267c70212883e1e9da217d48afab736decc5081abd5098bd1d199d5ed978bcaaf8c368c4c1f1fadba2b4ced8aa419b6473e6be4c7ed3fc77868227a9c939faf159a1b230d715b9a421ee21436019459fde284320123b010e220598fd876cdc23971071f724ea12c6a55b952bde0994191ab0dd5dae2e7f5c987b233a59f7d79a4a87adaf41e10f82819bae1b57ac059f8338062b80443bdb962e93a5a85cdb8328fef56b39c03fd158845b45da24cf0284a95f757a0099c82594f56a21180bf4bdfbc5adc330b8b8b0086814dd2b4c8d0b00f84bdc68fe17f912a30fa683672558e9a0e02cb503e4bd28e00f4ed3162a697ae6f97bb4ad76d40bb4ae802764fa2f493825dbfe2fa5a64c34a6a5b75d0ca2f4e3e25a50cbb306167caead9a0d1b175e1f4bc42282baee9af25b11a032e99fef177cf98cb341c84e23edb2fe28c0f7894b3b48d554ea9a1db48eb995783278d2685823530734d96b48bf8208d87bc0787c95891feae2e51129e29c5be7450012023eeacf18ba28f3772ca256e8a42e5fdb149a55bb4d7aa60256a817baea4306d0e7ae4d49edddba65f595ad8e8304f3c974fe1aa7918726dc7b49c358993e1c602829d130ad1832ce03123ad6e6cd96f1fc43ba5115907bf492904dbdf67bde28075e3e3a9605aa62c1ae911b000ea8fbb7ee931b3bbbc25a3606c0802389165f43b92efb31237874361756dae7e534cbe6e1e9f92c66c2edb870ac0474872b91d43d5a86951fa54a7ac5bd29603372cfcd54a53cf64070d681b66e55662c4e07ea678ea3ba2901aa956a591d3eea464558835a8c365cba07d0710cd0360efc5a4380b9c703b28523ddb18c894e1c20ac695be0f519a6a05aa1238295d12400a58f057760ae6dacecf6880d9192f80a0851e3cdacc64cf94cab8859ea568fe456949e51fedf06ea65e84d7fa546583d7046eb3769166e9794184e59fe31b1fb732e2bd8c5f43244c257bf4244bac23cac64d058ccdfd29a669731599e4f45bb4a50dae225f2011d08e6eff276d5cc85908152ccaebae5400e07944d3ac51d110e3473ea4f903dcbcafba59f0c36bb1d69db1f119baeb7ece09a60619dd83a7a43b608acfdf8fd9b5ffc3e6a143e4c9f8412c5deea8a44afc4a7d77403161271eaeda1da875105c7c77533745cbea9e3f2d15ffec04f9120e94684c335f47039a1a0a13072155617fb37808000af4f33789a2b694afcf0dc201584f5ce9ec0bebc887f4d3aff95c96e2e5731e467a1e10cd2ee4587db5d60f6213af69b62a3955e277711d417f2ec5f389774f71d70107348b6cc33abfe76ac09e131cfb19d57fc823b7a0efcb2405b237d67ae8463889ca0590848c1bcbffe6632c1d040a7d10ce2ca0882c40a031870f5328ef1c3ecd93c09482c5e30f56ec97e78862829eff2ce758f38e1f3fae94d25411557a353f91088a91a1be384029b11e6864e9bbcac208b266d2fd5acd82ab4e6f9a6097b0b89ab6d718111d0fccd28d2d88ccff29bcef407c6766915b3c28d09c4df0e0acb9728ffa91ff13a8b7dcb2999eba6001eb054427a80ed016493727c11caf9192dfaf24c6ed2144ca801ba73b5fe755224230cdb6bfd3e8446104c9ea4e10352d9769f6eb834cad11afedc17c560e1f4d48fae61cc13e1283505e9c327b89521a0788bc1ca66b8d1efa812d1753caa51d7cac95cd1f2296660672f693f32f17f9da2b5c9e922cab34ff401edcf47790e5d34541ac27bd59fe2fa933a9ae052f66f053c64114cbe2c45f7022ed3c593bf38dbc2a360374fb8b0b4f9d1f43f0bd7f3c27c1dfba2109a0fcd83f86e6182bde69d690e4de9bbd5eba4e4cbb057f370bec052dd5619ebead10835ba0b855296ead272304bb881af255d1e87ed1a2601d1a30e5ac393c91c651a683ac1bd30fa41505f3a3067cd9e92bc0d60c632a71e24eaa435ffaded7e0d2ac34f995b32386326b0cfe9e448a4fe19571b3528ad202a4f8a6be5dbd5b382f326e0cedacc1226c36e004968ac5da973ca13fe89522b871ad4e77d61919f9a5b6808e81e82f8f0bdf883265f0a3f3c610c46c19203a9ce9ee95caf10ea0d5c0e427101954647149f9f85c370d68c33e9680f5ade3a9d955ab51ba3b426802e7cec57c5d70d23d975de51105846c1d4c3d14228b23ab4715876b1ba43cae8501313fe30eb2af7689bd942f139b642e5d2f3b6a20b3dd2f5ad8113442e3a61bda3dd9c53b7f59965e54e66c2c1c27d7959b1aa1d09f01ca94cc6472ed0f4b3767a2d539501dbd48a94857b119605d70edd03bacfd86d0ca7b0500af931246b7f651a412ac976daee7fabcb0b28e3e712abe77db90b58363628295f3fd9479f35571b4f537490dc74e6cd0918bfe5d6bbb2463e04d8c52d7668e719f40c06247846d488121e40d681e66322523df554906a9f1f8f7b769e0d2255c71b0ca36c3a7b229785309951b34fc8de46acc8a822235b88a113b728f6e01641508e2c6886480c600da7837f011b3b53483a35156f278dff6773ea5ea8d589219b9f762851544927ebdac1e2988e668e96f3fdf56017a3f02b8c505611676f7773c87c64acf33686c3025180a7f8c4680637eec373ffdd7934f8e926409126a82d550698fd0c173c7273a6cb754202121d0bc59264cc4cbdf011701dfff2dbb7eb28b7d3e08c77003376e02c4a9baaee4575495343d639921cb99bb57ba63c49221f3898eb6c6f3f6a981f0e006c9dabc93e521d260ed5a67c5e318873f2e8b320f03df052604eb3b71c4ef39ca28e8fbf0e2cccd49ac92018cc07f05cc8bf39f36a16dbe6e1897351ab34031de65563ee616d4ee617feb1044a869a909c9ca68947fd31b7d06a7567a1bc04a4a5d64b8aa39d0789905ce1fab953be129bde54f509617795d3adce31eccfb8c4c425421976a37ee511e92dd66c8c77e3ef0f142dc2d35e33a367b00a5e4b24437c78a7222016b35bff2e7d3233086c71ccbf803a0ac4bbf673879c1c01aa5c33b96d3c405baccafdac326deedbaefa99f3e21bb175d7a8cf405fc6689248859f1bf55ddff1c50007c61eeebadbcf943adbbdbb2533e256e86557bd44c785eb3ae407a2c5f98843b201f5a7ba95e4549e365dfe302fde80546c288b45b9a1d30a93dfb3ae80fd3c2a02151665f82de17597fa67f4b6ec7bd8b1cb1ab6f64adc6443c1a17beb455694537cc6c37d30cb7034980c7ec058ff1ef743a085b95cfe981d2f6e14b06a4dacbde4088ae93b5e4adb9c20a4f75d3248a26957453f2c59dd9d4afddb6dfdbaaa2f66424114f404a7b60020536449bf97fad0b0dbb3d49e4ebd3941415d273f592ecc1a118f37794573897612a483347910c722ce90e68d405aec4e693f14fc32d0db0374c82d3a9428d7e4ac5857ffb07dcd55d8d2e60bccf299beee2949bccd75d0431e5811e56b067d574c11843e6c2a6f6a541e6bf1886e6384402d63fcbf3c3ad32f18a3f80204c8adf4defc335754c88f2fdf694d33e6bfb08e5e0772a0a10f431973f0be088a1015dc2f4df5fd322016b2559bfbf2cf059b66c83d8d378ab944de20b16d9d2955513928bbb7b99ae3711eca829f9cb0a201a70a9447aa53d64fe9c85dc83be3316e750bce4fbf9148b3b48b8eb667e2eceb0d312920915a79bd915f070e8b039e7f77c5fa5ca3f26e6f25e8fc5e903bc9957fad6967bb81d2d9d8fd407dc2bed63d3985760d21f3c1dad7dcab9bae79c9cd426d77ea29ad19375e04744a33a68424494c5e3e0c945f78deee322f415be90cd543e7fa95ed6233da33f1df64d26272fcad16b108ac65e9701c0dc1d9a69f97bda054ce2abca02eececc58a7c4643720f4a193a220929343bf7e7415e803372cea2308b4575d060afbfb8bb438210c6067a6d81f838606a31af238b58a5e3de77329efebdb31c8ce695871e3168e5ee5d3f92d8c68cb8a0f4c1e975f8655900d064bbecc1a824622eb3b58b68f0c3240c82b5856614af441539141b82c9deb925a5509c15625b42244bdccf6aacc48c148992aa2e11625adb19b5d77c4071050c3a9b4b02f3caa26b1d83373d951b0461dcffe59327a7e574332f9528a24b369a53a60c046c1af21e81933309bdb3629283534f81c36a98a10e56d1a1cf878cebca64d503a6bed081cf4706c9cf0a8c721136bab64edc7d8d68407eb01a85e29b84aa18bd8121ac50860edffb6c9d55595f11a06884b64e132a68868bbc7f5cc63681fd9ad7788a0e24e0b2597b58e4c4552226ea1ffda22041b1aff340dc3db522f6945abf500f1ac0b214542277256f4951fd400e3e190b44753ee0d406067e8cdfb223b3cefaae63c1927f1e24f58272ff905bc6604ff23393c1272356abe4c813c98f09bcc3d0e182bf9d4221b49cb27ad7b1dbba477f212b69a3d1a46f596fead4f5cb924bfde1873b68709dfa96bd09d24b41da4d6bd4813a392eaa657690279c8896519056493b38d110d370acc0d7e6811535df7f15bd01f2ffe86329d631d92265c8b357d451047ed03ca1ef78f842eaf5833c6ba680eeeabdae4bbe15faa1ce34d5057f86f81e787fbc74a9f800d09a9718235ed07fcc0656c32452d74e2147e35380a5972f516fab33cf46c12aac9553f6fa09a48a99dc3b5af63282707db710391cb3f6df90740250cce94fd72dac22e88cbabba2431a9c18df36c6a03a246b75d6b91ae1ba76becd60ef1d4f5805d884b6b3cf69ee87d44529e4df6a695ea6b7a573d29fea61a8945751082ff0c1495b736104c7e1181e12ab593c5b3904ad8a77f702cc333e3929a28137caac61ae36828dca6376a449b49c88268362d6bf71b4906df8d2ad45e9c914a9fafa583fb5df649807284cc8ab9798a7522f5f7dd58c87149c29e93d2a26b7be729cf9e4e7b6579f8093eeda577aea062709441db8bb2f3160987d7181bbb70e7f601f31a709a55b9c9021a9c56e167f8bc69c4c006e27ad986b4755e9f8a499ab7cf27c7161941dc76e99e437a5c0c2584f9be6e394b1fe996f94171bcbc7c3714182f33f403200073b19c527e997c59419a101c14da686eb2da3d2974a1f5ffe65736728f3415e617fc01412e2f9e4d8af1a237a7e2d048dc03d4e4364b7d902793b938bcaef26e39fde951b5068ecacf55a1172baa06c5a1d77786e0c17597016ee0f5ad52efe9401f070483767d6222459c9683965c956208f1501fd1ddc65b517ab1d4cc5aeac17709a8a683ed96a0c2aecb6d832928fb6c6eda823806104bc7b57e85718130e148adf6add20611af054905467bd7839e2d7e2e5ba4d725346c8cbc0b886d53ce0bb2cbb8122147a2bfe192e0516e2ee36216fa1938815ca0d6fbb6365c6322cb23e3ccc7380fc901840459f0e6ac88ed83dbd86d41240ad89f1111f00b481ca5bc1f37679bfccf18c164ac6b698f25dfa74f7cd17ad011ce76bcfda18da7f74d994280612b0efaf50309099860ab5a305fb753ac17a0f38c0e1c1f4614e812dd6516eaaa79314c761b2ab3646cc3749d391eee383b25b94940a7b513a27e943c2fa50226dd1490fb58b0613be6e49c9b171b0e612a575390aae416bb04b1cf603515b96b7dfff36ce7a9ca75cee665bf6a77ca635239863ad264c48d1a1012d5dfeae589a34f07d38e3cae5c7f1fe5f5f9bf47fd7b3914d61b95acf8e73ec18c601b845ece24be91899b42461ae1d77e22f323e5f3aa3ba765e9906652517eaa4437a2c19a2995abe3d275fe16d5e2fd699a3a17a15b552fb944c62e9440e3b27ee96f4a12013d5ed30c877bee33dcbbd8140e5588f8fd72f2135f1d5af604257a5523590bfd18f76af27502e71823a51aed2060a519d79014d97430df0fdbc61e397da2101aea80a2e0058aca882b4f0b921642617eec5e45f2d22b209b3d5d0091afe6e76e7f6e17b149d091657743950b672adc434ccf05c4ef11f0afcb9926945f5c502e312398af6bb33d24a6e1760d3750162026af022ffe0c4d2d7047e6ec170361112944c65f6e2a4614fc46cfff7fc98e6a72d53ec47f75ca623bd355936bd99ba807d1053ee1f347917e957fb0bf0790555166e953f4e5c9e8f0d3f232227b684d5c00523c7561f36054f25fcd9d87f1b46cc9feca9e88db02fe529c9598ce73243dbf53fbe06571c7c47f0277f85c922266bfc852bd41af6df595e6f008e8e9d13617ac21ba8cdf7c2a482edeb987786e63b900867022dd671e391334b2fa82960de60baa24f41d1a347e8eeea51a5637f929926e0c5092ce239369da722f7b7ef2f97fdc624c518f5cb07be19eb556bad87b3f7f488fbf9dc7f7c423a2ef4cc7b931a3655ad529d656565c304f8e1e18d864acc5ffbae00cc065ddc3dcbd8d08484e06defb7c1d1edac8163057ce415c4e2e7a5f02f8210c6735a97273cf8550e7c6dc0a749996f9b710cd68b18bfed8eb55933aae3d0b4204eb54aead7d7d72c2bfeee0c13a2b8a175c0221326fd132dec8cb0e35a848e813ca89be74f0239a210be3485fa7db4d5beda2c45706a87f1d0e59c4e5b2754bf658e6e7c77f41c0371af2cd30a3fcf8b505ee435fb1e6f0be35e2f961f492eae365299af1842b9c2ded998f91be6434038994d31ddbb2dd68813afb3810cea042099d3ef1b45de8093d2fe99ef5d64da390f14079c638835e82e699ac4ce2c6fb737776ac6e1c406084e24294de56fb2fbd8b06c58ef265d348732738aa8b00a4520e2aac39d2b8e3aa303a155e0727ac3f78a27f82e4185d44aa7f6a982b06a357968af7642b2999c75335c14893cd336bcfd8b84f7e25efe46b8b4b394ab4c7b4a783e3b93089688cc981c9274adaa1e9308514aeea7a720a75bc010eb6e1f859702f830194bbad372e47d0ec25ba2e49288016f45a748b8a3e395be84f48e8e19bbbd27cca15b69262fe7e292b763c858d1153b86910137b65db095611917812860519f1bda2579e9c05c104334f429266825e7e169a91b1f8e78a0e81f55f6884b81b66337e3ce5d066394fbaea8dbbc42b52515f9be16f0fdb94dc799d9cdeabb8a459505b00e4f283146f7dcef2eba78b66073d3f937fa0adcff2552a5732424cd9762d561fa1eb9e683b329221ae0c9e096560891ebf2242b756e51ee8fe56e2ba607316bddd4d3ad292f80140065990bed1a5fd7492b969732b19a4704910e36c1d2fd72c155fba0808788409c88435180d90b326aa71754381e2a595c07f419d72b4972f880ec7b6767d7d8dc1b89a034e68ddc35809baad167c4e81546d06f7383bc02f9d0c219c85037fa6dbf5916451c4e223cd80c542f587f66229ba86ad39313d901a2ac034fc5fe137fe5d19d806e51f2983a094b60cfca8e295a4a657a16c3378aaf5fc6a792c0347fa199db6b4e83ce0b57fbf07649a0483d57867b58fcd000b99b85b16d1719da16574a20523215e790184194071221c28f44731bfa2ad193cf540b0f153cdb82726b08c8306519f6bfcaf5de566071a7ce91f858ae200e705060fd90aac929243fa83b379cf25b2ab1974a1ab08cc1f9fd7df32d6bac337a38c706bb080a19edd53067ced39c841892266be80902c750d35baeb360edf3c910ac1b73ea050b221c2f35ded4d140e59768846737f58f16312a29e466f132e3c8c6136f4dc45e66a893fdc8fa389e9f5051e6d6e76c50a0742783ec9b5d2feffb0ba9508bda9e9729d56532f7a29b7fbb7b27f00fcea0c28ad4ac9816a66989ef07b322820e90fa84982c4163a0073bf1c7b463e47ea5eb98b10f16de27332799156f466565efe234d8626e74c310fa1038725a6b1063e6678a7de9bbafd7c58f083b8f38d05a6189bf73eea63d15b55ba1e62a941e8576aea833a077e22dfed13c5b96b3b7cbd38aba1aab43168712502655277559dfe63a875a3b1bd1732587c02caa4a3671229d79627463670caca9f85aed8acd809bae611cd036623b4bd4980d9623a3dffc220b29db91fb8c96f6778c1b7c296893b06142209c8c6d6209ebc5a2206fe025c2049a87545e5404c7b27859c164ce3e9386842c3777f7b8890b5d8dc47876afb2bf261481ac76513a17384f15f410755d622ef351d576aa342899cc1f9e4b19923a764d64c25d9c91490824527ec39afeb2be8b0f2077134bcf2c7d6886e498fe35d8f3282d608d5c5a0ffa96fff50e857ed8e1d704aaad6550b236aa6344404db4968598872ea775d02d31dce552f8270d24b9fa6f24934d1229c1a87e00f796d2d276d5a8b894726ce8a33be276a10830cd55dd805cb27e0ac96a7b3d1ae01abe4f415b7d55ebf9e5d235901b82b1e91e19a47e03e71558573187e1cfd521e8199108fedeeb74a1d424f670b4fea635fb7f1adbc988f674174855de4facb3bb1ad5bfaeac333750a87985dc0bcbc393358b149fb7db8fe2045695cbd0bb1474356021f9c1b3d24a344bbca5cf6f4919f89daf235e3414c1bdd72affd5d0c29d0ad39652e6b24fd1325d30bc53c35f3ccf9a7ae27433434dc0d216fd299e3aa08c2f5c25ee0704a4ebb7aaf359168b6d19770e589d91fca1869b42514d2df9f04ca9ee107a20cb3ad4c090dae05ca33b109fcb7e06ab3d63ed3663f72c4dc16856903b421375b28f3387550dc8205ea9ead5883e66f4849069b6aa8aa2962fce52687c94b9bba8b7a4fa3c70b588e2cf931a290bc31f1d5451aa2613fd23cd49cffe8f97512a3ac73023c6de434930976c90054112e447211d9e772356d69c268aeabc5d19b954c9b3570e60e3068c2785c31cb4928f8aa949dfaf47fc322528c9d16b68874040ac4b4aa07c982474f8c06684593b1d5453c888482bc2a8e7ed3522cb3fcd2e9f1cd1bf4a47cfe6c854ccc8faba95be2d17ee78d7609dfad30b05b1798db165456ce0c4cd9752c4fffda864e163e11726598b34dc2c0fe7a6ccfdf82ccaa" - } + "remotePerCommitmentSecrets": "" }, "localShutdown": { "channelId": "2f7c825b61cbbf0e685aef20f8923a8cd28943346e59301b629cc89b4e27cdbd", diff --git a/modules/core/src/commonTest/resources/nonreg/v3/WaitForFundingConfirmed_ff74dd33/data.json b/modules/core/src/commonTest/resources/nonreg/v3/WaitForFundingConfirmed_ff74dd33/data.json index 931e7fdc6..9d9b40c4e 100644 --- a/modules/core/src/commonTest/resources/nonreg/v3/WaitForFundingConfirmed_ff74dd33/data.json +++ b/modules/core/src/commonTest/resources/nonreg/v3/WaitForFundingConfirmed_ff74dd33/data.json @@ -169,10 +169,7 @@ "left": null, "right": "03bd8a174751163f38af0abc6c513d98f05d66080e67061cadf5e2b11b665579d9" }, - "remotePerCommitmentSecrets": "", - "remoteChannelData": { - "data": "2f7edc2aaf19044090c45b2fff7f644ccc3a8e46dfa833ffbbbec0053851644d3dc2178a3b9f9f1c97748d2819eabb3fc4bb1247292e313b0110f410ff68ed4ddc9a72b18eceed357436dff3a175cb7a5382fec74a47854cdde1f40413737b3bfd8a30ddf78e762b86622ee24d71e559b1db503b9c45225c787dcaebc78e0d0a203ed894c9d09211ee782603d1cb60a2b7a1d189028373676e687cf152472742defc9983ee1062d93724018d7b57ce2a0c87a8719a9c26d64d7b89255fd4e09c564b209dbf4234bd94fdee819216ce2688fb28c177b643b1ed1592a91612b03b75fc7628444f8f4b167e0621008feee70afe1424eff8f6fab0229efc4b2222b635d695d5b907ab1d775be189433dbd58a63deadb2efade687a06b6167c32aebe41b8166ec32ec8969f3d5b5bc560e5fbd9c4dac4453397373c1144dc51f8382a785bd71efe8e89fd727f7b8a0272623638c72e654e9c6a4327da3c9dfda6d54ffe3dd688efeaf49b38d0db45bb2104b27ae8fc150605856eb2fce77a17e55a302f2aca121b69380b7deef05d152fab0e846260a6c8acb7e296603b22cb912e10722b0e119802f220d900f26885f51fc244c1c2d699f18b8037c023ca95b31e12503040d15f889c0633cd501d527f28ba1c5a03738ab02e2dc25f48942e96006b8f3468225692d9726417453afee08a436de7470810a839025847a9d634d20adeeb444dbf410a451fad2fea468a585fe7c66f79da1371f1a29a0fd9da0efa2252f5e6befe9e6a9005fe04f03a05eb5fc083b213dbe249aafdd98f09b0ca71417749a373d07187a33d92530123ea05a459455873fdf0dc1179f8989cb5d85402755078705e7810a08a3c94332a9e9c0234f5a157164cf56642195c3255cf671d2ca12485b5828f4f7d31d2f23389565b40b8db54bec68c42a2d67a8d942f49ad563ec8ca6bd379920acfb21cd385f3589f8c0b2fd2b8d59d38cb026916d19a1302573abb7a1e5bb516445ebf75f5ed0a0d2d405189723d0c378082820e780929427604a1ee362e4734de3a056ee8b10a1bd2ee88b265256011f2a827b262be69396673060043d2551d8c7c4d8e4193f64373e4884c6ee221cbbca1a020d700468b579d416d931b504a6645e0368efea75a6e791f7e63ee86a69505fe829dcea4f4be3a50fb7ad812c62e0bf68e4233587a7bee34a354e9582b9b985d8dbda8eae1be3e1b2e35f31cdb8306d627e599490486f295b0e216377fd82c4500b8e2885385de2f021222a72d8481361c7fba8364d0b7bc62ea8d46748bf13ebbd91a2db97d7e17aaa621edb3b7a715c9d62c6a8a3becd1d938065883752a504da9c50b7363a415e2c0c7e925a57070113f626cac667dea80e83060cb0b9db82eaa77ef9a12759bae777dc3de68ee725719d105af1adf4f93092f96bbd12a51aa7b7ccc44209fe33e1dcc90f58e2fcd6e2ec561d03522a9e835f1780d92e7e93bc557ab138d8abe679842203e65255130ab4db1556e35ced5b2f2b99574538b54c516f0dc42a73207de9213ca99ef633d925405f883d32e05f910b972f79738c4897fd2154ce20d2d1f0fe03fbb247b30e1c3a8cb1da396fda7699cab8472e2f296cbf30a6d1e87855814fa3df7ba4dec87b8d7f5a1b24302a47c7f33460835c912379169e49353159619b5f09cbe050e08334d61bce620e83e4cf496c4953cc86ef8e84f114b62c579ec51aa6305cb056e69b6230ce109ec13b5529b72e9eac965fd7c4a4d3e4be02e21074e59b6c07b3b3c65a3e2f1e3458da0a0cbef6b69ae54464ba06e675f5718e5b28e4e1b2542f87d8d970cf04cd200a36f08cbc4b17a99d41aadd58e562d591077e603b1bc6433551bcd5b2a87e9454aa191d102412529037aceb1ab86819c4766c1b56dc6953264f2d6caa016f1a2d582363fa4c7c49e742cceb9b3a4fc38dadc2263c296c886402e05102b42cc316aff8cb73e8fd4ed72df93789730664a62ceb3ed950ae4a2a6caac8b45dbe055fc764722f80bc3bd8494cde1367b34c1aef3765a53c70cab60287fc2f2ed1253758dd5b30993ad968dd87641a269ce72a99e9d19378417cd5522e207bdde7948bfc70507d6ad14c3f25d3723ac3203e3dff6fd6e970f4e450daf267e4fa8f1e2decf36efaab9f9a6d4e0874f2400eba70d728ccda9948d8fc6f9ea09323322c3365e31f494fb8a953273acc78b5021633e913ae8a0a028e33abe87eada41847a2e4bd0b8e28e19f6cddef7adb16dd72b0f51e7a21e699d880e97c96c4a13f568d1fc4537af36a7fd04e36c084bfa7fcfcd85b1507d26315d795385cc7c9ead66349bc264c691442eab3d0dda64cec7684663a1d81fe86753fc2b40f9a17759c4992a51631e7a6e755b324d5f6b9ffd09e121e68522b782b485c85da6edb92dbb06e2ca35edd208c9245bea83b1586154a21939ab9c4f4e9a51a39ce34d1684e929467cb3461784591ed50a309dba95ac3d2d6febfb62b0ec7ed327d550f9522c2a80684b002b75d1c3e738c1f4a0e04f528f08e69336c676eec9581c8c218212bd64a6eb8c88f12bb01bf18b81066aabf6a66eb69ffe01187163ecaa1a73fe363341b977e24c4f696c7d525c1f4509655cad80a1f9edf08534e7109081eec230356023bd5b8f0576d563e49a91b63605ab84ab9e0c53232a50039b0aac128ddee708c770fe14adc52d009507f638b294d1d4564386784da0296aaf69487d34d969a4968060394be2faa0ac7e6e07183693ae3809b0822c6c6f26b5cdc3333a65cef83fba26b4cc9b44b11ed9b0b48e3b6b401c83772cb2607872584c3aa0047cd97c224a2a52b8115c6a40dd943eb4eb8407d0bb66b665c514923da85252649a075180dcad10e8dacac2710ee8760cae7185c1cebdedd278fab47a11fd32817a5e67841cd8a4761d5ff290862dafa987b7044171a53d4d881aa49717186ddd6834363d3e99df011a28af4d7513d038076c7c88ed1419eaccce33cc7ff76af9504e52553ac606e395ef337b09b37f8cab53353af8e813204adeb34f98361c579e7ddedd835be38859b4a9f128938c31365e9711f4b1bc7263692bf3b69e57668db47d8a925fb473a929c8ba3c6168944cef96bacd91ab699c85d9c09e5b9342d69d79cfe3ee91c21a07758add7e1fe26ad3a82ad2937919b5b678357208a3200ce5f76a4d2780a0c7478cb21041cf0d38db5542904a05c1b5794cec0f66a0775d9f396cd10fd362500cedaeadee2326566fc3a6525ea2edd6b4d876e206bbfa06e46ad2e648faa9dc7ae726c5d9854646ca956da0a33008dd2e5d9310a3834d42234745ecb5fec6255884cfaebb79d096a8a26fff606b2c6636b942ee45f7045738de3f3b0a5f5b509ebd40752c62c99dbeec314c7f06fc278b97245e96bb8eed207220afb4abc6e3e4c81441a14955c925d044613fab63e64d63dd0ce9864ffbf1a5529837445557b261877161b32b92e62c8692b2f666bfbb2b1b475fcc2fcf5f66e5b282023a313d6cb7ffd24639df67ba083db7508064a74970959801de5f653a447c95cd0bdafc2f8224ab4278178028c2275709939208d21170716ee5e3d42e9965fc2e584486b1cb5fbabd2cb23de0546ab8d3817b62f4f0043a7903170424cd0da5ac37dbea30e4457b66e8641b1a5297b00f2c93195219ccfa872db4aa17d628b889c15c746a4d95a8e779c504519b34ac3edc7c9b08dd140de7f818c7dc8de4963f6514fd6317f678bbe058622104fca2232ae32a9fab82106d080daa8e7c040a2d958686b34923ee05d75f684bec64b829c1072c04057bc3992b44cf631ddbd5897c8902cf54d094a8986db85ed67ac989ac0509af123c95a9200a3418ae5200643d37b74675ea17b8dd9a334450dfa4f1d50c294bc1bab463c2acaaadbebcc36ba4510788fa2c2e5b7f7b02f3b7df3126e7f8100d9a913040bcb2b738de6687d46cb4df92f4c952b78c65b23d9aaeead083654141c1bea00e9de6b4033cf33b8ea5506abef3197b2aa687b436998cd0f10509638385b204ea0b14c9d76fc4ea64e50b261b3255364ef09cfaa52698f275c248b1dd4bc38096db272b28afc8fe5dbe96f683c75d594a576341b6baf7d91fe610dff3fe1f10481fa46fe1ab60405ce8e2b3195a3f8f3584a5719e9e837289d8aad48a9486dfb23c8704a1ebba550432d0193a9eaa7e47f520a5859bd9e6c590d36147a2a96658338c96243b535bff2a61bb20a0ef932ffe12866c1d82dd37f3526622b2d908de6682aa5aa133757168a80a589e68689f7e2db0c4957064a148d87911b4fd0c7a53ee3cc85f98b09c82430108e03a984149421f281b15ccbb8b03b38fdd808e17b3d87ac04f84be7b4d349d5fef01ce3618ce60a465589349d0f3a6a65a6060a72bcf4e238d058ef66e37f007efb74114fadb75b91ab05c255e31bed4db4eca0493ac05e30ccd97fb2251bba8f75782115069f032961936de1f8b8b61784218756775e3b7a58c2c2b1d49eaf643b4b8a532dc14b7b17073ffdf8d7a68b7b52c1dd01951363a8dd25158ca49a489abc196b41323e8466c979c933478bca5e8ef0c7bbdfb00914bdfc2e508f92e0c3ad08b0d4c39b242c222a63261bf9ee07c04587eb7488e2092de8a8e400b2e5333c971f6fdc371c7984f2bd09e2d1ebf044dfbad9024f36801494d51819f79a851328f3bd8a18579dd0a1d58875716a3390fba8c0b02af6847676c5467337331365c477dde935216a8ad6cdf4bca2408035fab3a2db43ed13d3c10149369283ad1c6cf80cbb569cbe8c427ce5aaed912a6a21a0d51caf81888a063be329cb74a40ac0933530be2e048de543c8e28f5b85d98c1c803cd5ffc53a15980df9307ed250d5f6839eec69a914a557b229a3f0c5d1917c906103685fcb2de8e0782d67fbb5a9fc3a9e99495c5fa588f93e5b54e7a5ded9f55b1670031d095a0bd0fee384a7f5d539c3aeb6a3b2fcb59dff0abfc0da0afdf36345f82a7d6bd629274d9991ed0291b60ce09eae8603a72ff6204eb190ba10790b05be027417606751c57a68de165b899180dc6d1359451c2eebf9d212c706878f75dda39e6b8f96347ac5cd36b3e2fad6300d29b5b65b60e47d51b96bc2facbbac95a6bc95bff3e5747f91f8eb549de44e9db4af4ca210102fbab9fa341b2d8ad56ba1650e4d016c56767cad66718fc62cce46670d80a8c25a5d544a21a931bf136d47" - } + "remotePerCommitmentSecrets": "" }, "fundingTx": "020000000100000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0140420f00000000002200204ba42b50e089764e60e9e0c76c57e41d252d6beb976332f14a7b255bbb5322b800000000", "waitingSinceBlock": 400000,