Spawn and control LN Docker daemons
npm install ln-docker-daemonsSpawn and run LN Docker daemons
Example:
``node
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({});
`
Supported methods:
- setupChannel: Create a channel between lnds
- spawnBitcoindDocker: Run a Bitcoin Core container
- spawnLightningCluster: Spin up a group of nodes
- spawnLightningDocker: Run lnd + bitcoind
One liner for killing all running Docker containers:
``
docker container kill $(docker ps -q)
- DOCKER_LND_VERSION: set this to use a custom LND docker image
Example:
`shell`
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
Setup channel
{
[capacity]:
generate:
[give_tokens]:
[is_private]:
lnd:
[partner_csv_delay]:
to: {
id:
socket:
}
}
@returns via cbk or Promise
{
id:
transaction_id:
transaction_vout:
}
Example:
`node
const {getNetworkInfo} = require('ln-service');
const {spawnLightningCluster} = require('ln-docker-daemons');
const {kill, nodes} = await spawnLightningCluster({size: 2});
const [alice, bob] = nodes;
await setupChannel({generate: alice.generate, lnd: alice.lnd, to: bob});
const networkInfo = await getNetworkInfo({lnd: alice.lnd});
// networkInfo.channel_count now equals 1
await kill({});
`
Spawn a Bitcoin Core Docker image
{
p2p_port:
rpc_port:
zmq_block_port:
zmq_tx_port:
}
@returns via cbk or Promise
{
host:
kill: ({}, [cbk]) =>
rpc_pass:
rpc_user:
}
Example:
`node
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({});
`
Spawn a cluster of nodes
{
[lnd_configuration]: [
[size]:
}
@returns via cbk or Promise
{
nodes: [{
generate:
id:
kill:
lnd:
rpc:
socket:
tower:
}]
}
Example:
`node
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({});
`
Spawn an LND Docker
{
chain_p2p_port:
chain_rpc_port:
chain_zmq_block_port:
chain_zmq_tx_port:
generate_address:
lightning_p2p_port:
lightning_rpc_port:
lightning_tower_port:
[lnd_configuration]: [
[seed]:
}
@returns via cbk or Promise
{
add_chain_peer:
cert:
chain_socket:
kill: ({}, [cbk]) =>
ln_socket:
macaroon:
public_key:
socket:
tower_socket:
}
Spawn a new Docker image running LND
{
bitcoind_rpc_host:
bitcoind_rpc_pass:
bitcoind_rpc_port:
bitcoind_rpc_user:
[bitcoind_zmq_block_port]:
[bitcoind_zmq_tx_port]:
[configuration]: [
p2p_port:
rpc_port:
tower_port:
[seed]:
}
@returns via cbk or Promise
{
cert:
kill: ({}, [cbk]) =>
macaroon:
public_key:
socket:
tower_socket:
}