@node-lightning/wire
Version:
Lightning Network Wire Protocol
179 lines (178 loc) • 7.37 kB
TypeScript
/// <reference types="node" />
import { BitField, Value } from "@node-lightning/core";
import { OpenChannelFlags } from "../flags/OpenChannelFlags";
import { MessageType } from "../MessageType";
import { IWireMessage } from "./IWireMessage";
/**
* OpenChannelMessage represents the open_channel message defined in
* BOLT #2 of the Lightning Specification. This message is used to
* initiate a channel with a connected peer. The channel initiator acts
* as the funding node for the channel and specifies the amount and
* parameters to be used in the channel. The remote peer can accept the
* channel using the accept_channel message.
*/
export declare class OpenChannelMessage implements IWireMessage {
static type: MessageType;
/**
* Deserializes an open_channel message
* @param buf
*/
static deserialize(buf: Buffer): OpenChannelMessage;
/**
* The type for open_channel message. open_channel = 32
*/
type: MessageType;
/**
* The chain_hash used to identifier the chain that the channel
* should be opened on. Typically this value is the hash of the
* genesis block in internal byte order.
*/
chainHash: Buffer;
/**
* A unique and temporary identifier used during the channel creation
* process. This value is a placeholder for the channel_id that is
* created from the funding transaction that can be used after the
* funding_created message creates this transaction and the
* counterparty uses the channel_id in the funding_signed message.
*/
temporaryChannelId: Buffer;
/**
* This value is the total value of the channel. It is value in
* satoshis that will be locked into the 2-2 multisig output of the
* funding transaction. This value must be less than 2^24 satoshis
* unless option_large_channel is negotiated by both peers during
* initialization.
*/
fundingSatoshis: Value;
/**
* This is the value in millisatoshi that is unconditionally pushed
* to the counterparty of the channel. This value must be less than
* 1000 * funding_satoshis. This value will be applied to the value
* of the remote nodes commitment transaction output in the initial
* commitment transaction.
*/
pushMsat: Value;
/**
* Indicates the value in satoshis under which outputs should not
* be created for this node's commitment transaction or HTLC
* transactions. This setting indicates the reality that small
* transaction outputs are considered non-standard by the network and
* will not be propagated.
*/
dustLimitSatoshis: Value;
/**
* Indicates the minimum amount that the counterparty is supposed to
* keep as direct payment. This value must be equal or greater than
* dust_limit_satoshis and SHOULD be 1% of the total value of the
* channel. This value ensures that there is always value at stake
* for a node to lose if it broadcasts an outdated commitment
* transaction. Initially this value may not be met but as a channel
* is used and the value is met, the reserve must be maintained.
*/
channelReserveSatoshis: Value;
/**
* Indicates the transaction fee in satoshis per 1000-weight that
* will be used for the commitment transaction and HTLC transactions.
* This value is set by the funding node and can be adjusted using
* the update_fee message. This value should be set to a value that
* the funding node believes will result in the immediate inclusion
* of the commitment transaction in a block.
*/
feeRatePerKw: Value;
/**
* Indicates the number of blocks the remote node must use to delay
* retrieval of its to_local outputs. This value is used as input
* to OP_CSV to create a relative timelock on RSMCs used in the
* to_local output of the commitment transaction and the HTLC
* transaction outputs. This allows us to use a penalty transaction
* is there is a breach.
*/
toSelfDelay: number;
/**
* The minimum value in millisatoshi of an HTLC that we are willing
* to accept.
*/
htlcMinimumMsat: Value;
/**
* The maximum value in millisatoshi of outstanding HTLCs we will
* allow. This value allows us to limit our overall exposure to
* HTLCs.
*/
maxHtlcValueInFlightMsat: Value;
/**
* The maximum number of outstanding HTLCs that we will allow. This
* limits our exposure to a finite amount of HTLCs. This value must
* be less than 483 as more than this will cause issues with the
* commitment_signed message.
*/
maxAcceptedHtlcs: number;
/**
* The public key used in the 2-of-2 multisig script of the funding
* transaction output. This value must a 33-byte compressed SEC
* encoded public key for secp256k1.
*/
fundingPubKey: Buffer;
/**
* The revocation basepoint is used to derive a blinded
* per-commitment revocation public key. Revocation public keys
* are used in a remote node's version of the commitment
* transactions and HTLC transactions and allow us the ability to
* sweep funds if they broadcast a prior state transaction.
*/
revocationBasePoint: Buffer;
/**
* The payment basepoint is used to derive a per-commitment payment
* public key.
*/
paymentBasePoint: Buffer;
/**
* The delayed payment basepoint is used to derive a per-commitment
* payment public key that is sequence delayed. It is used in
* in our local commitment transaction as well as the outputs of
* HTLC transactions.
*/
delayedPaymentBasePoint: Buffer;
/**
* The HTLC basepoint is used to derive a per-commitment
* public key used in HTLC outputs of the commitment transaction.
*/
htlcBasePoint: Buffer;
/**
* This is the first per-commitment point to be used for the first
* commitment transaction. This point will be used by the remote
* node to construct the public keys used when constructing and
* signing our version of the commitment transaction. This point
* will eventually be revoked and a we will send a new
* commitment point.
*/
firstPerCommitmentPoint: Buffer;
/**
* Flags are used to indicate channel features. Currently only the
* least-significant bit is defined which enables public
* announcement of the channel once the channel becomes live.
*/
channelFlags: BitField<OpenChannelFlags>;
/**
* Gets or sets whether the channel will be publicly announced once
* the channel becomes live.
*/
get announceChannel(): boolean;
set announceChannel(val: boolean);
/**
* When option_upfront_shutdown_script is negotiated during init
* message exchange, this property will commit to using the provided
* scriptPubKey during a mutual close. This value will be used
* instead of the scriptPubKey provided during shutdown which
* ensures that this scriptPubKey is used on close even if our node
* is compromised.
*/
upfrontShutdownScript: Buffer;
/**
* Constructs a new OpenChannelMessage instance
*/
constructor();
/**
* Serializes the open_channel message into a Buffer
*/
serialize(): Buffer;
}