There is no need to decrypt and re-encrypt wallet files in the unlock
and lock wallet methods. The temporary aesKey saved in the unlock
method will used for operations on an encrypted wallet.
There is also no need to cache a tempKeyCrypterScrypt; this class
level variable was removed.
Cache the aesKey instead of the password in unlock wallet method,
avoiding extra overhead of deriving it from the temp password in the
lock method.
The KeyCrypterScrypt used in the unlock method must also be cached for
use in the manual lock method. Creating a new KeyCrypterScrypt instance
in the manual lock method would have a different random salt value,
invalidating the password used in the unlock method.
Add a link to a StackOverflow answer showing how to configure IDEA to
automatically check and enforce the format of the commit message.
More specifically, the 50-character limit for the commit title and
72-character limit for the commit body.
- Polish whitespace and newlines; wrap comments at 90 chars
- Use package-private vs protected visibility when exposing
BitcoinFeeRateProvider constants for testing
- Document that 'maxBlocks' is dead code, but do not remove it yet, as
it would disrupt the process of getting this fix out quickly because
it would require operators to change the way they start their
pricenodes.
The API endpoint for fee estimations has been changed to one that delivers more accurate fee estimations.
This is a temporary solution, until a more decentralized approach is found.
Fixes projects/issues/27
This commit factors out a run() method in CliMain that either returns
(void) or throws an exception. This eliminates the need to call
System.exit in so many places as were previously. Indeed, now there is
only one place where System.exit is called.
It also removes the duplication of printing "Error: ..." to stderr when
something goes wrong by doing this once in the global catch clause in
the main method.
Without bugfix, method would try to encrypt the wallet using using the
old password argument immediately after encrypting the wallet with
a new password.
Like the change in commits 163061a and 9164579, removeWalletPassword
now throws an IllegalStateException with an appropriate message if
the wallet password cannot be removed.
Also deletes unused StatusApi enums.
Like the change in commit 163061a, setWalletPassword now throws an
IllegalStateException with an appropriate message if the wallet password
cannot be set.
Also deletes unused StatusApi enums.
And throw an IllegalStateException with an appropriate message if the
wallet is not available or still locked.
This change also eliminates the NullPointerException that would
sometimes be thrown when calling #getAvailableBalance after the wallet
has become available but before the balance has become available.
Previously, each wallet-related method was implemented with its own grpc
service. There is no need to do this, as a grpc service may declare
multiple rpc methods. This commit refactors everything wallet-related
into a single GrpcWalletService and also extracts a CoreWalletService
from CoreApi in order to avoid the latter becoming overly large.
Ideally, there would be no need for an abstraction in bisq.grpc called
CoreWalletService; we would ideally use such a service implemented in
bisq.core. The closest we have is WalletsManager, but it is not designed
to be used the way we are using it here in the grpc context. Rather than
making changes directly to core (which can be very risky), we will
rather make them here in this layer, designing exactly the "core wallet
service" we need, and can then later see about folding it into the
actual core.
The OfferBook tables now show the amount and the volume as min-max range, where appropriate.
For the offers that have no range defined, the single values are shown.
Fixes#3129
When creating an offer the small QR code displayed for funding
was off by an amount that represent the mining fees. This was due
to the QR code being displayed simultaneously with the wallet
calulating the fee.
We fix the issue by listening to the data model `missingCoin`
value of the offer object, and updating the QR code image
appropriately.
Fixes#3666Fixes#4194
This change removes non-idiomatic gRPC *Reply proto message fields.
The client should not receive success/fail values from server methods
with a void return type, nor an optional error_message from any server
method. This change improves error handling by wrapping an appropriate
gRPC Status with a meaningful error description in a StatusRuntimeException,
and placing it in the server's response StreamObserver. User error
messages are mapped to general purpose gRPC Status codes in a new ApiStatus
enum class. (Maybe ApiStatus should be renamed to CoreApiStatus.)
The table in the BondsView uses string sorting by default. This results in unexpected behavior when sorting non-string columns.
This commit adds custom comparators to the numeric columns to address that.
Fixes#3231
Add a missing bsqWalletService.isEncrypted() check and optional AES key
argument to the signMessage(..) call in ProofOfBurnService, analogous to
the BitcoinJ call to sign with an EC key in MyBlindVoteListService.
This fixes#3836.