ln-docker-daemons 4.0.4 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Versions
2
2
 
3
+ ## 4.1.0
4
+
5
+ - `spawnLndDocker`: Add method to spawn an LND docker
6
+
3
7
  ## 4.0.4
4
8
 
5
9
  - `spawnLightningCluster`: Return `tower` for the watchtower server socket
package/README.md CHANGED
@@ -191,3 +191,31 @@ Spawn an LND Docker
191
191
  socket: <LND RPC Host:Port Network Address String>
192
192
  tower_socket: <LND Tower Socket Host:Port Network Address String>
193
193
  }
194
+
195
+ ## `spawnLndDocker`
196
+
197
+ Spawn a new Docker image running LND
198
+
199
+ {
200
+ bitcoind_rpc_host: <Bitcoin Core RPC Host String>
201
+ bitcoind_rpc_pass: <Bitcoin Core RPC Password String>
202
+ bitcoind_rpc_port: <Bitcoin Core RPC Port Number>
203
+ bitcoind_rpc_user: <Bitcoin Core RPC Username String>
204
+ [bitcoind_zmq_block_port]: <Bitcoin Core ZMQ Block Port Number>
205
+ [bitcoind_zmq_tx_port]: <Bitcoin Core ZMQ Transaction Port Number>
206
+ [configuration]: [<LND Configuration Argument String>]
207
+ p2p_port: <LND Peer to Peer Listen Port Number>
208
+ rpc_port: <LND RPC Port Number>
209
+ tower_port: <LND Tower Port Number>
210
+ [seed]: <Mnemonic Seed String>
211
+ }
212
+
213
+ @returns via cbk or Promise
214
+ {
215
+ cert: <LND Base64 Serialized TLS Cert Base64 String>
216
+ kill: ({}, [cbk]) => <Kill LND Docker Promise>
217
+ macaroon: <LND Base64 Serialized Macaroon String>
218
+ public_key: <LND Public Key Hex String>
219
+ socket: <LND RPC Host:Port Network Address String>
220
+ tower_socket: <LND Tower Socket Host:Port Network Address String>
221
+ }
@@ -24,8 +24,8 @@ const trim = string => string.replace(/=+$/g, '');
24
24
  {
25
25
  p2p_port: <P2P Port Number>
26
26
  rpc_port: <RPC Port Number>
27
- zmq_block_port: <ZMQ Blocks Port Number>
28
- zmq_tx_port: <ZMQ Transactions Port Number>
27
+ [zmq_block_port]: <ZMQ Blocks Port Number>
28
+ [zmq_tx_port]: <ZMQ Transactions Port Number>
29
29
  }
30
30
 
31
31
  @returns via cbk or Promise
@@ -49,14 +49,6 @@ module.exports = (args, cbk) => {
49
49
  return cbk([400, 'ExpectedRpcListenPortToSpawnBitcoindDocker']);
50
50
  }
51
51
 
52
- if (!args.zmq_block_port) {
53
- return cbk([400, 'ExpectedZmqBlocksPortToSpawnBitcoindDocker']);
54
- }
55
-
56
- if (!args.zmq_tx_port) {
57
- return cbk([400, 'ExpectedZmqTxPortToSpawnBitcoindDocker']);
58
- }
59
-
60
52
  return cbk();
61
53
  },
62
54
 
@@ -73,30 +65,33 @@ module.exports = (args, cbk) => {
73
65
 
74
66
  // Spawn the docker image
75
67
  spawnDocker: ['generateAuth', ({generateAuth}, cbk) => {
76
- return spawnDockerImage({
77
- arguments: [
78
- '--disablewallet',
79
- '--listen=1',
80
- '--persistmempool=false',
81
- '--printtoconsole',
82
- '--regtest',
83
- '--rpcallowip=172.17.0.0/16',
84
- `--rpcauth=${generateAuth.rpc_auth}`,
85
- '--rpcbind=0.0.0.0',
86
- '--server',
87
- '--txindex',
88
- `--zmqpubrawblock=tcp://*:${args.zmq_block_port}`,
89
- `--zmqpubrawtx=tcp://*:${args.zmq_tx_port}`,
90
- ],
91
- image: dockerBitcoindImage,
92
- ports: {
93
- '18443/tcp': args.rpc_port,
94
- '18444/tcp': args.p2p_port,
95
- [`${args.zmq_block_port}/tcp`]: args.zmq_block_port,
96
- [`${args.zmq_tx_port}/tcp`]: args.zmq_tx_port,
97
- },
98
- },
99
- cbk);
68
+ const arguments = [
69
+ '--disablewallet',
70
+ '--listen=1',
71
+ '--persistmempool=false',
72
+ '--printtoconsole',
73
+ '--regtest',
74
+ '--rpcallowip=172.17.0.0/16',
75
+ `--rpcauth=${generateAuth.rpc_auth}`,
76
+ '--rpcbind=0.0.0.0',
77
+ '--server',
78
+ '--txindex',
79
+ ];
80
+
81
+ const image = dockerBitcoindImage;
82
+ const ports = {'18443/tcp': args.rpc_port, '18444/tcp': args.p2p_port};
83
+
84
+ if (!!args.zmq_block_port) {
85
+ arguments.push('--zmqpubrawblock=tcp://*:' + args.zmq_block_port);
86
+ ports[`${args.zmq_block_port}/tcp`] = args.zmq_block_port;
87
+ }
88
+
89
+ if (!!args.zmq_tx_port) {
90
+ arguments.push('--zmqpubrawtx=tcp://*:' + args.zmq_tx_port);
91
+ ports[`${args.zmq_tx_port}/tcp`] = args.zmq_tx_port;
92
+ }
93
+
94
+ return spawnDockerImage({arguments, image, ports}, cbk);
100
95
  }],
101
96
 
102
97
  // Wait for the image to respond to a query
package/index.js CHANGED
@@ -2,10 +2,12 @@ const {setupChannel} = require('./setup');
2
2
  const {spawnBitcoindDocker} = require('./bitcoind');
3
3
  const {spawnLightningCluster} = require('./cluster');
4
4
  const {spawnLightningDocker} = require('./lnd');
5
+ const {spawnLndDocker} = require('./lnd');
5
6
 
6
7
  module.exports = {
7
8
  setupChannel,
8
9
  spawnBitcoindDocker,
9
10
  spawnLightningCluster,
10
11
  spawnLightningDocker,
12
+ spawnLndDocker,
11
13
  };
package/lnd/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  const spawnLightningDocker = require('./spawn_lightning_docker');
2
+ const spawnLndDocker = require('./spawn_lnd_docker');
2
3
 
3
- module.exports = {spawnLightningDocker};
4
+ module.exports = {spawnLightningDocker, spawnLndDocker};
@@ -10,6 +10,7 @@ const {spawnDockerImage} = require('./../docker');
10
10
 
11
11
  const imageName = ver => !!ver ? `lightninglabs/lnd:${ver}` : dockerLndImage;
12
12
  const interval = 100;
13
+ const join = n => n.join('');
13
14
  const macaroonPath = '/root/.lnd/data/chain/bitcoin/regtest/admin.macaroon';
14
15
  const times = 500;
15
16
  const tlsCertPath = '/root/.lnd/tls.cert';
@@ -21,8 +22,8 @@ const tlsCertPath = '/root/.lnd/tls.cert';
21
22
  bitcoind_rpc_pass: <Bitcoin Core RPC Password String>
22
23
  bitcoind_rpc_port: <Bitcoin Core RPC Port Number>
23
24
  bitcoind_rpc_user: <Bitcoin Core RPC Username String>
24
- bitcoind_zmq_block_port: <Bitcoin Core ZMQ Block Port Number>
25
- bitcoind_zmq_tx_port: <Bitcoin Core ZMQ Transaction Port Number>
25
+ [bitcoind_zmq_block_port]: <Bitcoin Core ZMQ Block Port Number>
26
+ [bitcoind_zmq_tx_port]: <Bitcoin Core ZMQ Transaction Port Number>
26
27
  [configuration]: [<LND Configuration Argument String>]
27
28
  p2p_port: <LND Peer to Peer Listen Port Number>
28
29
  rpc_port: <LND RPC Port Number>
@@ -32,8 +33,8 @@ const tlsCertPath = '/root/.lnd/tls.cert';
32
33
 
33
34
  @returns via cbk or Promise
34
35
  {
35
- cert: <LND Base64 Serialized TLS Cert>
36
- kill: ({}, [cbk]) => <Kill LND and Bitcoind Dockers Promise>
36
+ cert: <LND Base64 Serialized TLS Cert Base64 String>
37
+ kill: ({}, [cbk]) => <Kill LND Dockers Promise>
37
38
  macaroon: <LND Base64 Serialized Macaroon String>
38
39
  public_key: <LND Public Key Hex String>
39
40
  socket: <LND RPC Host:Port Network Address String>
@@ -57,14 +58,6 @@ module.exports = (args, cbk) => {
57
58
  return cbk([400, 'ExpectedBitcoinCoreRpcUserToSpawnLndDocker']);
58
59
  }
59
60
 
60
- if (!args.bitcoind_zmq_block_port) {
61
- return cbk([400, 'ExpectedBitcoinCoreZmqBlockPortToSpawnLndDocker']);
62
- }
63
-
64
- if (!args.bitcoind_zmq_tx_port) {
65
- return cbk([400, 'ExpectedBitcoinCoreZmqTxPortToSpawnLndDocker']);
66
- }
67
-
68
61
  if (!args.p2p_port) {
69
62
  return cbk([400, 'ExpectedLndPeer2PeerNetworkPortToSpawnLndDocker']);
70
63
  }
@@ -112,6 +105,26 @@ module.exports = (args, cbk) => {
112
105
  '--watchtower.listen', `127.0.0.1:9911`,
113
106
  ];
114
107
 
108
+ if (!!zmqBlockPort) {
109
+ arguments.push(join([
110
+ '--bitcoind.zmqpubrawblock=tcp://',
111
+ chainHost,
112
+ ':',
113
+ zmqBlockPort,
114
+ ]));
115
+
116
+ arguments.push(join([
117
+ '--bitcoind.zmqpubrawtx=tcp://',
118
+ chainHost,
119
+ ':',
120
+ zmqTxPort
121
+ ]));
122
+ } else {
123
+ arguments.push('--bitcoind.rpcpolling');
124
+ arguments.push('--bitcoind.blockpollinginterval=1s');
125
+ arguments.push('--bitcoind.txpollinginterval=1s');
126
+ }
127
+
115
128
  return spawnDockerImage({
116
129
  arguments: arguments.concat(args.configuration || []),
117
130
  image: imageName(process.env.DOCKER_LND_VERSION),
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "asyncjs-util": "1.2.11",
13
13
  "dockerode": "3.3.4",
14
14
  "find-free-ports": "3.0.0",
15
- "lightning": "7.0.3",
15
+ "lightning": "7.0.6",
16
16
  "tar-stream": "3.0.0"
17
17
  },
18
18
  "description": "Spawn and control LN Docker daemons",
@@ -35,5 +35,5 @@
35
35
  "scripts": {
36
36
  "test": "tap --branches=1 --functions=1 --lines=1 --statements=1 -j 1 test/bitcoind/*.js test/lnd/*.js"
37
37
  },
38
- "version": "4.0.4"
38
+ "version": "4.1.0"
39
39
  }