ln-service 54.2.6 → 54.3.1
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 +8 -0
- package/README.md +38 -0
- package/index.js +2 -0
- package/package.json +5 -5
- package/test/integration/test_get_settlement_status.js +65 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Versions
|
|
2
2
|
|
|
3
|
+
## 54.3.1
|
|
4
|
+
|
|
5
|
+
- `createUnsignedRequest`: Fix support for empty description requests
|
|
6
|
+
|
|
7
|
+
## 54.3.0
|
|
8
|
+
|
|
9
|
+
- `getSettlementStatus`: Add method to lookup received htlc settlement status
|
|
10
|
+
|
|
3
11
|
## 54.2.6
|
|
4
12
|
|
|
5
13
|
- `getWalletInfo`: Add support for LND 0.14.5
|
package/README.md
CHANGED
|
@@ -177,6 +177,7 @@ for `unlocker` methods.
|
|
|
177
177
|
- [getRouteConfidence](#getrouteconfidence) - Get confidence in a route
|
|
178
178
|
- [getRouteThroughHops](#getroutethroughhops) - Get a route through nodes
|
|
179
179
|
- [getRouteToDestination](#getroutetodestination) - Get a route to a destination
|
|
180
|
+
- [getSettlementStatus](#getsettlementstatus) - Get status of a received HTLC
|
|
180
181
|
- [getSweepTransactions](#getsweeptransactions) - Get transactions sweeping to
|
|
181
182
|
self
|
|
182
183
|
- [getTowerServerInfo](#gettowerserverinfo) - Get information about tower server
|
|
@@ -3153,6 +3154,43 @@ const {route} = await getRouteToDestination({destination, lnd, tokens});
|
|
|
3153
3154
|
await payViaRoutes({lnd, routes: [route]});
|
|
3154
3155
|
```
|
|
3155
3156
|
|
|
3157
|
+
### getSettlementStatus
|
|
3158
|
+
|
|
3159
|
+
Get the settlement status of a received HTLC
|
|
3160
|
+
|
|
3161
|
+
Note: this method is not supported in LND versions 0.15.4 and below
|
|
3162
|
+
|
|
3163
|
+
Requires `offchain:read` permissions
|
|
3164
|
+
|
|
3165
|
+
{
|
|
3166
|
+
channel: <Standard Format Channel Id String>
|
|
3167
|
+
lnd: <Authenticated LND API Object>
|
|
3168
|
+
payment: <Payment Id Number>
|
|
3169
|
+
}
|
|
3170
|
+
|
|
3171
|
+
@returns via cbk or Promise
|
|
3172
|
+
{
|
|
3173
|
+
is_onchain: <Payment Went to Chain Bool>
|
|
3174
|
+
is_settled: <Payment Is Settled Into Non-HTLC Balance Bool>
|
|
3175
|
+
}
|
|
3176
|
+
|
|
3177
|
+
Example:
|
|
3178
|
+
|
|
3179
|
+
```node
|
|
3180
|
+
const {getSettlementStatus} = require('ln-service');
|
|
3181
|
+
const {getChannels} = require('ln-service');
|
|
3182
|
+
|
|
3183
|
+
const [channel] = (await getChannels({lnd})).channels;
|
|
3184
|
+
|
|
3185
|
+
const settlement = await getSettlementStatus({
|
|
3186
|
+
lnd,
|
|
3187
|
+
channel: channel.id,
|
|
3188
|
+
payment: 0,
|
|
3189
|
+
});
|
|
3190
|
+
|
|
3191
|
+
const isSettledOffchain = settlement.is_settled && !settlement.is_onchain;
|
|
3192
|
+
```
|
|
3193
|
+
|
|
3156
3194
|
### getSweepTransactions
|
|
3157
3195
|
|
|
3158
3196
|
Get self-transfer spend transactions related to channel closes
|
package/index.js
CHANGED
|
@@ -70,6 +70,7 @@ const {getPublicKey} = require('lightning');
|
|
|
70
70
|
const {getRouteConfidence} = require('lightning');
|
|
71
71
|
const {getRouteThroughHops} = require('lightning');
|
|
72
72
|
const {getRouteToDestination} = require('lightning');
|
|
73
|
+
const {getSettlementStatus} = require('lightning');
|
|
73
74
|
const {getSweepTransactions} = require('lightning');
|
|
74
75
|
const {getTowerServerInfo} = require('lightning');
|
|
75
76
|
const {getUtxos} = require('lightning');
|
|
@@ -221,6 +222,7 @@ module.exports = {
|
|
|
221
222
|
getRouteConfidence,
|
|
222
223
|
getRouteThroughHops,
|
|
223
224
|
getRouteToDestination,
|
|
225
|
+
getSettlementStatus,
|
|
224
226
|
getSweepTransactions,
|
|
225
227
|
getTowerServerInfo,
|
|
226
228
|
getUtxos,
|
package/package.json
CHANGED
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
"bolt07": "1.8.2",
|
|
11
11
|
"cors": "2.8.5",
|
|
12
12
|
"express": "4.18.2",
|
|
13
|
-
"invoices": "2.2.
|
|
14
|
-
"lightning": "6.
|
|
13
|
+
"invoices": "2.2.2",
|
|
14
|
+
"lightning": "6.3.0",
|
|
15
15
|
"macaroon": "3.0.4",
|
|
16
16
|
"morgan": "1.10.0",
|
|
17
|
-
"ws": "8.
|
|
17
|
+
"ws": "8.11.0"
|
|
18
18
|
},
|
|
19
19
|
"description": "Interaction helper for your Lightning Network daemon",
|
|
20
20
|
"devDependencies": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"bn.js": "5.2.1",
|
|
29
29
|
"bs58check": "2.1.2",
|
|
30
30
|
"ecpair": "2.1.0",
|
|
31
|
-
"ln-docker-daemons": "3.1.
|
|
31
|
+
"ln-docker-daemons": "3.1.5",
|
|
32
32
|
"p2tr": "1.3.2",
|
|
33
33
|
"portfinder": "1.0.32",
|
|
34
34
|
"psbt": "2.7.1",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"integration-test-0.14.4": "DOCKER_LND_VERSION=v0.14.4-beta npm run test",
|
|
64
64
|
"test": "echo $DOCKER_LND_VERSION && tap -j 2 --branches=1 --functions=1 --lines=1 --statements=1 -t 200 test/autopilotrpc-integration/*.js test/chainrpc-integration/*.js test/integration/*.js test/invoicesrpc-integration/*.js test/peersrpc-integration/*.js test/routerrpc-integration/*.js test/signerrpc-integration/*.js test/tower_clientrpc-integration/*.js test/tower_serverrpc-integration/*.js test/walletrpc-integration/*.js"
|
|
65
65
|
},
|
|
66
|
-
"version": "54.
|
|
66
|
+
"version": "54.3.1"
|
|
67
67
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const asyncRetry = require('async/retry');
|
|
2
|
+
const {setupChannel} = require('ln-docker-daemons');
|
|
3
|
+
const {spawnLightningCluster} = require('ln-docker-daemons');
|
|
4
|
+
const {test} = require('@alexbosworth/tap');
|
|
5
|
+
|
|
6
|
+
const {createInvoice} = require('./../../');
|
|
7
|
+
const {getSettlementStatus} = require('./../../');
|
|
8
|
+
const {pay} = require('./../../');
|
|
9
|
+
|
|
10
|
+
const fakeChannelId = '1x1x1';
|
|
11
|
+
const interval = 100;
|
|
12
|
+
const size = 2;
|
|
13
|
+
const times = 1000;
|
|
14
|
+
const tokens = 100;
|
|
15
|
+
|
|
16
|
+
// Get the settlement status of an HTLC
|
|
17
|
+
test(`Get settlement status`, async ({end, equal, strictSame}) => {
|
|
18
|
+
const {kill, nodes} = await spawnLightningCluster({size});
|
|
19
|
+
|
|
20
|
+
const [{generate, lnd}, target] = nodes;
|
|
21
|
+
|
|
22
|
+
// LND 0.15.4 and below do not support settlement status lookups
|
|
23
|
+
try {
|
|
24
|
+
await getSettlementStatus({
|
|
25
|
+
lnd: target.lnd,
|
|
26
|
+
channel: fakeChannelId,
|
|
27
|
+
payment: Number(),
|
|
28
|
+
});
|
|
29
|
+
} catch (err) {
|
|
30
|
+
const [code, message] = err;
|
|
31
|
+
|
|
32
|
+
if (code !== 404) {
|
|
33
|
+
equal(code, 501, 'Method unsupported');
|
|
34
|
+
equal(message, 'LookupHtlcMethodUnsupported', 'Got unsupported message');
|
|
35
|
+
|
|
36
|
+
await kill({});
|
|
37
|
+
|
|
38
|
+
return end();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const channel = await setupChannel({generate, lnd, to: target});
|
|
44
|
+
|
|
45
|
+
const {request} = await createInvoice({tokens, lnd: target.lnd});
|
|
46
|
+
|
|
47
|
+
const payment = await pay({lnd, request});
|
|
48
|
+
|
|
49
|
+
const settlement = await asyncRetry({interval, times}, async () => {
|
|
50
|
+
return await getSettlementStatus({
|
|
51
|
+
lnd: target.lnd,
|
|
52
|
+
channel: channel.id,
|
|
53
|
+
payment: Number(),
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
strictSame(settlement, {is_onchain: false, is_settled: true}, 'Status');
|
|
58
|
+
} catch (err) {
|
|
59
|
+
equal(err, null, 'Expected no error');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
await kill({});
|
|
63
|
+
|
|
64
|
+
return end();
|
|
65
|
+
});
|