Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

bolt01

alexbosworth15.5kMIT2.0.0

Lightning Network BOLT-01 methods

lightning-network

readme

BOLT 01

npm version

Methods relating to Lightning Network BOLT 01.

decodeBigSize

Given BOLT 01 "BigSize" bytes, return a corresponding numeric value

{
  encoded: <BigSize Encoded Value Hex String>
}

@throws
<Error>

@returns
{
  decoded: <Decoded Number String>
  length: <Encoding Byte Length Number>
}

Example:

const {decodeBigSize} = require('bolt01');

// Decode a zero value BigSize number
const {decoded} = decodeBigSize({encoded: '00'});

decodeTlvRecord

Decode an encoded TLV record

{
  encoded: <Encoded TLV Record Hex String>
  [offset]: <Record Offset By Bytes Number>
}

@throws
<Error>

@returns
{
  length: <Total Record Byte Length Number>
  type: <Message Type Number String>
  value: <Raw Value Hex String>
}

Example:

const {decodeTlvRecord} = require('bolt01');

// Type '1' and value '01'
const {type, value} = decodeTlvRecord({encoded: '010101'});

decodeTlvStream

Decode a TLV stream as key value pairs

{
  encoded: <TLV Records Stream Hex Encoded String>
}

@throws
<Error>

@returns
{
  records: [{
    type: <Message Type Number String>
    value: <Raw Value Hex String>
  }]
}

Example:

const {decodeTlvStream} = require('bolt01');

// {records: [{type: '1', value: '01}]}
const {records} = decodeTlvRecord({encoded: '010101'});

encodeBigSize

Given a numeric value, encode it as BOLT 01 "BigSize" bytes

{
  number: <Number String>
}

@throws
<Error>

@returns
{
  encoded: <BigSize Encoded Value Hex String>
}

Example:

const {encodeBigSize} = require('bolt01');

// Encode a zero value BigSize number
const {encoded} = encodeBigSize({number: '0'});

encodeTlvRecord

Encode data as a TLV record

{
  type: <Message Type Number String>
  value: <Raw Value Hex String>
}

@throws
<Error>

@returns
{
  encoded: <Encoded TLV Record Hex String>
}

Example:

const {encodeTlvRecord} = require('bolt01');

// encoded: '010101'
const {encoded} = encodeTlvRecord({type: '1', value: '01'});

encodeTlvStream

Encode key value pairs as a TLV stream

{
  records: [{
    type: <Message Type Number String>
    value: <Raw Value Hex String>
  }]
}

@throws
<Error>

@returns
{
  encoded: <TLV Records Stream Hex Encoded String>
}

Example:

const {encodeTlvStream} = require('bolt01');

// encoded: '010101'
const {encoded} = encodeTlvStream({records: [{type: '1', value: '01'}]});

changelog

Versions

2.0.0

  • Node version 16 or higher is required

1.2.6

  • decodeTlvRecord: Decode a TLV record into a record
  • decodeTlvStream: Decode a TLV stream into component records
  • encodeTlvRecord: Encode record data as a TLV record
  • encodeTlvStream: Encode type value records as a TLV records stream

1.1.0

  • decodeBigSize: Add length attribute to indicate the BigSize byte length
  • encodeBigSize: Add method to encode BigSize type serialized numbers

1.0.0

  • decodeBigSize: Add method to decode BigSize type serialized numbers