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:
BHodl
2022-03-22 23:17:13 -04:00
6 changed files with 212 additions and 145 deletions

View File

@@ -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()
{

View File

@@ -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",

View File

@@ -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
View File

@@ -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"

View File

@@ -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,14 +347,39 @@ 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}
@@ -363,34 +388,31 @@ ln_pay() {
# Successful payment example:
#
# {
# "id": 16,
# "payment_hash": "f00877afeec4d771c2db68af80b8afa5dad3b495dad498828327e484c93f67d5",
# "destination": "021ec6ccede19caa0bc7d7f9699c73e63cb2b79a4877529a60d7ac6a4ebb03487a",
# "msatoshi": 1234,
# "amount_msat": "1234msat",
# "msatoshi_sent": 1235,
# "amount_sent_msat": "1235msat",
# "created_at": 1633373202,
# "status": "complete",
# "payment_preimage": "373cd9a0f83426506f1535f6ca1f08f279f0bd82d257fd3fc8cd49fbc25750f2",
# "bolt11": "lntb1ps4kjlrpp57qy80tlwcnthrskmdzhcpw905hdd8dy4mt2f3q5ryljgfjflvl2sdq9u2d2zxqr3jscqp2sp5c2qykk0pdaeh2yrvn4cpkchsnyxwjnaptujggsd6ldqjfd8jhh3qrzjqwyx8nu2hygyvgc02cwdtvuxe0lcxz06qt3lpsldzcdr46my5epmj85hhvqqqtsqqqqqqqlgqqqqqqgq9q9qyyssqpnwtw6mzxu8pr5mrm8677ke8p5fjcu6dyrrvuy8j5f5p8mzv2phr2y0yx3z7mvgf5uqzzdytegg04u7hcu8ma50692cg69cdtsgw9hsph0xeha"
# }
# Failure response examples:
#
# {
# "code": -32602,
# "message": "03c05f973d9c7218e7aec4f52c2c8ab395f51f41d627c398237b5ff056f46faf09: unknown destination node_id (no public channels?)"
# "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"
# }
#
# {
# "code": 206,
# "message": "Route wanted fee of 16101625msat"
# }
#
# Failed payment example:
# {
# "code": 207,
# "message": "Invoice expired"
# "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"
# }
# ]
# }
#
@@ -413,18 +435,20 @@ ln_pay() {
# Let's try pay if code NOT 207 or 201.
if [ "${code}" -eq "201" ] || [ "${code}" -eq "207" ] || [ "${code}" -lt "0" ]; then
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 with MPP..."
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 pay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=30)
result=$(ln_call_lightningd legacypay -k bolt11=${bolt11} msatoshi=${expected_msatoshi} retry_for=85)
else
result=$(ln_call_lightningd pay -k bolt11=${bolt11} retry_for=30)
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!"
@@ -435,34 +459,36 @@ ln_pay() {
# 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"
# "id": 16,
# "payment_hash": "f00877afeec4d771c2db68af80b8afa5dad3b495dad498828327e484c93f67d5",
# "destination": "021ec6ccede19caa0bc7d7f9699c73e63cb2b79a4877529a60d7ac6a4ebb03487a",
# "msatoshi": 1234,
# "amount_msat": "1234msat",
# "msatoshi_sent": 1235,
# "amount_sent_msat": "1235msat",
# "created_at": 1633373202,
# "status": "complete",
# "payment_preimage": "373cd9a0f83426506f1535f6ca1f08f279f0bd82d257fd3fc8cd49fbc25750f2",
# "bolt11": "lntb1ps4kjlrpp57qy80tlwcnthrskmdzhcpw905hdd8dy4mt2f3q5ryljgfjflvl2sdq9u2d2zxqr3jscqp2sp5c2qykk0pdaeh2yrvn4cpkchsnyxwjnaptujggsd6ldqjfd8jhh3qrzjqwyx8nu2hygyvgc02cwdtvuxe0lcxz06qt3lpsldzcdr46my5epmj85hhvqqqtsqqqqqqqlgqqqqqqgq9q9qyyssqpnwtw6mzxu8pr5mrm8677ke8p5fjcu6dyrrvuy8j5f5p8mzv2phr2y0yx3z7mvgf5uqzzdytegg04u7hcu8ma50692cg69cdtsgw9hsph0xeha"
# }
#
#
# 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"
# }
# ]
# }
#
# Failure response examples:
#
# {
# "code": -32602,
# "message": "03c05f973d9c7218e7aec4f52c2c8ab395f51f41d627c398237b5ff056f46faf09: unknown destination node_id (no public channels?)"
# }
#
# {
# "code": 206,
# "message": "Route wanted fee of 16101625msat"
# }
#
# {
# "code": 207,
# "message": "Invoice expired"
# }
#
fi
else
# code tag not found

View File

@@ -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}"