Fixes#510.
Prior to this commit, if the call to
jmclient.BitcoinCoreInterface.get_current_blockheight() failed and
returned None, the function jmclient.WalletService.sync_unspent() would
simply ignore the failure and the wallet syncing process would complete,
without ever resetting and updating the wallet's utxo set, resulting in
a situation where users saw out of date utxo sets in their wallets (and
concomitant spending failures).
After this commit, if that blockheight access call fails 5 times, we
instead abandon the attempt to sync the wallet, and shut down the
application.
8a25e3a401 Pin remaining deps to specific versions, except for Qt and tests (Kristaps Kaupe)
Pull request description:
For tests it's not important, with Qt there is big mess currently, don't want to touch it here.
Top commit has no ACKs.
Tree-SHA512: 4a72a41302aee5dd3ea289db0c21870753be2586a63f7575f6299749fe0c96924f2cc3f169e6cd873c51d926c62fe41389320712521cf0538458a54ad270c774
7d0ca22749 Update local Tor to 0.4.7.12 (Kristaps Kaupe)
Pull request description:
There have been multiple bugfixes between 0.4.7.8 and 0.4.7.12, including major fixes aimed at helping defend against network denial of service. https://gitlab.torproject.org/tpo/core/tor/-/raw/release-0.4.7/ReleaseNotes
ACKs for top commit:
AdamISZ:
ACK 7d0ca22749 , please merge when it is convenient. (I sanity checked the shasum 3b5d969712c467851bd028f314343ef15a97ea457191e93ffa97310b05b9e395 by downloading from https://archive.torproject.org/tor-package-archive/ ).
Tree-SHA512: b5df074411cfe4362a7148a5baa12de4c1dbd7e15f9026cea631fa94139346f3b8bb08cb54477dd7b46a0ca3d8f1e9891782f55e351f324b02db6a1fb72d4110
b59fdcd623 Remove Python 3.6 (EOL), add 3.10 (Kristaps Kaupe)
Pull request description:
Subset of #1218. Python 3.6 is not only EOL for a long time, also no more available on ubuntu-latest for GitHub workflows, see https://github.com/JoinMarket-Org/joinmarket-clientserver/actions/runs/3705429480/jobs/6279325863. So this is kinda urgent, our CI is broken otherwise.
Top commit has no ACKs.
Tree-SHA512: 9438202d142666736548872a6850d8c72edcfca09d30ed34ecc7290dfe26e1f3af15860cdafa60cd321321666ee9d44a7a3be54931c808f076e1fe89cf2ccb31
44aea32a7c Fix typo in `gettimelockaddress` (Luke)
Pull request description:
Fix trivial typo in command line output and relative documentation. Additionally, fix a couple extra typos.
Top commit has no ACKs.
Tree-SHA512: b7e84f4f032109b7ede8406b23c537331e1236f8477d17fcb5c15521cda528f6b2b3be515c1d262b866b6a41e244d5e3b5fa6e83d6d21ff0d3d05232e6ecd0ea
Python 3.3 and above provide a standard venv module which provides all
the functionality that install.sh needs from virtualenv.
As of this commit, JM itself requires Python 3.6+ anyway.
5b8ef40bd6 jmbitcoin: eliminate dependency on urldecode (Matt Whitlock)
Pull request description:
`urllib.parse.unquote_plus()` serves the same purpose as `url_decode.urldecode()`, and moreover it correctly decodes UTF-8 sequences into Unicode characters rather than generating mojibake.
ACKs for top commit:
kristapsk:
ACK 5b8ef40bd6
Tree-SHA512: b8598efdcc48914f56036d32309e3d1ee52aa58c0cbbd41dbc66748588d28cfccd5e62869954f07cb3e25b9e7290bab9e1752dbdd3a662f71a7e59dda2f490b3
urllib.parse.unquote_plus() serves the same purpose as
url_decode.urldecode(), and moreover it correctly decodes UTF-8
sequences into Unicode characters rather than generating mojibake.
Updated to reflect that it's now required to provide a node message argument when starting the directory node.
Update onion-message-channels.md
Changed message argument to be the same in the explanation and service file for consistency.
Prior to this commit, we timed out the attempts to connect to individual
directory nodes after 10s, which proves to be too optimistic for
connections to onions, as failures are often seen. After this commit, we
allow 60s (note that this time includes handshake completion).
3d0f2d6fd7 fix: randomize fallback transaction fee (theborakompanioni)
Pull request description:
Resolves#1363
Before this PR, if no fee estimate could be sourced, the fallback fee was always 10_000 sats/kilo-vbyte:
```
Before:
2022-10-11 05:45:19,429 [DEBUG] rpc: getmempoolinfo None
2022-10-11 05:45:19,432 [DEBUG] rpc: estimatesmartfee [3]
2022-10-11 05:45:19,438 [WARNING] Could not source a fee estimate from Core, falling back to default: 10000 sat/vkB (10.0 sat/vB).
2022-10-11 05:45:19,439 [INFO] Using bitcoin network feerate for 3 block confirmation target (randomized for privacy): 10000 sat/vkB (10.0 sat/vB)
2022-10-11 05:45:19,444 [DEBUG] rpc: getmempoolinfo None
2022-10-11 05:45:19,446 [DEBUG] rpc: estimatesmartfee [3]
2022-10-11 05:45:19,452 [WARNING] Could not source a fee estimate from Core, falling back to default: 10000 sat/vkB (10.0 sat/vB).
2022-10-11 05:45:19,453 [INFO] Using bitcoin network feerate for 3 block confirmation target (randomized for privacy): 10000 sat/vkB (10.0 sat/vB)
2022-10-11 05:45:19,488 [INFO] Using a fee of: 0.00001420 BTC (1420 sat).
```
After this PR, the fallback fee will take into account the value of `tx_fees_factor` to randomize the value (if `tx_fees_factor` is greater than zero):
```
2022-10-11 05:51:00,112 [DEBUG] rpc: getmempoolinfo None
2022-10-11 05:51:00,114 [DEBUG] rpc: estimatesmartfee [3]
2022-10-11 05:51:00,119 [WARNING] Could not source a fee estimate from Core, falling back to default: 10000 sat/vkB (10.0 sat/vB).
2022-10-11 05:51:00,120 [INFO] Using bitcoin network feerate for 3 block confirmation target (randomized for privacy): 9962 sat/vkB (9.9 sat/vB)
2022-10-11 05:51:00,123 [DEBUG] rpc: getmempoolinfo None
2022-10-11 05:51:00,126 [DEBUG] rpc: estimatesmartfee [3]
2022-10-11 05:51:00,133 [WARNING] Could not source a fee estimate from Core, falling back to default: 10000 sat/vkB (10.0 sat/vB).
2022-10-11 05:51:00,134 [INFO] Using bitcoin network feerate for 3 block confirmation target (randomized for privacy): 10898 sat/vkB (10.8 sat/vB)
2022-10-11 05:51:00,156 [INFO] Using a fee of: 0.00001547 BTC (1547 sat).
```
Additionally, `fx_fees_factor` will be used to calculate `mempoolminfee_in_sat_randomized` instead of using a hardcoded max value of `1.2` (20%). If this is not wanted or you think this is a mistake, the second commit can be reverted in order to only apply the behaviour described above.
ACKs for top commit:
kristapsk:
ACK 3d0f2d6fd7
Tree-SHA512: d950532e0abe9558b067b2b764f0c43b8a20f27c7c2223600ee461174124a21ec05c2d304ace2006d461d0ff0ae504ba246676a509240eea6d86fe975898a2f7
also, use tx_fees_factor for randomized max mempoolminfee and
make sure that tx_fees_factor is equal or greater than zero.
Co-authored-by: Kristaps Kaupe <kristaps@blogiem.lv>
2e44f00ff3 Log IRC connection attempts when using SOCKS5 proxy or TLS too (Kristaps Kaupe)
Pull request description:
Only attempts with `use_ssl = false` and `socks5 = false` were logged before this change.
Top commit has no ACKs.
Tree-SHA512: 6c8c1441a417282f7cd7f2757eea2238e42c12c48fe59d6a9f41ba8e3c14eec86da5d3c122398fbb101d746b0baf461391abf944c6dbd80fcf59535a7161f968
Fixes#1369.
Prior to this commit, the docs on fidelity bonds stated that expired
fidelity bond utxos (which are spendable), can be spent in coinjoins as
a Taker, but that is not correct - they can only be spent in a
non-coinjoin transaction (direct send).
2749da174a change payjoin default binding port (nyxnor)
Pull request description:
https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1371
Payjoin port was chosen because it is less used, so changes affecting default port will possibly be rare.
Also changed payjoin tests port for uniformity.
And included the updated config to docs/PAYJOIN.md
ACKs for top commit:
kristapsk:
cr utACK 2749da174a
Tree-SHA512: 98213edd7916730a6f7a975b4dca38f5eed9a40afcc7ec66df842def338e82867fe673d7b9c280aedfda007f5cfef9df0a29341dbd355870e26d45487558ed72
bd5508c56b Minor improvements for question prompts and feedback (Kristaps Kaupe)
Pull request description:
Make both look and act the same, specify default answer, wait only for single character (don't require Enter / Return) and give feedback about choice with Qt GUI (previously you could answer "yyy" and it would mean not to build Qt GUI, as "yyy" != "y").
Top commit has no ACKs.
Tree-SHA512: 4f51633217c791e6d129ec0f95d086fa35b990c0fe1b42d96052109ac88b2a2098e3cea834aed9b1ba99429a1568a25e4efb40fb2bd180bac5f8cdd7d95ac07f
d6d40df606 Allow amounts below DUST_THRESHOLD (0.00027300 BTC) for non-cj direct sends (Kristaps Kaupe)
Pull request description:
Don't see the reason why to enforce this lowest amount limit for non-collaborative transactions.
Note that lower amount sends were already allowed when doing sweeping.
Top commit has no ACKs.
Tree-SHA512: c6e33372b36a6fc03f8050e827c9b1b14da43edddb718e1ad153a8ebdbfed5ff7e9332b784bea314aab460afe0b574b8cf40cf0523b3a773bf657a22b67c12db
e47f0823cb Allow to run install.sh from any current working directory (Kristaps Kaupe)
Pull request description:
Person [porting JoinMarket guide from RaspiBolt v2 to RaspiBolt v3](https://github.com/raspibolt/raspibolt/pull/1085) tried to do `./joinmarket/install.sh` instead of `cd joinmarket; ./install.sh`, but that ends in GPG validation error, because third-party pubkeys are imported using relative paths. Don't see the reason why not allow to run `install.sh` from any cwd.
Top commit has no ACKs.
Tree-SHA512: daf0cfabb2c5048c58664812e259b65d4ee838c5d3f3f37939713d74d0d73054cf08fe7fb49e8b184c223105c9d3a71592bcaa4376d32e45046c372614a3a76c
4c53bb5adf Update link to RaspiBolt installation guide (Kristaps Kaupe)
Pull request description:
Installation instructions for RaspiBolt v3 is now integrated into main guide.
Top commit has no ACKs.
Tree-SHA512: 6b6ede4762829135beec8215f6347be410cfa6d8bd1c57f7bda24361643a610673c84bdc4e86af7c2b639d306547a2807dc173b0c1a4647d03143f4757e46ea4
9d9035b43f Fix sendpayment without amount argument, BIP21 only (Kristaps Kaupe)
Pull request description:
Fixes#1356. Bug was introduced with #1316.
Top commit has no ACKs.
Tree-SHA512: cc4be2c4e55720faa5a0ca834e6ff4b2b95dbcf5b96f7bc501e3fb0e94dcd14240c6bb3949068248206f5508f64d4cc2afe49344065cdc4d60edcb3ba01a41cc
8d2a6647da Fix for recent Bitcoin Core versions and add type hints (Kristaps Kaupe)
Pull request description:
Noticed while trying to run JM test suite against Bitcoin Core v24.0rc1. There is no more (major, minor, patch), only (major, minor), so that `re.match().groups()` returned `NoneType` and tests failed. Removed patch part from regular expression, we anyway check only major version number currently. Also added type hints.
Top commit has no ACKs.
Tree-SHA512: 90540f5caa293080b7138b0d51cdaad2458685ab1d3a9fec36dcceac1afd0b5c36e1c436343500839433c70d08ee3033235a7859ecaa43531abf628a6f504112
46013d2ef4 chmod +x scripts/jmwalletd.py (Kristaps Kaupe)
Pull request description:
It should be executable same way as other scripts.
Top commit has no ACKs.
Tree-SHA512: c623c280754b8c5ee09ef7bff6db41b8223518018258ec9e796ca4921d0eef6cb951258a59896b8f7382805ff8186a3d20b787a11d804667b9a8f197eb347a71