mirror of
https://github.com/alexbosworth/balanceofsatoshis.git
synced 2026-08-13 12:33:37 +02:00
fix testnet swaps
This commit is contained in:
parent
232afeea6a
commit
e5508460b8
14 changed files with 456 additions and 459 deletions
|
|
@ -1,5 +1,10 @@
|
|||
# Versions
|
||||
|
||||
## Version 6.2.1
|
||||
|
||||
- `chain-receive`: Fix method on testnet
|
||||
- `increase-inbound-liquidity`: Fix method on testnet
|
||||
|
||||
## Version 6.2.0
|
||||
|
||||
- `fees`: Allow specifying formulas with `--set-fee-rate`, including INBOUND_FEE_RATE
|
||||
|
|
|
|||
28
bos
28
bos
|
|
@ -9,6 +9,7 @@ const {statSync} = require('fs');
|
|||
const {unlink} = require('fs');
|
||||
const {writeFile} = require('fs');
|
||||
|
||||
const fetch = require('node-fetch');
|
||||
const {findKey} = require('ln-sync');
|
||||
const inquirer = require('inquirer');
|
||||
const prog = require('caporal');
|
||||
|
|
@ -38,12 +39,12 @@ const {getFeesPaid} = require('./routing');
|
|||
const {getForwards} = require('./network');
|
||||
const {getLiquidity} = require('./balances');
|
||||
const {getLnds} = require('./lnd');
|
||||
const {getPaidService} = require('./swaps');
|
||||
const {getPeers} = require('./network');
|
||||
const {getPriceChart} = require('./fiat');
|
||||
const {getReceivedChart} = require('./wallets');
|
||||
const {getReport} = require('./wallets');
|
||||
const {getSwapCost} = require('./swaps');
|
||||
const {getSwapService} = require('./swaps');
|
||||
const {getUtxos} = require('./chain');
|
||||
const {ignoreFromAvoid} = require('./routing');
|
||||
const {lndCredentials} = require('./lnd');
|
||||
|
|
@ -220,11 +221,13 @@ prog
|
|||
.option('--node <node_name>', 'Node to receive funds on')
|
||||
.option('--recovery <refund_recovery>', 'Attempt refund of swap')
|
||||
.option('--refund-address <refund_address>', 'Refund address for swap')
|
||||
.option('--service-socket <swap_service_socket>', 'host:port for service')
|
||||
.option('--test-refund', 'Reduce refund timeout height to test refund')
|
||||
.action((args, options, logger) => {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
return swapIn({
|
||||
fetch,
|
||||
logger,
|
||||
api_key: options.apiKey || undefined,
|
||||
in_through: options.in || undefined,
|
||||
|
|
@ -234,6 +237,7 @@ prog
|
|||
node: options.node,
|
||||
recovery: options.recovery,
|
||||
refund_address: options.refundAddress,
|
||||
socket: options.serviceSocket || undefined,
|
||||
tokens: args.amount,
|
||||
},
|
||||
returnObject({exit, logger, reject, resolve}));
|
||||
|
|
@ -632,6 +636,7 @@ prog
|
|||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
return swapOut({
|
||||
fetch,
|
||||
logger,
|
||||
api_key: options.apiKey || undefined,
|
||||
avoid: flatten([options.avoid].filter(n => !!n)),
|
||||
|
|
@ -695,22 +700,32 @@ prog
|
|||
.visible(false)
|
||||
.argument('<type>', 'Liquidity direction', swapTypes)
|
||||
.argument('<amount>', 'Amount of liquidity to get quote for', INT)
|
||||
.argument('<api-key>', 'Swap API key to use', hexMatch)
|
||||
.option('--above <tokens>', 'Return amount above watermark', INT)
|
||||
.option('--api-key <api_key>', 'Pre-paid API key to use', hexMatch)
|
||||
.option('--fast', 'Avoid any server batching wait time')
|
||||
.option('--node <node_name>', 'Node to get liquidity cost')
|
||||
.option('--service-socket', 'Specify a custom swap service address')
|
||||
.action((args, options, logger) => {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const {service} = await getSwapService({logger, node: options.node});
|
||||
const {lnd} = await authenticatedLnd({logger, node: options.node});
|
||||
|
||||
const {macaroon, preimage, service} = await getPaidService({
|
||||
fetch,
|
||||
lnd,
|
||||
logger,
|
||||
socket: options.serviceSocket,
|
||||
token: args.apiKey,
|
||||
});
|
||||
|
||||
return getSwapCost({
|
||||
lnd,
|
||||
logger,
|
||||
macaroon,
|
||||
preimage,
|
||||
service,
|
||||
above: options.above,
|
||||
api_key: options.apiKey || undefined,
|
||||
is_fast: options.fast || undefined,
|
||||
lnd: (await authenticatedLnd({logger, node: options.node})).lnd,
|
||||
tokens: args.amount,
|
||||
type: args.type,
|
||||
},
|
||||
|
|
@ -1120,10 +1135,12 @@ prog
|
|||
.option('--macaroon <macaroon>', 'Hex encoded macaroon of swap API key')
|
||||
.option('--node <node_name>', 'Node to use to pay for API key')
|
||||
.option('--preimage <preimage>', 'Hex encoded preimage of swap API key')
|
||||
.option('--service-socket <swap_service_socket>', 'host:port for service')
|
||||
.action((args, options, logger) => {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
return swapApiKey({
|
||||
fetch,
|
||||
logger,
|
||||
api_key: options.apiKey,
|
||||
is_purchase: options.purchase,
|
||||
|
|
@ -1131,6 +1148,7 @@ prog
|
|||
macaroon: options.macaroon,
|
||||
node: options.node,
|
||||
preimage: options.preimage,
|
||||
socket: options.serviceSocket,
|
||||
},
|
||||
returnObject({logger, reject, resolve}));
|
||||
} catch (err) {
|
||||
|
|
|
|||
|
|
@ -121,6 +121,8 @@ module.exports = (args, cbk) => {
|
|||
|
||||
const method = !features ? subscribeToProbe : subscribeToProbeForRoute;
|
||||
|
||||
const timeoutMinutes = minutesAsMs((args.timeout_minutes || Number()));
|
||||
|
||||
const sub = method({
|
||||
cltv_delta: args.cltv_delta,
|
||||
destination: args.destination,
|
||||
|
|
@ -135,7 +137,7 @@ module.exports = (args, cbk) => {
|
|||
outgoing_channel: args.outgoing_channel,
|
||||
path_timeout_ms: pathTimeoutMs,
|
||||
payment: args.payment,
|
||||
probe_timeout_ms: minutesAsMs((args.timeout_minutes || Number())),
|
||||
probe_timeout_ms: timeoutMinutes || undefined,
|
||||
routes: args.routes,
|
||||
tokens: args.tokens,
|
||||
total_mtokens: mtokens,
|
||||
|
|
|
|||
682
package-lock.json
generated
682
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "balanceofsatoshis",
|
||||
"version": "6.2.0",
|
||||
"version": "6.2.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -249,9 +249,9 @@
|
|||
"integrity": "sha512-LIbt3dAK7v7VPoDQ/hNO3KSlUdPLkO74m1A/c+guKhoBiY1192F2Nt0moHU0wyWw/sUV9zAnw1GPyGsS7401ZQ=="
|
||||
},
|
||||
"@datastructures-js/priority-queue": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.1.tgz",
|
||||
"integrity": "sha512-2i9+/23VjcJRZrPRoQtuQwL8lMy/FVoRTMurZAV+1x0lZxCJjUUo8m83SC0ndCycFmiNjxdWVns/vsHWtj4bpQ==",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.2.tgz",
|
||||
"integrity": "sha512-S4fXJcsPdqEp2bbKZlH7suSiZ0lqmIs8n5BXqQXB+7/lA9LSK/Ng0hIehTjgETfe7n3g4ZVLoyjEUWHEbHJFdQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/heap": "^2.0.0"
|
||||
}
|
||||
|
|
@ -363,11 +363,6 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
|
||||
},
|
||||
"@types/long": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
|
||||
|
|
@ -670,9 +665,9 @@
|
|||
"integrity": "sha512-Al3nHGQGqDYqqinXhQzmwmcRToe/3WyBv4N8aZc5Pef8xw2neZlR9VPi84Sa23JtgWcucu18HxVZrnI0fn2etw=="
|
||||
},
|
||||
"bignumber.js": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
|
||||
"integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
|
||||
"integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.1.0",
|
||||
|
|
@ -856,9 +851,9 @@
|
|||
}
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.1.tgz",
|
||||
"integrity": "sha512-BX1LjpvU7qLyv8LRpYsq7p6fM2SiECWtfwjzx2/cStT0YFJhS74qFw5CfivoRz6ZEg3W7g1Exrv0tmDRkKeBkA=="
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
},
|
||||
"boxen": {
|
||||
"version": "4.2.0",
|
||||
|
|
@ -881,11 +876,10 @@
|
|||
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
|
|
@ -1945,18 +1939,18 @@
|
|||
"dev": true
|
||||
},
|
||||
"flow-parser": {
|
||||
"version": "0.134.0",
|
||||
"resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.134.0.tgz",
|
||||
"integrity": "sha512-VmRba5YXKmVqIH3xNzUJ4pNobxXEOl6h36m+0f5dZ6/av9YlRpls/yBnPESQ4qBUbyyp7iqoc1Feo1lFw3u1YQ==",
|
||||
"version": "0.135.0",
|
||||
"resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.135.0.tgz",
|
||||
"integrity": "sha512-ev8SvmG+XU9D6WgHVezP4kY3Myr1tJvTUTEi7mbhhj+rn889K7YXdakte6oqXNLIJYJ2f5Fuw18zXTVa1NO8Kw==",
|
||||
"dev": true
|
||||
},
|
||||
"flow-remove-types": {
|
||||
"version": "2.134.0",
|
||||
"resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.134.0.tgz",
|
||||
"integrity": "sha512-NVtghveE8GbU+980DRZQ0NZYGE7l7FIZm/UU8Ft7QoFgpsU8Tauv/WRLX+Exj4WT+GbAndmyUWZFOtcBfeT+gg==",
|
||||
"version": "2.135.0",
|
||||
"resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.135.0.tgz",
|
||||
"integrity": "sha512-l/9INhkrrTD+91k35P0eiF94E1cOpjfd86WVVqRwQRjamjSwTKKgu7MDLel3DGmBB09I2AXv7IjacNiwt0yc1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"flow-parser": "^0.134.0",
|
||||
"flow-parser": "^0.135.0",
|
||||
"pirates": "^3.0.2",
|
||||
"vlq": "^0.2.1"
|
||||
}
|
||||
|
|
@ -2109,9 +2103,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"goldengate": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/goldengate/-/goldengate-7.0.2.tgz",
|
||||
"integrity": "sha512-ION2SoSTsePG9boPyREvPbH0f3bz9ZnYfUUaZsgPlEwj+od7+vGvHTQRdEvg3hl4Yod2U+gxNG7SpMHsY9Yuaw==",
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/goldengate/-/goldengate-7.1.0.tgz",
|
||||
"integrity": "sha512-LwQDMX/kEKqBUoaBI8ssgbJ9f1HWbRv62pMbMfIjGxqrH4HSB8fd3ZkMBqDLicA4J5LfFIxvUjn5aqo6KgvVvg==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"@mitmaro/http-authorization-header": "1.0.0",
|
||||
|
|
@ -2124,95 +2118,17 @@
|
|||
"bn.js": "5.1.3",
|
||||
"cbor": "5.1.0",
|
||||
"grpc": "1.24.3",
|
||||
"ln-service": "49.10.0",
|
||||
"ln-service": "49.14.0",
|
||||
"macaroon": "3.0.4",
|
||||
"node-fetch": "2.6.1",
|
||||
"pushdata-bitcoin": "1.0.1",
|
||||
"varuint-bitcoin": "1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bip174": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz",
|
||||
"integrity": "sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ=="
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt07": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.5.2.tgz",
|
||||
"integrity": "sha512-P7LNOnBLtRYe0v30JvVR2xVvWWNrUt4IZ19njFRJb1NMhEx2xe+O0G7x4WZTWB7bHPAdkfR76l9F7jEVxizjlQ==",
|
||||
"requires": {
|
||||
"bn.js": "5.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
|
||||
"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"invoices": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.3.tgz",
|
||||
"integrity": "sha512-+RZmDmgVXvn6hAzGUqdl+1q8lEm9Th5XO/yg2aAIHpxhBc+BrrdCaMjjsk+weoZp9jm6LA92Dt2bzo+4ou1SVw==",
|
||||
"requires": {
|
||||
"bech32": "1.1.4",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"secp256k1": "4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bitcoinjs-lib": {
|
||||
"version": "5.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz",
|
||||
"integrity": "sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw==",
|
||||
"requires": {
|
||||
"bech32": "^1.1.2",
|
||||
"bip174": "^1.0.1",
|
||||
"bip32": "^2.0.4",
|
||||
"bip66": "^1.1.0",
|
||||
"bitcoin-ops": "^1.4.0",
|
||||
"bs58check": "^2.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"create-hmac": "^1.1.3",
|
||||
"merkle-lib": "^2.0.10",
|
||||
"pushdata-bitcoin": "^1.0.1",
|
||||
"randombytes": "^2.0.1",
|
||||
"tiny-secp256k1": "^1.1.1",
|
||||
"typeforce": "^1.11.3",
|
||||
"varuint-bitcoin": "^1.0.4",
|
||||
"wif": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "49.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.10.0.tgz",
|
||||
"integrity": "sha512-XK3gFc+Qowy9SquJ37UUktn61dlyoAR/4eN6eV2WPSY4DaSahZ/Xwe9j3ljXnZjTL5FClNzAfPwAhS/ljrgbhw==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "4.1.1",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cors": "2.8.5",
|
||||
"express": "4.17.1",
|
||||
"invoices": "1.1.3",
|
||||
"is-base64": "1.1.0",
|
||||
"lightning": "2.0.44",
|
||||
"macaroon": "3.0.4",
|
||||
"morgan": "1.10.0",
|
||||
"ws": "7.3.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -2501,11 +2417,10 @@
|
|||
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
|
|
@ -2634,11 +2549,6 @@
|
|||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -3114,9 +3024,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.44",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.44.tgz",
|
||||
"integrity": "sha512-Xi8C0FmxIZ1Pg23JlXRoXc7ELEtskiWI7jfcdr1oYWpVlNxUJKc4ALrUMofqo+EXaoHhtEvc6byyHtxuNl6iLw==",
|
||||
"version": "2.0.54",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.54.tgz",
|
||||
"integrity": "sha512-NbKno+RNlOUIIND9s5DwfBwPvUcEfWhaiRKHzOsOJB9NZZUgzczjSK9aO84yd5Sen/fauMyA0jNHbBdBp7jtqQ==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
|
|
@ -3124,75 +3034,19 @@
|
|||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"bolt07": "1.6.0",
|
||||
"bolt09": "0.1.2",
|
||||
"cbor": "5.1.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.3"
|
||||
"invoices": "1.1.4",
|
||||
"psbt": "1.1.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"bip174": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz",
|
||||
"integrity": "sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ=="
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt07": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.5.2.tgz",
|
||||
"integrity": "sha512-P7LNOnBLtRYe0v30JvVR2xVvWWNrUt4IZ19njFRJb1NMhEx2xe+O0G7x4WZTWB7bHPAdkfR76l9F7jEVxizjlQ==",
|
||||
"requires": {
|
||||
"bn.js": "5.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
|
||||
"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"invoices": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.3.tgz",
|
||||
"integrity": "sha512-+RZmDmgVXvn6hAzGUqdl+1q8lEm9Th5XO/yg2aAIHpxhBc+BrrdCaMjjsk+weoZp9jm6LA92Dt2bzo+4ou1SVw==",
|
||||
"requires": {
|
||||
"bech32": "1.1.4",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"secp256k1": "4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bitcoinjs-lib": {
|
||||
"version": "5.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz",
|
||||
"integrity": "sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw==",
|
||||
"requires": {
|
||||
"bech32": "^1.1.2",
|
||||
"bip174": "^1.0.1",
|
||||
"bip32": "^2.0.4",
|
||||
"bip66": "^1.1.0",
|
||||
"bitcoin-ops": "^1.4.0",
|
||||
"bs58check": "^2.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"create-hmac": "^1.1.3",
|
||||
"merkle-lib": "^2.0.10",
|
||||
"pushdata-bitcoin": "^1.0.1",
|
||||
"randombytes": "^2.0.1",
|
||||
"tiny-secp256k1": "^1.1.1",
|
||||
"typeforce": "^1.11.3",
|
||||
"varuint-bitcoin": "^1.0.4",
|
||||
"wif": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -3208,6 +3062,14 @@
|
|||
"ln-service": "49.10.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@datastructures-js/priority-queue": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.1.tgz",
|
||||
"integrity": "sha512-2i9+/23VjcJRZrPRoQtuQwL8lMy/FVoRTMurZAV+1x0lZxCJjUUo8m83SC0ndCycFmiNjxdWVns/vsHWtj4bpQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/heap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"bip174": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz",
|
||||
|
|
@ -3233,6 +3095,33 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.1.tgz",
|
||||
"integrity": "sha512-BX1LjpvU7qLyv8LRpYsq7p6fM2SiECWtfwjzx2/cStT0YFJhS74qFw5CfivoRz6ZEg3W7g1Exrv0tmDRkKeBkA=="
|
||||
},
|
||||
"goldengate": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/goldengate/-/goldengate-7.0.2.tgz",
|
||||
"integrity": "sha512-ION2SoSTsePG9boPyREvPbH0f3bz9ZnYfUUaZsgPlEwj+od7+vGvHTQRdEvg3hl4Yod2U+gxNG7SpMHsY9Yuaw==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"@mitmaro/http-authorization-header": "1.0.0",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bip65": "1.0.3",
|
||||
"bip68": "1.0.4",
|
||||
"bitcoin-ops": "1.4.1",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"cbor": "5.1.0",
|
||||
"grpc": "1.24.3",
|
||||
"ln-service": "49.10.0",
|
||||
"macaroon": "3.0.4",
|
||||
"pushdata-bitcoin": "1.0.1",
|
||||
"varuint-bitcoin": "1.1.2"
|
||||
}
|
||||
},
|
||||
"invoices": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.3.tgz",
|
||||
|
|
@ -3270,6 +3159,25 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.44",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.44.tgz",
|
||||
"integrity": "sha512-Xi8C0FmxIZ1Pg23JlXRoXc7ELEtskiWI7jfcdr1oYWpVlNxUJKc4ALrUMofqo+EXaoHhtEvc6byyHtxuNl6iLw==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cbor": "5.1.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.3"
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "49.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.10.0.tgz",
|
||||
|
|
@ -3295,9 +3203,9 @@
|
|||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "49.12.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.12.0.tgz",
|
||||
"integrity": "sha512-giGNeXH/d2vpzny9HdxTp7DSHN+gnL2Qz8U4RHW5sIOOdc4dXR4E/G1H5cpKovX0Ix4IuQ8FlyvwwXwMHPJHEw==",
|
||||
"version": "49.14.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.14.0.tgz",
|
||||
"integrity": "sha512-01CoIfdo1vRQfc3siVGAZEDaKv3IrAwpjLLCtOa8aYxIwjQN+a7YC4GIBysbxiOaF0E+eZZIGz8Y76U7zWHhEQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "4.1.2",
|
||||
"async": "3.2.0",
|
||||
|
|
@ -3310,48 +3218,16 @@
|
|||
"express": "4.17.1",
|
||||
"invoices": "1.1.4",
|
||||
"is-base64": "1.1.0",
|
||||
"lightning": "2.0.50",
|
||||
"lightning": "2.0.54",
|
||||
"macaroon": "3.0.4",
|
||||
"morgan": "1.10.0",
|
||||
"ws": "7.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@datastructures-js/priority-queue": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.2.tgz",
|
||||
"integrity": "sha512-S4fXJcsPdqEp2bbKZlH7suSiZ0lqmIs8n5BXqQXB+7/lA9LSK/Ng0hIehTjgETfe7n3g4ZVLoyjEUWHEbHJFdQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/heap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.50",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.50.tgz",
|
||||
"integrity": "sha512-vLD7N0OH5prJ+Ebt0lYestUuVKRmqMapH00jK+SR8IxIxzT6JM/KpMSJNWujUkP6yRSwBPF7QSUrIf/U1nk/FQ==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.6.0",
|
||||
"bolt09": "0.1.2",
|
||||
"cbor": "5.1.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -3375,11 +3251,6 @@
|
|||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.49",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.49.tgz",
|
||||
|
|
@ -3417,27 +3288,130 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@datastructures-js/priority-queue": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.2.tgz",
|
||||
"integrity": "sha512-S4fXJcsPdqEp2bbKZlH7suSiZ0lqmIs8n5BXqQXB+7/lA9LSK/Ng0hIehTjgETfe7n3g4ZVLoyjEUWHEbHJFdQ==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.1.tgz",
|
||||
"integrity": "sha512-2i9+/23VjcJRZrPRoQtuQwL8lMy/FVoRTMurZAV+1x0lZxCJjUUo8m83SC0ndCycFmiNjxdWVns/vsHWtj4bpQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/heap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"bip174": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz",
|
||||
"integrity": "sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ=="
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"bolt07": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.5.2.tgz",
|
||||
"integrity": "sha512-P7LNOnBLtRYe0v30JvVR2xVvWWNrUt4IZ19njFRJb1NMhEx2xe+O0G7x4WZTWB7bHPAdkfR76l9F7jEVxizjlQ==",
|
||||
"requires": {
|
||||
"bn.js": "5.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
|
||||
"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.1.tgz",
|
||||
"integrity": "sha512-BX1LjpvU7qLyv8LRpYsq7p6fM2SiECWtfwjzx2/cStT0YFJhS74qFw5CfivoRz6ZEg3W7g1Exrv0tmDRkKeBkA=="
|
||||
},
|
||||
"goldengate": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/goldengate/-/goldengate-7.0.2.tgz",
|
||||
"integrity": "sha512-ION2SoSTsePG9boPyREvPbH0f3bz9ZnYfUUaZsgPlEwj+od7+vGvHTQRdEvg3hl4Yod2U+gxNG7SpMHsY9Yuaw==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"@mitmaro/http-authorization-header": "1.0.0",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bip65": "1.0.3",
|
||||
"bip68": "1.0.4",
|
||||
"bitcoin-ops": "1.4.1",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"cbor": "5.1.0",
|
||||
"grpc": "1.24.3",
|
||||
"ln-service": "49.10.0",
|
||||
"macaroon": "3.0.4",
|
||||
"pushdata-bitcoin": "1.0.1",
|
||||
"varuint-bitcoin": "1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"invoices": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.3.tgz",
|
||||
"integrity": "sha512-+RZmDmgVXvn6hAzGUqdl+1q8lEm9Th5XO/yg2aAIHpxhBc+BrrdCaMjjsk+weoZp9jm6LA92Dt2bzo+4ou1SVw==",
|
||||
"requires": {
|
||||
"bech32": "1.1.4",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"secp256k1": "4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bitcoinjs-lib": {
|
||||
"version": "5.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz",
|
||||
"integrity": "sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw==",
|
||||
"requires": {
|
||||
"bech32": "^1.1.2",
|
||||
"bip174": "^1.0.1",
|
||||
"bip32": "^2.0.4",
|
||||
"bip66": "^1.1.0",
|
||||
"bitcoin-ops": "^1.4.0",
|
||||
"bs58check": "^2.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"create-hmac": "^1.1.3",
|
||||
"merkle-lib": "^2.0.10",
|
||||
"pushdata-bitcoin": "^1.0.1",
|
||||
"randombytes": "^2.0.1",
|
||||
"tiny-secp256k1": "^1.1.1",
|
||||
"typeforce": "^1.11.3",
|
||||
"varuint-bitcoin": "^1.0.4",
|
||||
"wif": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "49.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.10.0.tgz",
|
||||
"integrity": "sha512-XK3gFc+Qowy9SquJ37UUktn61dlyoAR/4eN6eV2WPSY4DaSahZ/Xwe9j3ljXnZjTL5FClNzAfPwAhS/ljrgbhw==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "4.1.1",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cors": "2.8.5",
|
||||
"express": "4.17.1",
|
||||
"invoices": "1.1.3",
|
||||
"is-base64": "1.1.0",
|
||||
"lightning": "2.0.44",
|
||||
"macaroon": "3.0.4",
|
||||
"morgan": "1.10.0",
|
||||
"ws": "7.3.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.50",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.50.tgz",
|
||||
"integrity": "sha512-vLD7N0OH5prJ+Ebt0lYestUuVKRmqMapH00jK+SR8IxIxzT6JM/KpMSJNWujUkP6yRSwBPF7QSUrIf/U1nk/FQ==",
|
||||
"version": "2.0.44",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.44.tgz",
|
||||
"integrity": "sha512-Xi8C0FmxIZ1Pg23JlXRoXc7ELEtskiWI7jfcdr1oYWpVlNxUJKc4ALrUMofqo+EXaoHhtEvc6byyHtxuNl6iLw==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
|
|
@ -3445,12 +3419,51 @@
|
|||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.6.0",
|
||||
"bolt09": "0.1.2",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cbor": "5.1.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.4"
|
||||
"invoices": "1.1.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"invoices": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.3.tgz",
|
||||
"integrity": "sha512-+RZmDmgVXvn6hAzGUqdl+1q8lEm9Th5XO/yg2aAIHpxhBc+BrrdCaMjjsk+weoZp9jm6LA92Dt2bzo+4ou1SVw==",
|
||||
"requires": {
|
||||
"bech32": "1.1.4",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.3",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"secp256k1": "4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bitcoinjs-lib": {
|
||||
"version": "5.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz",
|
||||
"integrity": "sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw==",
|
||||
"requires": {
|
||||
"bech32": "^1.1.2",
|
||||
"bip174": "^1.0.1",
|
||||
"bip32": "^2.0.4",
|
||||
"bip66": "^1.1.0",
|
||||
"bitcoin-ops": "^1.4.0",
|
||||
"bs58check": "^2.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"create-hmac": "^1.1.3",
|
||||
"merkle-lib": "^2.0.10",
|
||||
"pushdata-bitcoin": "^1.0.1",
|
||||
"randombytes": "^2.0.1",
|
||||
"tiny-secp256k1": "^1.1.1",
|
||||
"typeforce": "^1.11.3",
|
||||
"varuint-bitcoin": "^1.0.4",
|
||||
"wif": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
|
|
@ -3473,6 +3486,48 @@
|
|||
"macaroon": "3.0.4",
|
||||
"morgan": "1.10.0",
|
||||
"ws": "7.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@datastructures-js/priority-queue": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-4.1.2.tgz",
|
||||
"integrity": "sha512-S4fXJcsPdqEp2bbKZlH7suSiZ0lqmIs8n5BXqQXB+7/lA9LSK/Ng0hIehTjgETfe7n3g4ZVLoyjEUWHEbHJFdQ==",
|
||||
"requires": {
|
||||
"@datastructures-js/heap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"bolt07": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.6.0.tgz",
|
||||
"integrity": "sha512-c+o1FdDxsmrCmrcqW6YRpk/dHDXk3frqHd1552b0JMXM2Kp6K74dbj74vioeYYUTzwyXB3zZFh9g2OZBg3JcYQ==",
|
||||
"requires": {
|
||||
"bn.js": "5.1.3"
|
||||
}
|
||||
},
|
||||
"bolt09": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt09/-/bolt09-0.1.2.tgz",
|
||||
"integrity": "sha512-UcjCWM5w0ncmeLy+L1ghgWBmFUD7F+tvYpYw/pi1PLXMhRJ10gHFbPjzX2CTMsU0ICb8CisIFBsd16DWaUd4FA=="
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.50",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.50.tgz",
|
||||
"integrity": "sha512-vLD7N0OH5prJ+Ebt0lYestUuVKRmqMapH00jK+SR8IxIxzT6JM/KpMSJNWujUkP6yRSwBPF7QSUrIf/U1nk/FQ==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.2.0",
|
||||
"bn.js": "5.1.3",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.6.0",
|
||||
"bolt09": "0.1.2",
|
||||
"cbor": "5.1.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3773,9 +3828,9 @@
|
|||
"integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q=="
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.29.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
|
||||
"integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA=="
|
||||
"version": "2.29.1",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
|
||||
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
|
||||
},
|
||||
"morgan": {
|
||||
"version": "1.10.0",
|
||||
|
|
@ -4557,130 +4612,15 @@
|
|||
}
|
||||
},
|
||||
"probing": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/probing/-/probing-1.2.0.tgz",
|
||||
"integrity": "sha512-i8VEApQgD8jI5V2taxOpIFSGSqtrC4lfNLFwf0j7YHBjStCCXpBqgO+a4iQVBOcb5TWk2yN99nqxvnPPIIasew==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/probing/-/probing-1.2.1.tgz",
|
||||
"integrity": "sha512-G1xDei0tamsy0fRsXzAB6dxb4PVhUNkV3ogwjNOQaFanFTNuax1m/wDQrRwMPLTA9pqGniQnWpwDjFAQmb+gpg==",
|
||||
"requires": {
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bolt07": "1.5.2",
|
||||
"invoices": "1.1.1",
|
||||
"ln-service": "49.4.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"bip174": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz",
|
||||
"integrity": "sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ=="
|
||||
},
|
||||
"bitcoinjs-lib": {
|
||||
"version": "5.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz",
|
||||
"integrity": "sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw==",
|
||||
"requires": {
|
||||
"bech32": "^1.1.2",
|
||||
"bip174": "^1.0.1",
|
||||
"bip32": "^2.0.4",
|
||||
"bip66": "^1.1.0",
|
||||
"bitcoin-ops": "^1.4.0",
|
||||
"bs58check": "^2.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"create-hmac": "^1.1.3",
|
||||
"merkle-lib": "^2.0.10",
|
||||
"pushdata-bitcoin": "^1.0.1",
|
||||
"randombytes": "^2.0.1",
|
||||
"tiny-secp256k1": "^1.1.1",
|
||||
"typeforce": "^1.11.3",
|
||||
"varuint-bitcoin": "^1.0.4",
|
||||
"wif": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
|
||||
"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
|
||||
},
|
||||
"bolt07": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.5.2.tgz",
|
||||
"integrity": "sha512-P7LNOnBLtRYe0v30JvVR2xVvWWNrUt4IZ19njFRJb1NMhEx2xe+O0G7x4WZTWB7bHPAdkfR76l9F7jEVxizjlQ==",
|
||||
"requires": {
|
||||
"bn.js": "5.1.2"
|
||||
}
|
||||
},
|
||||
"cbor": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/cbor/-/cbor-5.0.2.tgz",
|
||||
"integrity": "sha512-6JiKVURxxO92FntzTJq54QdN/8fBaBwD7+nNyGIAi1HL9mBgU3YK6ULV8k7WTuT/EwfRsjy3MuqDKlkQMCmfXg==",
|
||||
"requires": {
|
||||
"bignumber.js": "^9.0.0",
|
||||
"nofilter": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"invoices": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/invoices/-/invoices-1.1.1.tgz",
|
||||
"integrity": "sha512-vcqo6soFOi+BXbirhuw1KRsL9GKmIbG150dk8Pb5SH/GfECxxEJwnY6DX4qcHylTy3GJSfAsiBT2jFgpls33Aw==",
|
||||
"requires": {
|
||||
"bech32": "1.1.4",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.2",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"secp256k1": "4.0.1"
|
||||
}
|
||||
},
|
||||
"lightning": {
|
||||
"version": "2.0.30",
|
||||
"resolved": "https://registry.npmjs.org/lightning/-/lightning-2.0.30.tgz",
|
||||
"integrity": "sha512-XZFefXdOE4kPa/C533MwnTpgfidwM6M9s0Mtg7U0jmDA5dRB9VmMU8zssBAeo+cZ46fXEx7fz4lXLGQ6V7opUw==",
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "0.5.5",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.2",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cbor": "5.0.2",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.3",
|
||||
"invoices": "1.1.1"
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "49.4.2",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-49.4.2.tgz",
|
||||
"integrity": "sha512-ePUaLFWUEfz+QYAeaAvSAiHL33IpQILAEbMPFPc0KQ9/gFlWgnLDwBQmlIona2G10xePfOhTbaKz8Mjy0bQ+OA==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "4.1.1",
|
||||
"async": "3.2.0",
|
||||
"asyncjs-util": "1.2.3",
|
||||
"bitcoinjs-lib": "5.1.10",
|
||||
"bn.js": "5.1.2",
|
||||
"bolt07": "1.5.2",
|
||||
"bolt09": "0.1.1",
|
||||
"cors": "2.8.5",
|
||||
"express": "4.17.1",
|
||||
"invoices": "1.1.1",
|
||||
"is-base64": "1.1.0",
|
||||
"lightning": "2.0.30",
|
||||
"macaroon": "3.0.4",
|
||||
"morgan": "1.10.0",
|
||||
"ws": "7.3.1"
|
||||
}
|
||||
},
|
||||
"secp256k1": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.1.tgz",
|
||||
"integrity": "sha512-iGRjbGAKfXMqhtdkkuNxsgJQfJO8Oo78Rm7DAvsG3XKngq+nJIOGqrCSXcQqIVsmCj0wFanE5uTKFxV3T9j2wg==",
|
||||
"requires": {
|
||||
"elliptic": "^6.5.2",
|
||||
"node-addon-api": "^2.0.0",
|
||||
"node-gyp-build": "^4.2.0"
|
||||
}
|
||||
}
|
||||
"bolt07": "1.6.0",
|
||||
"invoices": "1.1.4",
|
||||
"ln-service": "49.14.0"
|
||||
}
|
||||
},
|
||||
"process-nextick-args": {
|
||||
|
|
@ -4720,9 +4660,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "13.13.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.21.tgz",
|
||||
"integrity": "sha512-tlFWakSzBITITJSxHV4hg4KvrhR/7h3xbJdSFbYJBVzKubrASbnnIFuSgolUh7qKGo/ZeJPKUfbZ0WS6Jp14DQ=="
|
||||
"version": "13.13.23",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.23.tgz",
|
||||
"integrity": "sha512-L31WmMJYKb15PDqFWutn8HNwrNK6CE6bkWgSB0dO1XpNoHrszVKV1Clcnfgd6c/oG54TVF8XQEvY2gQrW8K6Mw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5263,11 +5203,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
|
|
@ -6985,9 +6924,9 @@
|
|||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz",
|
||||
"integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw=="
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
|
|
@ -7107,11 +7046,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
11
package.json
11
package.json
|
|
@ -25,17 +25,18 @@
|
|||
"colorette": "1.2.1",
|
||||
"crypto-js": "4.0.0",
|
||||
"csv-parse": "4.12.0",
|
||||
"goldengate": "7.0.2",
|
||||
"goldengate": "7.1.0",
|
||||
"hot-formula-parser": "3.0.2",
|
||||
"ini": "1.3.5",
|
||||
"inquirer": "7.3.3",
|
||||
"invoices": "1.1.4",
|
||||
"ln-accounting": "4.1.10",
|
||||
"ln-service": "49.12.0",
|
||||
"ln-service": "49.14.0",
|
||||
"ln-sync": "0.3.0",
|
||||
"ln-telegram": "1.1.0",
|
||||
"moment": "2.29.0",
|
||||
"probing": "1.2.0",
|
||||
"moment": "2.29.1",
|
||||
"node-fetch": "2.6.1",
|
||||
"probing": "1.2.1",
|
||||
"psbt": "1.1.5",
|
||||
"qrcode-terminal": "0.12.0",
|
||||
"sanitize-filename": "1.6.3",
|
||||
|
|
@ -72,5 +73,5 @@
|
|||
"postpublish": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t alexbosworth/balanceofsatoshis --push .",
|
||||
"test": "tap test/arrays/*.js test/balances/*.js test/chain/*.js test/display/*.js test/encryption/*.js test/fiat/*.js test/lnd/*.js test/network/*.js test/nodes/*.js test/responses/*.js test/routing/*.js test/swaps/*.js test/wallets/*.js"
|
||||
},
|
||||
"version": "6.2.0"
|
||||
"version": "6.2.1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
const asyncAuto = require('async/auto');
|
||||
const {encode} = require('cbor');
|
||||
const {genericSwapService} = require('goldengate');
|
||||
const {getNetwork} = require('ln-sync');
|
||||
const {getSwapMacaroon} = require('goldengate');
|
||||
const {lightningLabsSwapService} = require('goldengate');
|
||||
|
|
@ -10,12 +11,18 @@ const {swapUserId} = require('goldengate');
|
|||
const decodeSwapApiKey = require('./decode_swap_api_key');
|
||||
const {probeDestination} = require('./../network');
|
||||
|
||||
const bitcoinTestnetNetwork = 'btctestnet';
|
||||
const bufferFromBase64 = base64 => Buffer.from(base64, 'base64');
|
||||
const bufferFromHex = hex => Buffer.from(hex, 'hex');
|
||||
const encodeCbor = json => encode(json).toString('hex');
|
||||
const httpMatch = /^https?:\/\//;
|
||||
const maxRoutingFee = 100;
|
||||
const testnetSocket = 'https://balanceofsatoshis.com:11010';
|
||||
|
||||
/** Get a paid swap service object
|
||||
|
||||
{
|
||||
fetch: <Fetch Function>
|
||||
lnd: <Authenticated LND gRPC API Object>
|
||||
logger: <Winston Logger Object>
|
||||
[socket]: <Custom Backing Service Socket String>
|
||||
|
|
@ -32,11 +39,15 @@ const maxRoutingFee = 100;
|
|||
token: <Authentication Token Hex String>
|
||||
}
|
||||
*/
|
||||
module.exports = ({lnd, logger, socket, token}, cbk) => {
|
||||
module.exports = ({fetch, lnd, logger, socket, token}, cbk) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
return asyncAuto({
|
||||
// Check arguments
|
||||
validate: cbk => {
|
||||
if (!fetch) {
|
||||
return cbk([400, 'ExpectedFetchFunctionToGetPaidService']);
|
||||
}
|
||||
|
||||
if (!lnd) {
|
||||
return cbk([400, 'ExpectedLndToGetPaidService']);
|
||||
}
|
||||
|
|
@ -61,11 +72,36 @@ module.exports = ({lnd, logger, socket, token}, cbk) => {
|
|||
// Get network
|
||||
getNetwork: ['validate', ({}, cbk) => getNetwork({lnd}, cbk)],
|
||||
|
||||
// Make a service object for the remote swap service
|
||||
remote: ['getNetwork', ({getNetwork}, cbk) => {
|
||||
// Exit early when using a generic service
|
||||
if (!!socket && httpMatch.test(socket)) {
|
||||
try {
|
||||
return cbk(null, genericSwapService({fetch, socket}));
|
||||
} catch (err) {
|
||||
return cbk([500, 'UnexpectedErrorInitiatingSwapService', {err}]);
|
||||
}
|
||||
}
|
||||
|
||||
const {network} = getNetwork;
|
||||
|
||||
// Exit early and use a generic service on testnet
|
||||
if (!socket && network === bitcoinTestnetNetwork) {
|
||||
return cbk(null, genericSwapService({fetch, socket: testnetSocket}));
|
||||
}
|
||||
|
||||
try {
|
||||
return cbk(null, lightningLabsSwapService({network, socket}));
|
||||
} catch (err) {
|
||||
return cbk([500, 'UnexpectedErrorInitiatingSwapService', {err}]);
|
||||
}
|
||||
}],
|
||||
|
||||
// Get an unpaid swap macaroon
|
||||
getUnpaidMacaroon: [
|
||||
'decodeToken',
|
||||
'getNetwork',
|
||||
({decodeToken, getNetwork}, cbk) =>
|
||||
'remote',
|
||||
({decodeToken, remote}, cbk) =>
|
||||
{
|
||||
// Exit early when there is already a service token macaroon
|
||||
if (!!decodeToken) {
|
||||
|
|
@ -75,17 +111,7 @@ module.exports = ({lnd, logger, socket, token}, cbk) => {
|
|||
});
|
||||
}
|
||||
|
||||
const {network} = getNetwork;
|
||||
|
||||
try {
|
||||
lightningLabsSwapService({network, socket});
|
||||
} catch (err) {
|
||||
return cbk([400, 'UnexpectedErrorInitiatingSwapService', {err}]);
|
||||
}
|
||||
|
||||
const {service} = lightningLabsSwapService({network, socket});
|
||||
|
||||
return getSwapMacaroon({service}, cbk);
|
||||
return getSwapMacaroon({service: remote.service}, cbk);
|
||||
}],
|
||||
|
||||
// Pay for the macaroon
|
||||
|
|
@ -110,44 +136,32 @@ module.exports = ({lnd, logger, socket, token}, cbk) => {
|
|||
cbk);
|
||||
}],
|
||||
|
||||
// Get the paid service object
|
||||
service: [
|
||||
// Final service method details
|
||||
paidService: [
|
||||
'decodeToken',
|
||||
'getNetwork',
|
||||
'getUnpaidMacaroon',
|
||||
'payForMacaroon',
|
||||
({decodeToken, getNetwork, getUnpaidMacaroon, payForMacaroon}, cbk) =>
|
||||
'remote',
|
||||
({decodeToken, getUnpaidMacaroon, payForMacaroon, remote}, cbk) =>
|
||||
{
|
||||
const {id} = getUnpaidMacaroon;
|
||||
const {macaroon} = getUnpaidMacaroon;
|
||||
const {network} = getNetwork;
|
||||
const {paid} = payForMacaroon;
|
||||
const {preimage} = payForMacaroon;
|
||||
const {service} = remote;
|
||||
|
||||
if (!decodeToken && !paid) {
|
||||
return cbk([400, 'FailedToPurchasePaidServiceTokens']);
|
||||
}
|
||||
|
||||
try {
|
||||
lightningLabsSwapService({macaroon, network, socket});
|
||||
} catch (err) {
|
||||
return cbk([400, 'FailedToFindSupportedSwapService', {err}]);
|
||||
}
|
||||
|
||||
const {service} = lightningLabsSwapService({
|
||||
macaroon,
|
||||
network,
|
||||
socket,
|
||||
});
|
||||
|
||||
const token = encodeCbor({
|
||||
macaroon: Buffer.from(macaroon, 'base64'),
|
||||
preimage: Buffer.from(preimage, 'hex'),
|
||||
macaroon: bufferFromBase64(macaroon),
|
||||
preimage: bufferFromHex(preimage),
|
||||
});
|
||||
|
||||
return cbk(null, {id, macaroon, paid, preimage, service, token});
|
||||
}],
|
||||
},
|
||||
returnResult({reject, resolve, of: 'service'}, cbk));
|
||||
returnResult({reject, resolve, of: 'paidService'}, cbk));
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,18 +10,17 @@ const {returnResult} = require('asyncjs-util');
|
|||
const {balanceFromTokens} = require('./../balances');
|
||||
const {cltvDeltaBuffer} = require('./constants');
|
||||
const {fastDelayMinutes} = require('./constants');
|
||||
const getPaidService = require('./get_paid_service');
|
||||
const {slowDelayMinutes} = require('./constants');
|
||||
|
||||
/** Get the cost of liquidity via swap
|
||||
|
||||
{
|
||||
[above]: <Cost Above Tokens Number>
|
||||
[api_key]: <CBOR API Key Hex Encoded String>
|
||||
[is_fast]: <Swap Out Is Immediate Bool>
|
||||
lnd: <Authenticated LND API Object>
|
||||
logger: <Winston Logger Object>
|
||||
service: <Swap Service API Object>
|
||||
macaroon: <Authenticated Service Macaroon Base64 String>
|
||||
preimage: <Authenticated Preimage Hex String>
|
||||
tokens: <Liquidity Tokens Number>
|
||||
type: <Liquidity Type String>
|
||||
}
|
||||
|
|
@ -44,6 +43,14 @@ module.exports = (args, cbk) => {
|
|||
return cbk([400, 'ExpectedLoggerToGetSwapCost']);
|
||||
}
|
||||
|
||||
if (!args.macaroon) {
|
||||
return cbk([400, 'ExpectedServiceMacaroonToGetSwapCost']);
|
||||
}
|
||||
|
||||
if (!args.preimage) {
|
||||
return cbk([400, 'ExpectedPaymentPreimageToGetSwapCost']);
|
||||
}
|
||||
|
||||
if (!args.service) {
|
||||
return cbk([400, 'ExpectedSwapServiceToGetSwapCost']);
|
||||
}
|
||||
|
|
@ -59,37 +66,22 @@ module.exports = (args, cbk) => {
|
|||
return cbk();
|
||||
},
|
||||
|
||||
// Get paid service
|
||||
getService: ['validate', ({}, cbk) => {
|
||||
// Exit early when there is no API key with the vanilla service
|
||||
if (!args.api_key) {
|
||||
return cbk(null, {service: args.service});
|
||||
}
|
||||
|
||||
return getPaidService({
|
||||
lnd: args.lnd,
|
||||
logger: args.logger,
|
||||
token: args.api_key,
|
||||
},
|
||||
cbk);
|
||||
}],
|
||||
|
||||
// Get swap terms
|
||||
getTerms: ['getService', ({getService}, cbk) => {
|
||||
getTerms: ['validate', ({}, cbk) => {
|
||||
switch (args.type) {
|
||||
case 'inbound':
|
||||
return getSwapOutTerms({
|
||||
macaroon: getService.macaroon,
|
||||
preimage: getService.preimage,
|
||||
service: getService.service,
|
||||
macaroon: args.macaroon,
|
||||
preimage: args.preimage,
|
||||
service: args.service,
|
||||
},
|
||||
cbk);
|
||||
|
||||
case 'outbound':
|
||||
return getSwapInTerms({
|
||||
macaroon: getService.macaroon,
|
||||
preimage: getService.preimage,
|
||||
service: getService.service,
|
||||
macaroon: args.macaroon,
|
||||
preimage: args.preimage,
|
||||
service: args.service,
|
||||
},
|
||||
cbk);
|
||||
|
||||
|
|
@ -104,12 +96,7 @@ module.exports = (args, cbk) => {
|
|||
}],
|
||||
|
||||
// Get a swap quote
|
||||
getQuote: [
|
||||
'getHeight',
|
||||
'getService',
|
||||
'getTerms',
|
||||
({getHeight, getService, getTerms}, cbk) =>
|
||||
{
|
||||
getQuote: ['getHeight', 'getTerms', ({getHeight, getTerms}, cbk) => {
|
||||
const cltv = getTerms.max_cltv_delta + getHeight.current_block_height;
|
||||
const swapDelay = !args.is_fast ? slowDelayMinutes : fastDelayMinutes;
|
||||
|
||||
|
|
@ -117,9 +104,9 @@ module.exports = (args, cbk) => {
|
|||
case 'inbound':
|
||||
return getSwapOutQuote({
|
||||
delay: moment().add(swapDelay, 'minutes').toISOString(),
|
||||
macaroon: getService.macaroon,
|
||||
preimage: getService.preimage,
|
||||
service: getService.service,
|
||||
macaroon: args.macaroon,
|
||||
preimage: args.preimage,
|
||||
service: args.service,
|
||||
timeout: cltv - cltvDeltaBuffer,
|
||||
tokens: args.tokens,
|
||||
},
|
||||
|
|
@ -127,9 +114,9 @@ module.exports = (args, cbk) => {
|
|||
|
||||
case 'outbound':
|
||||
return getSwapInQuote({
|
||||
macaroon: getService.macaroon,
|
||||
preimage: getService.preimage,
|
||||
service: getService.service,
|
||||
macaroon: args.macaroon,
|
||||
preimage: args.preimage,
|
||||
service: args.service,
|
||||
tokens: args.tokens,
|
||||
},
|
||||
cbk);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
const getPaidService = require('./get_paid_service');
|
||||
const getSwapCost = require('./get_swap_cost');
|
||||
const getSwapService = require('./get_swap_service');
|
||||
const rebalance = require('./rebalance');
|
||||
|
|
@ -7,6 +8,7 @@ const swapOut = require('./swap_out');
|
|||
const {swapTypes} = require('./constants');
|
||||
|
||||
module.exports = {
|
||||
getPaidService,
|
||||
getSwapCost,
|
||||
getSwapService,
|
||||
rebalance,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ const getPaidService = require('./get_paid_service');
|
|||
|
||||
{
|
||||
[api_key]: <Swap CBOR Encoded API Key Hex String>
|
||||
[fetch]: <Node Fetch Function>
|
||||
[is_purchase]: <Purchase a New API Key Bool>
|
||||
[macaroon]: <Macaroon Hex Encoded String>
|
||||
[lnd]: <Authenticated LND API gRPC API Object>
|
||||
|
|
@ -87,8 +88,10 @@ module.exports = (args, cbk) => {
|
|||
}
|
||||
|
||||
return getPaidService({
|
||||
fetch: args.fetch,
|
||||
lnd: args.lnd,
|
||||
logger: args.logger,
|
||||
socket: args.socket,
|
||||
token: args.api_key,
|
||||
},
|
||||
cbk);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ const {getNetwork} = require('ln-sync');
|
|||
const {getSwapInQuote} = require('goldengate');
|
||||
const {getSwapInTerms} = require('goldengate');
|
||||
const {getWalletInfo} = require('ln-service');
|
||||
const {lightningLabsSwapService} = require('goldengate');
|
||||
const moment = require('moment');
|
||||
const qrcode = require('qrcode-terminal');
|
||||
const {refundTransaction} = require('goldengate');
|
||||
|
|
@ -39,6 +38,7 @@ const waitForDepositMs = 1000 * 60 * 60 * 24;
|
|||
|
||||
{
|
||||
[api_key]: <API Key CBOR Hex String>
|
||||
fetch: <Fetch Function>
|
||||
[in_through]: <Request Inbound Payment Public Key Hex String>
|
||||
[is_refund_test]: <Alter Swap Timeout To Have Short Refund Bool>
|
||||
lnd: <Authenticated LND gRPC API Object>
|
||||
|
|
@ -46,6 +46,7 @@ const waitForDepositMs = 1000 * 60 * 60 * 24;
|
|||
[max_fee]: <Maximum Fee Tokens to Pay Number>
|
||||
[recovery]: <Recover In-Progress Swap String>
|
||||
[refund_address]: <Refund Address String>
|
||||
[socket]: <Swap Socket String>
|
||||
[tokens]: <Tokens Number>
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +61,10 @@ module.exports = (args, cbk) => {
|
|||
return asyncAuto({
|
||||
// Check arguments
|
||||
validate: cbk => {
|
||||
if (!args.fetch) {
|
||||
return cbk([400, 'ExpectedFetchFunctionToReceiveOnChain']);
|
||||
}
|
||||
|
||||
if (!args.logger) {
|
||||
return cbk([400, 'ExpectedLoggerToReceiveOnChain']);
|
||||
}
|
||||
|
|
@ -104,8 +109,10 @@ module.exports = (args, cbk) => {
|
|||
}
|
||||
|
||||
return getPaidService({
|
||||
fetch: args.fetch,
|
||||
lnd: args.lnd,
|
||||
logger: args.logger,
|
||||
socket: args.socket,
|
||||
token: args.api_key,
|
||||
},
|
||||
cbk);
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ const tokensAsBigUnit = tokens => ((tokens || 0) / 1e8).toFixed(8);
|
|||
[api_key]: <API Key CBOR String>
|
||||
[avoid]: [<Avoid Forwarding Through Node With Public Key Hex String>]
|
||||
confs: <Confirmations to Wait for Deposit Number>
|
||||
fetch: <Fetch Function>
|
||||
[is_fast]: <Execute Swap Immediately Bool>
|
||||
[is_dry_run]: <Avoid Actually Executing Operation Bool>
|
||||
[is_raw_recovery_shown]: <Show Raw Recovery Transactions Bool>
|
||||
|
|
@ -116,6 +117,10 @@ module.exports = (args, cbk) => {
|
|||
return cbk([400, 'ExpectedConfirmationsCountToConsiderReorgSafe']);
|
||||
}
|
||||
|
||||
if (!args.fetch) {
|
||||
return cbk([400, 'ExpectedFetchFunctionToInitiateSwapOut']);
|
||||
}
|
||||
|
||||
if (!args.lnd) {
|
||||
return cbk([400, 'ExpectedLndToInitiateSwapOut']);
|
||||
}
|
||||
|
|
@ -295,6 +300,7 @@ module.exports = (args, cbk) => {
|
|||
|
||||
return getPaidService({
|
||||
network,
|
||||
fetch: args.fetch,
|
||||
lnd: args.lnd,
|
||||
logger: args.logger,
|
||||
socket: args.socket,
|
||||
|
|
@ -795,6 +801,7 @@ module.exports = (args, cbk) => {
|
|||
'decodeFundingRequest',
|
||||
'findRouteForExecution',
|
||||
'findRoutesForFunding',
|
||||
'getMinSweepFee',
|
||||
({decodeFundingRequest, findRoutesForFunding}, cbk) =>
|
||||
{
|
||||
if (!!args.recovery) {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ const {getWalletInfo} = require('ln-service');
|
|||
const {handleBackupCommand} = require('ln-telegram');
|
||||
const {handleBlocknotifyCommand} = require('ln-telegram');
|
||||
const {handleConnectCommand} = require('ln-telegram');
|
||||
const {handleEarningsCommand} = require('ln-telegram');
|
||||
const {handleInvoiceCommand} = require('ln-telegram');
|
||||
const {handleLiquidityCommand} = require('ln-telegram');
|
||||
const {handleMempoolCommand} = require('ln-telegram');
|
||||
|
|
@ -239,7 +240,6 @@ module.exports = ({fs, id, lnds, logger, payments, request}, cbk) => {
|
|||
});
|
||||
|
||||
bot.command('earnings', ({message, replyWithMarkdown}) => {
|
||||
const {handleEarningsCommand} = require('ln-telegram');
|
||||
handleEarningsCommand({
|
||||
from: message.from.id,
|
||||
id: connectedId,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
const {encode} = require('cbor');
|
||||
const fetch = require('node-fetch');
|
||||
const {test} = require('tap');
|
||||
|
||||
const {getInfoResponse} = require('./../fixtures');
|
||||
|
|
@ -9,6 +10,7 @@ const makeToken = (m, p) => encode({macaroon: m, preimage: p}).toString('hex');
|
|||
|
||||
const makeArgs = override => {
|
||||
const args = {
|
||||
fetch,
|
||||
lnd: {
|
||||
default: {
|
||||
getInfo: ({}, cbk) => cbk(null, getInfoResponse),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ const {test} = require('tap');
|
|||
const {getInfoResponse} = require('./../fixtures');
|
||||
const {getSwapCost} = require('./../../swaps');
|
||||
|
||||
const macaroon = 'macaroon';
|
||||
const preimage = 'preimage';
|
||||
|
||||
const makeLnd = ({}) => {
|
||||
return {
|
||||
default: {
|
||||
|
|
@ -34,22 +37,24 @@ const makeTerms = ({max, min}) => ({
|
|||
|
||||
const tests = [
|
||||
{
|
||||
args: {lnd: {}, logger: {}},
|
||||
args: {macaroon, preimage, lnd: {}, logger: {}},
|
||||
description: 'Swap service is required',
|
||||
error: [400, 'ExpectedSwapServiceToGetSwapCost'],
|
||||
},
|
||||
{
|
||||
args: {lnd: {}, logger: {}, service: {}},
|
||||
args: {macaroon, preimage, lnd: {}, logger: {}, service: {}},
|
||||
description: 'Tokens are required',
|
||||
error: [400, 'ExpectedTokensCountToGetSwapCost'],
|
||||
},
|
||||
{
|
||||
args: {lnd: {}, logger: {}, service: {}, tokens: 1},
|
||||
args: {macaroon, preimage, lnd: {}, logger: {}, service: {}, tokens: 1},
|
||||
description: 'Swap type is required',
|
||||
error: [400, 'ExpectedLiquidityTypeToGetSwapCost'],
|
||||
},
|
||||
{
|
||||
args: {
|
||||
macaroon,
|
||||
preimage,
|
||||
lnd: {},
|
||||
logger: {},
|
||||
service: makeService({}),
|
||||
|
|
@ -61,6 +66,8 @@ const tests = [
|
|||
},
|
||||
{
|
||||
args: {
|
||||
macaroon,
|
||||
preimage,
|
||||
lnd: makeLnd({}),
|
||||
logger: {},
|
||||
service: {
|
||||
|
|
@ -75,6 +82,8 @@ const tests = [
|
|||
},
|
||||
{
|
||||
args: {
|
||||
macaroon,
|
||||
preimage,
|
||||
lnd: makeLnd({}),
|
||||
logger: {},
|
||||
service: {
|
||||
|
|
@ -91,6 +100,8 @@ const tests = [
|
|||
},
|
||||
{
|
||||
args: {
|
||||
macaroon,
|
||||
preimage,
|
||||
lnd: makeLnd({}),
|
||||
logger: {},
|
||||
service: makeService({}),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue