Commit Graph

1194 Commits

Author SHA1 Message Date
Mike Hearn
98219bdd1b More static analysis tweaks. 2013-07-11 13:42:42 +02:00
Mike Hearn
000d81d54f Rename ExtendedHierarchicKey to DeterministicKey. Add annotations and rewrite a bit of code to satisfy static analysis. 2013-07-11 13:41:46 +02:00
Mike Hearn
50dd5af0c8 Add more javadocs.
Delete the wallet integration code - it's good, but we won't ship it in 0.10 as it's not finished.
2013-07-11 13:10:07 +02:00
Mike Hearn
0385ab34e5 Add copyrights, remove dead code, and fix some minor static analysis warnings.
Also remove a unit test that was just testing bouncy castle.
2013-07-11 11:59:31 +02:00
Mike Hearn
3aae7a0683 Add Matija to the AUTHORS file. 2013-07-11 11:50:43 +02:00
matija.mazi@gmail.com
c3fd83e511 Add support classes for hierarchical deterministic wallets (BIP 32)
Code from Matija Mazi. HD wallets allow you to derive keys from a single
root key, giving various useful features:

- Make a backup once and it's good forever (for your keys only of course)
- You can break off parts of the tree and give it to other people,
  they can then generate new keys to send you money without any
  involvement by you (better privacy+security for watching wallets)
- You can delegate sub-trees to other people as a form of access control.
2013-07-11 11:40:33 +02:00
Mike Hearn
00f4c82342 WalletFiles: Make saving thread shut down after 5 seconds of doing nothing. 2013-07-10 18:14:10 +02:00
Mike Hearn
2b6022cd7c WalletFiles: log how long saving the wallet took. 2013-07-10 16:59:39 +02:00
Mike Hearn
5219a42df9 Wallet: refactor saving code into a separate class that uses a Java scheduled executor rather than the messy and likely buggy custom threading code. Synchronously save the wallet on way more codepaths, now we only do write coalescing for new best block notifications. 2013-07-10 16:46:56 +02:00
Matt Corallo
acc2877329 Reject dust outputs with ensureMinRequiredFee (fixes #429) 2013-07-10 16:28:29 +02:00
Mike Hearn
48cee2e668 KeyCrypterScrypt: Fix some minor code style issues. 2013-07-10 16:27:01 +02:00
Mike Hearn
53dc5c2e6a Make Andreas happy. Resolves issue 423. 2013-07-10 16:23:05 +02:00
Matt Corallo
b51485ca23 Peer Bloom filter generation -> new PeerFilterProvider interface 2013-07-10 15:59:51 +02:00
Matt Corallo
2061d28e52 Use direct byte buffers instead of normal ones in niowrapper 2013-07-10 15:55:21 +02:00
Matt Corallo
e6965d0217 Always accept time-locked txn we create, make refund tx source self 2013-07-10 15:53:59 +02:00
Matt Corallo
1277df32d8 Fix a few minor typos. 2013-07-10 15:53:19 +02:00
Mike Hearn
2c44a4fad7 PeerGroup: Require Bloom-filtering capable peers by default. Resolves issue 421. 2013-07-10 15:52:09 +02:00
Mike Hearn
34d804ecca PeerGroup: fix naming of vPingTimer 2013-07-10 15:33:24 +02:00
Mike Hearn
5b78601b4a Wallet: make last seen block height default to zero not -1 2013-07-10 15:32:36 +02:00
Mike Hearn
d92314dd18 Peer/Group: Clear some static analysis warnings related to the (buggy) optionality of the block chain and some threading issues. 2013-07-10 15:32:20 +02:00
Mike Hearn
4c0930a961 AbstractBlockChain: Correct minor logging issue 2013-07-10 14:42:47 +02:00
Mike Hearn
8a74b3da2c Minor logging fixes. Resolves issue 423. 2013-07-09 14:57:20 +02:00
Mike Hearn
f473267da2 Exception handling: provide a global variable in Threading that receives all unhandled exceptions from all framework threads.
Replaces the now removed PeerEventListener.onException() callback.
2013-07-09 14:47:38 +02:00
Mike Hearn
ea19d3164a TCPNetworkConnection: allow manually constructed one-offs to be given a Peer object. 2013-07-09 14:43:37 +02:00
Mike Hearn
e3e80c357d BitcoinSerializer: Remove some optimisations that date from the time when someone was trying to make bitcoinj into a super scalable multiplexor, and allow writing of arbitrary byte arrays that get checksummed and prefixed. 2013-07-09 14:43:12 +02:00
Mike Hearn
975dea6e16 VersionAck: Delete some whitespace 2013-07-09 14:42:28 +02:00
Matt Corallo
09752848bb Announce transactions to wallet in order even from FilteredBlocks 2013-07-09 13:05:35 +02:00
Mike Hearn
a05d69537d Remove JavaDocs from AbstractWalletEventListener so IDEs will automatically inherit them. 2013-07-08 13:24:32 +02:00
Mike Hearn
24b825252f Fix a bogus assert in Threading 2013-07-05 14:21:43 +02:00
Mike Hearn
8869e57fa0 AbstractBlockChain: add a bit more logging. 2013-07-05 13:49:43 +02:00
Mike Hearn
573e04491c Threading: fix the user thread to be daemon so programs can shut down properly again. 2013-07-05 12:23:28 +02:00
Mike Hearn
a8a8d3a044 AbstractBlockChain: Fix some nullity annotations and a few other misc things. 2013-07-05 11:56:27 +02:00
Mike Hearn
d316cf316f AbstractBlockChain: Replace mention of BOBS in class javadoc with SPVBlockChain. 2013-07-05 11:48:28 +02:00
Mike Hearn
aaa71c0811 Fix AbstractBlockChain.removeListener. Found by IntelliJ. 2013-07-05 11:47:42 +02:00
Mike Hearn
35a7f38d86 Make block chain listeners run in given executors and default to the user thread. 2013-07-05 10:54:21 +02:00
Mike Hearn
2537ff47b5 Extend executor-specific event handlers to PeerGroup and Peer. Rename Threading.sameThread to Threading.SAME_THREAD 2013-07-05 10:54:21 +02:00
Mike Hearn
50b71979bb Fix removal of event listeners. Make PeerGroup also allow specification of arbitrary executors and run event listeners in those. 2013-07-05 10:54:21 +02:00
Mike Hearn
c552c0cbdd Move ListenerRegistration out into utils and make it generic. 2013-07-05 10:54:21 +02:00
Mike Hearn
f6d14db8e6 Wallet: allow choice of executor to run event listeners in, default to user thread. 2013-07-05 10:54:20 +02:00
Mike Hearn
3185923d4a Add @Override annotations to PeerEventListener. 2013-07-05 10:54:20 +02:00
Mike Hearn
cdd1c5e38a Change onKeyAdded to be onKeysAdded that takes a list, and run it in the user thread. 2013-07-05 10:54:20 +02:00
Mike Hearn
0907a3852b Add a test to ensure that wallet listeners that throw exceptions don't prevent the others from running. 2013-07-05 10:54:20 +02:00
Mike Hearn
dd83d55df4 Add JavaDocs for TransactionConfidence.Listener.Reason 2013-07-05 10:54:19 +02:00
Mike Hearn
a28cb5c59a Don't mark transactions that have just been completed as pending, and then fix a stupid efficiency bug in AbstractBlockChain that was revealed by the change. 2013-07-05 10:54:19 +02:00
Mike Hearn
6b7d653614 Major rework of how confidence listeners are called:
* API change: TransactionConfidence.Listener now takes a reason enum describing the general class of change.
* Confidence listeners are now invoked in the user code thread as well, thus eliminating any chance of unexpected re-entrancy.
* The wallet batches up confidence changes and executes them all at the end of major operations, avoiding confusing intermediate transitions that could occur in the previous design.
* Much code has been simplified as a result and it's now harder to screw up.
2013-07-05 10:54:19 +02:00
Mike Hearn
5de80dfedf Introduce a user code thread which is used for running event listeners.
This ensures that when user provided event listeners are invoked, we're not holding any locks at that time and thus event listeners can do whatever they want with no risk of accidental inversions or deadlocks. A utility method is available to wait for all preceding events that were triggered to complete, which is useful for unit tests. Reimplement how balance futures work in order to avoid the wallet registering an event handler on itself, this means you cannot accidentally deadlock yourself by running getBalanceFuture().get() inside an event listener.

Future changes will modify how transaction confidence listeners are run to work the same way, and make other kinds of event listener run in the user code thread as well.

The user code mechanism is usable with any executor, opening up the possibility of automatically relaying event listeners into GUI threads for some kinds of apps.
2013-07-05 10:54:18 +02:00
Mike Hearn
b87879fd42 Rename the Locks class to Threading in preparation for more stuff. 2013-07-05 10:54:18 +02:00
Mike Hearn
1296074e8f Add another Block c'tor. Resolves issue 424. 2013-07-04 12:12:52 +02:00
Mike Hearn
4265e9c692 Optimize imports in payment channels. 2013-07-03 15:18:20 +02:00
Matt Corallo
715e3596d2 Fix another deadlock when storing channel in wallet 2013-07-03 14:53:59 +02:00