Commit Graph

364 Commits

Author SHA1 Message Date
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
Mike Hearn
72d6f23e92 Version 0.8-SNAPSHOT 2013-02-19 16:11:22 +01:00
Mike Hearn
0c1d308b5b Refactor version constants a bit.
Resolves issue 206.
2013-02-18 15:57:05 +01:00
Mike Hearn
d4cfad59cf Fix a bug where pending transactions with spent outputs would be considered unspent, triggering consistency assertions.
Resolves issue 313.
2013-02-15 16:47:11 +01:00
Mike Hearn
d310c289ab Clarify another JavaDoc. 2013-02-15 16:47:11 +01:00
Mike Hearn
7ccd81c462 Update TODO list at top of wallet class. 2013-02-15 16:47:11 +01:00
Mike Hearn
e99e4bd63c Consider age of outputs when creating spends. 2013-02-15 16:47:11 +01:00
Mike Hearn
757334da80 Change getBalance to use the default coin selector instead of its own logic for calculating the available and estimated balances. 2013-02-15 16:47:11 +01:00
Mike Hearn
29727113a5 Support ID based construction of unit test network params. Fixes an issue in the serializer tests. 2013-02-15 16:47:11 +01:00
Mike Hearn
068db43569 Add a setter for the coin selector. 2013-02-15 16:47:10 +01:00
Mike Hearn
4273820eac Allow spending of unconfirmed change when it's been seen by the network.
Resolves issue 40.
2013-02-15 16:47:10 +01:00
Mike Hearn
fd45fa0f17 Refactor coin selection out into a separate object and reimplement the existing policy. 2013-02-15 16:47:10 +01:00
Mike Hearn
988641a5f7 Label transactions with their source (network, wallet, other, etc).
This will be used to allow spending of unconfirmed change.
2013-02-15 16:47:10 +01:00
Mike Hearn
4bcb550796 Make Peer.downloadData() atomic rather than locked under the Peer lock.
Resolves issue 310.
2013-02-15 15:48:53 +01:00
Mike Hearn
38ec23299c Protect lastPingTimes under its own lock instead of the peer lock.
Update issue 310.
2013-02-15 15:42:37 +01:00
Mike Hearn
536bbfb231 Make Peer.getAddress() not hold the Peer lock.
Update issue 310.
2013-02-15 15:11:01 +01:00
Mike Hearn
067b7814e8 Use atomics for peers announced version and tracked chain height rather than locks.
Updates issue 310.
2013-02-14 19:31:24 +01:00
Mike Hearn
8dc9c9f27a Fix a bug in Transaction.toString().
Resolves issue 309.
2013-02-14 19:21:17 +01:00
Mike Hearn
1b4fa96691 Make the last TransactionInput c'tor public, it can be used to build coinbase transactions. Updates issue 312. 2013-02-14 15:35:11 +01:00
Mike Hearn
9b1edf00bd Clarify the getDifficultyTarget() javadoc. 2013-02-11 20:31:14 +01:00
Mike Hearn
90662e9238 Support compressed pubkeys in the dumpprivkey format encoder/decoder.
Resolves issue 308.
2013-02-11 12:18:16 +01:00
Mike Hearn
1c8ddaad36 Delete long-dead code related to the previous protocol version that didn't use checksumming until post-handshake. 2013-02-09 12:35:58 +01:00
Mike Hearn
fa57883a98 Delete an unused line in AbstractBlockChain 2013-02-07 10:52:44 +01:00
Mike Hearn
92e1f09a72 Some improvements to class level JavaDocs. 2013-02-05 17:27:26 +01:00
Mike Hearn
0d0039cbdb Minor reformattings on Base58.java 2013-02-05 16:15:07 +01:00
Mike Hearn
5ce607f1ae Add a minimum version to Peer and use it to exclude peers so old they don't support pong messages. 2013-02-05 15:14:58 +01:00
Mike Hearn
6ac8eb54cb Re-arrange the actions in PeerGroup.broadcastTransaction()
This fixes a bug where Netty complains about blocking an IO thread due to the await call on send and resolves a potential race condition.
2013-02-05 12:00:33 +01:00
Mike Hearn
8c488a1687 Delete a dead method from WalletProtobufSerializer. 2013-02-05 12:00:33 +01:00
Mike Hearn
37cb4205b3 Minor cleanups to unit tests: remove redundant params from some test helper methods. 2013-02-05 12:00:32 +01:00
Mike Hearn
a62825bd8f Make the NetworkParameters.testNet() point to testNet3 and rename oldTestNet->testNet2(). Resolves issue 285. 2013-01-30 17:56:57 +01:00
Mike Hearn
7108751d3c Set IRC discovery so timeout. Resolves issue 269. 2013-01-29 16:20:50 +01:00
Mike Hearn
590d47f273 Add Wallets to all peers not just the download peer. Resolves issue 297.
Also fix the unit test that was meant to catch this error so it didn't accidentally probe the download peer case. And prevent adding of wallets multiple times (which caught another error in the unit tests).
2013-01-29 16:17:46 +01:00
Mike Hearn
112fe818d5 More Peer logging improvements. 2013-01-29 16:16:42 +01:00
Mike Hearn
4bdb0fd5ce Restart chain download after download peer changes. Resolves issue 287.
The way we handle changing download peers isn't ideal and can cause some thrashing/wasted bandwidth at startup - it has lots of room for improvement.
2013-01-29 15:25:32 +01:00
Mike Hearn
20cab64943 Change some log levels in Peer. 2013-01-29 15:24:30 +01:00
Mike Hearn
1738f60e1e Refactorings of the current filtered block tracking code. 2013-01-28 19:27:35 +01:00
Mike Hearn
1d6a8c908c Fix off by one error in SIGHASH_SINGLE code. Resolves issue 292. 2013-01-28 16:32:32 +01:00
Mike Hearn
dece35e95c Fix typo in name of FilteredBlockAndPartialMerkleTreeTests 2013-01-28 16:32:32 +01:00
Mike Hearn
35d6084bbf Refactor some of the wallet/peer interaction. Analyze dependencies of relevant pending transactions.
The Peer object now asks each connected Wallet if it cares about a transaction. If it does, then receivePending() is not called immediately, but rather after downloading of dependencies and with those dependencies. If any dependencies are time locked, a new wallet property controls whether they are discarded or not.
2013-01-28 16:32:31 +01:00
Mike Hearn
bfcf67ee5a Allow NotFoundMessage to be constructed with a list of InventoryItems. 2013-01-28 16:32:31 +01:00
Mike Hearn
8b9ddd2caf Link Peer and Wallet directly instead of using an event listener.
This paves the way for tighter coupling in future, needed for various features.
2013-01-28 16:32:31 +01:00
Mike Hearn
e9babb2772 Use ping messages to work around the lack of notfound messages on old nodes.
For now optimistically assume Gavin merges the notfound patch into bitcoin-qt, version wise.
2013-01-28 16:32:31 +01:00
Mike Hearn
b7b52c3fc9 Add support for recursively downloading mempool dependencies of a given mempool transaction.
This isn't currently used anywhere, but can be used as the first step of doing some basic risk analysis of unconfirmed transactions.
2013-01-28 16:32:31 +01:00