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
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
Mike Hearn
43e1d084cb
Add Matts copyright notice to TestWithPeerGroup
2013-01-28 16:20:43 +01:00
Matt Corallo
cea95b809d
Refresh filter every 25000 blocks to avoid a ballooning fp rate.
2013-01-27 03:41:11 -05:00
Matt Corallo
5f070e9861
Improve privacy: use const tweak + try for const filter parameters
2013-01-27 03:41:11 -05: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
db8afbdadf
Add an AbstractBlockChain.add(FilteredBlock...)
2013-01-27 03:40:31 -05:00
Matt Corallo
289c3d19f0
Add a Wallet.notifyTransactionIsInBlock(Sha256Hash txHash...)
2013-01-27 03:40:31 -05:00
Matt Corallo
661ad3cb04
Add PartialMerkleTree and FilteredBlock classes
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
a0c25aed28
Make bloom filter false positive rate configurable.
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
Matt Corallo
c751e1f179
Add Utils.checkBitLE/setBitLE to interact with bit sets.
2013-01-27 02:32:36 -05:00
Matt Corallo
3805e8956b
Remove useless conditional (old version of 95b5e0d894
was merged)
2013-01-27 02:32:36 -05:00
Matt Corallo
38d01e14a6
Fix #292 by &'ing sigHashType to treat it as unsigned.
2013-01-27 02:32:36 -05:00
Mike Hearn
3211fe59f3
Fix s/connectionTimeoutMillis/connectTimeoutMillis/ in a javadoc. Resolves issue 284.
2013-01-23 17:22:09 +01: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
19b032e2e4
Simplify TCPNetworkConnection a bit and print the version message data when the peer sends it to us, not when we get a VerAck back from our own version announcement.
2013-01-20 23:47:56 +01:00
Mike Hearn
caa92985e1
When broadcasting a spend, wait for the tx message to actually hit the wire before proceeding.
...
This resolves an issue where wallet-tool would shut down before the message was actually sent.
2013-01-20 23:47:32 +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
22f8034de8
Minor JavaDoc updates.
2013-01-16 17:55:46 +01:00
Mike Hearn
75e467dfc4
Make TestUtils.roundTripTransaction public.
2013-01-16 17:55:36 +01:00
Mike Hearn
ee715a5f59
Add some convenience getters to a couple of classes.
2013-01-16 17:55:36 +01:00
Mike Hearn
a39dfddead
Silence a newly noisy MemoryPool debug log, as we now expect to receive un-announced transactions in several cases (dep download, Bloom filtering)
2013-01-16 13:20:55 +01:00
Mike Hearn
8923af5785
Fix typo that prevented connection timeouts from being set properly.
2013-01-15 14:17:15 +01:00
Mike Hearn
4254e276fb
Clean up Peer.java a bit - remove the custom future implementation and use Guava futures instead.
2013-01-14 22:30:32 +01:00
Mike Hearn
e4e4e45a47
Allow re-signing of transactions and re-sign after adjusting the sequence number.
2013-01-12 14:47:43 +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
9a65d4cab8
Move ping timer cancellation to after channel close during PeerGroup shutdown.
...
Check if the service is running before trying to re-ping a peer.
Attempts to solve a shutdown race. Updates issue 275.
2013-01-12 14:27:49 +01:00
Mike Hearn
89c611d86b
Always use getLockTime in isFinal.
2013-01-12 14:27:49 +01:00
Mike Hearn
a6f1233b4e
Delete some 0.5 -> 0.6 migration code from WalletTool.
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
48cdc1d9e7
improve findbugs exclusions
2013-01-12 14:26:59 +01:00
Mike Hearn
9da08d2036
Try all returned IP addresses in IRC discovery and use the given timeout.
...
Resolves issue 268. Resolves issue 269.
2013-01-12 14:26:59 +01:00
Mike Hearn
682033aef6
Actually use the provided IRC server name in IrcDiscovery. Resolves issue 266.
2013-01-11 21:58:45 +01:00
Mike Hearn
43e8752ef8
Make PeerGroup.addAddress adjust the number of requested connections.
2013-01-10 14:12:50 +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
f2a6e41c82
Don't abuse BigIntegers in WalletTool/Utils when parsing hex pubkeys.
2013-01-08 17:33:19 +01:00
Mike Hearn
ee5f881c51
Run TransactionConfidence listeners with the confidence object unlocked when markBroadcastBy is called. Resolves issue 270.
2013-01-07 11:13:33 +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
7fc325900c
Clarify some parameter names in Sha256Hash and add a utility method.
2013-01-06 21:57:09 +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
Mike Hearn
972c19a95f
Use canonical path to the wallet destination file. Resolves issue 265.
2013-01-04 17:54:17 +01:00
Mike Hearn
12a652bd1e
Close the temporary FileInputStream created in Sha256Hash.hashFileContents. Updates issue 265.
2013-01-04 17:38:05 +01:00
Matt Corallo
44865a3c50
Fix NullPointerException if using chain == null in PeerGroup
2013-01-04 17:33:12 +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
Matt Corallo
810b03dd0a
Give Blocks/Transactions an idea of their optimally-encoded size.
...
In the case of Blocks/Transactions which are encoded using VarInts
which are not optimally encoded, we need to compare MAX_BLOCK_SIZE
with the optimally encoded size, not the actually encoded size.
2012-12-31 15:54:19 +01:00
Matt Corallo
009939f9be
Give VarInt a concept of originally serialized size.
...
VarInts have multiple encodings, and during parsing we need to know
the size of the actually encoded form, not the size of the optimal
encoding.
2012-12-31 15:53:11 +01:00
Matt Corallo
95b5e0d894
Make FullPrunedBlockStore/Chain upgrade-friendly.
...
This does several things to support the ability to upgrade from a
BlockChain to a FullPrunedBlockChain backed by the same
FullPrunedBlockStore:
* Add two methods to FullPrunedBlockStore to allow it to keep
track of two chain heads - one verified, one normal.
* Change preSetChainHead in AbstractBlockChain to doSetChainHead so
that FullPrunedBlockChain and BlockChain can set only the
appropriate chain head
* Add FullPrunedBlockStore.getOnceUndoableStoredBlock.
This allows a BlockChain to request only StoredBlocks which
were, at one point, associated with a StoredUndoableBlock,
effectively splitting FullPrunedBlockStore into two independent
BlockStores (one FullPruned, one normal).
* Add/use AbstractBlockChain.getStoredBlockInCurrentScope which
relies on the above additions to FullPrunedBlockStore to properly
utilize one FullPrunedBlockStore as two separate block stores
depending on the BlockChain instance used.
Note that this is not used everywhere in AbstractBlockChain as,
barring something being insanely broken, the prev block of a
block in current scope will be in current scope.
2012-12-27 16:34:27 +00:00
Mike Hearn
4e0f5d8903
FindBugs: make random an object field rather than a disposable temporary.
2012-12-26 18:57:03 +00:00
Mike Hearn
bf3a8dc085
Clear a minor FindBugs warning.
2012-12-26 18:55:17 +00: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
2f0d4cdbd8
Update Script javadoc.
2012-12-26 18:01:48 +00:00
Mike Hearn
273548c863
Take ping time into account when performing peer selection.
2012-12-25 01:23:28 +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
ac61578e8a
Use a COW list in Peer instead of protecting pendingPings under the peer lock.
2012-12-24 23:57:28 +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
ffc953abc8
Don't hold the Peer lock whilst invoking a ping callback.
2012-12-24 23:47:14 +00:00
Mike Hearn
eb7c4be136
Fix lock inversion.
2012-12-24 23:33:13 +00:00
Mike Hearn
8e91459dcc
Fix a bug that could cause failure to reach the requested number of peers if peer connections failed immediately due to unroutable addresses.
2012-12-24 22:33:04 +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
7d7e76a3b0
Deduplicate peers retrieved from peer discovery. Resolves issue 260.
2012-12-24 17:51:40 +00:00
Mike Hearn
75c007fab3
Fix unit tests.
2012-12-24 16:35:52 +00:00
Mike Hearn
a54e2e96eb
Fix a bug in difficulty calculation logic that is revealed by testnet3. It should not impact the main net. Resolves issue 262. Rethrow block verification errors with a message containing the block.
2012-12-24 16:12:13 +00:00
Mike Hearn
9639b45ad8
BitCoin -> Bitcoin
2012-12-24 16:11:11 +00:00
Mike Hearn
93893e10ad
Make PeerGroup use the Guava services framework. Makes start/stop optionally non-blocking. Resolves issue 258.
2012-12-21 23:03:15 +01:00
Mike Hearn
826aafd3e0
Make H2 non required.
2012-12-16 13:38:46 +01:00
Mike Hearn
eacda0bdfc
Decouple the wallet from the block chain by introducing a BlockChainListener interface, and making the Wallet implement it. Resolves issue 94.
2012-12-14 17:04:30 +01:00
Mike Hearn
5abd546eb2
Update the AbstractBlockChain javadoc.
2012-12-14 16:33:37 +01:00
Mike Hearn
f6a498c241
Remove the redundant Wallet.isTransactionRelevant(..., includeDoubleSpending) parameter, as it was always set to true.
2012-12-14 16:24:24 +01:00
Mike Hearn
ca629e330f
Duplicate a transaction before sending to wallets beyond the first. Resolves issue 257.
2012-12-14 15:24:22 +01:00
Mike Hearn
1710be5b06
Fix typo in PeerGroup c'tor javadoc. Spotted by Matt.
2012-12-12 22:23:55 +01: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
372a23fbfe
Fix more inconsistent synchronization bugs.
2012-12-11 00:08:46 +01:00
Mike Hearn
93fd045488
Lock the ping time accessors correctly.
2012-12-10 23:50:21 +01:00
Mike Hearn
df1ba42100
Fix OP_PUSHDATA decoding by preventing sign-extension. Clears some FindBugs warnings.
2012-12-10 23:44:14 +01:00
Mike Hearn
5668e1457e
Fix a bogus format string.
2012-12-10 23:43:46 +01:00
Mike Hearn
917e4460f0
Tabs to spaces.
2012-12-10 13:32:11 +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
2bcef988b4
Take out @author annotation from PeerGroup, as it's been worked on by lots of people by now.
2012-12-07 15:41:58 +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
Matt Corallo
4989ecf15a
Fix testnet3 NetworkParameters SubsidyDecreaseBlockCount
2012-11-29 17:36:55 +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
Mike Hearn
8f52cabdf7
Allow blockChain to be skipped when creating PeerGroups/Peers.
2012-11-02 15:24:39 +01:00
Mike Hearn
eb430dfc52
Take out dead tasks functionality from the peer group thread.
2012-11-02 14:50:45 +01:00
Mike Hearn
c25dd9327a
Make isAcked private. Minor reformatting.
2012-11-02 14:50:30 +01:00
Mike Hearn
6f036f9cf2
s/BitCoinJ/bitcoinj/ everywhere except the version handshake.
...
Resolves issue 249.
2012-11-01 16:24:26 +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
739b2c6183
Add constructor to H2FullPrunedBlockStore to specify cache size.
2012-11-01 15:43:09 +01:00
Matt Corallo
a011948139
Avoid expensive calls to getClass().getSimpleName() in Message
2012-11-01 15:42:51 +01:00
Matt Corallo
a036b68aa2
Refactor some Stored* classes that are worthless...
...
Specifically, this moves StoredTransaction to
MemoryFullPrunedBlockStore and uses custom serialization for
StoredTransactionOutput.
2012-11-01 15:41:52 +01:00
Matt Corallo
91cd289a5c
Make getMessageSize() public
2012-11-01 15:33:57 +01:00
Matt Corallo
49d26f6e28
Make genesis coinbase unspendable.
2012-11-01 15:33:46 +01:00
Matt Corallo
bf11bf08c3
Add data-driven Script tests from the reference client.
2012-11-01 15:21:06 +01:00
Mike Hearn
35ff3e1735
Add some comments to Script.java
2012-11-01 15:18:49 +01:00
Matt Corallo
050d70cf15
Validate P2SH in Script.correctlySpends
2012-11-01 15:07:17 +01:00
Matt Corallo
69f441b6c7
Make Script Verification multi-threaded in FullPrunedBlockChain.
2012-11-01 15:05:51 +01:00
Mike Hearn
c4d0364a60
Update a couple of copyright notices that missed Matts name.
2012-11-01 15:03:06 +01:00
Matt Corallo
5321352820
Add TransactionOutPoint.setIndex
2012-11-01 14:40:09 +01:00
Mike Hearn
da0f8a791b
Re-throw wrapped ScriptException in FullPrunedBlockChain.
2012-11-01 14:40:05 +01:00
Matt Corallo
cba837cfef
Verify scripts in FullPrunedBlockChain.connectTransactions
2012-11-01 14:37:53 +01:00
Matt Corallo
8ec3cdeb9c
Add a Script.correctlySpends for Script execution verification.
2012-11-01 14:36:20 +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
2f2850610e
Add a Script.removeAllInstancesOf(script object)
2012-11-01 13:40:05 +01:00
Matt Corallo
d7dc953da8
Add a startLocationInProgram field to ScriptChunk.
2012-11-01 13:34:48 +01:00
Mike Hearn
6a36dcd0ca
Add hasKey method to Wallet. Also add addKeys method so keys can be added in bulk without triggering disk saves for each key. Resolves issue 255.
2012-11-01 13:32:32 +01:00
Mike Hearn
640db52cf4
Implement equals/hashCode on ECKey. Resolves issue 254.
2012-11-01 13:32:32 +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
9585729398
Remove redundant TransactionOutput constructor
2012-10-24 16:44:53 +02:00
Matt Corallo
f3d9c02841
Return false when calling Chain.add on an orphan we already have
2012-10-24 16:44:52 +02:00
Matt Corallo
599d4a671c
Add a testnet-in-a-box mode.
...
Which allows connecting to a peer with only the genesis block.
2012-10-24 16:44:52 +02:00
Matt Corallo
2bfe8dfa25
Let calls to Block.addTransaction override sanity checks in testing
2012-10-24 16:44:52 +02:00
Mike Hearn
dd47862829
Minor reformatting
2012-10-24 16:44:52 +02:00
Matt Corallo
c5f8135f60
Allow coinbase value to be specified in createNextBlock for testing
2012-10-24 16:44:52 +02:00
Matt Corallo
a1124e696b
Verify MAX_BLOCK_SIZE in verifyTransactions().
2012-10-24 16:44:51 +02:00
Mike Hearn
7eae91ea47
Remove temp announcement listener in PeerGroup.broadcastTransaction once done.
2012-10-08 18:26:28 +02:00
Matt Corallo
425126689e
Move subsidy decrease block count constant to NetworkParameters.
2012-10-08 18:26:28 +02:00
Mike Hearn
7c636d7ecc
Move block inflation calculator to be a static method of Block. In future this will move again to NetworkParameters.
2012-10-08 18:05:14 +02:00
Matt Corallo
90f5ab7e47
Check transaction fees and block subsidies in conenctTransactions.
...
After this commit, bitcoinj implements all non-script-executing
checks at block connect time that the reference implementation
does.
2012-10-08 18:05:14 +02:00
Matt Corallo
ef6e1b89ca
Check depth of spent coinbases during connectTransactions.
2012-10-08 18:05:14 +02:00
Matt Corallo
c789b757f3
Count P2SH SigOps the way the reference client does.
2012-10-08 18:05:14 +02:00
Matt Corallo
7ca87c078c
Add block timestamp and transaction finalization checks.
...
This brings bitcoinj's block connection up to the reference
client's AcceptBlock().
2012-10-08 17:32:45 +02:00
Mike Hearn
5e0d4a168e
Add a note that spending the genesis transaction should be impossible.
2012-10-08 17:13:49 +02:00
Mike Hearn
fd941fe46a
Don't recalculate fast catchup time to avoid hitting an assert.
2012-10-08 17:13:37 +02:00
Matt Corallo
0cf2325640
Add a H2-backed FullPrunedBlockStore.
...
This adds yet another dependency to bitcoinj, but Derby's
performance (especially on DELETE operations) was godawful...
2012-10-08 17:03:14 +02:00
Matt Corallo
4018af8d51
Implement a Transaction.verify() to mimic Satoshi CheckTransaction
2012-10-08 16:40:44 +02:00
Matt Corallo
626ff2fa2c
Verify SigOp counts when verifying Blocks.
2012-10-08 16:34:55 +02:00
Matt Corallo
1cbd5c07b4
Make a block with no txn a VerificationException, not Precondition
2012-10-08 16:29:17 +02:00
Matt Corallo
dfebcc83ab
Add a few test cases to test FullPrunedBlockChains.
2012-10-08 16:28:57 +02:00
Matt Corallo
0bdb9bc6f4
Add the option to use a valid input in createNextBlock.
2012-10-08 16:15:21 +02:00
Matt Corallo
de2a6db666
Add a FullPrunedBlockChain class which can do full verification.
2012-10-08 16:12:47 +02:00
Mike Hearn
2a9c5b32d9
Add a checkpoint at height 200,000
2012-10-08 15:43:45 +02:00
Matt Corallo
c3ff3d112e
Add checkpoint support and use it in AbstractBlockChain.
...
This greatly simplifies block connection logic as it does not need
to consider reorgs through non-BIP30-compliant blocks.
2012-10-08 15:43:45 +02:00
Matt Corallo
8edd6c5399
Add basic support for using AbstractBlockChains in Peer/PeerGroup.
2012-10-08 15:43:45 +02:00
Matt Corallo
03d8c71df3
Add a FullPrunedBlockStore interface and in-memory implementation.
2012-10-08 15:43:44 +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
b4215e8b01
Add a few Storage classes which avoid storing unnecessary data.
...
Specifically, this adds:
* StoredTransaction, which avoid having to store the entire
transaction when we only need its inputs+outputs.
* StoredTransactionOutput, which avoids having to store the entire
parentTransaction just to get the hash and index.
* TransactionOutputChanges, which is used to store two lists of
StoredTransactionOutputs, one for the created set and one for
the spent set.
* StoredUndoableBlock, which can store either only
TransactionOutputChanges or only StoredTransactions so that the
block can be more easily connected/disconnected at will.
2012-10-04 00:32:14 +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
Mike Hearn
946d25548f
Remove dead code that was used for appearsIn -> appearsInHashes migration, which pre-dates protobuf wallets. Make a few package-private members fully private.
2012-09-29 16:37:04 +02:00
Mike Hearn
cca393eea5
Use a HashSet instead of a TreeSet. Resolves issue 250.
2012-09-28 14:57:32 +02:00
Simon Vermeersch
232d2cd51d
testnet3
2012-09-28 14:44:26 +02:00
Mike Hearn
78dedcc9ba
Re-organize how transaction confidence listeners end up being called. Ensure WalletEventListener.onTransactionConfidenceChanged is always called for every building transaction after every block. Resolves issue 251.
2012-09-27 18:43:31 +02:00
Matt Corallo
a9cdf99135
Fix comment example for buildMerkleTree
2012-09-24 18:03:41 +02:00
Mike Hearn
254393253c
Version 0.7-SNAPSHOT
2012-09-24 15:27:30 +02:00
Mike Hearn
7b4dc184f7
Fix a bug that could cause us to fail the transition between downloading headers and blocks.
2012-09-09 15:28:52 +02:00
Mike Hearn
793254b6f5
Quieten some debug logs.
2012-09-09 15:26:06 +02:00
Mike Hearn
d3a540bb1e
Fix a bug where we'd attempt to migrate depths of pending transactions.
2012-09-09 14:45:34 +02:00
Mike Hearn
7867841579
Fix an off by one error in tx depth migration.
2012-09-08 23:28:26 +02:00
Mike Hearn
8003266a66
Set the tx depth fields whilst loading 0.5 era wallets if the chain height is provided before load. This does NOT migrate workDone as that'd involve scanning potentially the entire block store and nobody uses this data much today. Resolves issue 240.
2012-09-06 18:50:35 +02:00
Mike Hearn
572f2a4f4e
Implement the ability to explicitly set a fee in the Wallet.SendRequest. Does not yet auto-calculate the correct fees. Resolves issue 45. Resolves issue 245.
2012-09-06 17:45:04 +02:00
Mike Hearn
915a2adb10
Fix a NullPointerException introduced by the TCPNetworkConnection helper APIs.
2012-09-06 17:25:43 +02:00
Mike Hearn
29d5dcd424
Re-organize the wallet sending APIs to take a SendRequest. Full details of the API changes are sent to the list.
2012-09-06 14:22:05 +02:00
Mike Hearn
8162aa0ed1
Use current time as unit test chain genesis block time. Resolves a weird issue where the unit tests suddenly broke as the previous unit test genesis time was equal to testnet genesis time.
2012-09-06 12:37:00 +02:00
Mike Hearn
38aabdfa24
JavaDoc improvements and other minor tweaks. Remove a few things that are not really meant to be public APIs.
2012-08-30 23:46:54 +02:00
Mike Hearn
8453654b85
Add a TODO in PeerGroup
2012-08-30 23:16:15 +02:00
Mike Hearn
26d55f889d
Add a convenience API to TCPNetworkConnection to get a handshaked connection. Update JavaDocs.
2012-08-30 23:16:05 +02:00
Mike Hearn
5c8bfbda8b
Delete a bit of dead code in PeerGroup.
2012-08-30 15:49:52 +02:00
Mike Hearn
0ae4c6e4d5
Mark JDK SLF adapter as scope test. Resolves issue 231.
2012-08-30 15:42:21 +02:00
Mike Hearn
56d74d504a
Another pass at the auto-save code. Resolves issue 246.
2012-08-30 15:39:31 +02:00
Mike Hearn
83bb66cc25
Serialize the broadcastBy set for each transaction. Resolves issue 237.
2012-08-20 23:37:46 +02:00
Mike Hearn
fedfe9d0e6
Change the wallet to relay tx confidence events instead of generating them itself, which is a bit cleaner. Centralize state that needs to be rebuilt after a Java deserialization. Resolves issue 235.
2012-08-20 18:30:37 +02:00
Matt Corallo
e5c88cda8b
Fix Utils.decodeMPI and add a Utils.encodeMPI
2012-08-20 17:50:19 +02:00
Matt Corallo
61ed962e63
Implement PUSHDATA4 in Script.parse
2012-08-20 17:50:19 +02:00
Matt Corallo
a831374b72
Fix handling of improperly-encoded DER signatures to match OpenSSL
...
This always reads variables in DER signatures as positive, even
when they are encoded as negative.
2012-08-20 17:50:19 +02:00
Matt Corallo
dd89369538
Fix a bug in Script.parse to allow 0-length pushes.
2012-08-20 17:50:19 +02:00
Matt Corallo
60748ed72e
Print any opcode in Script.toString, adding Script.getOpCodeName
2012-08-20 17:50:19 +02:00
Matt Corallo
8b07672922
Add all script OP constants from the reference client.
2012-08-20 17:50:18 +02:00
Mike Hearn
8cc41330e6
Delete the old confidence migration code that was used in the days of serialized wallets. It's no longer needed.
2012-08-20 16:55:53 +02:00
Mike Hearn
200ca96f49
Rewrite the class javadoc for Wallet and remove a dead autosave variable.
2012-08-20 16:44:56 +02:00
Matt Corallo
5abc124134
Remove redundant programCopy from Script.
2012-08-20 16:23:12 +02:00
Matt Corallo
dc943b6e6d
Remove unused multi-byte script support.
2012-08-20 16:23:11 +02:00
Matt Corallo
30db7cfd47
Use pong(+nonce) messages.
...
* Adds a Pong class
* Uses nonces in pings (when applicable)
* Responds to pings with pongs (when applicable)
* Changes protocol version to 60001
2012-08-20 16:23:11 +02:00
Matt Corallo
5f8ae00dd6
Use minimum values for SpendableCoinbaseDepth.
...
Use 100 for SpendableCoinbaseDepth instead of 120 on mainnet, and
use 100 on testnet, as the reference client does.
2012-08-20 16:23:11 +02:00
Matt Corallo
20d72d7de4
Use a ScriptChunk class in place of byte[] arrays.
2012-08-20 16:23:11 +02:00
Matt Corallo
ca1466e628
Make isCoinBase() equivalent to the reference one.
2012-08-20 16:23:11 +02:00
Matt Corallo
2aaa601293
Use signed 64-bit values for TransactionOutput.value.
...
The reference client (stupidly) does this, and we were incorrectly
de-serializing values from the reference client.
2012-08-20 16:23:11 +02:00
Matt Corallo
8cd9cc11a4
Make Script throw ScriptException instead of ArrayIndexOutOfBounds
...
...when an invalid PUSHDATA constant is used.
2012-08-20 16:23:11 +02:00
Matt Corallo
c5e62f16b0
Fix serialization of GetBlocksMessage
2012-08-20 16:23:11 +02:00
Matt Corallo
6f6a946967
Fix typo in comment in TransactionConfidence.java
2012-08-20 16:23:10 +02:00
Mike Hearn
e2108d922d
Close ByteArrayOutputStreams. Resolves issue 244.
2012-08-20 16:12:49 +02:00
Mike Hearn
6f6c5d6773
Add a toString overload on Wallet. Print private keys in WalletTool when available.
2012-08-20 16:01:19 +02:00
Mike Hearn
75e04174c4
Introduce a concept of "minimum peers for broadcast" to PeerGroup.broadcastTransaction. This can be used to make sending faster when you are bringing up the network in parallel. It defaults to half the max connections. The idea is to insulate you from slow remote peers somewhat.
2012-08-20 16:00:55 +02:00
Mike Hearn
8746dabcad
Rewrite wallet auto-saving to not require polling. Resolves bug 242.
2012-08-20 14:46:44 +02:00
Mike Hearn
9f036bff84
Mark as spent the outputs used by pending transactions. Resolves issue 243.
2012-08-20 14:46:00 +02:00
Miron Cuperman
c4304fe07d
Bring back PeerGroupThreadFactory
2012-08-03 16:49:45 -07:00
Mike Hearn
3560d18ea2
Don't increment maxConnections when using connectTo from the PeerGroup thread. Resolves issue 234.
2012-07-23 16:42:21 +02:00
Mike Hearn
bc3fbb1448
Make the added logging more compact.
2012-07-23 16:37:14 +02:00
Mike Hearn
912760830a
Add some more logging to the Peer class.
2012-07-23 14:50:13 +02:00
Mike Hearn
abc9f09db3
Ensure peer.eventListeners is always accessed under the peer lock, and switch to EventListenerInvoker in most places so listeners can remove themselves.
...
Resolves issue 210.
2012-07-22 02:00:30 +02:00
Mike Hearn
915a878a13
Also inform the wallet in the single peer case in broadcastTransaction.
2012-07-22 01:50:09 +02:00
Mike Hearn
5bae8ffe6c
Make PeerGroup.maxConnections fully synchronized.
2012-07-22 01:22:56 +02:00
Mike Hearn
fd9eba1697
Change PeerGroup.broadcastTransaction() to wait for propagation.
...
It means a send won't be considered completed until it's accepted by the net.
Also is for the case where you receive a transaction (eg, via Bluetooth) and
you want to broadcast it such that you can know it's valid.
Make WalletTool use --peers instead of --peer, a comma separated list of
addresses to use. Remove the crappy sleep after send now we can wait.
Resolves issue 167.
2012-07-22 01:20:48 +02:00
Mike Hearn
42152c2483
Fix a bug in EventListenerInvoker that would crash if the last event listener removed itself.
2012-07-22 00:45:06 +02:00
Mike Hearn
c5caeaea74
Duplicate channel futures list before closing channels.
...
Resolves issue 221
2012-07-21 23:02:07 +02:00
Mike Hearn
bc47fccaeb
Add an auto save function. A background thread will atomically auto-save to a file when there are wallet changes at a limited rate.
2012-07-21 22:37:39 +02:00
Mike Hearn
d20c185253
Re-order DNS seeds to match upstream. Pieters node comes first as it's the best maintained, Jeffs last as it's just a static list.
2012-07-21 22:34:31 +02:00
Mike Hearn
ba65e7ccf3
Delete dead code from PeerGroup that was obsoleted by the move to Netty.
2012-07-21 22:34:31 +02:00
Mike Hearn
c6d900e91c
Correct stale comment in bitcoin.proto
2012-07-21 22:34:31 +02:00
Miron Cuperman
00ce3d7523
Fix incorrect synchronization on map values.
2012-07-18 12:16:29 -07:00
Miron Cuperman
0a9f529f72
Clean up Peer callback API.
...
Resolves issue 220.
2012-07-18 11:44:55 -07:00
Miron Cuperman
4d58ea5111
Missing synchronization for iterations.
...
(over synchronizedMap/synchronizedSet)
2012-07-18 10:48:07 -07:00
Mike Hearn
831f2d582f
Support the invalid QRcodes generated by blockchain.info (Ben Reeves software). They put bitcoin:// at the front instead of bitcoin:, apparently because otherwise some social networks won't recognize them.
2012-07-14 13:23:00 +02:00
Matt Corallo
ad2c339d85
Fix two false-positives in test cases.
2012-07-13 17:53:30 +02:00
Mike Hearn
9d46c48db9
Fix Sha256Hash hashcode function.
...
Delete wallet deserialization unit test, as we now consciously are breaking serialization compatibility. Resolves issue 213.
2012-07-09 22:28:29 +02:00
Mike Hearn
ec096993e6
Test and fix transactions in multiple chains going the other way (appears in side chain first, then best)
2012-07-09 22:02:55 +02:00
Mike Hearn
038438b394
Fix a bug that could cause inconsistent wallets.
...
When a side chain block contains the same transactions as the best chain, we incorrectly inserted into the inactive map, triggering assertion failures. Resolves issue 202.
2012-07-09 21:38:52 +02:00
Mike Hearn
ac3fc068d0
Correct a comment, a few logging statements.
2012-07-05 16:01:31 +02:00
Mike Hearn
4bf8252041
Print a trailing newline in coinbase transaction toString method.
2012-07-05 16:01:14 +02:00