Fixes#1118.
Before this commit, the json serializtion of a
WalletEntry object was incorrect and missing some
fields. This is now fixed, and the WalletDisplayResponse
in the RPC spec .yaml file correctly reflects the
fields that are returned by the JMWalletDaemon in response
to the /display request.
Prior to this commit, if a user has attempted
a coinjoin with /taker/coinjoin but a problem
occurs (such as an unresponsive maker), they
are not able to abort the protocol but must wait
until the taker_finished event is triggered.
After this commit a GET request to the endpoint
defined as /wallet/walletname/taker/stop will
force-stop the coinjoin attempt (similar to
quitting the script in CLI). This will reset the
wallet daemon state to CJ_NOT_RUNNING.
Fixes#1121.
Prior to this commit, if a user
lost access to the authentication token for
a session with the wallet RPC, they would not
be able to lock the existing wallet before
authenticating again (getting a new token for
the same wallet, or a different one).
After this commit, a call to the /unlock endpoint
will succeed even if an existing wallet is currently
unlocked (whether a different one or the same one).
The existing wallet service, if present, is shut down,
if the attempt to authenticate a new wallet, with a
password is successful (otherwise nothing happens).
A test is added to make sure that this re-unlock can work.
This commit changes the underlying functions used in
jmbitcoin from the private and public key primitives
in coincurve and replaces them with equivalent
primitives CKey and CPubKey from python-bitcointx,
this removes the need to install coincurve and its
own bundled libsecp256k1 dynamic library.
Note that an additional pubkey_tweak_mul function
is exposed with ctypes from python-bitcointx's
bundled libsecp256k1 library.
a1bcac99cc Fix tumble log dir after load_program_config (Adam Gibson)
Pull request description:
Fixes#1060.
Prior to this commit, the extra log for tumbler.py
was created in the local directory, because it was
set before running load_program_config (which defaults
to the user's default joinmarket config location), this
is now corrected.
ACKs for top commit:
kristapsk:
ACK a1bcac99cc
Tree-SHA512: 69085ef50bdbe6a7f420df8c9384e21855df1fdad377b968714b70cefed4db558a66d7afc4f8cba1efd8dc41447564578c466d9d7ebea3b1a2cef9a4d7b069a2
f5c7f339d3 Allow signmessage to work with any index (Adam Gibson)
Pull request description:
Fixes#1043.
Prior to this commit, only keys/scripts/addresses
inside the scope of the current wallet script_map
(the keys cached by sync, according to persisted
index in wallet file, including gap limit) would
allow a successful signing operation, otherwise
an assertion was raised.
After this commit, signing can be done with any
arbitrary height index in the wallet (assuming a
valid path for this wallet).
ACKs for top commit:
kristapsk:
ACK f5c7f339d3
Tree-SHA512: bf057347d1c088217236b085562afefee10ecf8f2610a48b10439f0ed3f6bb00ab1b88917c9b29b7a3f265d0378286a7d687db0644f2a1e2134ff70ccec7d8e5
Fixes#1043.
Prior to this commit, only keys/scripts/addresses
inside the scope of the current wallet script_map
(the keys cached by sync, according to persisted
index in wallet file, including gap limit) would
allow a successful signing operation, otherwise
an assertion was raised.
After this commit, signing can be done with any
arbitrary height index in the wallet (assuming a
valid path for this wallet).
Fixes#1024.
Prior to this commit, if the RPC connection were lost
while JoinmarketQt was running, the reactor would be
stopped, but the qt5reactor shutdown does not stop
the Qt Application. This commit fixes that by injecting
a custom reactor stop function wrapper into jmbase,
which triggers the close event of the Qt main window.
Some of the return codes for the endpoints in
the RPC API were incorrect, these are fixed.
They are also checked in the tests.
Additionally, an extra test of the maker start/
stop function is added (though it tests only
state updates, not actual service start).
Fixes#1060.
Prior to this commit, the extra log for tumbler.py
was created in the local directory, because it was
set before running load_program_config (which defaults
to the user's default joinmarket config location), this
is now corrected.
Fixes#1091.
Before this commit, if the unconfirmed transaction
event triggered the taker_finished callback in the
RPC-started coinjoin, the value of fromtx is
'unconfirmed' and not False, hence an assertion error
was raised unless the confirmed event came first
(which is only likely to happen on regtest). This
crashed the jmwalletd daemon backend.
After this commit, the assertion check is only that
the value is not True, which it must not be as long
as we only accept single-join schedules.
fb4644ec5b Allow utxo address validation with script (Adam Gibson)
Pull request description:
Prior to this commit, the sendtomany.py script
would sometimes fail based on the output of the
RPC call gettxout returning only a script, and not
an address. After this commit, the validation will
still work correctly in these cases using the
chosen cryptoengine to convert from script to address.
ACKs for top commit:
kristapsk:
ACK fb4644ec5b. Was able to reproduce the issue and that this fixes it. Also test suite passes.
Tree-SHA512: 805e45144403317167243023bb3bda0d14b0197d5df71e510a1ca898b69faa2298f8d2a13d6915e6875fd99fcdeb343297b062fe0f4ce0d3b3ca1a95da7271ba
Prior to this commit, the sendtomany.py script
would sometimes fail based on the output of the
RPC call gettxout returning only a script, and not
an address. After this commit, the validation will
still work correctly in these cases using the
chosen cryptoengine to convert from script to address.
Also notably, the return value of utxo set does
not include an 'address' key any more.
Tests are updated to reflect this.
9ebd538db5 Removed Unicode dash. (Mark Lopez)
Pull request description:
Executing with `0.9.4` now results in a crash when attempting to generate a new `joinmarket.cfg`. The issue is likely related to my terminal emulator or something - but a easily fix is to remove the superfluous unicode dash from the generated configuration file.
```
$ python wallet-tool.py generate
User data location: /home/blah/.joinmarket/
Traceback (most recent call last):
File "wallet-tool.py", line 6, in <module>
jmprint(wallet_tool_main("wallets"), "success")
File "/opt/joinmarket/joinmarket-clientserver/jmclient/jmclient/wallet_utils.py", line 1502, in wallet_tool_main
load_program_config(config_path=options.datadir)
File "/opt/joinmarket/joinmarket-clientserver/jmclient/jmclient/configure.py", line 635, in load_program_config
configfile.write(defaultconfig)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2014' in position 2701: ordinal not in range(256)
```
ACKs for top commit:
kristapsk:
ACK 9ebd538db5
Tree-SHA512: daa316818eefb6ee7fe927894b177dbbd66373c2267f7e70a64f6df493b9c2bf5f44b2b744e336f241f54a7cf9a95f9824ee4285593d5fbdd286ce307290ec3a
c706c6e1e9 Improve the UX of open wallet dialog. (Wukong)
Pull request description:
This PR addresses the first two items in the "Next step improvements" of #932:
1. Show all the error messages, like "Wrong Password", "File not exist", "Invalid wallet file" etc., within the same dialog, and allow the user to make changes to their decisions in the same dialog when these errors occur.


2. Update the UX of menu action "Wallet -> Load" to also use this new Open Wallet dialog.
In this update, I also renamed the current menu item "Load" to "Open", and added a shortcut "Ctrl+O" for this menu item, which I believe is more consistent with the expectation of the UI from most users.
ACKs for top commit:
kristapsk:
re-ACK c706c6e1e9
Tree-SHA512: 3d953234034859d82f06ac018eb484024272eba58397598a014cbad1faf099ffe4ac28d661e3649c17e77bb26ba9cb7af9433a5bdd856023f61192aba5d1f2e6
When open wallet from menu, also use the JMOpenWalletDialog to handle the workflow
Create a new "errorMessageLabel" in the OpenWalletDialog, and show the error message in this new label instead of in a separate message box popup.
Auto focus on passphraseEdit when OpenWalletDialog is launched, and when a wallet file has been chosen
ca85ac67d3 Don't throw when disabled socks config missing (Daniel McNally)
Pull request description:
Previously, the default config file generated by JM causes an error due to not having `socks5_host` and `socks5_port`, which are commented out since `socks5` is disabled by default. This commit makes those fields optional when `socks5` is not set to `true` in the config. It also makes `socks5` default to `false` if it is not specified in the config for a given IRC server.
ACKs for top commit:
kristapsk:
re-ACK ca85ac67d3
Tree-SHA512: eb33298573c684f5f845bafbec41f37f89c46431d7b5e94f9341c92563dfbfb9146e277f19a2fa4844e57fb6d8accab51340472c5ae6e73097b62a98f5c2afc5
Previously, the default config file generated by JM causes an error due
to not having `socks5_host` and `socks5_port`, which are commented out
since `socks5` is disabled by default. This commit makes those fields
optional when `socks5` is not set to `true` in the config. It also
makes `socks5` default to `false` if it is not specified in the config
for a given IRC server.
0507f6a117 Validate message signature encoding (Adam Gibson)
Pull request description:
Fixes#1069.
Before this commit, a non-hex encoded pubkey sent
as part of the privmsg signature raised an Exception,
this commit fixes this, checking the encoding of both
the pubkey and signature fields before sending them
from daemon to client.
ACKs for top commit:
kristapsk:
ACK 0507f6a117. Checked diff between commits, test suite passes, did successful signet coinjoin. Merging.
Tree-SHA512: d6b59fc340b015157544330a0a4624999559d9f2bcc5ee1ef189558bdab5fb2a2cf80287d1020bfe5be1f4919037b794a0fa4bbe2292a80aca0a03e9de23384a
840189cd0a Fix SNICKER daemon startup (Kristaps Kaupe)
Pull request description:
Fixes#1067.
Bug was introduced with 7e73e4caa9 (part of #996) when return value of `start_daemon_on_port()` was changed from `int` to `tuple`.
Top commit has no ACKs.
Tree-SHA512: 76bfbbf89b66d39d277bac4aed515cd251fe5f40e6eaafc2596c2e095a60931f1cddd2b147e4fd51d07c99c6ff8c94bbc2fe661a618da0220ff4924128833031
e7ff25d1ca Fix example date and example output in fidelity bond doc (Kristaps Kaupe)
Pull request description:
Resolves#1071.
Top commit has no ACKs.
Tree-SHA512: 0ae4a130d9fa3cc815e60ee4d03524573b992559e2da768ad0600e350e5a92cf67644d6896a3c84daad02b5161eb9793fbb9cec602e1d79b1f9c5626d91f4ee2
14bed1400a Fix @fort-nix's public orderbook links (Kristaps Kaupe)
Pull request description:
In long-term IMO it would be cool to have some orderbook watcher in the Qt GUI, so it would be easy to view orderbook without running ob-watcher script locally.
Top commit has no ACKs.
Tree-SHA512: 80084a3999da0d31d91d6b7307cdb5362f5c7dbbe142056d5e857fce0d0bc5b027aef1e7a81391c5f0d06b006c698112472682fabffeddfdf0540625a93a8fb0
Fixes#1069.
Before this commit, a non-hex encoded pubkey sent
as part of the privmsg signature raised an Exception,
this commit fixes this, checking the encoding of both
the pubkey and signature fields before sending them
from daemon to client.
af4f071b74 Add Ilita IRC server (.onion) (xanoni)
Pull request description:
- Added Ilita (http://ilitafrzzgxymv6umx2ux7kbz3imyeko6cnqkvy4nisjjj4qpqkrptid.onion)
- Cleaned up server list overall
ACKs for top commit:
kristapsk:
ACK af4f071b74, did successful signet coinjoin.
Tree-SHA512: 0767782a51fc94b474a5a084b84390a67a2b3d9239915df7abaab50a388be918393ef083909f46fb1a7246c4f70556fece94afdfcb11af24b760f0e2230159cc