Mike Hearn
0548e983ed
Fix a race condition in the memory pool code. Update issue 353.
2013-03-19 14:55:12 +01:00
Mike Hearn
8b437eaf95
Fix a thread safety issue. Update issue 353.
2013-03-19 14:54:00 +01:00
Mike Hearn
e5265a5342
Add more comments explaining Bloom filtering to avoid confusion.
2013-03-18 23:24:59 +01:00
Mike Hearn
57b4774985
Clean up another listener invocation a bit.
2013-03-18 23:24:59 +01:00
Mike Hearn
c988212441
Remove a redundant null check in checkAESKey()
2013-03-18 18:27:13 +01:00
Mike Hearn
dc433761dd
Print whether a key is encrypted or not in ECKey.toString()
2013-03-18 18:27:13 +01:00
Mike Hearn
33499aab78
JavaDoc fix to KeyCrypter.
2013-03-18 18:27:13 +01:00
Mike Hearn
7799024c5c
Don't dump the salt bytes in toString() and change how it's printed.
2013-03-18 18:27:13 +01:00
Mike Hearn
732c5e631e
Make it easier for people to override just the tx eligibility behavior in DefaultCoinSelector by using a protected method.
2013-03-18 18:27:13 +01:00
Mike Hearn
aaa2ec4c5a
Add some convenience methods for encrypted wallets. Minor style fixes.
2013-03-18 18:27:13 +01:00
Mike Hearn
5d0518dafd
Merge encrypted wallets functionality by Jim Burton.
2013-03-18 18:27:12 +01:00
Mike Hearn
17efb4d6b7
Add more logging and fix a bug in the dependency resolution process that occurred when using ping/pongs instead of notfound. It could result in hung dependency resolution and interfered with block downloads.
2013-03-18 17:33:54 +01:00
Mike Hearn
32353bdc2e
Bit more logging in TCPNetworkConnection
2013-03-18 17:33:16 +01:00
Mike Hearn
311e0549b9
Delete unneeded pong logging. Resolves issue 352.
2013-03-18 10:44:16 +01:00
Mike Hearn
1ed2459522
More minor issues found by IntelliJ static analysis.
2013-03-15 17:19:28 +01:00
Mike Hearn
3a899767b4
Clear some minor cosmetic issues found by IntelliJ static analysis.
2013-03-15 17:14:07 +01:00
Mike Hearn
c2e96be58b
Remove obsolete code that handled migration from java serialized wallets.
2013-03-15 17:12:52 +01:00
Mike Hearn
3db55946df
Fix another stupid bug in the pinging code that could cause crashes.
2013-03-15 16:03:02 +01:00
Mike Hearn
e140662ea2
Fix a regression in saving wallets on Windows.
2013-03-13 12:23:12 +01:00
Mike Hearn
9bc9a4b262
For now, throw on cycles. Also remove checkNotLocked(), as it isn't actually the right thing to do.
2013-03-11 16:07:33 +01:00
Mike Hearn
c351df567e
PeerGroup: Remove a now-useless synchronized block and mark a few more fields final.
2013-03-11 15:48:46 +01:00
Mike Hearn
a6d0c9169b
Clear a few more misc IntelliJ inspection alerts.
2013-03-11 15:06:27 +01:00
Mike Hearn
fb9bfb960e
Fix a bug that would cause ping nonces to always be set to zero, thus screwing up perceived ping times.
2013-03-11 15:02:16 +01:00
Mike Hearn
4d01e107fa
No-op: auto-simplify a few constructs
2013-03-11 14:58:47 +01:00
Mike Hearn
ac8a5008fe
Add JCIP thread annotations jar and use @GuardedBy in Peer.
...
Unlock Peer almost completely and make it fully thread safe with minimal use of locking.
Introduce a new convention that volatile variables have a v prefix.
2013-03-11 14:51:15 +01:00
Mike Hearn
45ce6fe9df
Bit more debugging code in TestWithNetworkConnections
2013-03-11 14:30:10 +01:00
Mike Hearn
c21f182d78
Move refreshing of the bloom filter out of the PeerGroup and into the Peer, where it belongs.
2013-03-11 12:39:46 +01:00
Mike Hearn
bffc85fa24
Move message processing out of the handler class and into the top-level Peer class.
2013-03-11 12:25:10 +01:00
Mike Hearn
b2ab3e1c43
Delete EventListenerInvoker, it is no longer needed.
2013-03-11 12:21:42 +01:00
Mike Hearn
971c9c5999
Remove more usages of EventListenerInvoker in PeerGroup and fix a TODO.
2013-03-11 12:21:01 +01:00
Mike Hearn
081663f857
Remove event listener in PeerGroup.removeWallet() to avoid a memory leak.
...
Resolves issue 344.
2013-03-11 12:10:41 +01:00
Mike Hearn
807447ca1a
Unlock Peer event listeners.
2013-03-07 18:43:23 +01:00
Mike Hearn
2333c44657
Add a comment.
2013-03-07 18:43:15 +01:00
Mike Hearn
c8c1e68152
Unlock TransactionConfidence event listeners, make sure MemoryPool is not locked when a tx is marked broadcast by a peer to avoid inversions via listeners.
...
Unfortunately this introduces some new FindBugs warnings because it doesn't understand the inside-out locking pattern used here, despite that it's correct.
Update issue 233.
2013-03-07 17:38:13 +01:00
Mike Hearn
0534231de9
Run wallet event listeners unlocked. Resolves another inversion.
...
Update issue 223.
2013-03-07 17:08:15 +01:00
Mike Hearn
0c30050a97
Delete the cycle test, we can trust that Guava works.
2013-03-07 17:08:15 +01:00
Mike Hearn
f0aff6484e
Narrow the locking in Peer.processInv() to avoid invoking memoryPool.seen() with the Peer lock held.
...
This resolves an inversion that can occur if a transaction confidence listener is run due to being marked as broadcast.
Update issue 233.
2013-03-07 17:08:07 +01:00
Mike Hearn
2fb3667c42
Add a 1-liner Locks.checkNotLocked method to make it clearer than writing checkState(!lock.isLocked());
2013-03-07 16:18:53 +01:00
Mike Hearn
0221b71418
Convert block chain to use a cycle detecting lock.
2013-03-07 15:57:50 +01:00
Mike Hearn
9d87997736
Some more tweaks to the Locks class.
2013-03-07 15:36:07 +01:00
Mike Hearn
9de6dca8c1
Move cycle detecting lock creation out into a new Locks class, rather than stuff it into Utils.
...
Convert PeerGroup and Peer to also use cycle detecting locks, and add a unit test to Wallet to check that cycle detection works.
Change default policy to warn. Now warnings are being triggered, the followup commits will fix them.
2013-03-07 13:58:04 +01:00
Mike Hearn
94670f3df0
Make Peer.memoryPool final and introduce a new c'tor for it.
2013-03-06 16:08:52 +01:00
Mike Hearn
83308c6ee1
Clear another FindBugs warning in SPVBlockStore.
...
The analysis doesn't seem to be good enough to detect that some of these cases are safe.
2013-03-06 15:52:39 +01:00
Mike Hearn
b780c6f191
Silence a FindBugs warning in Utils.
...
This isn't a real bug as unit tests aren't multi-threaded, but the analysis can't know that.
2013-03-06 15:51:45 +01:00
Mike Hearn
5a16a3d3fe
Silence a couple of FindBugs warnings.
2013-03-06 15:51:17 +01:00
Mike Hearn
1ba2c9d5de
Use a cycle detecting lock in Wallet and convert its event listeners array to a COW list.
...
This does not currently detect or break any cycles, even though some are known.
2013-03-06 15:10:52 +01:00
Mike Hearn
23aa1a9105
Tweak DefaultCoinSelector.isSelectable to take a Transaction as a parameter.
...
Resolves issue 322.
2013-03-06 14:47:30 +01:00
Mike Hearn
f7fa0cda72
Make the use of cycle detecting locks optional at compile time.
2013-03-06 13:51:27 +01:00
Mike Hearn
de653cc42d
Mark BoundedOverheadBlockStore as deprecated.
2013-03-06 13:47:09 +01:00
Mike Hearn
53fcef761e
BitCoin -> Bitcoin
2013-03-06 13:12:27 +01:00
Mike Hearn
e57068451d
Split some selection logic into a static method of DefaultCoinSelector. Resolves issue 322.
2013-03-06 12:13:34 +01:00
Mike Hearn
27a49655fb
Update language level in the POM.
...
Updates issue 334.
2013-03-06 11:59:53 +01:00
Mike Hearn
96cd35f139
Add a convenience method to CheckpointManager and example of how to use in PingService.
2013-03-05 14:48:28 +01:00
Mike Hearn
7f17766b47
Minor javadoc improvement.
2013-03-05 14:48:28 +01:00
Mike Hearn
0419887407
Add a CheckpointManager class and a BuildCheckpoints tool that saves a set of checkpoints to disk. By default there is one every difficulty transition period (two weeks), which means a relatively small amount of RAM needed to hold them all. There are only 111 checkpoints so far and old ones can be thinned out if needed.
2013-03-05 14:48:28 +01:00
Mike Hearn
b4c835c0cf
Quieten a noisy debug line when downloading the block chain.
2013-03-05 14:48:28 +01:00
Mike Hearn
68907880cb
Refactor compact serialization out of SPVBlockStore and into StoredBlock.
2013-03-05 14:48:28 +01:00
Mike Hearn
18a14c6668
Indent fix
2013-03-05 14:48:28 +01:00
Mike Hearn
61410adbaa
Fix BOBS bug introduced by my optimizations.
2013-03-05 14:48:28 +01:00
Mike Hearn
fb56237de8
Fix a couple of unit tests and resolve Matts comment.
2013-03-05 14:48:28 +01:00
Mike Hearn
50323391e5
Misc optimizations, the profiles look much better now.
2013-03-05 14:48:28 +01:00
Mike Hearn
54354c16b6
Add SPVBlockStore, a new higher performance replacement for BOBS that uses a fixed-size mmapped ring buffer, with caching on top to cover up for slow Dalvik mapped byte buffer operations.
2013-03-05 14:48:28 +01:00
Mike Hearn
9d6a3cc1e9
Upgrade Guava and make a simple accessor for building cycle-detecting locks.
2013-03-05 14:48:28 +01:00
Mike Hearn
d309863560
Save the last seen chain height as well as hash in the wallet.
2013-03-04 18:52:09 +01:00
Mike Hearn
d626b19a55
Change default ping time to 2sec
2013-03-04 18:44:36 +01:00
Mike Hearn
0608b3a383
Fix a bug that could cause pinging a remote node as fast as it will respond.
2013-03-04 18:28:26 +01:00
Mike Hearn
9a0950e578
Check for null InetAddress in PeerAddress c'tor.
2013-03-04 15:55:44 +01:00
Mike Hearn
1175fe9588
Change the parameter of BlockChainListener.notifyNewBestBlock to be StoredBlock instead of Block, so listeners can get height/work information as well. The Wallet doesn't need this but other listeners may do.
2013-03-04 15:55:39 +01:00
Mike Hearn
00071d3cfc
Add a couple of convenience features: peerGroup.addAddress(InetAddress) and an AbstractBlockChainListener class.
2013-03-04 15:55:35 +01:00
Mike Hearn
43b1ae1a29
Remove redundant and buggy expression in the check for whether to send a bloom filter.
2013-03-02 11:52:46 +01:00
Mike Hearn
6799dcc348
Refuse to create transactions larger than the max standard size.
2013-03-01 19:48:45 +01:00
Mike Hearn
1c8ee2b116
Upgrade to the latest Netty. Resolves issue 321.
2013-03-01 16:44:27 +01:00
Mike Hearn
018dcd345c
Fix a couple of ordering issues with the unit tests.
2013-03-01 16:23:07 +01:00
Mike Hearn
34f3d8b088
Minor comment fix in Block.java
2013-03-01 14:30:28 +01:00
Mike Hearn
301299cff9
Don't print difficulty transition times when it's less than 50 msec.
2013-03-01 14:30:23 +01:00
Mike Hearn
2e895e4e09
Optimization when downloading blocks (should be rare these days), don't format log messages that requires an expensive hash->string conversion if the debug channel is not enabled.
2013-03-01 14:30:17 +01:00
Mike Hearn
049baad8c6
Avoid trying to resolve dependencies of newly solved orphan blocks when we are still downloading headers.
2013-03-01 14:30:11 +01:00
Mike Hearn
fbc14c1040
Make NetworkParameters singleton and (mostly) immutable.
...
Resolves issue 51.
2013-02-28 19:39:05 +01:00
Mike Hearn
559df0b3f8
Trivial cleanup
2013-02-28 19:27:13 +01:00
Mike Hearn
55898d3ee3
Fix a redundant null comparison, clears one more findbugs warning.
2013-02-28 18:38:28 +01:00
Mike Hearn
93d8a8da1f
Update findbugs.xml to suppress useless warnings.
2013-02-28 18:38:16 +01:00
Mike Hearn
f9a57db818
Fix crash in toString() for an unparsed block header object.
2013-02-28 18:06:58 +01:00
Mike Hearn
ec1504f9dc
Remove another java7-ism.
2013-02-28 17:52:32 +01:00
Mike Hearn
29cea2e6f0
Fix a java7-ism
2013-02-27 16:55:11 +01:00
Mike Hearn
e14e7a228c
Fix bug that could cause huge slowdowns during initial header sync: peers were not checking if they were still download peers after receiving header messages.
2013-02-27 13:45:50 +01:00
Mike Hearn
a700b97f75
Delete the Derby block store. It isn't that useful now we have full verification based on H2.
2013-02-25 21:43:43 +01:00
Mike Hearn
6b684a6dc6
Resolve more FindBugs warnings. These changes are all no-ops.
2013-02-22 12:05:29 +01:00
Mike Hearn
3ae65f7a2f
Don't invoke onCoinsSent for cases when the balance doesn't change, just onWalletChanged directly.
...
Also implement equals/hashCodes for SaveRequest.
Resolves a couple of FindBugs warnings.
2013-02-22 12:05:14 +01:00
Mike Hearn
1a5f74a148
Add/fix hashCodes/equals() implementations in some cases. Clears more FindBugs warnings.
2013-02-21 15:42:14 +01:00
Mike Hearn
440619f1c5
Test the ability to choose your own change address. This clears a FindBugs warning about the field never being written.
2013-02-21 15:41:47 +01:00
Mike Hearn
8540f879bd
Fix a bug in Peer error logging, found by FindBugs.
2013-02-21 15:41:33 +01:00
Mike Hearn
3680c7f52f
Restrict scope of NPE check for Bouncy Castle bug.
2013-02-21 14:42:04 +01:00
Mike Hearn
85c9950d9e
Clear all possible NPE findbugs warnings, and fix some getter/setter synchronization mismatches.
2013-02-21 14:29:26 +01:00
Mike Hearn
002539f2b8
Treat client protocol versions higher than the version we prefer equally so we don't zap peers that upgrade early when unimportant (for us) protocol changes roll out.
2013-02-21 12:27:52 +01:00
Mike Hearn
32cc7b4880
Catch NullPointerException from bouncy castle signature verification. This can be triggered by a specially crafted signature. Thanks to Sergio Damian Lerner for finding this.
2013-02-19 22:33:15 +01:00
Mike Hearn
4b4eb7b623
Clear some more FindBugs warnings, including a real bugfix to the bloom filter calculations.
2013-02-19 17:44:41 +01:00
Mike Hearn
883bf03007
Clear some FindBugs warnings.
2013-02-19 17:05:23 +01:00
Mike Hearn
5a3515bef0
Refactor the code that sets filters a bit, and send a mempool query after wallet contents change in case of a key import.
2013-02-19 16:11:22 +01:00
Mike Hearn
3c606516be
Query the memory pool of nodes that support Bloom filtering.
2013-02-19 16:11:22 +01:00
Mike Hearn
f4033076e8
Don't build/send Bloom filters when there are no keys in any wallets.
...
Resolves issue 324.
2013-02-19 16:11:22 +01:00