private CommitmentTransactionParameters CreateRemoteCommitmentTxParameters(OpenChannelMessage openMessage, AcceptChannelMessage acceptMessage) { PublicKeyDerivation publicKeyDerivation = new PublicKeyDerivation(acceptMessage.FirstPerCommitmentPoint); RevocationPublicKeyDerivation revocationPublicKeyDerivation = new RevocationPublicKeyDerivation(acceptMessage.FirstPerCommitmentPoint); PublicKeyDerivation remotePublicKeyDerivation = new PublicKeyDerivation(openMessage.FirstPerCommitmentPoint); CommitmentTransactionParameters parameters = new CommitmentTransactionParameters { TransactionNumber = 0, HtlcBasepoint = acceptMessage.HtlcBasepoint, HtlcPublicKey = remotePublicKeyDerivation.Derive(acceptMessage.HtlcBasepoint), PaymentBasepoint = acceptMessage.PaymentBasepoint, PaymentPublicKey = remotePublicKeyDerivation.Derive(acceptMessage.PaymentBasepoint), DelayedPaymentBasepoint = acceptMessage.DelayedPaymentBasepoint, DelayedPaymentPublicKey = publicKeyDerivation.Derive(acceptMessage.DelayedPaymentBasepoint), RevocationBasepoint = acceptMessage.RevocationBasepoint, RevocationPublicKey = revocationPublicKeyDerivation.DerivePublicKey(openMessage.RevocationBasepoint), PerCommitmentKey = acceptMessage.FirstPerCommitmentPoint, FundingKey = acceptMessage.FundingPubKey, ToRemoteMsat = openMessage.FundingSatoshis * 1000 - openMessage.PushMSat, ToLocalMsat = openMessage.PushMSat }; return(parameters); }
public CommitmentTransactionBuilder(LocalChannel channel, bool buildLocal, NetworkParameters networkParameters) { Network = networkParameters.Network; Channel = channel; if (buildLocal) { IsFunder = channel.IsFunder; ChannelParameters = channel.LocalChannelParameters; CommitmentTxParams = channel.LocalCommitmentTxParameters; RemoteCommitmentTxParams = channel.RemoteCommitmentTxParameters; } else { IsFunder = !channel.IsFunder; ChannelParameters = channel.RemoteChannelParameters; CommitmentTxParams = channel.RemoteCommitmentTxParameters; RemoteCommitmentTxParams = channel.LocalCommitmentTxParameters; } }