3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-01-31 23:32:16 +00:00
Commit Graph

1211 Commits

Author SHA1 Message Date
Mike Hearn
e67b3e540e Remove usage of some deprecated stuff. 2013-09-23 15:33:36 +02:00
Mike Hearn
c587f2c442 WalletAppKit: we need a stupid hack to make checkpointing and payment channels work together.
Apparently this simple utility class might start to need unit tests now!

To resolve the hack, we need to resolve some circularity in construction: to add the payment channels wallet extensions requires the peerGroup and wallet object to be constructed, but to construct the peerGroup requires the chain+store and to checkpoint a fresh store requires the wallet. Catch 22! We resolve by loading a temp wallet and then throwing it away, which is inefficient for a large wallet that's being replayed but normally shouldn't matter.

Once the payment channels stuff is more mature and tested, we might want to just fold it into the core wallet format.
2013-09-21 21:03:36 +02:00
Mike Hearn
324f603cbe Upgrade to protobuf 2.5 2013-09-21 20:08:43 +02:00
Mike Hearn
c861ecdf2a WalletAppKit: Fix stupid ordering bug I introduced that affects apps that use payment channels.
In future, this stuff should probably be enabled in the wallet by default.
2013-09-21 19:53:52 +02:00
Mike Hearn
1f52b75ad9 Move AllowUnconfirmedCoinSelector out into wallet package. 2013-09-20 17:38:41 +02:00
Mike Hearn
628aba15f8 Add some unit tests for default coin selector that are more fine grained than what the WalletTest code provides. 2013-09-20 17:36:01 +02:00
Mike Hearn
2b4595c4f0 Wallet: Split DefaultCoinSelector out into a top level class in the wallet package. 2013-09-20 16:50:25 +02:00
Mike Hearn
c366c5fa44 Wallet: Split CoinSelection out into a top level interface in the wallet package. 2013-09-20 16:47:42 +02:00
Mike Hearn
c4405d3ee7 Wallet: Split CoinSelector out into a top level interface in the wallet package. 2013-09-20 16:45:31 +02:00
Mike Hearn
7455135d3d Wallet: use a single hashmap to track all transactions, then use it in receive to re-canonicalize the transactions.
Long story short, I'm a shitty programmer it seems. The Wallet will at some point be modified to track just bags of outputs derived from Transaction objects, and Transactions/Blocks will become immutable. At that point there won't be any confusion between mutable data associated with the deserialised objects.

Resolves issue 453.
2013-09-20 15:24:03 +02:00
Mike Hearn
ffb7c57d7f Make HDKeyDerivation.createMasterPrivKeyFromBytes public. Resolves issue 452. 2013-09-18 14:38:37 +02:00
Mike Hearn
90942041e7 Move TestUtils and TestWithWallet into the core package so they can be used by third party code in their unit tests. 2013-09-18 12:21:07 +02:00
Mike Hearn
baeaa64201 Payment channels: more informative exception message if you forget to add the client wallet extension. 2013-09-18 12:20:50 +02:00
Mike Hearn
9bc91ec2e5 Payment channels: Don't swallow ValueOutOfRangeException during initiate.
It indicates an empty wallet and should be propagated to the channel open future or the client user, so they know they have insufficient money.
2013-09-17 16:31:56 +02:00
Mike Hearn
d4786acb14 Move MockTransactionBroadcaster into utils so third party code can use it in its own tests. 2013-09-17 12:37:58 +02:00
Mike Hearn
8d839ae5ad Support creating spends without all the private keys.
Dummy signatures are inserted instead. Also, simplify Transaction.toString().
2013-09-16 15:54:32 +02:00
Mike Hearn
81d76a76c3 Payment channels: more logging. 2013-09-16 11:39:38 +02:00
Mike Hearn
01e7d63948 WalletAppKit: Finish the non-blocking startup code, oops. 2013-09-16 11:37:05 +02:00
Mike Hearn
2f5adfc3be Allow WalletAppKit to have a non blocking startup. 2013-09-15 20:24:52 +02:00
Mike Hearn
95f528a340 Add more features to WalletAppKit, and ensure wallets it creates always have at least one key. 2013-09-15 20:24:52 +02:00
Mike Hearn
2ccfd3fd48 Make MemoryBlockStore store only a rolling window of the last 5000 blocks. Fixes BuildCheckpoints which was trying to store every block header and running out of heap space. 2013-09-15 20:24:52 +02:00
Mike Hearn
3ea3735d4f Allow overriding of the default USER_THREAD executor so all events can be dispatched to a selected thread easily. 2013-09-15 20:24:52 +02:00
Mike Hearn
82037f8f96 PeerGroup: correct logic for setting ver packet pre-filtering relay flag. 2013-09-10 11:42:51 +02:00
Mike Hearn
eaeab32400 Make RegTestParams use testnet addresses, to follow sipa's upstream change. 2013-09-10 10:27:16 +02:00
Mike Hearn
11ab82c91e Payment channels: fix unit test and add a log line. 2013-09-05 15:17:15 +02:00
Mike Hearn
24a5c05546 Payment channels: allow usage of unconfirmed coins for building a contract, as the risk is low (they're micropayments anyway). 2013-09-05 15:16:58 +02:00
Mike Hearn
bf228cce34 Wallet: comment for AllowUnconfirmedCoinSelector.get() 2013-09-05 15:10:50 +02:00
Mike Hearn
38119b9355 Payment channels: Better comments and logging. 2013-09-05 12:42:33 +02:00
Mike Hearn
273acbdccd Payment channels: Take out unnecessary {} from log messages. 2013-09-04 13:27:17 +02:00
Mike Hearn
1d454c03f3 Suppress annoying and useless warning. 2013-09-03 14:24:18 +02:00
Mike Hearn
e05abe150b Wallet: when "emptying" the wallet, only actually empty out the coins that would be considered selectable by the default coin selector.
By default that means unconfirmed coins won't be emptied, to avoid the empty tx becoming dependent on a tx that may never confirm.

 Resolves issue 438.
2013-08-15 12:31:54 +02:00
Matt Corallo
cf23e18f23 MessageWriteTarget->interface, writeBytes throws IOException 2013-08-13 17:13:58 +02:00
Matt Corallo
edd0a0907c Clarify PeerEventListener JavaDocs a bit 2013-08-13 17:13:29 +02:00
Matt Corallo
5ef59b9ae1 Unimplemented bitcoinSerializeToStream -> log error, not debug 2013-08-13 17:13:15 +02:00
Matt Corallo
1a5348c534 Implement ListMessage.equals() 2013-08-13 17:12:57 +02:00
Matt Corallo
7011d68165 Implement some (de)serialization (so we can roundtrip msgs in test)
Implements deserialization for getblocks/getheaders and supports
FilteredBlock entries in ListMessage (for getdata).
Implements serialization for FilteredBlock, HeadersMessage, and
PartialMerkleTree.
2013-08-13 17:12:32 +02:00
Matt Corallo
a724bcada5 Mark receivePending(List<Tx> dependencies) @Nullable 2013-08-13 17:11:34 +02:00
Matt Corallo
98787909da Fix typo 2013-08-13 17:11:19 +02:00
Matt Corallo
8448296f5f Abstract out SelectionKey processing and logic from NioServer. 2013-08-13 17:10:21 +02:00
Matt Corallo
9980903572 Make Protobuf{Server,Client} more generic. 2013-08-13 17:09:14 +02:00
Matt Corallo
146a6dd37e Add payment channel server native event handler wrappers 2013-08-13 15:06:18 +02:00
Matt Corallo
7074d52fbb Add test-case for manually-added transactions that appear in blocks 2013-08-13 15:05:04 +02:00
Mike Hearn
3857b0ae05 Sync script test files with bitcoin upstream. 2013-08-13 11:44:46 +02:00
Mike Hearn
08afe9044d Move verifier XML around. 2013-08-11 16:45:07 +02:00
Mike Hearn
6dd907614c Wallet: support for key rotation.
Key rotation allows you to specify a timestamp, and any money controlled by any keys created before that time will be automatically respent to keys created after it.
2013-08-11 16:33:36 +02:00
Mike Hearn
3ca2cd0345 PeerGroupTest: Fix a race. 2013-08-08 14:23:23 +02:00
Mike Hearn
19d4887253 Wallet: allow SendRequests to override the default coin selector. 2013-08-08 14:23:23 +02:00
Mike Hearn
33f48d3e22 PeerGroup/Wallet: give the wallet a reference to a transaction broadcaster, so it can make its own transactions and broadcast them outside the context of a user initiated spend.
Later, we can change the mechanism used to broadcast pending transactions so the wallet does that itself.
2013-08-08 14:23:23 +02:00
Mike Hearn
6b1c208f1e Wallet: Minor nullity annotation and param genericity tweaks. 2013-08-08 11:19:49 +02:00
Matt Corallo
ca15e611ca Fix manually-added transactions that make it into blocks. 2013-07-31 13:05:03 +02:00
Mike Hearn
c2cff6df41 Add a remark to the BloomFilter javadocs about when you would want to use full-match filters. 2013-07-30 16:05:04 +02:00
Matt Corallo
41d2a8c62d Fix block tests 2013-07-30 15:52:00 +02:00
Matt Corallo
a7ec6a1db3 Implement mempool-test support in BitcoindComparisonTool 2013-07-30 15:41:31 +02:00
Matt Corallo
60220aa62d InventoryItem.hashCode()
Conflicts:
	core/src/main/java/com/google/bitcoin/core/InventoryItem.java
2013-07-30 15:41:21 +02:00
Matt Corallo
d88d421de6 Make BloomFilter support match-all filters better 2013-07-30 15:40:47 +02:00
Mike Hearn
2808b062d7 Version 0.11-SNAPSHOT 2013-07-30 14:47:39 +02:00
Matt Corallo
df47993e3d Add some comments for stateless protocols. 2013-07-30 14:47:08 +02:00
Mike Hearn
8016ee8418 Wallet: explicitly note in the completeTx javadoc that it signs the added inputs. 2013-07-29 19:06:21 +02:00
Mike Hearn
bbac0abf9e Wallet: more @Nullable annotations and generalise the sendCoins argument to take any broadcaster. 2013-07-29 18:35:49 +02:00
Mike Hearn
f821207a80 WalletAppKit: add a new override-able method that lets you customise objects after they were created, but before chain download starts. 2013-07-29 17:18:48 +02:00
Mike Hearn
872967e96e WalletEventListener: Remove obsolete references to being called on Peer threads from the javadocs. 2013-07-29 17:18:21 +02:00
Mike Hearn
da2a321c23 Wallet: add a missing @Nullable annotation. 2013-07-29 17:17:58 +02:00
Mike Hearn
016837a593 Wallet: expose the calculateAllSpendCandidates method as public. 2013-07-29 13:27:49 +02:00
Mike Hearn
86f68c8ffa Transaction: add a bit more info to constant field javadocs. 2013-07-29 12:50:02 +02:00
Mike Hearn
630b36c5c8 Payment channels: tweaks to channel resume behaviour.
Don't create a new channel automatically when the client wants to resume but there's already an open connection using that contract. Instead, disconnect the other client. This fixes unintuitive behaviour that could occur if a TCP connection silently died and the server didn't notice.
2013-07-25 18:11:53 +02:00
Mike Hearn
cf4c469e6e TransactionInput: treat duplicate connection attempts as a success. 2013-07-25 15:30:49 +02:00
Mike Hearn
a5ed2d63d3 Payment channels: Relabel stored client channel toString a bit. 2013-07-25 15:29:47 +02:00
Mike Hearn
4aaac4f105 AbstractBlockChain: slight tweak to logging of filtered blocks to make it less confusing. 2013-07-25 15:26:26 +02:00
Mike Hearn
4f92c24dea Payment channels: stop clients attempting to resume empty channels. 2013-07-25 15:26:10 +02:00
Mike Hearn
70590dac16 Payment channels: add wallet printouts of the contents of the extensions. 2013-07-25 15:09:48 +02:00
Mike Hearn
d3842cc0f4 Wallet: Print Wallet extensions in toString() and make tx printouts optional. 2013-07-25 14:11:42 +02:00
Mike Hearn
89b6b54d24 Payment channels: better logging in client state. 2013-07-25 11:28:45 +02:00
Mike Hearn
9e78268813 Wallet: don't crash if receivePending is called twice with the same tx, even if the override flag is on. 2013-07-24 16:17:47 +02:00
Mike Hearn
51d717e93a Payment channels: Make the ProtobufParser timer daemon and labelled. 2013-07-24 14:58:33 +02:00
Mike Hearn
00bc4e30ee PeerGroup: add a todo about the pinging thread. 2013-07-24 14:53:34 +02:00
Mike Hearn
52b478a6f8 PeerGroup: Ignore an IllegalStateException from the ping timer that can be thrown occasionally during a shutdown race. 2013-07-24 14:52:08 +02:00
Mike Hearn
67f3605570 Transaction: format date based time locks correctly. 2013-07-24 14:45:42 +02:00
Mike Hearn
2a635317c3 WalletAppKit: Configure the peergroup with candidate peers before adding wallet extensions, as payment channel state can attempt to broadcast a transaction as soon as the state is loaded/instantiated. This ensures the number of min peers required for broadcast is correct at that point. 2013-07-24 13:56:12 +02:00
Mike Hearn
a1daaa73be PeerGroup: Don't allow attempts to broadcast to zero peers. 2013-07-24 13:55:20 +02:00
Mike Hearn
81a9e1e893 Peer: drop out of fast catchup mode when reaching the top of the chain.
This bug could cause problems if you sync a wallet containing no keys, and then a chain fork happens (you won't follow the fork).
2013-07-23 20:10:57 +02:00
Mike Hearn
2acbd55d47 NetworkParameters: Remove ID_PRODNET. Resolves issue 430. 2013-07-22 18:12:36 +02:00
Mike Hearn
adea4f9479 Wallet: log completed transactions completely. 2013-07-22 17:22:13 +02:00
Matt Corallo
1e69d2b0dd Add emptyWallet option to SendRequest+tests and random typo fixes 2013-07-22 15:27:24 +02:00
Mike Hearn
87ad8f2e5b Add JNI peers for some listener classes. 2013-07-22 15:25:21 +02:00
Mike Hearn
dcf04f6cb6 Payment channels: inline a superfluous misnamed method on StoredServerChannel and rename getState to getOrCreateState. 2013-07-19 15:55:30 +02:00
Mike Hearn
4f9bc98e97 Payment channels: Re-order c'tor of StoredPaymentChannelClientStates.
This makes it consistent with the server side and put the listener last. It's easier to read this way when an anonymous inner class is used.
2013-07-19 15:55:30 +02:00
Mike Hearn
da0d6c37a2 Payment channels: some bugfixes to resume behaviour.
Don't deserialize channels as active. Deserialize keys as compressed, not uncompressed.
2013-07-19 15:55:29 +02:00
Mike Hearn
516327289f Payment channels: Expose a client connection method that terminates the TCP connection but doesn't try to close the channel (ask the server to broadcast the contract). 2013-07-19 14:41:15 +02:00
Mike Hearn
a7dbe7cd03 Payment channels: Add more logging on the server resume path. 2013-07-19 12:04:15 +02:00
Mike Hearn
7d75e747e0 Payment channels: Fix a dumb bug that caused the negotiated channel size to be wrong. Add a test. 2013-07-17 21:41:08 +02:00
Mike Hearn
c04708dd1e Payment channels: Add detail to an error log message. 2013-07-17 21:40:52 +02:00
Mike Hearn
87897fbb37 Payment channels: Describe reason for connection closing in log message. 2013-07-17 21:40:17 +02:00
Matt Corallo
c5d267f0f9 PaymentChannelCloseException: Show reason in toString() 2013-07-16 17:25:25 +02:00
Matt Corallo
1d7f2eb00b Fix channel client state saving to save earlier (and be secure) 2013-07-16 14:59:21 +02:00
Mike Hearn
ff714fbd77 Add a PeerAddress.localhost() helper. 2013-07-15 18:22:57 +02:00
Matt Corallo
0fe56bf544 Let balance check fail later iff the server wants maxValue 2013-07-15 18:22:51 +02:00
Mike Hearn
00da963bbb Payment channels: use daemon threads so the VM can exit after the state objects are created. 2013-07-13 02:24:19 +02:00
Mike Hearn
719a786db1 Eliminate support for parsing negative or too large amounts in Utils.toNanoCoins. Add tests for out of range URI amounts. Resolves issue 407. 2013-07-11 17:33:31 +02:00
Mike Hearn
d3eab06dba Make BitcoinURIParseException checked so you can't forget it, and catch/rethrow ArithmeticErrors when parsing the value field.
Add more nullity annotations.
2013-07-11 16:52:50 +02:00
Mike Hearn
bf585d8627 Transaction: note that a ScriptException is expected at this point. 2013-07-11 16:52:11 +02:00
Mike Hearn
2c26f8802b Add PeerGroup.clearListeners(). Resolves issue 426. 2013-07-11 16:34:57 +02:00
Mike Hearn
4e95ab3cfc Assert on lock.isHeldByCurrentThread() instead of isLocked() - the latter is not correct.
This didn't cause any actual bugs but just reduced the safety of making code changes.
2013-07-11 16:30:44 +02:00
Mike Hearn
e687e52230 Use the correct alert signing key for testnet. 2013-07-11 16:29:56 +02:00
Mike Hearn
6a39af30c4 Add AbstractBlockChain.removeWallet(). Resolves issue 419. 2013-07-11 16:11:33 +02:00
Mike Hearn
5c1063860a WalletAppKit: Improve javadoc a bit. 2013-07-11 16:07:14 +02:00
Mike Hearn
99f32b16af Introduce UnreadableWalletException and make WalletProtobufSerializer throw it in all cases where there's a problem reading the wallet. Resolves issue 415. Resolves issue 416. 2013-07-11 16:04:00 +02:00
Mike Hearn
be89be6f43 PaymentChannelServerState: Fix typo in variable name. 2013-07-11 15:35:17 +02:00
Mike Hearn
d2232ed4aa Fix hdw unit tests after I broke them. 2013-07-11 14:19:48 +02:00
Matt Corallo
c98badcf1c Store states in protobufs instead of using Java Serialization.
Saves having to use reflection.
2013-07-11 14:16:40 +02:00
Matt Corallo
4b4405b7bc Check for double-spend of contract by force-adding it to wallet 2013-07-11 14:15:48 +02:00
Matt Corallo
f0be874815 Add option to skip isRelevant checks in Wallet.receivePending 2013-07-11 14:14:24 +02:00
Mike Hearn
86bd974958 Move HD wallets code into plain crypto package. 2013-07-11 13:45:12 +02:00
Mike Hearn
be39c176db Add a TODO to merge DeterministicKey and ECKey together. 2013-07-11 13:43:35 +02:00
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
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
Matt Corallo
8fd8683461 JavaDoc in StoredServerChannel + updateValueToMe s/public// 2013-07-03 14:53:54 +02:00
Matt Corallo
c36e725d7d Use Reentrant locks in a few more places, fix deadlocks(s) on close 2013-07-03 14:53:46 +02:00
Mike Hearn
2d84b3c27b Deasymock PaymentChannelStateTest 2013-07-03 14:49:43 +02:00
Mike Hearn
a5940282d0 Rewrite ChannelConnectionTest to avoid easyMock, duplication and busy wait loops. 2013-07-02 11:55:37 +02:00
Mike Hearn
93abc34e08 Narrow PeerGroup -> TransactionBroadcaster in the channels code. 2013-07-01 13:17:57 +02:00
Mike Hearn
ec51162ae4 Correct PaymentChannelServerListener class javadoc. 2013-07-01 13:13:29 +02:00
Matt Corallo
4908c241f7 Implement server-side and client-side payment channel protocols.
This implements micropayment payment channels in several parts:
 * Adds PaymentChannel[Server|Client]State state machines which
   handle initialization of the payment channel, keep track of
   basic in-memory state, and check data received from the other
   side, based on Mike Hearn's initial implementation.
 * StoredPaymentChannel[Client|Server]States manage channel
   timeout+broadcasting of relevant transactions at that time,
   keeping track of state objects which allow for channel
   resume, and are saved/loaded as a WalletExtension.
 * Adds PaymentChannel[Client|Server] which manage a connection
   by getting new protobufs, generating protobufs for the other
   side, properly stepping the associated State object and
   ensuring the StoredStates object is properly used to save
   state in the wallet.
 * Adds PaymentChannel[ClientConnection|ServerListener] which
   create TCP sockets to each other and use
   PaymentChannel[Client|Server] objects to create/use payment
   channels.

The algorithm implemented is the one described at
https://en.bitcoin.it/wiki/Contracts#Example_7:_Rapidly-adjusted_.28micro.29payments_to_a_pre-determined_party
with a slight tweak to use looser SIGHASH flags so that the
Wallet.completeTx code can work its magic by adding more inputs if
it saves on fees.

Thanks to Mike Hearn for the initial state machine implementations
and all his contracts work and Jeremy Spilman for suggesting the
protocol modification that works with non-standard nLockTime
Transactions.
2013-06-27 14:15:49 +02:00
Matt Corallo
3d74934b6f Add a length-prefixed protobuf connection server/client.
This forms the base for payment channel network connections, with
a simple single-threaded server which accepts new connections, a
simple single-threaded client which makes a single connection to a
server, and a ProtobufParser which handles data generated by a
connection, splits them into Protobufs and provides a reasonable
interface to users who wish to create/accept protobuf-based
connections.
2013-06-27 14:15:44 +02:00
Matt Corallo
65202b8ab5 Add support for WalletExtensions to WalletAppKit. 2013-06-27 14:15:43 +02:00
Matt Corallo
880b413b24 Add a TransactionBroadcaster abstraction to PeerGroup. 2013-06-27 14:15:43 +02:00
Matt Corallo
7cd38bc77a Wallet: Enable autoSaveListener for 0-delay autosave. 2013-06-27 14:15:42 +02:00
Mike Hearn
c4572696b1 Some fixes to wallet serialization:
1) Switch the outpoint index field to be uint32 and fix isCoinBase() to consider the unsigned versions only. Resolves issue 420.
2) Regenerate the protobuf and fix an out of date definition in WalletProtobufSerializer that it exposed.
2013-06-27 14:01:02 +02:00
Mike Hearn
7f68923529 KeyCrypterScryptTest: Clear static analysis warnings and port to junit 4. 2013-06-24 17:52:09 +02:00
Mike Hearn
0c00b24bbc Disable native secp256k1 so DCE can delete the relevant code entirely. 2013-06-24 17:48:58 +02:00
Mike Hearn
fbd767320c Delete the long since obsolete DiskBlockStore. 2013-06-20 15:10:47 +02:00
Mike Hearn
85cd4499f9 Delete NamedSemaphores. It's something that was introduced by Miron
and looks like a broken attempt to implement file locking. Neither
store that tried to use it is supporte anymore so don't bother replacing
with real file locks.
2013-06-19 15:43:18 +02:00
Mike Hearn
4d4768ba8c Fixup last commit 2013-06-19 15:34:05 +02:00
Mike Hearn
ad3bb53327 Allow TransactionInput.verify to take an output as a parameter. 2013-06-19 13:08:09 +02:00
Mike Hearn
f98088221e Make TransactionOutput.getMinNonDustValue() more documented and provide a simpler function for it. 2013-06-19 11:30:27 +02:00
Mike Hearn
215a131f8b Typo fix in ECKey 2013-06-19 11:30:27 +02:00
Mike Hearn
354446dd40 Add new helper methods to Transaction[Signature]
Add a method for signing a given input and use it.
Convert some code that was working with raw bytes to use TransactionSignature.
Rename Transaction.hashTransactionForSignature to just hashForSignature.
General API tweaks and cleanups.
2013-06-19 11:30:27 +02:00
Mike Hearn
57c1ecbd01 Refactor some code in ECKey into ECKey.ECDSASignature, and introduce a new TransactionSignature class.
It extends ECDSASignature and adds support for holding and working with sighash flags. Make some code use it instead of raw byte handling.
2013-06-19 11:30:26 +02:00
Mike Hearn
2149fea7e6 TODO: KeyCrypterScryptTest sometimes fails because key crypto is still relying on padding bytes in some cases. 2013-06-18 17:35:35 +02:00
Mike Hearn
5be443c2d3 Clear some minor static analysis warnings. 2013-06-18 16:33:56 +02:00
Mike Hearn
8b8bf50144 Version 0.10-SNAPSHOT 2013-06-18 16:33:06 +02:00
Mike Hearn
bfbc9c0cf6 Don't use my DNS seed. It's not running on secure hosting so I shut it down. 2013-06-17 16:11:20 +02:00
Mike Hearn
4494d34be0 Use correct private key header byte in reg test mode. 2013-06-17 15:43:57 +02:00
Mike Hearn
960bf2626b DumpedPrivateKey: Verify that the final byte is set to 1. Resolves issue 411. 2013-06-17 15:43:46 +02:00
Mike Hearn
d8a0cc59c1 Re-order ECKey imports. 2013-06-17 14:28:48 +02:00
Matt Corallo
be88a05c93 Make TransactionOutput.getMinNonDustOutput exact. 2013-06-17 11:07:55 +02:00
Matt Corallo
d6fec93be3 Add canonical signature/pubkey methods to ECKey and tests therefor. 2013-06-17 11:07:55 +02:00
Matt Corallo
ec3708d159 Introduce SIGHASH_ANYONECANPAY_VALUE to replace 0x80 constants. 2013-06-17 10:59:25 +02:00
Matt Corallo
1e24dea569 Fix wallet extensions by adding setKeyCrypter and using auto-save. 2013-06-17 10:59:15 +02:00
Matt Corallo
e2e72a275d Fix deserialization of wallet transactions with a far-out locktime. 2013-06-17 10:59:06 +02:00
Matt Corallo
63be9b705b Make all addOutputs and addInputs return the newly added in/output. 2013-06-17 10:59:00 +02:00
Matt Corallo
5f1a9c246b Add Wallet.maybeCommitTx to not throw when tx is already in pending 2013-06-14 15:04:31 +02:00
Mike Hearn
74110a12d9 Note that a tx of exactly 1000 bytes may overpay. 2013-06-12 17:42:18 +02:00
Mike Hearn
c91e811fc7 Make SendRequest.completed back to being private. 2013-06-12 17:26:12 +02:00
Mike Hearn
87ab410a2f Make feePerKb apply to the first kilobyte as well. 2013-06-12 17:16:07 +02:00
Mike Hearn
c9f0ecae3d Delete 3 fee tests that weren't adding any coverage and Matt can't remember what they're for. 2013-06-12 16:21:02 +02:00
Mike Hearn
20049fb9f8 Use RegTestParams.get() 2013-06-12 11:11:59 +02:00
Mike Hearn
80b66a8945 Split a bit more code out of the giant fee calculation function. 2013-06-11 12:29:28 +02:00
Mike Hearn
b865e6a510 Make Transaction.addInput(TransactionOutput) return the created input. Use it to make a minor simplification. 2013-06-11 12:24:14 +02:00
Mike Hearn
6077d32c4a Refactor fee calculation out of wallet.completeTx(). Introduce a (not widely used yet) InsufficientMoneyException. 2013-06-11 12:21:20 +02:00
Mike Hearn
46914b12b7 Make completeTx once again return a bool (pending replacement with an exception), and update the fee field with the calculated fee. 2013-06-11 11:40:40 +02:00
Mike Hearn
afaebd062a Rename enforceDefaultClientFeeRelayRules to ensureMinRequiredFee which is shorter. 2013-06-10 16:02:38 +02:00
Mike Hearn
9a389c9475 Move enforceDefaultClientFeeRelayRules into SendRequest instead of being a parameter.
Make WalletTool enforce the rules instead of ignoring them (this was an oversight).
2013-06-10 15:51:34 +02:00
Matt Corallo
518b7edcbd Handle null hostNames in DnsDiscovery (some NP have that). 2013-06-10 13:38:01 +02:00
Matt Corallo
c9d411e8e7 Add two new WalletExtension access methods. 2013-06-10 13:36:33 +02:00
Matt Corallo
a3f1fe5390 Tweak WalletExtension slightly. 2013-06-10 13:36:27 +02:00
Matt Corallo
a7987585b8 Catch out-of-bound reads and rethrow as ProtocolExceptions. 2013-06-10 13:36:20 +02:00
Matt Corallo
dbf7728b4f Add uint64ToByteArrayLE to Utils. 2013-06-10 13:36:14 +02:00
Mike Hearn
a525f878ca More fixing of regtest params. 2013-06-07 16:15:36 +02:00
Mike Hearn
90fda575b6 Make bitcoind comparison tool simple to run again. 2013-06-07 13:59:20 +02:00
Mike Hearn
651880405d Fix regtest params. 2013-06-07 13:59:10 +02:00
Mike Hearn
1288774ee4 Fix a generics warning. 2013-06-05 16:58:58 +02:00
Mike Hearn
50539ff6c2 Remove nonsensical comment: shuffling inputs does not grant extra privacy. 2013-06-05 16:49:18 +02:00
Mike Hearn
033e7e7aab Some minor clarity improvements to DefaultCoinSelector. 2013-06-05 16:48:02 +02:00
Mike Hearn
0bdba0318a Clear some static analysis warnings from the inspector - many assertions could be simplified and assertEquals is (expected, actual) not (actual, expected). 2013-06-05 16:41:14 +02:00
Matt Corallo
7daa54b12c Add a few more fee solver tests. 2013-06-05 16:29:16 +02:00
Matt Corallo
c9c107afaf Make getBalance() significantly faster. 2013-06-05 16:29:11 +02:00
Matt Corallo
72f346c10f Add tests for user-specified inputs in SendRequests. 2013-06-05 16:29:06 +02:00
Matt Corallo
375e553bdc Add basic fee solver to Wallet.completeTx and extensive testing.
This also adds support for SendRequests which have some predefined
inputs (already signed), which will be tested in a later commit.
2013-06-05 16:28:35 +02:00
Matt Corallo
86046b7122 Add comments on dust output values and constants/util to calc them 2013-06-05 16:24:39 +02:00
Matt Corallo
4b1e45fae2 Make DefaultCoinSelector aware of priority, not just depth. 2013-06-05 16:11:35 +02:00
Matt Corallo
842b30e2ca Add basic support for existing inputs in Transaction.signInputs 2013-06-05 16:11:27 +02:00
Matt Corallo
fd4845fa90 Add new data-driven test-case 2013-06-05 14:10:42 +02:00
Matt Corallo
c6b3b82a66 Fix TxOut serialization (fixes SIGHASH_SINGLE hashing) 2013-06-05 14:10:41 +02:00
Matt Corallo
07baa230f3 Wallet: Check if tx is time-locked not just has a lock time 2013-06-05 14:10:41 +02:00
Matt Corallo
e2fea77a3d Catch potential exception on invalid signatures 2013-06-05 14:10:41 +02:00
Matt Corallo
fb912322ff Replace Block.fakeClock with Utils.mockClock 2013-06-05 14:10:41 +02:00
Matt Corallo
5369ca925a Add Transaction.clearIn/Outputs and make getIn/Outputs unmodifiable 2013-06-05 14:10:40 +02:00
Matt Corallo
5993f2dc6c Further global replace of NetworkParameters.* -> *.get() 2013-06-05 14:10:40 +02:00
Mike Hearn
f4c3b6a49d Global search and replace to use the param-class specific instance getters and prodNet -> MainNetParams.
The old "prodnet" name could be confusing to non-native speakers or people who just haven't been exposed to Google lingo. Main net is more idiomatic.

Conflicts:
	tools/src/main/java/com/google/bitcoin/tools/BlockImporter.java
2013-06-05 14:10:40 +02:00
Mike Hearn
52586edb33 NetworkParameters: Refactor out into separate classes.
Hide fields behind getters and make unit tests create anonymous subclasses
to tweak them rather than overwriting global variables.

Introduce a regtest params class for use in the comparison tool.

Conflicts:
	core/src/test/java/com/google/bitcoin/core/BitcoindComparisonTool.java
	core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java
2013-06-05 14:10:39 +02:00
Mike Hearn
f6f290cc05 NetworkParameters: hide more params behind a getter. 2013-06-05 14:10:39 +02:00
Mike Hearn
1f005d7b3d NetworkParameters: hide packet magic behind a getter.
Conflicts:
	tools/src/main/java/com/google/bitcoin/tools/BlockImporter.java
	core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java
	core/src/test/java/com/google/bitcoin/core/FullBlockTestGenerator.java
2013-06-05 14:10:39 +02:00
Mike Hearn
8043bc335b NetworkParameters: hide port behind a getter. 2013-06-05 14:10:38 +02:00
Mike Hearn
ec62bbdeab NetworkParameters: hide genesis block behind a getter.
Conflicts:
	core/src/test/java/com/google/bitcoin/core/FullBlockTestGenerator.java
2013-06-05 14:10:38 +02:00
Mike Hearn
619495875c Block: Make some things public that aren't going to change.
Conflicts:
        core/src/main/java/com/google/bitcoin/core/Block.java
2013-06-05 14:10:38 +02:00
Matt Corallo
28292b45a5 Implement dumb Comparable in Sha256Hash. 2013-06-05 14:10:37 +02:00
Matt Corallo
6cdfad43a3 Make Tx.connect public by exposing enums + tweak DISCONNECT_ON_CONFLICT 2013-06-05 14:10:37 +02:00
Matt Corallo
f7c09d74ea Introduce Transaction.hasLockTime() and use it where appropriate. 2013-06-05 14:10:37 +02:00
Matt Corallo
2bd9531da6 Add txout.setValue, public decodeFromOpN+appendByte new MultiSig. 2013-06-05 14:10:37 +02:00
Matt Corallo
b840ddfcc8 Require bitcoind replies to a inv instead of just sending blocks.
This makes b57 testing actually useful.
2013-06-05 14:10:36 +02:00
Matt Corallo
60520ba17a Add new data-driven tests from the reference client 2013-06-05 14:10:36 +02:00
Matt Corallo
fad5356bd9 Properly uncache scriptSig in TransactionInput.setScriptBytes 2013-06-05 14:10:36 +02:00
Matt Corallo
70685745c3 Fix a possible ArrayIndexOOBEx in Script processing (cleaner error). 2013-06-05 14:10:36 +02:00
Matt Corallo
304bc705b8 Fix script parsing bug and test for it (partially reverts 7837a54) 2013-06-05 14:10:23 +02:00
Matt Corallo
e8ea5cea7c Re-enable port selection as pull-tester will need it 2013-06-04 22:18:11 +02:00
Matt Corallo
a1c1a1117a Rename blocks in FullBlockTestGenerator to make new tests easier 2013-06-04 22:18:11 +02:00
Matt Corallo
f9ebf56047 Test importing first 100K of blocks. 2013-06-04 22:18:11 +02:00
Matt Corallo
68e6228356 Handle duplicate chain.add calls significantly more effeciently. 2013-06-04 22:18:11 +02:00
Matt Corallo
729f2f5312 Store blocks on disk during BitcoindComparisonTool to save memory. 2013-06-04 22:18:11 +02:00
Matt Corallo
a131d08a58 Move BlockImporter to a util and make it an Iterator<Block> 2013-06-04 22:18:11 +02:00
Matt Corallo
1dadb33c28 Split expensive blocks into sigExpensive and largeReorg. 2013-06-04 22:18:11 +02:00
Matt Corallo
9cbd824457 Create very large reorg test. 2013-06-04 22:18:10 +02:00
Matt Corallo
0390bc9371 Add height info to FullBlockTests, to verify the tests are correct. 2013-06-04 22:18:10 +02:00
Matt Corallo
9ddbcb88b9 Make txCounter work for larger values. 2013-06-04 22:18:10 +02:00
Matt Corallo
2e5ca9e72b Allow FullBlockTestGenerator to indicate maximum reorg depth. 2013-06-04 22:18:10 +02:00
Matt Corallo
0ada33d2b1 Provide more opacity into exceptions. 2013-06-04 22:18:10 +02:00
Matt Corallo
939337b2db Fix premature optimization in H2FullPrunedBlockStore (resets state)
This replaces the H2FullPrunedBlockStore schema with one that will
take (maybe) some more disk space while being a good bit faster.
The tradeoff made was really not worth it.

Also adds a version field to settings database incase something
other than schema changes in the future.
2013-06-04 22:18:10 +02:00
Matt Corallo
59e096e2ea Add optional support native ECDSA (designed for sipa's impl).
This could be significantly more optimized if we avoided crossing
the JNI barrier as often, but as it is its waaay faster than
BouncyCastle.
2013-06-04 22:18:10 +02:00
Matt Corallo
70bffcd6f4 Move onPeerConnected to after VerAck. 2013-05-22 22:46:10 +02:00
Mike Hearn
f1750679b6 Use non-deprecated asserts in AlertMessageTest. Found by IntelliJ inspections. 2013-05-08 16:33:22 +02:00
Mike Hearn
2830d48ac1 Simply a few assertions. 2013-05-08 15:42:27 +02:00
Mike Hearn
1463213f25 Use port 18444 for regtest mode. 2013-05-08 14:30:15 +02:00
Mike Hearn
9d5b3865f5 Wallet: remove an unused variable from reorganize(). 2013-05-07 12:48:34 +02:00
Mike Hearn
e2291d2fb4 Wallet: remove the affectedUs check in reorganize(). It was buggy, and if it had worked it would have introduced other issues. We always need to process the entire reorg to keep the depth and workDone counters on transactions accurate. 2013-05-07 12:00:50 +02:00
Mike Hearn
4886a137bc TransactionConfidence: make accessors return zero rather than throw when pending, and add a method to get a depth future. 2013-05-06 17:59:31 +02:00
Mike Hearn
bacc67f26f Peer: fix buggy log statement. 2013-05-06 17:34:48 +02:00
Mike Hearn
857da6bb29 AbstractBlockChain: add a helper method to create futures that complete when the chain reaches a particular height. 2013-05-06 16:23:08 +02:00
Mike Hearn
9a20c39b15 A few simplifications suggested by IntelliJ 2013-05-06 16:21:32 +02:00
Mike Hearn
c64453f835 Wallet: change the extensions API.
The old API was very limiting. Rather than have extensions be a single object that creates subclasses of the Wallet class, allow arbitrary objects to be attached to Wallets. Objects know if they are mandatory and how to serialize themselves. A wallet can have as many extensions as wanted in this way.
2013-05-06 15:40:36 +02:00
Mike Hearn
3eb3dbcf89 Better output for unusual script types in Transaction. 2013-05-06 13:53:39 +02:00
Mike Hearn
ee0b56180b WalletAppKit - block on shutdown. 2013-05-06 13:53:15 +02:00
Mike Hearn
82e056cab7 Rename Wallet.waitForBalance() to be Wallet.getBalanceFuture(). 2013-05-06 12:00:39 +02:00
Mike Hearn
e8f1418865 Wallet: Add a Wallet.waitForBalance() method. 2013-05-02 16:51:29 +02:00
Mike Hearn
dddf02d6a1 Script: Use Guava ImmutableMap for the opcodes. This is more memory efficient. They could also be lazy initialized later if we need to. 2013-04-29 14:16:48 +02:00
Mike Hearn
69537c0bf0 Script: some minor tweaks and use the ScriptOpCodes parsing in ScriptTest. 2013-04-29 14:10:36 +02:00
Alexander Lolis
52cec7f6be Refactored the huge switch. Replaced it with a HashMap which contains OpCode -> String instead; less lines
Implemented getOpCode method and added a HashMap which contains String -> OpCode for the lookup
2013-04-29 13:41:03 +02:00
Mike Hearn
aa883b48b1 Wallet: Rewrite re-org handling to be simpler and use less code. And hopefully fix some bugs along the way. 2013-04-26 16:42:15 +02:00
Mike Hearn
5ae00d4e20 Simplifications to the wallet code.
Wallet: Remove/deprecate NOT_IN_BEST_CHAIN as a confidence type.
TxConfidence: Rename NOT_SEEN_IN_CHAIN -> PENDING which is more precise and consistent.
PeerGroup: Fix definition of "mined"
2013-04-26 16:42:14 +02:00
Mike Hearn
37290fe882 Transaction: Clear depth/work data when setting confidence type to pending. 2013-04-26 16:42:13 +02:00
Mike Hearn
83136a2b02 Transaction: Better toString() for coinbases 2013-04-26 16:42:13 +02:00
Mike Hearn
d9c21d58c7 Make wallet.getChangeAddress() visible. 2013-04-26 16:41:33 +02:00
Mike Hearn
ab7e8685b5 Fix a typo in ScriptOpCodes PUSHDATA2 string. 2013-04-26 16:41:23 +02:00
Mike Hearn
95e43566a6 Add a few more ECKey functions that accept wrapper objects. 2013-04-26 16:41:03 +02:00
Mike Hearn
8a63fbd075 ScriptBuilder: add a method that creates a multisig input script. 2013-04-26 13:51:00 +02:00
Mike Hearn
d537c8017a Script: fix bug, OP_0/OP_FALSE is not invalid. 2013-04-26 13:50:30 +02:00
Mike Hearn
172f264ee2 Add a Transaction.hashTransactionForSignature prototype that accepts Script objects instead of byte arrays.
This could all be cleaned up and made more consistent in future.
2013-04-26 13:47:26 +02:00
Mike Hearn
38b40a245a Help IntelliJ static analysis understand that nullity is impossible at that point in the code. 2013-04-26 13:46:57 +02:00
Mike Hearn
d113cbfc66 Script: Introduce a builder class that makes it easier to assemble scripts without writing raw byte streams. 2013-04-24 19:15:06 +02:00
Mike Hearn
752e7006e5 Move ScriptTest. 2013-04-24 18:23:20 +02:00
Mike Hearn
2f790520f4 Move ScriptTest 2013-04-24 18:08:11 +02:00
Mike Hearn
7db7f89582 Move Script and ScriptOpCodes to a new script package. 2013-04-23 18:51:08 +02:00
Mike Hearn
775af907ae Widen the scoping on a few methods in preparation for moving the Script class. 2013-04-23 17:57:16 +02:00
Mike Hearn
7837a54bc0 Script: refactor in preparation for making it easier to manipulate and construct scripts using chunked form. 2013-04-22 17:08:10 +02:00
Mike Hearn
5ec4f43dee Expand Block.toString() to use StringBuilder. 2013-04-22 17:08:10 +02:00
Mike Hearn
a0d2b36c9f Script: ScriptChunk -> Script.Chunk and make it public. 2013-04-22 17:08:09 +02:00
Mike Hearn
80285832f8 Script: Move opcodes out to a separate ScriptOpCodes class. Improve a couple of javadocs in Transaction. 2013-04-22 17:08:07 +02:00
Mike Hearn
44ead8b6a1 Script: couple of minor reformattings. 2013-04-22 17:08:06 +02:00
Mike Hearn
e18b9d363e Script: add support for crafting multisig outputs and hide program behind Script.getProgram() 2013-04-22 17:08:05 +02:00
Mike Hearn
f88bdc5fe3 Wallet: make keychain private and add a remove method. 2013-04-22 13:45:38 +02:00
Mike Hearn
1341529228 Script: refactor signature checking out into separate methods. 2013-04-19 16:01:55 +02:00
Mike Hearn
c53a137ca7 Pull some code up from WalletTest into a superclass to make writing test cases that need wallets+stores easier. 2013-04-19 15:20:46 +02:00
Mike Hearn
b5b984a741 BitcoindComparisonTool: minor fixes 2013-04-19 13:14:28 +02:00
Mike Hearn
82171f5b50 Deprecate the getFromAddress() getters and simplify the Script c'tor by removing superfluous parameters. 2013-04-18 15:35:34 +02:00
Mike Hearn
197f0824ae Use my DNS seed instead of Jeff's, as his is just a static list and the nodes often appear to be overloaded. 2013-04-13 21:56:15 +02:00
Mike Hearn
42b2cfa3f0 Don't unit test failed decryption message, that's annoying. 2013-04-13 21:54:47 +02:00
Mike Hearn
34b52c95fe Add a WalletAppKit that wraps boilerplate stuff for setting up a new app. Will convert some example apps later. 2013-04-12 16:20:52 +02:00
Mike Hearn
8fa8a195c1 Transactions: Make some methods public and add a couple of accessor methods. 2013-04-12 16:20:52 +02:00
Mike Hearn
30eb1f8043 DownloadListener: don't print redundant noise after catching up with the chain. 2013-04-12 16:20:52 +02:00
Mike Hearn
dd4d237cd9 Allow modification of the inputs/outputs list. 2013-04-12 11:10:56 +02:00
Mike Hearn
d14ac586d7 Add a few basic sanity checks on transactions received from the network at various points, to avoid syntactically invalid transactions from getting into the system (e.g. no inputs or outputs). 2013-04-12 11:10:48 +02:00
Mike Hearn
21ba7e0260 MemoryPool: Clarify logging a bit. 2013-04-12 11:10:38 +02:00
Mike Hearn
5eebca2c7d Wallet: Add some convenience methods for spending unconfirmed transactions. 2013-04-12 11:10:31 +02:00
Mike Hearn
f1845dd552 Version 0.9-SNAPSHOT 2013-04-11 14:27:35 +02:00
Mike Hearn
d64f555896 Wallet: fix logging of balance in receive() and only calculate the balance once instead of twice.
Resolves issue 372.
2013-04-01 18:14:20 +01:00
Mike Hearn
bfd9d81b21 Undo a couple of changes to NetworkParameters to fix the bitcoind comparison tool 2013-04-01 18:08:14 +01:00
Matt Corallo
2a33065e31 Add a bitcoind/bitcoinj testing tool that compares bitcoind's rules
...by creating blocks and then comparing their acceptance by
bitcoind to their acceptance by bitcoinj.
2013-04-01 18:05:35 +01:00
Matt Corallo
1f904d28e1 Fix balooning memory usage in FullPrunedBlockChain.
This fixes a bug which had been previously solved with a dumb
workaround.
2013-04-01 18:05:01 +01:00
Matt Corallo
726dd02472 Propogate very old refactor to duplicate code. 2013-04-01 18:02:50 +01:00
Matt Corallo
1b830a10e6 Add comment about using a large fast catchup time in PeerGroup. 2013-04-01 18:02:34 +01:00
Mike Hearn
cb670bdc39 BOBS: Suppress deprecation warning. 2013-04-01 18:02:29 +01:00
Mike Hearn
d92f944564 Peer: Allow peer listeners to handle exceptions thrown in the peer thread. 2013-03-30 19:28:58 +00:00
Mike Hearn
11b5ea11b8 WalletProtobufSerializer: throw IllegalArgumentException if tx cannot be connected. 2013-03-30 18:06:40 +00:00
Mike Hearn
9201cba0cc Wallet: try deleting the temp file in the finally block and print a warning if it succeeded.
Resolves issue 362.
2013-03-30 17:35:57 +00:00
Mike Hearn
301db707b1 Wallet: misc comment updates 2013-03-30 17:35:07 +00:00
Mike Hearn
49d26ad773 WalletProtobufSerializer: Add a couple of NPE checks 2013-03-30 17:34:30 +00:00
Mike Hearn
7307308915 WalletProtobufSerializer: Clear txMap after reading.
Resolves issue 380.
2013-03-30 17:23:34 +00:00
Mike Hearn
616b4a5a7d PeerGroup: make selectDownloadPeer non static so users can override it and control selection behaviour. 2013-03-29 18:26:40 +00:00
Mike Hearn
9e870f40bf DnsDiscovery: Rewrite to use better abstractions and remove some arbitrary magic numbers.
Resolves issue 346.
2013-03-29 18:18:45 +00:00
Mike Hearn
08dbb21a39 H2 store: Set a 60 second locking timeout to avoid failures when processing large/complex operations.
Resolves issue 348.
2013-03-29 18:00:46 +00:00
Mike Hearn
a78b53c5aa AbstractBlockChain: Fix median timestamp calculation.
Resolves issue 370.
2013-03-29 17:56:28 +00:00
Mike Hearn
3d6691c82a Switch to using DNS for testnet discovery, as LFnet has gone away.
Put DNS seeds into NetworkParams.
Deprecate IrcDiscovery and remove the unit tests for it.
Update examples and tools to use DNS for everything.
Resolves issue 299.
2013-03-29 17:39:24 +00:00
Mike Hearn
41ce887652 Fix TCPNetworkConnection.connectTo() which broke during a previous re-factor. It's not often used so it wasn't noticed. 2013-03-29 17:34:23 +00:00
Mike Hearn
89d45b638f WalletTest: Remove temp code that snuck in to the tests accidentally. 2013-03-29 17:21:38 +00:00
Mike Hearn
89079fd8d4 WalletTest: Heterogeneous is hard to spel corectly :) Also it's probably unfamiliar to non native speakers. Replace it with the simpler word "mixed". 2013-03-29 17:07:22 +00:00
Mike Hearn
4273dacc00 Check that the private key decrypted correctly in ECKey.sign(). Resolves issue 359. 2013-03-29 17:05:39 +00:00
Mike Hearn
7b8eab19ff Use a bit of Guava for unsigned longs. Resolves issue 367. 2013-03-29 16:41:28 +00:00
Mike Hearn
4f1c7f4816 Throw BlockStoreException not NullPointerException when chain head cannot be found in SPVBlockStore. Resolves issue 374. 2013-03-27 17:57:00 +01:00
Mike Hearn
3c6f435fde More changes/simplifications to PeerGroup locking. 2013-03-27 17:44:51 +01:00
Mike Hearn
61c8c07468 Make wallet description private. Resolves issue 368. 2013-03-27 11:57:29 +01:00
Mike Hearn
8e0c72597c Add JSR305 annotations. Bump Guava version. Resolves issue 347. 2013-03-21 17:19:36 +01:00
Mike Hearn
df257e8589 Don't dump entire block to log when a split happens. 2013-03-21 16:42:34 +01:00
Mike Hearn
56285da06c Lots of bug fixes to double spend handling.
Fix some corruptions that could occur during a Finney attack. Resolves issue 182.
2013-03-21 16:14:16 +01:00
Mike Hearn
76e539e8e7 Simplify the handling of double spends somewhat. 2013-03-21 15:25:52 +01:00
Mike Hearn
608810cfc1 Improvements to tx handling in the wallet.
Attach inputs of pending transactions when relevant transactions appear in the chain. Resolves issue 345.
Check transactions for being double spends independent of whether they send/receive us money. Resolves a potential security issue.
2013-03-21 14:24:59 +01:00
Mike Hearn
e449c77026 Don't rely on padding checks to tell us if the decryption was correct.
Fix a few minor javadoc issues. Resolves issue 356.
2013-03-19 17:30:08 +01:00
Mike Hearn
89d30142c3 Fix some labels in the wallet encryption tests. 2013-03-19 17:29:26 +01:00
Mike Hearn
b7eab44990 Remove a couple of checkNotLocked asserts that didn't get deleted last time. 2013-03-19 15:40:31 +01:00
Mike Hearn
7696835f86 Fix over-eager locking in PeerGroup and ensure the resulting code doesn't race, resolving a lock inversion. Also, take into account the possibility of a block being mined before it's fully propagated and add some discussion.
Resolves issue 353.
2013-03-19 15:21:24 +01:00
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