Table of Contents

Class MessageFactory

Namespace
NLightning.Application.Protocol.Factories
Assembly
NLightning.Application.dll

Factory for creating messages.

public class MessageFactory : IMessageFactory
Inheritance
MessageFactory
Implements
Inherited Members

Constructors

MessageFactory(IOptions<NodeOptions>)

public MessageFactory(IOptions<NodeOptions> nodeOptions)

Parameters

nodeOptions IOptions<NodeOptions>

Methods

CreateAcceptChannel1Message(LightningMoney, ChannelTypeTlv?, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, ushort, LightningMoney, uint, CompactPubKey, CompactPubKey, ChannelId, ushort, UpfrontShutdownScriptTlv?)

Creates an AcceptChannel1 message.

public AcceptChannel1Message CreateAcceptChannel1Message(LightningMoney channelReserveAmount, ChannelTypeTlv? channelTypeTlv, CompactPubKey delayedPaymentBasepoint, CompactPubKey firstPerCommitmentPoint, CompactPubKey fundingPubKey, CompactPubKey htlcBasepoint, ushort maxAcceptedHtlcs, LightningMoney maxHtlcValueInFlight, uint minimumDepth, CompactPubKey paymentBasepoint, CompactPubKey revocationBasepoint, ChannelId temporaryChannelId, ushort toSelfDelay, UpfrontShutdownScriptTlv? upfrontShutdownScriptTlv)

Parameters

channelReserveAmount LightningMoney

The reserve amount for the channel.

channelTypeTlv ChannelTypeTlv

Optional parameter specifying the channel type.

delayedPaymentBasepoint CompactPubKey

The basepoint for the delayed payment key.

firstPerCommitmentPoint CompactPubKey

The first per-commitment point for the channel.

fundingPubKey CompactPubKey

Public key associated with the channel funding.

htlcBasepoint CompactPubKey

The basepoint for the HTLC key.

maxAcceptedHtlcs ushort

The maximum number of HTLCs to be accepted for this channel.

maxHtlcValueInFlight LightningMoney

The maximum HTLC value that can be in flight.

minimumDepth uint

The minimum confirmation depth required for the channel opening transaction.

paymentBasepoint CompactPubKey

The basepoint for the payment key.

revocationBasepoint CompactPubKey

The basepoint for the revocation key.

temporaryChannelId ChannelId

The temporary identifier for the channel negotiation.

toSelfDelay ushort

The delay in blocks before self outputs can be claimed.

upfrontShutdownScriptTlv UpfrontShutdownScriptTlv

Optional parameter specifying the upfront shutdown script TLV.

Returns

AcceptChannel1Message

The created AcceptChannel1 message.

See Also

CreateAcceptChannel2Message(ChannelId, LightningMoney, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, LightningMoney, BitcoinScript?, byte[]?, bool)

Create an AcceptChannel2 message.

public AcceptChannel2Message CreateAcceptChannel2Message(ChannelId temporaryChannelId, LightningMoney fundingSatoshis, CompactPubKey fundingPubKey, CompactPubKey revocationBasepoint, CompactPubKey paymentBasepoint, CompactPubKey delayedPaymentBasepoint, CompactPubKey htlcBasepoint, CompactPubKey firstPerCommitmentPoint, LightningMoney maxHtlcValueInFlight, BitcoinScript? shutdownScriptPubkey = null, byte[]? channelType = null, bool requireConfirmedInputs = false)

Parameters

temporaryChannelId ChannelId

The temporary channel id.

fundingSatoshis LightningMoney

The amount of satoshis we're adding to the channel.

fundingPubKey CompactPubKey

The funding pubkey of the channel.

revocationBasepoint CompactPubKey

The revocation pubkey.

paymentBasepoint CompactPubKey

The payment pubkey.

delayedPaymentBasepoint CompactPubKey

The delayed payment pubkey.

htlcBasepoint CompactPubKey

The htlc pubkey.

firstPerCommitmentPoint CompactPubKey

The first per-commitment pubkey.

maxHtlcValueInFlight LightningMoney

Maximum HTLC value that can be in flight.

shutdownScriptPubkey BitcoinScript?

The shutdown script to be used when closing the channel.

channelType byte[]

The type of the channel.

requireConfirmedInputs bool

If we want confirmed inputs to open the channel.

Returns

AcceptChannel2Message

The AcceptChannel2 message.

See Also

CreateChannelReadyMessage(ChannelId, CompactPubKey, ShortChannelId?)

Create a ChannelReady message.

public ChannelReadyMessage CreateChannelReadyMessage(ChannelId channelId, CompactPubKey secondPerCommitmentPoint, ShortChannelId? shortChannelId = null)

Parameters

channelId ChannelId

The channel id.

secondPerCommitmentPoint CompactPubKey

The second per commitment point.

shortChannelId ShortChannelId?

The channel's shortChannelId.

Returns

ChannelReadyMessage

The ChannelReady message.

See Also

CreateChannelReestablishMessage(ChannelId, ulong, ulong, ReadOnlyMemory<byte>, CompactPubKey)

Create a ChannelReestablish message.

public ChannelReestablishMessage CreateChannelReestablishMessage(ChannelId channelId, ulong nextCommitmentNumber, ulong nextRevocationNumber, ReadOnlyMemory<byte> yourLastPerCommitmentSecret, CompactPubKey myCurrentPerCommitmentPoint)

Parameters

channelId ChannelId

The channel id.

nextCommitmentNumber ulong

The next commitment number.

nextRevocationNumber ulong

The next revocation number.

yourLastPerCommitmentSecret ReadOnlyMemory<byte>

The peer's last per-commitment secret.

myCurrentPerCommitmentPoint CompactPubKey

Our current per commitment point.

Returns

ChannelReestablishMessage

The ChannelReestablish message.

See Also

CreateClosingSignedMessage(ChannelId, ulong, CompactSignature, ulong, ulong)

Create a ClosingSigned message.

public ClosingSignedMessage CreateClosingSignedMessage(ChannelId channelId, ulong feeSatoshis, CompactSignature signature, ulong minFeeSatoshis, ulong maxFeeSatoshis)

Parameters

channelId ChannelId

The channel id.

feeSatoshis ulong

The fee we want them to pay for closing the channel.

signature CompactSignature

The signature for closing the channel.

minFeeSatoshis ulong

The min fee we will accept them to pay to close the channel.

maxFeeSatoshis ulong

The max fee we will accept them to pay to close the channel.

Returns

ClosingSignedMessage

The ClosingSigned message.

See Also

CreateCommitmentSignedMessage(ChannelId, CompactSignature, IEnumerable<CompactSignature>)

Create a CommitmentSigned message.

public CommitmentSignedMessage CreateCommitmentSignedMessage(ChannelId channelId, CompactSignature signature, IEnumerable<CompactSignature> htlcSignatures)

Parameters

channelId ChannelId

The channel id.

signature CompactSignature

The signature for the commitment transaction.

htlcSignatures IEnumerable<CompactSignature>

The signatures for each open htlc.

Returns

CommitmentSignedMessage

The CommitmentSigned message.

See Also

CreateErrorMessage(byte[], ChannelId?)

Create an Error message.

public ErrorMessage CreateErrorMessage(byte[] data, ChannelId? channelId)

Parameters

data byte[]

The data to be sent.

channelId ChannelId?

The channel id, if any.

Returns

ErrorMessage

The Error message.

See Also

CreateErrorMessage(string, ChannelId?)

Create an Error message.

public ErrorMessage CreateErrorMessage(string message, ChannelId? channelId)

Parameters

message string

The message to be sent.

channelId ChannelId?

The channel id, if any.

Returns

ErrorMessage

The Error message.

See Also

CreateInitMessage()

Create an Init message.

public InitMessage CreateInitMessage()

Returns

InitMessage

The Init message.

See Also

CreateOpenChannel1Message(ChannelId, LightningMoney, CompactPubKey, LightningMoney, LightningMoney, LightningMoney, ushort, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, ChannelFlags, UpfrontShutdownScriptTlv?, ChannelTypeTlv?)

Create an OpenChannel1 message.

public OpenChannel1Message CreateOpenChannel1Message(ChannelId temporaryChannelId, LightningMoney fundingAmount, CompactPubKey fundingPubKey, LightningMoney pushAmount, LightningMoney channelReserveAmount, LightningMoney feeRatePerKw, ushort maxAcceptedHtlcs, CompactPubKey revocationBasepoint, CompactPubKey paymentBasepoint, CompactPubKey delayedPaymentBasepoint, CompactPubKey htlcBasepoint, CompactPubKey firstPerCommitmentPoint, ChannelFlags channelFlags, UpfrontShutdownScriptTlv? upfrontShutdownScriptTlv, ChannelTypeTlv? channelTypeTlv)

Parameters

temporaryChannelId ChannelId

The temporary channel id.

fundingAmount LightningMoney

The amount of satoshis we're adding to the channel.

fundingPubKey CompactPubKey

The funding pubkey of the channel.

pushAmount LightningMoney

The amount of satoshis we're pushing to the other side.

channelReserveAmount LightningMoney

The channel reserve amount.

feeRatePerKw LightningMoney

The fee rate per kw.

maxAcceptedHtlcs ushort

The max accepted htlcs.

revocationBasepoint CompactPubKey

The revocation pubkey.

paymentBasepoint CompactPubKey

The payment pubkey.

delayedPaymentBasepoint CompactPubKey

The delayed payment pubkey.

htlcBasepoint CompactPubKey

The htlc pubkey.

firstPerCommitmentPoint CompactPubKey

The first per-commitment pubkey.

channelFlags ChannelFlags

The flags for the channel.

upfrontShutdownScriptTlv UpfrontShutdownScriptTlv

The upfront shutdown script tlv.

channelTypeTlv ChannelTypeTlv

The channel type tlv.

Returns

OpenChannel1Message

The OpenChannel1 message.

See Also

CreateOpenChannel2Message(ChannelId, uint, uint, ulong, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, CompactPubKey, ChannelFlags, BitcoinScript?, byte[]?, bool)

Create an OpenChannel2 message.

public OpenChannel2Message CreateOpenChannel2Message(ChannelId temporaryChannelId, uint fundingFeeRatePerKw, uint commitmentFeeRatePerKw, ulong fundingSatoshis, CompactPubKey fundingPubKey, CompactPubKey revocationBasepoint, CompactPubKey paymentBasepoint, CompactPubKey delayedPaymentBasepoint, CompactPubKey htlcBasepoint, CompactPubKey firstPerCommitmentPoint, CompactPubKey secondPerCommitmentPoint, ChannelFlags channelFlags, BitcoinScript? shutdownScriptPubkey = null, byte[]? channelType = null, bool requireConfirmedInputs = false)

Parameters

temporaryChannelId ChannelId

The temporary channel id.

fundingFeeRatePerKw uint

The funding fee rate to open the channel.

commitmentFeeRatePerKw uint

The commitment fee rate.

fundingSatoshis ulong

The amount of satoshis we're adding to the channel.

fundingPubKey CompactPubKey

The funding pubkey of the channel.

revocationBasepoint CompactPubKey

The revocation pubkey.

paymentBasepoint CompactPubKey

The payment pubkey.

delayedPaymentBasepoint CompactPubKey

The delayed payment pubkey.

htlcBasepoint CompactPubKey

The htlc pubkey.

firstPerCommitmentPoint CompactPubKey

The first per-commitment pubkey.

secondPerCommitmentPoint CompactPubKey

The second per-commitment pubkey.

channelFlags ChannelFlags

The flags for the channel.

shutdownScriptPubkey BitcoinScript?

The shutdown script to be used when closing the channel.

channelType byte[]

The type of the channel.

requireConfirmedInputs bool

If we want confirmed inputs to open the channel.

Returns

OpenChannel2Message

The OpenChannel2 message.

See Also

CreatePingMessage()

Create a Ping message.

public PingMessage CreatePingMessage()

Returns

PingMessage

The Ping message.

See Also

CreatePongMessage(IMessage)

Create a Pong message.

public PongMessage CreatePongMessage(IMessage pingMessage)

Parameters

pingMessage IMessage

The ping message we're responding to

Returns

PongMessage

The Pong message.

See Also

CreateRevokeAndAckMessage(ChannelId, ReadOnlyMemory<byte>, CompactPubKey)

Create a RevokeAndAck message.

public RevokeAndAckMessage CreateRevokeAndAckMessage(ChannelId channelId, ReadOnlyMemory<byte> perCommitmentSecret, CompactPubKey nextPerCommitmentPoint)

Parameters

channelId ChannelId

The channel id.

perCommitmentSecret ReadOnlyMemory<byte>

The secret for the commitment transaction.

nextPerCommitmentPoint CompactPubKey

The next per commitment point.

Returns

RevokeAndAckMessage

The RevokeAndAck message.

See Also

CreateShutdownMessage(ChannelId, BitcoinScript)

Create a Shutdown message.

public ShutdownMessage CreateShutdownMessage(ChannelId channelId, BitcoinScript scriptPubkey)

Parameters

channelId ChannelId

The channel id.

scriptPubkey BitcoinScript

The ScriptPubKey to send closing funds to.

Returns

ShutdownMessage

The Shutdown message.

See Also

CreateStfuMessage(ChannelId, bool)

Create a Stfu message.

public StfuMessage CreateStfuMessage(ChannelId channelId, bool initiator)

Parameters

channelId ChannelId

The channel id, if any.

initiator bool

If we are the sender of the message.

Returns

StfuMessage

The Stfu message.

See Also

CreateTxAbortMessage(ChannelId, byte[])

Create a TxAbort message.

public TxAbortMessage CreateTxAbortMessage(ChannelId channelId, byte[] data)

Parameters

channelId ChannelId

The channel id.

data byte[]

The data.

Returns

TxAbortMessage

The TxAbort message.

See Also

CreateTxAckRbfMessage(ChannelId, long, bool)

Create a TxAckRbf message.

public TxAckRbfMessage CreateTxAckRbfMessage(ChannelId channelId, long fundingOutputContrubution, bool requireConfirmedInputs)

Parameters

channelId ChannelId

The channel id.

fundingOutputContrubution long

The output contribution.

requireConfirmedInputs bool

How many confirmed inputs we need.

Returns

TxAckRbfMessage

The TxAckRbf message.

See Also

CreateTxAddInputMessage(ChannelId, ulong, byte[], uint, uint)

Create a TxAddInput message.

public TxAddInputMessage CreateTxAddInputMessage(ChannelId channelId, ulong serialId, byte[] prevTx, uint prevTxVout, uint sequence)

Parameters

channelId ChannelId

The channel id.

serialId ulong

The serial id.

prevTx byte[]

The previous transaction.

prevTxVout uint

The previous transaction vout.

sequence uint

The sequence number.

Returns

TxAddInputMessage

The TxAddInput message.

See Also

CreateTxAddOutputMessage(ChannelId, ulong, LightningMoney, BitcoinScript)

Create a TxAddOutput message.

public TxAddOutputMessage CreateTxAddOutputMessage(ChannelId channelId, ulong serialId, LightningMoney amount, BitcoinScript script)

Parameters

channelId ChannelId

The channel id.

serialId ulong

The serial id.

amount LightningMoney

The number of satoshis.

script BitcoinScript

The script.

Returns

TxAddOutputMessage

The TxAddOutput message.

See Also

CreateTxCompleteMessage(ChannelId)

Create a TxComplete message.

public TxCompleteMessage CreateTxCompleteMessage(ChannelId channelId)

Parameters

channelId ChannelId

The channel id.

Returns

TxCompleteMessage

The TxComplete message.

See Also

CreateTxInitRbfMessage(ChannelId, uint, uint, long, bool)

Create a TxInitRbf message.

public TxInitRbfMessage CreateTxInitRbfMessage(ChannelId channelId, uint locktime, uint feerate, long fundingOutputContrubution, bool requireConfirmedInputs)

Parameters

channelId ChannelId

The channel id.

locktime uint

The locktime.

feerate uint

The feerate

fundingOutputContrubution long

The output contribution.

requireConfirmedInputs bool

How many confirmed inputs we need.

Returns

TxInitRbfMessage

The TxInitRbf message.

See Also

CreateTxRemoveInputMessage(ChannelId, ulong)

Create a TxRemoveInput message.

public TxRemoveInputMessage CreateTxRemoveInputMessage(ChannelId channelId, ulong serialId)

Parameters

channelId ChannelId

The channel id.

serialId ulong

The serial id.

Returns

TxRemoveInputMessage

The TxRemoveInput message.

See Also

CreateTxRemoveOutputMessage(ChannelId, ulong)

Create a TxRemoveOutput message.

public TxRemoveOutputMessage CreateTxRemoveOutputMessage(ChannelId channelId, ulong serialId)

Parameters

channelId ChannelId

The channel id.

serialId ulong

The serial id.

Returns

TxRemoveOutputMessage

The TxRemoveOutput message.

See Also

CreateTxSignaturesMessage(ChannelId, byte[], List<Witness>)

Create a TxSignatures message.

public TxSignaturesMessage CreateTxSignaturesMessage(ChannelId channelId, byte[] txId, List<Witness> witnesses)

Parameters

channelId ChannelId

The channel id.

txId byte[]

The transaction id.

witnesses List<Witness>

The witnesses.

Returns

TxSignaturesMessage

The TxSignatures message.

See Also

CreateUpdateAddHtlcMessage(ChannelId, ulong, ulong, ReadOnlyMemory<byte>, uint, ReadOnlyMemory<byte>?)

Create an UpdateAddHtlc message.

public UpdateAddHtlcMessage CreateUpdateAddHtlcMessage(ChannelId channelId, ulong id, ulong amountMsat, ReadOnlyMemory<byte> paymentHash, uint cltvExpiry, ReadOnlyMemory<byte>? onionRoutingPacket = null)

Parameters

channelId ChannelId

The channel id.

id ulong

The htlc id.

amountMsat ulong

The amount for this htlc.

paymentHash ReadOnlyMemory<byte>

The htlc payment hash.

cltvExpiry uint

The cltv expiry.

onionRoutingPacket ReadOnlyMemory<byte>?

The onion routing packet.

Returns

UpdateAddHtlcMessage

The UpdateAddHtlc message.

See Also

CreateUpdateFailHtlcMessage(ChannelId, ulong, ReadOnlyMemory<byte>)

Create an UpdateFailHtlc message.

public UpdateFailHtlcMessage CreateUpdateFailHtlcMessage(ChannelId channelId, ulong id, ReadOnlyMemory<byte> reason)

Parameters

channelId ChannelId

The channel id.

id ulong

The htlc id.

reason ReadOnlyMemory<byte>

The reason for failure.

Returns

UpdateFailHtlcMessage

The UpdateFailHtlc message.

See Also

CreateUpdateFailMalformedHtlcMessage(ChannelId, ulong, ReadOnlyMemory<byte>, ushort)

Create an UpdateFailMalformedHtlc message.

public UpdateFailMalformedHtlcMessage CreateUpdateFailMalformedHtlcMessage(ChannelId channelId, ulong id, ReadOnlyMemory<byte> sha256OfOnion, ushort failureCode)

Parameters

channelId ChannelId

The channel id.

id ulong

The htlc id.

sha256OfOnion ReadOnlyMemory<byte>

The sha256OfOnion for this htlc.

failureCode ushort

The failureCode.

Returns

UpdateFailMalformedHtlcMessage

The UpdateFailMalformedHtlc message.

See Also

CreateUpdateFeeMessage(ChannelId, uint)

Create a UpdateFee message.

public UpdateFeeMessage CreateUpdateFeeMessage(ChannelId channelId, uint feeratePerKw)

Parameters

channelId ChannelId

The channel id.

feeratePerKw uint

The fee rate for the commitment transaction.

Returns

UpdateFeeMessage

The UpdateFee message.

See Also

CreateUpdateFulfillHtlcMessage(ChannelId, ulong, ReadOnlyMemory<byte>)

Create an UpdateFulfillHtlc message.

public UpdateFulfillHtlcMessage CreateUpdateFulfillHtlcMessage(ChannelId channelId, ulong id, ReadOnlyMemory<byte> preimage)

Parameters

channelId ChannelId

The channel id.

id ulong

The htlc id.

preimage ReadOnlyMemory<byte>

The preimage for this htlc.

Returns

UpdateFulfillHtlcMessage

The UpdateFulfillHtlc message.

See Also

CreateWarningMessage(byte[], ChannelId?)

Create a Warning message.

public WarningMessage CreateWarningMessage(byte[] data, ChannelId? channelId)

Parameters

data byte[]

The data to be sent.

channelId ChannelId?

The channel id, if any.

Returns

WarningMessage

The Warning message.

See Also

CreateWarningMessage(string, ChannelId?)

Create a Warning message.

public WarningMessage CreateWarningMessage(string message, ChannelId? channelId)

Parameters

message string

The message to be sent.

channelId ChannelId?

The channel id, if any.

Returns

WarningMessage

The Warning message.

See Also

CreatedFundingCreatedMessage(ChannelId, TxId, ushort, CompactSignature)

Create a FundingCreated message.

public FundingCreatedMessage CreatedFundingCreatedMessage(ChannelId temporaryChannelId, TxId fundingTxId, ushort fundingOutputIndex, CompactSignature signature)

Parameters

temporaryChannelId ChannelId

The temporary channel id.

fundingTxId TxId

The funding transaction id.

fundingOutputIndex ushort

The funding output index.

signature CompactSignature

The signature for the funding transaction.

Returns

FundingCreatedMessage

The FundingCreated message.

See Also

CreatedFundingSignedMessage(ChannelId, CompactSignature)

Create a FundingSigned message.

public FundingSignedMessage CreatedFundingSignedMessage(ChannelId channelId, CompactSignature signature)

Parameters

channelId ChannelId

The channel id.

signature CompactSignature

Returns

FundingSignedMessage

The FundingSigned message.

See Also