Mike Hearn
ee206537d7
FullPrunedBlockChain: add a runScripts property, defaulting to true. Resolves issue 463.
2013-09-30 14:11:33 +02:00
Mike Hearn
e4a5c6bbc9
FullPrunedBlockChain: move a utility function for adding a signed input to Transaction.
2013-09-30 11:25:47 +02:00
Mike Hearn
60688752c9
Delete BoundedOverheadBlockStore.
...
Although it served us well for a while, it was never actually bounded overhead. Some of its code lives on in SPVBlockStore, which replaces it.
2013-09-23 15:33:37 +02:00
Mike Hearn
e67b3e540e
Remove usage of some deprecated stuff.
2013-09-23 15:33:36 +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
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
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
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
11ab82c91e
Payment channels: fix unit test and add a log line.
2013-09-05 15:17:15 +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
a724bcada5
Mark receivePending(List<Tx> dependencies) @Nullable
2013-08-13 17:11:34 +02:00
Matt Corallo
9980903572
Make Protobuf{Server,Client} more generic.
2013-08-13 17:09:14 +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
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
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
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
4f92c24dea
Payment channels: stop clients attempting to resume empty channels.
2013-07-25 15:26:10 +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
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
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
Matt Corallo
1d7f2eb00b
Fix channel client state saving to save earlier (and be secure)
2013-07-16 14:59:21 +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
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
d2232ed4aa
Fix hdw unit tests after I broke them.
2013-07-11 14:19:48 +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
Mike Hearn
86bd974958
Move HD wallets code into plain crypto package.
2013-07-11 13:45:12 +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
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
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
b51485ca23
Peer Bloom filter generation -> new PeerFilterProvider interface
2013-07-10 15:59:51 +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
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
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
Matt Corallo
09752848bb
Announce transactions to wallet in order even from FilteredBlocks
2013-07-09 13:05:35 +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
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
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