3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-01 07:42:17 +00:00
Commit Graph

643 Commits

Author SHA1 Message Date
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
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
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