Commit graph

3024 commits

Author SHA1 Message Date
Andreas Schildbach
fb2d983b54 PeerGroup, TransactionBroadcast: Drop any peer a transaction has been broadcast to.
These peers will not send us back useful broadcast confirmations.
2020-02-28 15:59:37 +01:00
Andreas Schildbach
afb376fc07 MessageWriteTarget: Return a future from writeBytes() that completes when all bytes have been written to the OS network buffer. 2020-02-28 15:59:37 +01:00
Andreas Schildbach
0a085fde6d Peer: If a bloom filter is set on a peer that doesn't support filtering, disconnect. 2020-02-27 23:32:50 +01:00
Andreas Schildbach
95e08ef86c PeerGroup: Require SegWit protocol and service when selecting a download peer.
Those nodes are extremely common now.
2020-02-27 23:32:50 +01:00
Andreas Schildbach
8d983649d3 PeerGroup: Don't immediately select a download peer in startBlockChainDownload(). Wait for enough peers to be connected. 2020-02-27 23:13:26 +01:00
Andreas Schildbach
98f8c42140 TestWithPeerGroup: Time out this group of tests after 10 seconds. 2020-02-27 23:11:28 +01:00
John L. Jegutanis
1991d8a882 MessageSerializer: Move protocolVersion from Message to here.
This change moves protocolVersion from Message to MessageSerializer.
The main reason is to support parsing transactions as non-segwit.
This is impossible to do otherwise, as MessageSerializer#makeTransaction()
does not accept a protocolVersion parameter.
Additionally this change makes the MessageSerializer similar to the
Stream in Bitcoin Core, where the protocol version can be modified.
2020-02-16 18:03:10 +01:00
Andreas Schildbach
3cbb10334e BitcoinSerializer: Add equals() and hashCode(). 2020-02-16 17:37:44 +01:00
Andreas Schildbach
73583776a6 ChildMessage: Fix a missing @Nullable in constructor argument. 2020-02-16 17:13:09 +01:00
John L. Jegutanis
d734d8854a Utils: Introduce Utils.resetMocking() and use it from AbstractFullPrunedBlockChainTest.
It appears that the tests do not run in the same order or the static variables
are not reset between runs on all systems or Gradle versions.
So it happened that the test UtilsTest.testRollMockClock() was messing up
the time for the H2FullPrunedBlockChainTest (and the LevelDB one), failing tests.
2020-01-30 17:02:30 +01:00
Andreas Schildbach
f258cbc122 Update JUnit to 4.13. 2020-01-23 01:20:44 +01:00
Andreas Schildbach
0112e3ccbe Update slf4j to 1.7.30. 2020-01-23 01:16:58 +01:00
Andreas Schildbach
0473c748b9 Update OkHttp to 3.12.8. 2020-01-23 01:14:21 +01:00
Andreas Schildbach
68538e57af Update Guava to 28.2-android. 2020-01-23 01:09:35 +01:00
Anton Kumaigorodski
163d39dbff MainNetParams: Add lightning-wallet.com HTTP seed. 2020-01-12 17:23:56 +01:00
Andreas Schildbach
66403d1946 PeerGroup.ChainDownloadSpeedCalculator: Log chain height with end of sync. 2019-12-14 17:11:11 +01:00
Andreas Schildbach
80228d7954 PeerGroup: Only select a download peer if more than maxConnections/2 peers are connected. 2019-12-08 13:02:31 +01:00
Andreas Schildbach
c2e1383b58 PeerGroup: Be more careful about selecting download peer.
We now select a (new) download peer only if there is a clear consensus about a common chain height between
connected peers. If there is a tie between two common heights, we stay safe and don't change anything.
2019-12-08 13:02:31 +01:00
Andreas Schildbach
924e525d52 PeerGroup: Move maxOfMostFreq() from Utils to here, as here is the only usage. 2019-12-08 11:11:01 +01:00
Andreas Schildbach
76071d8378 DatabaseFullPrunedBlockStore implementations: Make sure SegWit addresses fit into the openoutputs.toaddress column. 2019-11-29 11:43:26 +01:00
Andreas Schildbach
141e4024e6 Replace remaining System.currentTimeMillis() by the Utils equivalent.
This is important for using the mock clock in tests.
2019-11-26 17:58:45 +01:00
Andreas Schildbach
8b55b8c0a7 Make a couple of tests use the mock clock to improve test reproducibility. 2019-11-26 17:46:31 +01:00
Andreas Schildbach
d8cd74dbb3 Utils: Make mockTime field private.
Use the various setters.
2019-11-26 17:01:43 +01:00
Andreas Schildbach
af9400a650 PeerFilterProvider: Remove isRequiringUpdateAllBloomFilter().
Bloom filters will now always be created with UPDATE_ALL. With SegWit there is hardly any wallet
that can do without. This will save some locking.
2019-11-26 16:42:00 +01:00
Andreas Schildbach
c14e9240ad PeerFilterProvider: Rework JavaDoc. 2019-11-26 16:40:17 +01:00
Andreas Schildbach
ded215e69e Update slf4j to 1.7.29. 2019-11-21 12:35:13 +01:00
Andreas Schildbach
35cec435cc CheckpointManager: Use a standard charset. 2019-11-20 18:51:53 +01:00
Andreas Schildbach
5948be6b91 CheckpointManager: Make clear that time is in seconds. 2019-11-20 18:51:53 +01:00
Andreas Schildbach
7d7ef1b494 CheckpointManager: Log time of latest checkpoint read. 2019-11-20 18:41:41 +01:00
Oscar Guindzberg
edb2fa8959 AbstractBlockChain: Print "Wallet/chain height mismatch" warning only if walletHeight > 0. 2019-11-10 21:02:05 +01:00
Oscar Guindzberg
a70fa1f708 SPVBlockStoreTest: Add block store deletion test. 2019-11-10 21:02:05 +01:00
Oscar Guindzberg
9f0c888aa1 Secp256k1Context: Use log.debug() instead of .info() when native secp256k1 cannot be used. 2019-11-10 21:02:05 +01:00
Oscar Guindzberg
c4e418f8ab MainNetParams: Update hardcoded seed node addresses - Apr 2019. 2019-11-10 21:02:05 +01:00
Oscar Guindzberg
2fa06e276f MainNetParams, TestNet3Params: Sync DNS seeds with Bitcoin Core. 2019-11-10 19:07:50 +01:00
Andreas Schildbach
d512d4fc37 Derive lock names from the class they protect.
Also append the word "lock" to the name.
2019-11-06 09:48:34 +01:00
Andreas Schildbach
ec851df530 ProtobufConnection: Remove unused class.
It was forgotten when removing Micropayment Channels.
2019-11-06 09:28:45 +01:00
Andreas Schildbach
f3b48f102f SPVBlockStore: Double the default capacity.
This has proven to be a sensible value for mobile devices.
2019-10-22 23:40:29 +02:00
Andreas Schildbach
833a67e1d6 Update BouncyCastle to 1.64. 2019-10-22 19:13:27 +02:00
Peter Dettman
7629677103 Track point compression in LazyECPoint, rather than ECPoint.
The reason is BouncyCastle 1.64 removed point compression tracking.
2019-10-22 19:13:27 +02:00
Andreas Schildbach
7eb9c73655 ECKey: Add helper method isPubKeyCompressed(), and use it. 2019-10-22 16:15:35 +02:00
Andreas Schildbach
5bcf947170 BloomFilterTest: Tidy up asserts. 2019-10-21 17:03:26 +02:00
Andreas Schildbach
f396327246 Update Guava to 28.1-android. 2019-10-21 12:15:53 +02:00
Andreas Schildbach
7982fc2456 Update OkHttp to 3.12.6. 2019-10-21 12:10:37 +02:00
Andreas Schildbach
b690803442 Update protobuf-java to 3.9.2. 2019-10-08 19:14:02 +02:00
Sean Gilligan
cc445b8fd1 BtcFormat: Fix "heading used out of sequence" JavaDoc error on JDK 13. 2019-10-01 22:02:51 +02:00
Andreas Schildbach
2288c2150f PeerGroup: Make private walletCoinsReceivedEventListener also take care of P2WPKH outputs.
P2WPKH outputs are a similar case as P2PK outputs in that inputs that spend them
cannot be matched by a bloom filter: their scriptSig is empty and their witness
(which would contain a matching pubkey) is not tested for a match. This is a
shortcoming of the SegWit spec.

Hopefully this fixes https://github.com/bitcoinj/bitcoinj/issues/1690
2019-10-01 21:44:46 +02:00
Andreas Schildbach
7f97c8afa6 Change wording p2pubkey to P2PK. 2019-10-01 20:33:07 +02:00
Andreas Schildbach
86a73137ad Update OkHttp to 3.12.5. 2019-09-19 00:13:25 +02:00
Shafiullah Rahman
30ccb23c1c UtilsTest: Add unit tests for org.bitcoinj.core.Utils. 2019-09-11 11:51:23 +02:00
Andreas Schildbach
36e64477b5 Update BouncyCastle to 1.63. 2019-09-11 11:04:17 +02:00