Esempio n. 1
0
        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;
            }
        }