ln-docker-daemons

Spawn and control LN Docker daemons

Usage no npm install needed!

<script type="module">
  import lnDockerDaemons from 'https://cdn.skypack.dev/ln-docker-daemons';
</script>

README

LN Docker Daemons

Spawn and run LN Docker daemons

Example:

const {authenticatedLndGrpc, getIdentity} = require('ln-service');
const {spawnLightningDocker} = require('ln-docker-daemons');

const {cert, kill, macaroon, socket} = spawnLightningDocker({});

const {lnd} = authenticatedLndGrpc({cert, macaroon, socket});

// Fetch the identity public key of the LND node
const publicKey = (await getIdentity({lnd})).public_key;

await kill({});

Environment Variables

  • DOCKER_LND_VERSION: set this to use a custom LND docker image

Example:

export DOCKER_LND_VERSION="v0.14.0-beta"

A list of available tags can be found here: https://hub.docker.com/r/lightninglabs/lnd/tags

spawnBitcoindDocker

Spawn a Bitcoin Core Docker image

{
  p2p_port: <P2P Port Number>
  rpc_port: <RPC Port Number>
  zmq_block_port: <ZMQ Blocks Port Number>
  zmq_tx_port: <ZMQ Transactions Port Number>
}

@returns via cbk or Promise
{
  host: <Host String>
  kill: ({}, [cbk]) => <Kill Promise>
  rpc_pass: <RPC Password String>
  rpc_user: <RPC Username String>
}

Example:

const {spawnBitcoindDocker} = require('ln-docker-daemons');

// Launch a Bitcoind Docker image
const {kill} = spawnBitcoindDocker({
  p2p_port: 2345,
  rpc_port: 3456,
  zmq_block_port: 4567,
  zmq_tx_port: 5678,
});

// Stop the image
await kill({});

spawnLightningCluster

Spawn a cluster of nodes

{
  [lnd_configuration]: [<LND Configuration Argument String>]
  [size]: <Total Lightning Nodes Number>
}

@returns via cbk or Promise
{
  nodes: [{
    generate: ({address, [count]}) => {}
    id: <Node Public Key Hex String>
    kill: <Kill Function> ({}, cbk) => {}
    lnd: <Authenticated LND API Object>
    socket: <Node Socket String>
  }]
}

Example:

const {createChainAddress, getIdentity} = require('lightning');
const {spawnLightningCluster} = require('ln-docker-daemons');

// Launch a lightning node
const {nodes} = await spawnLightningCluster({});
const [{lnd, generate, kill}] = nodes;

const publicKey = (await getIdentity({lnd})).public_key;

// Generate some coins for the wallet
await generate({count: 500});

// Stop the image
await kill({});

spawnLightningDocker

Spawn an LND Docker

{
  chain_p2p_port: <Chain Network P2P Listen Port Number>
  chain_rpc_port: <Chain Node RPC Port Number>
  chain_zmq_block_port: <Chain Node ZMQ Blocks Port Number>
  chain_zmq_tx_port: <Chain Node ZMQ Transactions Port Number>
  generate_address: <Generate Blocks to Address String>
  lightning_p2p_port: <Lightning Network P2P Listen Port Number>
  lightning_rpc_port: <Lightning Node RPC Port Number>
  [lnd_configuration]: [<LND Configuration Argument String>]
}

@returns via cbk or Promise
{
  add_chain_peer: <Add Peer Function> ({socket}) => {}
  cert: <LND Base64 Serialized TLS Cert>
  chain_socket: <Chain P2P Socket String>
  kill: ({}, [cbk]) => <Kill LND Daemon Promise>
  ln_socket: <LN P2P Socket String>
  macaroon: <LND Base64 Serialized Macaroon String>
  public_key: <Identity Public Key Hex String>
  socket: <LND RPC Host:Port Network Address String>
}