Commit graph

13811 commits

Author SHA1 Message Date
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
f34231abb6
Factor out failure callback logic into new Utilities method 2021-01-21 10:08:23 +00:00
Steven Barclay
863392bc74
Factor out executor shutdown logic into new Utilities method 2021-01-21 10:08:22 +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
5990fcf9e7
Bring ScryptType enum up to date with latest bitcoind
Add 'witness_v1_taproot' script type to the enum and proto.pb, so that
it doesn't cause any problems when Taproot is activated and the new
script type starts showing up in RPC getBlock(..) responses (including
possibly BSQ transactions).

Also change the Java enum order (which shouldn't cause any problems as
the ordinal isn't used directly in hashCode calculations) and add the
missing 'witness_unknown' enum value to pb.proto to bring it in sync.
2021-01-21 10:08:15 +00:00
sqrrm
d3971ef7dd
Merge pull request #5072 from chimp1984/persist-and-republish-mailbox-messages
Persist and republish mailbox messages
2021-01-16 20:24:13 +01:00
sqrrm
44cbea886a
Merge pull request #5081 from ghubstan/04-posix-cli-opts+method-help
Use posix-style CLI opts, provide method help
2021-01-16 13:43:18 +01:00
ghubstan
1ad7b351b6
Remove uneeded method 2021-01-15 16:33:52 -03:00
ghubstan
ec9f783eb5
Remove switch(hardcoded enum.name)
There is no need for a switch here, the doc exists or it does not.
2021-01-15 16:25:39 -03:00
chimp1984
5d13fdcdbb
Return early 2021-01-14 20:42:36 -05:00
ghubstan
f2a899917c
Fix default opt values 2021-01-14 19:05:27 -03:00
ghubstan
baf79e2b50
Make opt description more generic 2021-01-14 19:03:49 -03:00
ghubstan
acf2c7c50e
Remove deprecated NegativeNumberOptions
Not needed anymore, and all method opts are posix style.
(The opts parsing lib used to treat negative numbers as opt labels.)
2021-01-14 10:27:47 -03:00
ghubstan
9f0f083cf7
Change CLI opts to posix-style 2021-01-14 10:26:11 -03:00
ghubstan
f4e735faec
Move CLI method enum to it's own class
This helps reduce size of growing CLI class file.
2021-01-14 10:25:08 -03:00
ghubstan
37ad73d4f4
Add posix-style api method option parsers 2021-01-14 10:23:38 -03:00
ghubstan
49a3b46960
Add CoreHelpService gRPC stubs and test case 2021-01-14 10:22:14 -03:00
ghubstan
a067ba1228
Add new CoreHelpService and method help docs
Adds all the gRPC server boilerplate, and a simple help service
that serves method help in man page format.  Help text is maintained
in text files located in core/src/main/resources/help.

Only some of the method help text files are defined in this
change, more to be added.
2021-01-14 10:19:39 -03:00
sqrrm
f838b1a475
Merge pull request #5076 from ghubstan/03-support-trigger-price
Stub out support for OpenOffer's triggerPrice in api
2021-01-14 10:34:29 +01:00
Christoph Atteneder
01bfbe7ca0
Merge pull request #5071 from jmacxx/fix_issue_5067
Show a confirmation of successfully sending BTC or BSQ from wallet
2021-01-14 09:37:20 +01:00
jmacxx
3984e8b3dd
Code review suggestions from @ripcurlx
Disable validation errors when clearing edit fields
Implement spacer field using Region
2021-01-13 21:31:58 -06:00
chimp1984
7ba5ab5a4e
Change prio for mailboxMessageList persitence 2021-01-13 20:48:52 -05:00
chimp1984
541f367e81
Dont log filter content if a filter got updated 2021-01-13 20:39:26 -05:00
sqrrm
685d79749b
Merge pull request #5065 from ghubstan/offer-protection-tools-api-integration
Integrate new protection tools into api's offer & trade services
2021-01-14 00:26:10 +01:00
ghubstan
a8d15d0161
Merge branch 'offer-protection-tools-api-integration' into 03-support-trigger-price 2021-01-13 20:03:03 -03:00
ghubstan
0e779a4bf6
Inject CoreContext into server, then set isApiUser=true
Do not set isApiUser=true based on hardcoded thread name ;-(

For requested change
https://github.com/bisq-network/bisq/pull/5065#pullrequestreview-567708569
2021-01-13 19:55:49 -03:00
ghubstan
9a4e311193
Fix file conflict
The createoffer trigger price was defined as the 0 default value
in the gRPC request object (causing the file conflict with the
main branch).  This line can be removed because a protobuf
long's default value is 0.
2021-01-13 09:31:34 -03:00
sqrrm
fe32c91426
Merge pull request #5063 from ghubstan/fix-cli-negative-opts-parsing
Fix two CLI option parsing bugs
2021-01-13 10:42:08 +01:00
chimp1984
d434cb3022
Sort persisted mail box messages by age and limit total number.
Add size limit.
Add log for number of persisted mailbox msg per day
2021-01-12 22:59:44 -05:00
chimp1984
2fb3bba74d
Use MailboxMessage as param type in sendEncryptedMailboxMessage 2021-01-12 17:47:44 -05:00
chimp1984
c12e239fa5
Refactor: rename method 2021-01-12 17:44:04 -05:00
chimp1984
36657f5532
Use TradeMailboxMessage as type for getMessage in SendMailboxMessageTask 2021-01-12 17:43:27 -05:00
chimp1984
3834785828
Bugfix: Add processing of SendersNodeAddressMessage to
onBundleOfEnvelopes method.

In case we received a SendersNodeAddressMessage
inside a BundleOfEnvelope we did not set the
peers address.
2021-01-12 17:40:40 -05:00
chimp1984
3e69edeb9e
Remove comment 2021-01-12 17:34:54 -05:00
chimp1984
a21d79ad63
Refactor: rename 2021-01-12 17:34:28 -05:00
chimp1984
364a7f524c
Add toString 2021-01-12 16:14:32 -05:00
chimp1984
2b05ed54fc
Let MailboxMessage extend ExpirablePayload:
For all MailboxMessage we want to be sure they have an expire date.
Add getTTL methods and TTL value.
We use 7 days for ChatMessages and 30 days for PrivateNotificationMessages.
All others use default 15 days.
We prefer to keep them explicit and not use a default method in
ExpirablePayload or MailboxMessage.
The value in PrefixedSealedAndSignedMessage will not be used as the
sender use the TTL of the payload and pass that to the MailboxStoragePayload
where we store it in the extraMap. That way we can use different TTL even the
payload message is encrypted and we would not be able to look it up.
2021-01-12 16:14:13 -05:00
chimp1984
470230c35c
Add TradeMailboxMessage and use a TTL of 15 days
Extend TradeMailboxMessage where we had `extends TradeMessage implements MailboxMessage`
2021-01-12 16:06:13 -05:00
chimp1984
46f60260dc
Remove outdated code
Remove outdated comment
Add checkNotNull for senderNodeAddress
2021-01-12 15:46:33 -05:00
chimp1984
4c003cded6
Clone reportedPeers to avoid ConcurrentModificationExceptions 2021-01-12 15:33:31 -05:00
chimp1984
5c429bb3a7
Add containsKey check 2021-01-12 14:48:45 -05:00
chimp1984
008fb3b6dc
Inline isMyMessage methods 2021-01-12 14:43:25 -05:00
chimp1984
c229c3f014
Refactor handling of DecryptedMessageWithPubKey 2021-01-12 14:36:13 -05:00
chimp1984
d353140e7a
Refactor: rename getMyDecryptedMessages method to make it more explicit
that its only used for MailboxMsg
2021-01-12 13:54:54 -05:00
chimp1984
5cdae8620b
Refactor: rename method to make it more explicit that its only used for MailboxMsg 2021-01-12 13:54:25 -05:00
chimp1984
575196c16d
Refactor handleDecryptedMessageWithPubKey to use MailboxMessage
instead of decryptedMessageWithPubKey.
Here we change a bit the behaviour as now we check also if the
TradeMessage is a MailboxMessage. As that method is only called
from MailboxMessageService domain we never get a non MailboxMessage
here anyway and it would have been a bug.

Remove removeMailboxMsg(DecryptedMessageWithPubKey decryptedMessageWithPubKey) as not used anymore
2021-01-12 13:53:20 -05:00
chimp1984
2235c4fbdc
Use removeMailboxMsg method with MailboxMessage as param type 2021-01-12 13:36:46 -05:00
chimp1984
456ce70d22
Refactor: rename dispatchMessage to onSupportMessage (no functionality change) 2021-01-12 13:32:03 -05:00