Commit graph

373 commits

Author SHA1 Message Date
ghubstan
786b2ec42b
Remove commented out test 2021-06-12 17:46:33 -03:00
Christoph Atteneder
a046db528a
Reduce the number of connected BTC nodes from 9 to 7 2021-05-21 17:19:38 +02:00
Christoph Atteneder
89729c41c9
Merge branch 'master' of github.com:bisq-network/bisq into release/v1.6.3
# Conflicts:
#	scripts/install_java.sh
2021-05-07 10:33:45 +02:00
Christoph Atteneder
35ede06037
Filter banned seednodes with wrong format 2021-05-05 11:21:53 +02:00
Christoph Atteneder
c615d5dbf9
Merge pull request #5109 from stejbac/implement-segwit-for-bsq-wallet
Wallet changes for Segwit BSQ implementation
2021-04-27 20:58:51 +02:00
Steven Barclay
9760526aaa
Factor out shared segwit keychain setup to WalletsManager
Move consecutive maybeAddSegwitKeychain(..) calls for the BTC & BSQ
wallets from BisqSetup to WalletsManager, as the latter class is used
for operations which should be applied to both wallets and this moves
the logic closer to the wallet domain.

Also migrate a BSQ address validator in one of the test mock classes
from Base58AddressValidator to BitcoinAddressValidator (missed earlier).
2021-04-27 11:45:00 +01:00
cd2357
ca5f41a9d9
Merge remote-tracking branch 'bisq-network/hotfix/v1.6.1' into upgrade-javafax-14
# Conflicts:
#	build.gradle
2021-03-29 18:37:14 +02:00
jmacxx
094da74433
allow default fee values in leniency check 2021-03-28 20:14:59 +02:00
Christoph Atteneder
fd17c5790e
Merge pull request #5365 from jmacxx/fee_validation_default_rate
Allow default fee values in leniency check
2021-03-28 20:04:52 +02:00
jmacxx
93da6815b3
allow default fee values in leniency check 2021-03-27 15:50:58 -05:00
jmacxx
39d86b4f80
Fee validation leniency using old DAO param values 2021-03-24 09:58:24 +01:00
jmacxx
f85667b55a
Fee validation leniency using old DAO param values 2021-03-23 15:32:01 -05:00
Steven Barclay
f21379160b
Merge branch 'release/v1.6.0' into implement-segwit-for-bsq 2021-03-20 23:18:49 +00:00
ghubstan
7683569abf
Inject CoreContext into OpenOfferManager, adjust test 2021-03-19 19:37:00 +01:00
sqrrm
1c3fc41c33
Merge pull request #5294 from ghubstan/01-fix-takeoffer-err-handling
Improve takeoffer error handing
2021-03-19 11:55:18 +01:00
jmacxx
47ad4219e2
Merge branch 'master' into mempool_check_maker_tx 2021-03-17 16:26:38 -05:00
jmacxx
9fcd65f320
Validate maker/taker fees using mempool lookup
apply @chimp1984 patch.txt code review suggestions
taker tx check moved to trade step 2, after confirmation
solve issue with calculating expected fees for unconfirmed tx
resolve conflict with PR5207 (Disputes UI)
check new offers after 1 block; check Json string not null; warn -> info
remove unused parameter
remove debugging log.warn message
2021-03-17 16:23:18 -05:00
Christoph Atteneder
9270398fb3
Merge pull request #5207 from jmacxx/improve_dispute_chat
Improve chat functionality of mediation/arbitration
2021-03-17 09:38:35 +01:00
ghubstan
067a5c7a08
Inject CoreContext into OpenOfferManager, adjust test 2021-03-10 14:15:59 -03:00
jmacxx
cc56470b2f
Improve chat functionality of mediation/arbitration
Show badge with number of unread chat messages on each ticket
Use icons for chat, info and process ticket functions
Select a row by clicking on it, no clunky select button needed.
Show chat messages in a movable popup window.
More space for ticket list.

Implement requested feature additions:

Indicate if the trade period is over
Indicate more clearly the sender of each chat message
Support badge count
Indicate the XMR tx proof (when applicable)
Allow trader to close own mediation ticket if the trade is paid out

Fixes:

null check for cases when extraData null/not applicable
when upgrading closed disputes, clear chat unread count
2021-03-03 18:41:17 -06:00
jmacxx
be78f47b0e
Update Preferences tests to new constructor signature 2021-02-25 08:27:30 -06:00
cd2357
7c2b4e02b8
Merge remote-tracking branch 'bisq-network/hotfix/v1.5.6' into upgrade-javafax-14 2021-02-17 23:16:52 +01:00
cd2357
5a358b49de
Merge remote-tracking branch 'bisq-network/release/v1.5.5' into upgrade-javafax-14 2021-02-04 11:58:43 +01:00
Steven Barclay
b4ad6bf637
Upgrade jsonrpc4j & Jackson; simplify BitcoindClient
Change jsonrpc4j version from 1.5.3 to 1.6.0.bisq.1, forked to the Bisq
repo from the recent 1.6.0 release. The forked version changes the class
'com.googlecode.jsonrpc4j.HttpException' to be public, instead of (prob.
mistakenly) package private, so we can avoid using reflection to catch
it and re-throw as a 'bisq.network.http.HttpException'. Remove the now
unused constructors from the latter.

As part of this, upgrade Jackson to the latest stable (2.12.1) release,
since jsonrpc4j now depends on a newer version than the previous 2.8.10.
2021-02-04 07:51:38 +00:00
jmacxx
da45b8e6cf
Add pre-release software update notifications 2021-01-22 20:08:02 -06:00
Steven Barclay
e0aa76e440
Rename rpc.dto.RawX to RawDtoX to avoid confusion
Avoid name clashes between the Json RPC client DTOs & the corresponding
raw (un-parsed) DAO state entities. Also prepend the other DTO classes
with 'Dto' for consistency.
2021-01-21 11:14:56 +00:00
Steven Barclay
a8b0863264
Ensure RPC client works with Bitcoin Core 0.21.0
Add missing 'connections_(in|out)' JSON properties to NetworkInfo that
came with the recent 0.21.0 release of Bitcoin Core. Also ensure that
unrecognised JSON properties are ignored, so that future changes to the
RPC API are less likely to break our client.

Also, for the benefit of the tests, change the JSON property order of
RawInput to better match observed 'getblock' responses. (It appears that
in 0.21.0, extra "txinwitness" fields have started appearing in coinbase
inputs, which may be a bug.)
2021-01-21 10:10:32 +00:00
Steven Barclay
4b0711bfcc
Add Bitcoin Core version & health check to RpcService
Make a 'getnetworkinfo' RPC call to bitcoind immediately upon startup,
to check that the node is up (and throw a ConnectException to ensure
that the user is presented with an appropriate warning popup otherwise).
Log a warning if the node version is outside the 0.18.0 - 0.20.1 range.

Additionally, call 'getbestblockhash' to check that the chain tip is not
stale (> 6 hours old). As part of this, make sure the 'getblock' RPC
call works correctly with verbosity < 2, by fixing JSON deserialisation
of the response when the block or txs are in summary (hex string) form.

(These version & health checks are almost identical to the ones done by
the original btcd-cli4j library during RPC client startup.)
2021-01-21 10:10:31 +00:00
Steven Barclay
d595cac477
Add getNetworkInfo & getBestBlockHash RPC client methods
Provide a 'NetworkInfo' DTO class (with associated nested DTO classes),
returned by the 'getnetworkinfo' RPC method call to bitcoind. This will
be used during startup of RpcService to determine if Bitcoin Core is
available and which version it is using. Add a unit test to round-trip a
sample NetworkInfo JSON response.

Also add the missing 'getbestblockhash' RPC method, which will be needed
by RpcService to determine the Bitcoin Core node health.
2021-01-21 10:10:31 +00:00
Steven Barclay
796097abbc
Fix data race in BitcoindDaemonTest
Prevent intermittent test failures, caused by a race between checking
whether the mock socket is closed upon accepting a new connection and
setting 'socketClosed' to true during shutdown. Waiting to accept and
then checking the flag needs to be done in a synchronized block.
2021-01-21 10:10:30 +00:00
Steven Barclay
6ca42c0cd1
Enable extraction of segwit pubkeys from raw tx inputs
Factor out a new RpcService.extractPubKeyAsHex method, to take public
keys from the inputs of the raw transactions returned by the RPC client,
when building TxInput objects to incorporate into the DAO state. Enhance
the method to additionally support segwit (P2WPKH & P2SH-P2WPKH) inputs
(but only the first input for backwards compatibility - see code
comment). Also fix a bug when handling non-SIGHASH_ALL input signatures.

This will allow segwit BSQ to be used in proof-of-burn and issuance txs,
which need a public key associated with the tx to establish ownership of
it, when signing messages with a proof-of-burn or staking merit awarded
from a compensation issuance, respectively.

Also add unit tests for the factored-out method and add a missing RawTx
toString() method, to aid debugging the TxInput fields within the
processed block returned by RpcService.
2021-01-21 10:10:29 +00:00
Steven Barclay
ac78639656
Improve exception handling in BitcoindDaemon
Wrap any exception that occurs during socket IO or within the supplied
BlockListener with a new 'BlockNotificationException'. This brings the
exception handling more in line with that of the old BtcdDaemonImpl and
makes it easier to match them downstream in FullNode.handleError.
2021-01-21 10:08:24 +00:00
Steven Barclay
4470af8edb
Add missing copyright headers to new files 2021-01-21 10:08:23 +00:00
Steven Barclay
b7c7eaf1f2
Add replacement bitcoind block notification daemon
Provide a new 'BitcoindDaemon' block notification socket server, to
replace 'com.neemre.btcdcli4j.daemon.BtcdDaemonImpl'. This starts a
single service thread to listen for raw block hashes on localhost port
512*, sent by the specified 'blocknotify' shell/batch script, delegating
to a pool of worker threads to run the supplied BlockListener handler.
Unlike the original BtcdDaemonImpl class, a call to the 'getblock' RPC
method is not made automatically to supply a complete block to the
handler, instead requiring a separate, manual BitcoindClient.getBlock
invocation from within RpcService.

Also provide unit tests using a mock ServerSocket + Socket.

TODO: Use the new Bitcoind(Client|Daemon) implementations in RpcService,
 in place of btcdcli4j Btcd(Client|Daemon)Impl & remove the old library.
2021-01-21 10:08:22 +00:00
Steven Barclay
dbe4953f63
Add replacement bitcoind RPC client using jsonrpc4j
Create a new 'BitcoindClient' interface and a corresponding builder, to
replace the old 'com.neemre.btcdcli4j.core.client.BtcdClientImpl' class
from the btcdcli4j library. This is instantiated by jsonrpc4j using a
dynamic proxy. It provides only a cut down version of the bitcoind RPC
API, exposing the methods 'getblock', 'getblockcount' & 'getblockhash',
as they are the only ones currently being used by RpcService.

Add corresponding Jackson-annotated DTO classes to model the JSON
structures returned by bitcoind, very similar to the classes provided by
btcdcli4j. Note that we use Double instead of BigDecimal to represent
fractional fields (difficulties + coin amounts in BTC), as they have
more consistent Jackson (de)serialisation and appear to be able to
faithfully round-trip numeric fields produced by bitcoind. Also note
that doubles can faithfully represent any valid decimal BTC amount (that
is, with 8 d.p. of precision) up to 21 million.

For now, keep the old BtcdClientImpl instance used by RpcService in
place, as the btcdcli4j block notification daemon is dependent upon it
and would also need to be replaced.

Also add unit tests for BitcoindClient which test against sample regtest
responses, using a mock HttpURLConnection.
2021-01-21 10:08:22 +00:00
Steven Barclay
3dd552c2b3
Avoid reverse DNS lookup in BtcNodeConverterTest
Prevent failure of testConvertClearNode() on some machines, caused by
use of InetAddress.getHostName on the mock peer address. This does a
reverse DNS lookup and potentially returns something other than the
expected "192.168.0.1" string.

Also avoid an unnecessary getHostName() call on the SOCKS5 Tor proxy
InetAddress in WalletConfig, by using an alternative InetSocketAddress
constructor.
2021-01-18 16:21:52 +00:00
cd2357
47c4e09d69
Merge remote-tracking branch 'bisq-network/hotfix/v1.5.4' into upgrade-javafax-14 2021-01-13 19:44:12 +01:00
chimp1984
b5af6bcfc7
Add missing Filter params in tests 2021-01-04 12:00:00 -05:00
chimp1984
3cf6c60354
Add NetworkFilter, remove BanList 2021-01-01 16:51:05 -05:00
chimp1984
a3e8d4d225
Fix missing param in test 2020-12-31 00:42:23 -05:00
Christoph Atteneder
94cf02303e
Merge pull request #4950 from chimp1984/improve-offer-publishing
Improve offer publishing
2020-12-29 19:51:21 +01:00
sqrrm
c5218c66c3
Merge pull request #4971 from chimp1984/use-resource-file-instead-of-resync-from-genesis
Avoid resync from genesis in case of dao state issues
2020-12-21 22:00:42 +01:00
chimp1984
d689a3974b
Fix param change in test 2020-12-20 19:01:10 -05:00
chimp1984
83e620d462
Fix missing param in test 2020-12-16 10:08:55 -05:00
chimp1984
425bfa3bf7
Fix failing test (remove did operate on map
directly and we did not remove the item from the cache)

- Add getSignedWitnessMapValues method for access to signedWitnessMap values
- Remove Getter for signedWitnessMap
- Add removeSignedWitness method (used in test only)
- Use addToMap in test instead of direct access to map
- Remove getSignedWitnessSetCache entry matching
signedWitness.getHashAsByteArray() as well.
See comment. @sqrrm: Can you cross check?
2020-12-15 19:15:40 -05:00
cd2357
72a719dcc9
Merge remote-tracking branch 'bisq-network/release/v1.5.0' into upgrade-javafax-14 2020-11-27 16:59:23 +01:00
Steven Barclay
88d7d96427
Fix failing OpenOfferManagerTest & PeerManagerTest
These are failing on the tip of release/1.5.0 currently due to extra
validation added to PersistenceManager, causing the build to fail upon
merging upstream. Add missing PersistenceManager.shutDown calls to the
tearDown methods of the affected tests to fix.
2020-11-19 16:47:21 +01:00
Oscar Guindzberg
c4131c7398
Rename "tx size" to "tx vsize" 2020-11-05 19:28:45 -03:00
Oscar Guindzberg
29f23fe50c
Use segwit tx sizes 2020-11-05 11:51:43 -03:00
sqrrm
f03be6ad3d
Merge pull request #4628 from chimp1984/improve-read-file-handling
Use a thread in PersistenceManager for reading persisted files instead of using threads in client code
2020-11-02 17:36:21 +01:00