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
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
Mike Hearn
43e1d084cb
Add Matts copyright notice to TestWithPeerGroup
2013-01-28 16:20:43 +01:00
Matt Corallo
1ea4cb457d
Add the new nFlags BloomFilter fields to control auto-updating.
2013-01-27 03:41:10 -05:00
Matt Corallo
3906aa62d9
Add test cases for PMT/FilteredBlock including network download.
2013-01-27 03:40:31 -05:00
Matt Corallo
9577bd644e
Ask peers for filtered blocks when appropriate and handle them.
2013-01-27 03:40:31 -05:00
Matt Corallo
a5f9c3381b
Add relayTxesBeforeFilter flag to VersionMessage, PROTOCOL_VERSION
...
This adds a relayTxesBeforeFilter flag to VersionMessage, bringing
it in line with PROTOCOL_VERSION 70001, and bumps the
PROTOCOL_VERSION accordingly.
2013-01-27 03:40:31 -05:00
Matt Corallo
7c03eefefd
Send peers a bloom filter from our wallet(s).
2013-01-27 03:40:31 -05:00
Matt Corallo
394d0b788d
Add Wallet.getBloomFilter and a test-case for it.
2013-01-27 03:40:30 -05:00
Matt Corallo
e263229b62
Add BloomFilter class/messages and a test-case.
2013-01-27 02:32:36 -05:00
Mike Hearn
40c13eb3f3
Fix send futures in FakeChannelSink to unbreak a unit test that deadlocks after a previous change.
2013-01-23 17:17:00 +01:00
Mike Hearn
d919ede7a8
Specify time zone in block chain unit test. Resolves issue 291.
2013-01-23 17:12:53 +01:00
Mike Hearn
6504296b79
Avoid confusing bugs by switching NetworkParameters.testNet() to be testnet3 not testnet2.
2013-01-16 18:15:46 +01:00
Mike Hearn
75e467dfc4
Make TestUtils.roundTripTransaction public.
2013-01-16 17:55:36 +01:00
Mike Hearn
916e33254f
Resolve some race conditions.
...
It was possible that during saving of a wallet a network thread would update the confidence metrics due to broadcast announcements. This change makes TransactionConfidence use a COW list so the broadcast peer set can be iterated over safely. Resolves issue 277.
2013-01-12 14:27:49 +01:00
Mike Hearn
b5b43f3a15
Better support for lock timed transactions.
...
Lock times are now included in various toString dumps.
Transactions can estimate their lock time when the time is specified as a block number.
Add support to WalletTool for creating timelocked transactions.
2013-01-12 14:26:59 +01:00
Mike Hearn
dd9e0d5d0d
Fix my previous buggy commit that changed Utils.bitcoinValueToFriendlyString
2013-01-10 13:26:19 +01:00
Mike Hearn
d268270d7b
Use compressed pubkeys by default. Resolves issue 111.
2013-01-09 23:45:24 +01:00
Mike Hearn
0bdfa7b635
Better formatting in Utils.bitcoinValueToFriendlyString
2013-01-09 23:45:23 +01:00
Mike Hearn
ae6b2fbd4d
Improvements to the ECKey class:
...
- Implement ECDSA key recovery.
- Use it to implement sign/verifymessage functionality that's compatible with Bitcoin-Qt.
- Redesign the signing APIs a bit.
2013-01-06 22:07:55 +01:00
Mike Hearn
7e8ed913ec
Use ChannelGroups for shutdowns. This cleans up the code and makes the PeerGroup shutdown futures work correctly.
2013-01-04 18:29:47 +01:00
Matt Corallo
0208b426f5
Add a few more tests to FullBlockTestGenerator.
...
...including one which (somewhat) tests the optimally encoded size
stuff.
2012-12-31 15:56:06 +01:00
Mike Hearn
671a5aec18
Add a TransactionInput.verify() method that checks signatures and use it from the basicSpending test to ensure we generate valid signatures/scripts.
2012-12-26 18:14:39 +00:00
Mike Hearn
3197be51ea
Minor simplifications.
2012-12-25 01:23:16 +00:00
Mike Hearn
ea3fca970c
Incorporate protocol version into download peer selection logic.
2012-12-25 00:28:49 +00:00
Mike Hearn
22ff79dd8a
Re-evaluate download peer when a new peer connects. Add unit tests for selecting the best peer.
2012-12-24 23:48:48 +00:00
Mike Hearn
07011be796
Introduce a PeerGroup method for calculating the most common chain height.
...
Use it to make peer selection a little smarter.
Render pending peers and peers that are reporting un-common chain heights in PeerMonitor.
2012-12-24 22:32:16 +00:00
Mike Hearn
2a55c58460
Make PeerGroup startup blocking in the unit tests.
2012-12-24 21:27:49 +00:00
Mike Hearn
75c007fab3
Fix unit tests.
2012-12-24 16:35:52 +00:00
Mike Hearn
590fd82fdc
Fix a regression introduced by the block height accessor changes that prevented DownloadListener from triggering. Fix more inconsistent locking issues.
2012-12-11 00:22:25 +01:00
Mike Hearn
b64a3b5d1e
Some work on DNS discovery - look up all seeds in parallel, pick 30 results, shuffle them and return. Allow users to specify a timeout. Return after the 30 results are found or we run out of time, whichever is first. Should smooth bumpy startup delays caused by occasional seed breakdowns.
2012-12-07 17:06:53 +01:00
Mike Hearn
68fa57c922
Fix unit test bug
2012-12-07 16:59:49 +01:00
Mike Hearn
26f63550be
Implement calculation of a moving average of ping times. Improve PeerMonitor by making columns sortable.
2012-12-07 14:45:41 +01:00
Mike Hearn
3f89eda933
Fix some bugs that happen in chainless operation. Make Peer.getBestChainHeight() more accurate by taking into account blocks announced after a peer is connected, not just what it announced in the initial version message.
2012-12-07 13:59:37 +01:00
Mike Hearn
5cc9710e1f
Have PeerGroup ping peers that support BIP 31 ping/pong responses, by default every 5 seconds. The last time ping is available in Peer.getLastPingTime(). This will shortly be used for ordering peers by responsiveness so we don't try and download from overloaded peers.
2012-12-07 12:47:38 +01:00
Mike Hearn
f440913c1d
Some improvements to the network code:
...
- Delete the PeerGroupThread and replace it with a connectToAnyPeer() method. Getting connected to the network is now significantly faster as there is no sleep-wait loop between connections.
- Delete the connectionTimeMillis param to the PeerGroup constructors.
- Expose the PeerGroup c'tor that lets you specify the ClientBootstrap and expose a utility method to make one. This means users can now customize TCP options directly.
- PeerGroup.setMaxConnections() now actually creates or tears down connections to meet the new required number, if the peer group is running.
- Update the PeerMonitor so there's a spinner that lets you add or remove peers. Connecting and version handshaking is very fast now.
- Misc changes and fixes.
2012-12-06 15:06:37 +01:00
Mike Hearn
e20c35bf50
Fix FakeChannelSink so events are put into the queue in the right order (BEFORE running event handlers, not after).
2012-12-06 15:01:40 +01:00
Mike Hearn
7bfef81664
Reformat FakeChannel.
2012-12-06 15:01:17 +01:00
Mike Hearn
fc573d5f1c
Add a ping() method to the Peer class. It returns a future that can be used to find out when the pong returns and how slow it was. Temporarily, use this in the PeerMonitor example. Next up: moving pinging into the PeerGroup.
2012-11-02 16:19:13 +01:00
Matt Corallo
9cc9607c73
ScriptException extends VerificationExtension, code cleanup follows
...
Just cleans up code now that ScriptException extends
VerificationExtension.
2012-11-01 16:08:56 +01:00
Matt Corallo
bf11bf08c3
Add data-driven Script tests from the reference client.
2012-11-01 15:21:06 +01:00
Mike Hearn
8d1591183f
Rename TransactionInput get/setSequence -> get/setSequenceNumber. The previous name could be confusing and was inconsistent. Add lots of comments to Transaction.hashForSignature.
2012-11-01 14:06:59 +01:00
Matt Corallo
40237f0549
Implement all SigHash types in hashTransactionForSignature.
2012-11-01 13:43:06 +01:00
Matt Corallo
45b89a1935
Use a generic block chain creator for Full Block Chain tests.
2012-10-24 16:44:53 +02:00
Matt Corallo
dfebcc83ab
Add a few test cases to test FullPrunedBlockChains.
2012-10-08 16:28:57 +02:00
Matt Corallo
548333bc6f
Refactor BlockChain to make it more extensible.
...
This creates a new AbstractBlockChain abstract class which
BlockChain extends.
It continues to have a createable BlockChain class to avoid
changing the API too much.
2012-10-08 15:16:24 +02:00
Matt Corallo
f2d9a6162d
Fix a number of issues with message length caching.
2012-10-04 00:24:51 +02:00
Mike Hearn
deb9da67aa
Add a WalletEventListener.onWalletChanged() method that is designed for GUI apps to refresh their tx list. Resolves issue 222.
2012-09-29 18:32:22 +02:00