public void HandleRemoteFundingLockedNormalOperationTest() { var mocks = new ChannelEstablishmentMocks(); var handler = new FundingMessageLockedHandler(mocks.ChannelLoggingService.Object, mocks.CommTxService.Object, mocks.ChannelService.Object); var nextCommPoint = new ECKeyPair("DD06232AE9A50384A72D85CED6351DCB35C798231D4985615C77D6847F83FC65", true); var channel = mocks.CreateChannelMock(); channel.RemoteCommitmentTxParameters = new CommitmentTransactionParameters(); channel.State = LocalChannelState.FundingLocked; channel.ChannelId = "b34fafd163cf765b0997187c20c8fe52dde14d8edd0b4406428e882930bb0723"; mocks.CommTxService.Setup(c => c.GetNextLocalPerCommitmentPoint(channel)).Returns(nextCommPoint); var fundingLockedMessage = new FundingLockedMessage() { ChannelId = channel.ChannelId.HexToByteArray(), NextPerCommitmentPoint = nextCommPoint }; handler.HandleRemoteFundingLocked(mocks.Peer.Object, fundingLockedMessage, channel); Assert.Equal(nextCommPoint, channel.RemoteCommitmentTxParameters.NextPerCommitmentPoint); Assert.Equal(LocalChannelState.NormalOperation, channel.State); }
public void HandleRemoteFundingLockedResendTest() { var mocks = new ChannelEstablishmentMocks(); var handler = new FundingMessageLockedHandler(mocks.ChannelLoggingService.Object, mocks.CommTxService.Object, mocks.ChannelService.Object); var nextCommPoint = new ECKeyPair("DD06232AE9A50384A72D85CED6351DCB35C798231D4985615C77D6847F83FC65", true); var channel = mocks.CreateChannelMock(); channel.RemoteCommitmentTxParameters = new CommitmentTransactionParameters(); channel.State = LocalChannelState.NormalOperation; channel.ChannelId = "b34fafd163cf765b0997187c20c8fe52dde14d8edd0b4406428e882930bb0723"; mocks.CommTxService.Setup(c => c.GetNextLocalPerCommitmentPoint(channel)).Returns(nextCommPoint); var fundingLockedMessage = new FundingLockedMessage() { ChannelId = channel.ChannelId.HexToByteArray(), NextPerCommitmentPoint = nextCommPoint }; mocks.SetupMocks(); handler.HandleRemoteFundingLocked(mocks.Peer.Object, fundingLockedMessage, channel); mocks.MessagingClient.Verify(f => f.Send(It.Is <FundingLockedMessage>((msg) => msg.NextPerCommitmentPoint == nextCommPoint && msg.ChannelId.ToHex() == channel.ChannelId)), Times.Once); }
private void SendFundingLocked(IPeer peer, LocalChannel channel) { FundingLockedMessage message = new FundingLockedMessage(); message.ChannelId = channel.ChannelId.HexToByteArray(); message.NextPerCommitmentPoint = _commitmentService.GetNextLocalPerCommitmentPoint(channel); peer.Messaging.Send(message); }
public void HandleRemoteFundingLocked(IPeer peer, FundingLockedMessage message, LocalChannel channel) { if (channel.State == LocalChannelState.NormalOperation && channel.RemoteCommitmentTxParameters.TransactionNumber == 0) { _channelLoggingService.LogInfo(channel, $"Remote sent us a {nameof(FundingLockedMessage)} but we are already in Normal Operation state. " + "We will answer with a funding locked message."); SendFundingLocked(peer, channel); return; } if (channel.State != LocalChannelState.FundingSigned && channel.State != LocalChannelState.FundingLocked) { _channelLoggingService.LogWarning(channel, $"Remote sent us a {nameof(FundingLockedMessage)}, but the current state is {channel.State}"); return; } channel.State = channel.State == LocalChannelState.FundingLocked ? LocalChannelState.NormalOperation : LocalChannelState.FundingLocked; channel.RemoteCommitmentTxParameters.NextPerCommitmentPoint = message.NextPerCommitmentPoint; }
public void Handle(FundingLockedMessage message, LocalChannel channel) { channel.State = channel.State == LocalChannelState.FundingLocked ? LocalChannelState.NormalOperation : LocalChannelState.FundingLocked; channel.RemoteCommitmentTxParameters.NextPerCommitmentPoint = message.NextPerCommitmentPoint; }