mirror of
https://github.com/aljazceru/cyphernode.git
synced 2025-12-17 04:35:14 +01:00
Merge branch 'releases/v0.8.0-fix_test_monitor' of https://github.com/BHodl/cyphernode into releases/v0.8.0-fix_test_monitor
This commit is contained in:
18
build.sh
18
build.sh
@@ -2,15 +2,15 @@
|
||||
|
||||
TRACING=1
|
||||
|
||||
# CYPHERNODE VERSION "v0.8.0"
|
||||
CONF_VERSION="v0.8.0-local"
|
||||
GATEKEEPER_VERSION="v0.8.0-local"
|
||||
TOR_VERSION="v0.8.0-local"
|
||||
PROXY_VERSION="v0.8.0-local"
|
||||
NOTIFIER_VERSION="v0.8.0-local"
|
||||
PROXYCRON_VERSION="v0.8.0-local"
|
||||
OTSCLIENT_VERSION="v0.8.0-local"
|
||||
PYCOIN_VERSION="v0.8.0-local"
|
||||
# CYPHERNODE VERSION "v0.9.0-dev"
|
||||
CONF_VERSION="v0.9.0-dev-local"
|
||||
GATEKEEPER_VERSION="v0.9.0-dev-local"
|
||||
TOR_VERSION="v0.9.0-dev-local"
|
||||
PROXY_VERSION="v0.9.0-dev-local"
|
||||
NOTIFIER_VERSION="v0.9.0-dev-local"
|
||||
PROXYCRON_VERSION="v0.9.0-dev-local"
|
||||
OTSCLIENT_VERSION="v0.9.0-dev-local"
|
||||
PYCOIN_VERSION="v0.9.0-dev-local"
|
||||
|
||||
trace()
|
||||
{
|
||||
|
||||
146
cyphernodeconf_docker/package-lock.json
generated
146
cyphernodeconf_docker/package-lock.json
generated
@@ -485,11 +485,11 @@
|
||||
"dev": true
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
|
||||
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
|
||||
"version": "6.12.3",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
|
||||
"integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^2.0.1",
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
@@ -873,6 +873,13 @@
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
|
||||
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
@@ -1702,9 +1709,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
|
||||
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
@@ -1824,6 +1831,16 @@
|
||||
"map-cache": "^0.2.2"
|
||||
}
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
|
||||
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.6.0"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
@@ -1886,9 +1903,7 @@
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
@@ -1944,8 +1959,6 @@
|
||||
"fs-minipass": {
|
||||
"version": "1.2.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
@@ -2026,12 +2039,6 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
@@ -2065,7 +2072,6 @@
|
||||
"minipass": {
|
||||
"version": "2.3.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
@@ -2075,8 +2081,6 @@
|
||||
"minizlib": {
|
||||
"version": "1.2.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
@@ -2265,7 +2269,6 @@
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
@@ -2333,21 +2336,6 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.8",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.1.1",
|
||||
"fs-minipass": "^1.2.5",
|
||||
"minipass": "^2.3.4",
|
||||
"minizlib": "^1.1.1",
|
||||
"mkdirp": "^0.5.0",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
@@ -2372,7 +2360,6 @@
|
||||
"yallist": {
|
||||
"version": "3.0.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
@@ -2628,6 +2615,13 @@
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz",
|
||||
@@ -3729,6 +3723,27 @@
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
|
||||
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
|
||||
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.9.0"
|
||||
}
|
||||
},
|
||||
"mixin-deep": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
|
||||
@@ -5019,6 +5034,48 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.19",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz",
|
||||
"integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.1.4",
|
||||
"fs-minipass": "^1.2.7",
|
||||
"minipass": "^2.9.0",
|
||||
"minizlib": "^1.3.3",
|
||||
"mkdirp": "^0.5.5",
|
||||
"safe-buffer": "^5.2.1",
|
||||
"yallist": "^3.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"test-exclude": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
|
||||
@@ -5251,9 +5308,9 @@
|
||||
}
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
@@ -5457,6 +5514,13 @@
|
||||
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
|
||||
"dev": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "12.0.5",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@rauschma/stringio": "^1.4.0",
|
||||
"ajv": "^6.10.0",
|
||||
"ajv": "^6.12.3",
|
||||
"chalk": "^2.4.2",
|
||||
"coinstring": "^2.3.0",
|
||||
"colorsys": "^1.0.22",
|
||||
|
||||
22
dist/setup.sh
vendored
22
dist/setup.sh
vendored
@@ -859,17 +859,17 @@ ALWAYSYES=0
|
||||
SUDO_REQUIRED=0
|
||||
AUTOSTART=0
|
||||
|
||||
# CYPHERNODE VERSION "v0.8.0"
|
||||
SETUP_VERSION="v0.8.0"
|
||||
CONF_VERSION="v0.8.0"
|
||||
GATEKEEPER_VERSION="v0.8.0"
|
||||
TOR_VERSION="v0.8.0"
|
||||
PROXY_VERSION="v0.8.0"
|
||||
NOTIFIER_VERSION="v0.8.0"
|
||||
PROXYCRON_VERSION="v0.8.0"
|
||||
OTSCLIENT_VERSION="v0.8.0"
|
||||
PYCOIN_VERSION="v0.8.0"
|
||||
CYPHERAPPS_VERSION="v0.8.0"
|
||||
# CYPHERNODE VERSION "v0.9.0-dev"
|
||||
SETUP_VERSION="v0.9.0-dev"
|
||||
CONF_VERSION="v0.9.0-dev"
|
||||
GATEKEEPER_VERSION="v0.9.0-dev"
|
||||
TOR_VERSION="v0.9.0-dev"
|
||||
PROXY_VERSION="v0.9.0-dev"
|
||||
NOTIFIER_VERSION="v0.9.0-dev"
|
||||
PROXYCRON_VERSION="v0.9.0-dev"
|
||||
OTSCLIENT_VERSION="v0.9.0-dev"
|
||||
PYCOIN_VERSION="v0.9.0-dev"
|
||||
CYPHERAPPS_VERSION="dev"
|
||||
BITCOIN_VERSION="v22.0"
|
||||
LIGHTNING_VERSION="v0.10.2"
|
||||
TRAEFIK_VERSION="v1.7.9-alpine"
|
||||
|
||||
@@ -303,8 +303,8 @@ ln_connectfund() {
|
||||
ln_pay() {
|
||||
trace "Entering ln_pay()..."
|
||||
|
||||
# Let's try to legacypay (MPP disabled) for 30 seconds.
|
||||
# If this doesn't work for a routing reason, let's try to pay (MPP enabled) for 30 seconds.
|
||||
# Let's try to pay (MPP enabled) for 85 seconds.
|
||||
# If this doesn't work for a routing reason, let's try to legacypay (MPP disabled) for 85 seconds.
|
||||
# If this doesn't work, return an error.
|
||||
|
||||
local result
|
||||
@@ -347,19 +347,115 @@ ln_pay() {
|
||||
trace "[ln_pay] Expected description <> Invoice description"
|
||||
returncode=1
|
||||
else
|
||||
# Amount and description are as expected (or empty description), let's pay!
|
||||
trace "[ln_pay] Amount and description are as expected, let's try to pay without MPP!"
|
||||
# Amount and description are as expected (or empty description), let's see if already paid
|
||||
trace "[ln_pay] Amount and description are as expected, let's see if already paid"
|
||||
result=$(ln_listpays "${bolt11}")
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
trace "[ln_pay] result=${result}"
|
||||
local complete pending failed
|
||||
complete=$(echo "${result}" | jq -er '.pays | map(select(.status == "complete")) | last')
|
||||
trace "[ln_pay] complete=${complete}"
|
||||
pending=$(echo "${result}" | jq -er '.pays | map(select(.status == "pending")) | last')
|
||||
trace "[ln_pay] pending=${pending}"
|
||||
failed=$(echo "${result}" | jq -er '.pays | map(select(.status == "failed")) | last')
|
||||
trace "[ln_pay] failed=${failed}"
|
||||
|
||||
if [ "${complete}" != "null" ]; then
|
||||
trace "[ln_pay] responding complete"
|
||||
echo "${complete}"
|
||||
return 0
|
||||
fi
|
||||
if [ "${pending}" != "null" ]; then
|
||||
trace "[ln_pay] responding pending"
|
||||
echo "${pending}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Payment not previously done, let's pay!
|
||||
trace "[ln_pay] Payment not previously done, let's try to pay with MPP!"
|
||||
|
||||
if [ "${invoice_msatoshi}" = "null" ]; then
|
||||
# "any" amount on the invoice, we force paying the expected_msatoshi provided to ln_pay by the user
|
||||
result=$(ln_call_lightningd legacypay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=30)
|
||||
result=$(ln_call_lightningd pay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=85)
|
||||
else
|
||||
result=$(ln_call_lightningd legacypay -k bolt11=${bolt11} retry_for=30)
|
||||
result=$(ln_call_lightningd pay -k bolt11=${bolt11} retry_for=85)
|
||||
fi
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
trace "[ln_pay] result=${result}"
|
||||
|
||||
# Successful payment example:
|
||||
#
|
||||
# {
|
||||
# "destination": "029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb",
|
||||
# "payment_hash": "0d1e62210e7af9a4146258652fd4cfecd2638086850583e994a103884e2b4e78",
|
||||
# "created_at": 1631200188.550,
|
||||
# "parts": 1,
|
||||
# "msatoshi": 530114,
|
||||
# "amount_msat": "530114msat",
|
||||
# "msatoshi_sent": 530114,
|
||||
# "amount_sent_msat": "530114msat",
|
||||
# "payment_preimage": "2672c5fa280367222bf30db82566b78909927a67d5756d5ae0227b2ff8f3a907",
|
||||
# "status": "complete"
|
||||
# }
|
||||
#
|
||||
#
|
||||
# Failed payment example:
|
||||
# {
|
||||
# "code": 210,
|
||||
# "message": "Destination 029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb is not reachable directly and all routehints were unusable.",
|
||||
# "attempts": [
|
||||
# {
|
||||
# "status": "failed",
|
||||
# "failreason": "Destination 029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb is not reachable directly and all routehints were unusable.",
|
||||
# "partid": 0,
|
||||
# "amount": "528214msat"
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
|
||||
if [ "${returncode}" -ne "0" ]; then
|
||||
trace "[ln_pay] payment not complete, let's see what's going on."
|
||||
|
||||
code=$(echo "${result}" | jq -e ".code")
|
||||
# jq -e will have a return code of 1 if the supplied tag is null.
|
||||
if [ "$?" -eq "0" ]; then
|
||||
# code tag not null, so there's an error
|
||||
trace "[ln_pay] Error code found, code=${code}"
|
||||
|
||||
# -1: Catchall nonspecific error.
|
||||
# 201: Already paid with this hash using different amount or destination.
|
||||
# 203: Permanent failure at destination. The data field of the error will be routing failure object.
|
||||
# 205: Unable to find a route.
|
||||
# 206: Route too expensive. Either the fee or the needed total locktime for the route exceeds your maxfeepercent or maxdelay settings, respectively. The data field of the error will indicate the actual fee as well as the feepercent percentage that the fee has of the destination payment amount. It will also indicate the actual delay along the route.
|
||||
# 207: Invoice expired. Payment took too long before expiration, or already expired at the time you initiated payment. The data field of the error indicates now (the current time) and expiry (the invoice expiration) as UNIX epoch time in seconds.
|
||||
# 210: Payment timed out without a payment in progress.
|
||||
|
||||
# Let's try pay if code NOT 207 or 201.
|
||||
|
||||
if [ "${code}" -eq "201" ] || [ "${code}" -eq "207" ]; then
|
||||
trace "[ln_pay] Failure code, response will be the cli result."
|
||||
else
|
||||
trace "[ln_pay] Ok let's deal with potential routing failures and retry without MPP..."
|
||||
|
||||
if [ "${invoice_msatoshi}" = "null" ]; then
|
||||
# "any" amount on the invoice, we force paying the expected_msatoshi provided to ln_pay by the user
|
||||
result=$(ln_call_lightningd legacypay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=85)
|
||||
else
|
||||
result=$(ln_call_lightningd legacypay -k bolt11=${bolt11} retry_for=85)
|
||||
fi
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
trace "[ln_pay] result=${result}"
|
||||
|
||||
if [ "${returncode}" -ne "0" ]; then
|
||||
trace "[ln_pay] Failed!"
|
||||
else
|
||||
trace "[ln_pay] Successfully paid!"
|
||||
fi
|
||||
|
||||
# Successful payment example:
|
||||
#
|
||||
# {
|
||||
@@ -393,76 +489,6 @@ ln_pay() {
|
||||
# "message": "Invoice expired"
|
||||
# }
|
||||
#
|
||||
|
||||
if [ "${returncode}" -ne "0" ]; then
|
||||
trace "[ln_pay] payment not complete, let's see what's going on."
|
||||
|
||||
code=$(echo "${result}" | jq -e ".code")
|
||||
# jq -e will have a return code of 1 if the supplied tag is null.
|
||||
if [ "$?" -eq "0" ]; then
|
||||
# code tag not null, so there's an error
|
||||
trace "[ln_pay] Error code found, code=${code}"
|
||||
|
||||
# -1: Catchall nonspecific error.
|
||||
# 201: Already paid with this hash using different amount or destination.
|
||||
# 203: Permanent failure at destination. The data field of the error will be routing failure object.
|
||||
# 205: Unable to find a route.
|
||||
# 206: Route too expensive. Either the fee or the needed total locktime for the route exceeds your maxfeepercent or maxdelay settings, respectively. The data field of the error will indicate the actual fee as well as the feepercent percentage that the fee has of the destination payment amount. It will also indicate the actual delay along the route.
|
||||
# 207: Invoice expired. Payment took too long before expiration, or already expired at the time you initiated payment. The data field of the error indicates now (the current time) and expiry (the invoice expiration) as UNIX epoch time in seconds.
|
||||
# 210: Payment timed out without a payment in progress.
|
||||
|
||||
# Let's try pay if code NOT 207 or 201.
|
||||
|
||||
if [ "${code}" -eq "201" ] || [ "${code}" -eq "207" ] || [ "${code}" -lt "0" ]; then
|
||||
trace "[ln_pay] Failure code, response will be the cli result."
|
||||
else
|
||||
trace "[ln_pay] Ok let's deal with potential routing failures and retry with MPP..."
|
||||
|
||||
if [ "${invoice_msatoshi}" = "null" ]; then
|
||||
# "any" amount on the invoice, we force paying the expected_msatoshi provided to ln_pay by the user
|
||||
result=$(ln_call_lightningd pay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=30)
|
||||
else
|
||||
result=$(ln_call_lightningd pay -k bolt11=${bolt11} retry_for=30)
|
||||
fi
|
||||
returncode=$?
|
||||
|
||||
if [ "${returncode}" -ne "0" ]; then
|
||||
trace "[ln_pay] Failed!"
|
||||
else
|
||||
trace "[ln_pay] Successfully paid!"
|
||||
fi
|
||||
|
||||
# Successful payment example:
|
||||
#
|
||||
# {
|
||||
# "destination": "029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb",
|
||||
# "payment_hash": "0d1e62210e7af9a4146258652fd4cfecd2638086850583e994a103884e2b4e78",
|
||||
# "created_at": 1631200188.550,
|
||||
# "parts": 1,
|
||||
# "msatoshi": 530114,
|
||||
# "amount_msat": "530114msat",
|
||||
# "msatoshi_sent": 530114,
|
||||
# "amount_sent_msat": "530114msat",
|
||||
# "payment_preimage": "2672c5fa280367222bf30db82566b78909927a67d5756d5ae0227b2ff8f3a907",
|
||||
# "status": "complete"
|
||||
# }
|
||||
#
|
||||
#
|
||||
# Failed payment example:
|
||||
# {
|
||||
# "code": 210,
|
||||
# "message": "Destination 029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb is not reachable directly and all routehints were unusable.",
|
||||
# "attempts": [
|
||||
# {
|
||||
# "status": "failed",
|
||||
# "failreason": "Destination 029b26c73b2c19ec9bdddeeec97c313670c96b6414ceacae0fb1b3502e490a6cbb is not reachable directly and all routehints were unusable.",
|
||||
# "partid": 0,
|
||||
# "amount": "528214msat"
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
|
||||
fi
|
||||
else
|
||||
# code tag not found
|
||||
|
||||
@@ -52,14 +52,6 @@ compute_vin_total_amount()
|
||||
local vin_vout_amount=0
|
||||
local vout
|
||||
local vin_total_amount=0
|
||||
local vin_hash
|
||||
local vin_confirmations
|
||||
local vin_timereceived
|
||||
local vin_vsize
|
||||
local vin_blockhash
|
||||
local vin_blockheight
|
||||
local vin_blocktime
|
||||
local txid_already_inserted=true
|
||||
|
||||
for vin_txid_vout in ${vin_txids_vout}
|
||||
do
|
||||
@@ -75,21 +67,6 @@ compute_vin_total_amount()
|
||||
trace "[compute_vin_total_amount] vin_vout_amount=${vin_vout_amount}"
|
||||
vin_total_amount=$(awk "BEGIN { printf(\"%.8f\", ${vin_total_amount}+${vin_vout_amount}); exit}")
|
||||
trace "[compute_vin_total_amount] vin_total_amount=${vin_total_amount}"
|
||||
vin_hash=$(echo "${vin_raw_tx}" | jq -r ".result.hash")
|
||||
vin_confirmations=$(echo "${vin_raw_tx}" | jq ".result.confirmations")
|
||||
vin_timereceived=$(echo "${vin_raw_tx}" | jq ".result.time")
|
||||
vin_size=$(echo "${vin_raw_tx}" | jq ".result.size")
|
||||
vin_vsize=$(echo "${vin_raw_tx}" | jq ".result.vsize")
|
||||
vin_blockhash=$(echo "${vin_raw_tx}" | jq -r ".result.blockhash")
|
||||
vin_blockheight=$(echo "${vin_raw_tx}" | jq ".result.blockheight")
|
||||
vin_blocktime=$(echo "${vin_raw_tx}" | jq ".result.blocktime")
|
||||
|
||||
# Let's insert the vin tx in the DB just in case it would be useful
|
||||
sql "INSERT INTO tx (txid, hash, confirmations, timereceived, size, vsize, blockhash, blockheight, blocktime)"\
|
||||
" VALUES ('${vin_txid}', '${vin_hash}', ${vin_confirmations}, ${vin_timereceived}, ${vin_size}, ${vin_vsize}, '${vin_blockhash}', ${vin_blockheight}, ${vin_blocktime})"\
|
||||
" ON CONFLICT (txid) DO"\
|
||||
" UPDATE SET blockhash='${vin_blockhash}', blockheight=${vin_blockheight}, blocktime=${vin_blocktime}, confirmations=${vin_confirmations}"
|
||||
trace_rc $?
|
||||
done
|
||||
|
||||
echo "${vin_total_amount}"
|
||||
|
||||
Reference in New Issue
Block a user