Mike Hearn
854d81eae9
Don't run confidence listeners if we get duplicate invs from the same peer (can happen if we connect to the same peer IP multiple times).
2013-10-14 12:05:18 +02:00
Mike Hearn
dfa722ccc8
Wallet: track relative ordering of transactions within a block.
...
Ensures re-orgs don't replay transactions out of order. Resolves issue 468.
2013-10-14 10:56:21 +02:00
Mike Hearn
9669758c66
Update slf4j hashes in the dependency verifier.
2013-10-11 15:01:12 +02:00
Mike Hearn
f27430c356
Refactor/bugfix broadcast of pending transactions when a peergroup starts up.
...
Previously the PeerGroup itself would broadcast the pending transactions by simply sending an inv with them all to every peer. This is a good way to get a transaction blasted out if there are no problems with it, but it means we cannot track propagation and the numBroadcastPeers() value was correspondingly not increased. This seems to be causing issues with the Android wallet. So try out a different approach - have the wallet use broadcastTransaction as per normal on the PeerGroup when it's added. The TX will be propagated and watched as with a normal spend.
2013-10-11 14:50:53 +02:00
Mike Hearn
a051afe224
Payment channels: default server should not attempt to destroy the [TCP] connection after sending a CLOSE, let the client do that.
...
This resolves some complicated state management issues in some kinds of client (like on Android). It's also just generally a part of the work to divorce the notion of settling a channel from closing underlying protocol connections.
2013-10-10 14:23:57 +02:00
Mike Hearn
4b48dbfda9
Payment channels: plumb through the actual amount of value sent on a channel, as it can sometimes be different to how much was requested.
2013-10-09 18:15:04 +02:00
Mike Hearn
6625c9a2cb
Use earliest key time minus a week for setting fast catchup time and selecting a checkpoint.
...
This handles clock drift both in the block headers and possibly wrong times in the users clock (broken timezone, etc).
Resolves issue 460.
2013-10-08 11:49:53 +02:00
Mike Hearn
6c8a8aa691
Threading: resolve a race in the unit tests: if the user thread wasn't initialised, don't crash trying to test if we're on it.
2013-10-08 11:47:06 +02:00
Mike Hearn
8beb26c421
ScriptTest: more helpful errors.
2013-10-07 18:09:47 +02:00
Mike Hearn
1f7dd9495e
Script: clone tx before performing correctlySpends check. This prevents thread safety issues and corrupted transactions if validation fails.
2013-10-07 18:09:38 +02:00
Mike Hearn
9953bbe5cb
TransactionOutput: tighter checks on values when constructing (don't allow negative values, etc).
2013-10-07 17:58:29 +02:00
Mike Hearn
b09c4cbe09
TransactionInput: better toString
2013-10-07 17:57:33 +02:00
Mike Hearn
d0be53f0a1
HD wallets: Fix method names that refer to SHA256 instead of SHA512.
...
Resolves issue 449.
2013-10-06 17:19:18 +02:00
Mike Hearn
683c6170d5
EncryptedPrivateKey: Fix doc typo and remove redundant imports.
2013-10-06 17:13:54 +02:00
Mike Hearn
60ba7120db
WalletAppKit: Allow setting of the user agent.
2013-10-06 17:12:40 +02:00
Mike Hearn
6342af0913
Payment channels: protocol tweak - when the client sends a CLOSE, the server sends a CLOSE back that contains the final negotiated contract, so it can be inserted into the wallet without needing to wait for a network broadcast (this is useful if the client does not have internet connectivity at that point).
2013-10-04 17:10:42 +02:00
Mike Hearn
b9aa1e4d1e
Payment channels: minor comment change and simplification.
2013-10-02 14:22:54 +02:00
Mike Hearn
14dae15150
ECKey: don't crash when signing non-ASCII text
2013-10-02 10:39:58 +02:00
Mike Hearn
e6250e575f
ScriptBuilder: Add a varargs utility
2013-10-02 10:39:58 +02:00
Mike Hearn
bbe3441128
Fix a bad comment in TransactionSignature.
2013-10-02 10:39:57 +02:00
Mike Hearn
02416c97fa
Payment channels: bug fixes and improved close behaviour.
...
The client now has a new CLOSED state, which is entered once a CLOSE has been sent and the close transaction (final contract) has been broadcast onto the P2P network and entered the wallet. Once received, the hash of the close tx is stored in the wallet - the tx is itself already in the wallets spent pool because it connects to the output of the multisig tx. After seeing three confirmations of the close TX the state is deleted from the client wallet for good.
Together these changes resolve a bug/design issue in which if a channel was opened, then closed, then another channel was opened but not closed, then a third attempt to connect to the server was made, the client would try to resume the first closed channel. That would fail because the server already deleted its state object and result in new channels being created even though the second could have been resumed. By tracking the fact that the channel was closed, it can be skipped when considering what channel to resume.
2013-09-30 14:35:25 +02:00
Mike Hearn
38dadf4667
TransactionConfidence: use the new/standard event registration scheme to allow control of threading.
2013-09-30 14:35:25 +02:00
Mike Hearn
88abe3faa3
PeerGroup: fix usage of _ as identifier.
2013-09-30 14:35:24 +02:00
Mike Hearn
ee206537d7
FullPrunedBlockChain: add a runScripts property, defaulting to true. Resolves issue 463.
2013-09-30 14:11:33 +02:00
Mike Hearn
e3bcb49c4c
Better use of annotations in Block
2013-09-30 14:11:12 +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
e0b50c374e
FullPrunedBlockChain: fix a spelling error
2013-09-30 10:55:28 +02:00
Mike Hearn
f0b258b40d
Wallet: add a bit more logging to make output during chain splits less confusing.
2013-09-23 17:03:18 +02:00
Mike Hearn
059b896062
Wallet: another re-org fix.
2013-09-23 16:53:36 +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
c587f2c442
WalletAppKit: we need a stupid hack to make checkpointing and payment channels work together.
...
Apparently this simple utility class might start to need unit tests now!
To resolve the hack, we need to resolve some circularity in construction: to add the payment channels wallet extensions requires the peerGroup and wallet object to be constructed, but to construct the peerGroup requires the chain+store and to checkpoint a fresh store requires the wallet. Catch 22! We resolve by loading a temp wallet and then throwing it away, which is inefficient for a large wallet that's being replayed but normally shouldn't matter.
Once the payment channels stuff is more mature and tested, we might want to just fold it into the core wallet format.
2013-09-21 21:03:36 +02:00
Mike Hearn
324f603cbe
Upgrade to protobuf 2.5
2013-09-21 20:08:43 +02:00
Mike Hearn
c861ecdf2a
WalletAppKit: Fix stupid ordering bug I introduced that affects apps that use payment channels.
...
In future, this stuff should probably be enabled in the wallet by default.
2013-09-21 19:53:52 +02:00
Mike Hearn
1f52b75ad9
Move AllowUnconfirmedCoinSelector out into wallet package.
2013-09-20 17:38:41 +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
c366c5fa44
Wallet: Split CoinSelection out into a top level interface in the wallet package.
2013-09-20 16:47:42 +02:00
Mike Hearn
c4405d3ee7
Wallet: Split CoinSelector out into a top level interface in the wallet package.
2013-09-20 16:45:31 +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
ffb7c57d7f
Make HDKeyDerivation.createMasterPrivKeyFromBytes public. Resolves issue 452.
2013-09-18 14:38:37 +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
baeaa64201
Payment channels: more informative exception message if you forget to add the client wallet extension.
2013-09-18 12:20:50 +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
81d76a76c3
Payment channels: more logging.
2013-09-16 11:39:38 +02:00
Mike Hearn
01e7d63948
WalletAppKit: Finish the non-blocking startup code, oops.
2013-09-16 11:37:05 +02:00
Mike Hearn
2f5adfc3be
Allow WalletAppKit to have a non blocking startup.
2013-09-15 20:24:52 +02:00
Mike Hearn
95f528a340
Add more features to WalletAppKit, and ensure wallets it creates always have at least one key.
2013-09-15 20:24:52 +02:00
Mike Hearn
2ccfd3fd48
Make MemoryBlockStore store only a rolling window of the last 5000 blocks. Fixes BuildCheckpoints which was trying to store every block header and running out of heap space.
2013-09-15 20:24:52 +02:00
Mike Hearn
3ea3735d4f
Allow overriding of the default USER_THREAD executor so all events can be dispatched to a selected thread easily.
2013-09-15 20:24:52 +02:00
Mike Hearn
82037f8f96
PeerGroup: correct logic for setting ver packet pre-filtering relay flag.
2013-09-10 11:42:51 +02:00
Mike Hearn
eaeab32400
Make RegTestParams use testnet addresses, to follow sipa's upstream change.
2013-09-10 10:27:16 +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
24a5c05546
Payment channels: allow usage of unconfirmed coins for building a contract, as the risk is low (they're micropayments anyway).
2013-09-05 15:16:58 +02:00
Mike Hearn
bf228cce34
Wallet: comment for AllowUnconfirmedCoinSelector.get()
2013-09-05 15:10:50 +02:00
Mike Hearn
38119b9355
Payment channels: Better comments and logging.
2013-09-05 12:42:33 +02:00
Mike Hearn
273acbdccd
Payment channels: Take out unnecessary {} from log messages.
2013-09-04 13:27:17 +02:00
Mike Hearn
1d454c03f3
Suppress annoying and useless warning.
2013-09-03 14:24:18 +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
cf23e18f23
MessageWriteTarget->interface, writeBytes throws IOException
2013-08-13 17:13:58 +02:00
Matt Corallo
edd0a0907c
Clarify PeerEventListener JavaDocs a bit
2013-08-13 17:13:29 +02:00
Matt Corallo
5ef59b9ae1
Unimplemented bitcoinSerializeToStream -> log error, not debug
2013-08-13 17:13:15 +02:00
Matt Corallo
1a5348c534
Implement ListMessage.equals()
2013-08-13 17:12:57 +02:00
Matt Corallo
7011d68165
Implement some (de)serialization (so we can roundtrip msgs in test)
...
Implements deserialization for getblocks/getheaders and supports
FilteredBlock entries in ListMessage (for getdata).
Implements serialization for FilteredBlock, HeadersMessage, and
PartialMerkleTree.
2013-08-13 17:12:32 +02:00
Matt Corallo
a724bcada5
Mark receivePending(List<Tx> dependencies) @Nullable
2013-08-13 17:11:34 +02:00
Matt Corallo
98787909da
Fix typo
2013-08-13 17:11:19 +02:00
Matt Corallo
8448296f5f
Abstract out SelectionKey processing and logic from NioServer.
2013-08-13 17:10:21 +02:00
Matt Corallo
9980903572
Make Protobuf{Server,Client} more generic.
2013-08-13 17:09:14 +02:00
Matt Corallo
146a6dd37e
Add payment channel server native event handler wrappers
2013-08-13 15:06:18 +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
08afe9044d
Move verifier XML around.
2013-08-11 16:45:07 +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
Mike Hearn
19d4887253
Wallet: allow SendRequests to override the default coin selector.
2013-08-08 14:23:23 +02:00
Mike Hearn
33f48d3e22
PeerGroup/Wallet: give the wallet a reference to a transaction broadcaster, so it can make its own transactions and broadcast them outside the context of a user initiated spend.
...
Later, we can change the mechanism used to broadcast pending transactions so the wallet does that itself.
2013-08-08 14:23:23 +02:00
Mike Hearn
6b1c208f1e
Wallet: Minor nullity annotation and param genericity tweaks.
2013-08-08 11:19:49 +02:00
Matt Corallo
ca15e611ca
Fix manually-added transactions that make it into blocks.
2013-07-31 13:05:03 +02:00
Mike Hearn
c2cff6df41
Add a remark to the BloomFilter javadocs about when you would want to use full-match filters.
2013-07-30 16:05:04 +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
Matt Corallo
60220aa62d
InventoryItem.hashCode()
...
Conflicts:
core/src/main/java/com/google/bitcoin/core/InventoryItem.java
2013-07-30 15:41:21 +02:00
Matt Corallo
d88d421de6
Make BloomFilter support match-all filters better
2013-07-30 15:40:47 +02:00
Mike Hearn
2808b062d7
Version 0.11-SNAPSHOT
2013-07-30 14:47:39 +02:00
Matt Corallo
df47993e3d
Add some comments for stateless protocols.
2013-07-30 14:47:08 +02:00
Mike Hearn
8016ee8418
Wallet: explicitly note in the completeTx javadoc that it signs the added inputs.
2013-07-29 19:06:21 +02:00
Mike Hearn
bbac0abf9e
Wallet: more @Nullable annotations and generalise the sendCoins argument to take any broadcaster.
2013-07-29 18:35:49 +02:00
Mike Hearn
f821207a80
WalletAppKit: add a new override-able method that lets you customise objects after they were created, but before chain download starts.
2013-07-29 17:18:48 +02:00
Mike Hearn
872967e96e
WalletEventListener: Remove obsolete references to being called on Peer threads from the javadocs.
2013-07-29 17:18:21 +02:00
Mike Hearn
da2a321c23
Wallet: add a missing @Nullable annotation.
2013-07-29 17:17:58 +02:00
Mike Hearn
016837a593
Wallet: expose the calculateAllSpendCandidates method as public.
2013-07-29 13:27:49 +02:00
Mike Hearn
86f68c8ffa
Transaction: add a bit more info to constant field javadocs.
2013-07-29 12:50:02 +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
cf4c469e6e
TransactionInput: treat duplicate connection attempts as a success.
2013-07-25 15:30:49 +02:00
Mike Hearn
a5ed2d63d3
Payment channels: Relabel stored client channel toString a bit.
2013-07-25 15:29:47 +02:00
Mike Hearn
4aaac4f105
AbstractBlockChain: slight tweak to logging of filtered blocks to make it less confusing.
2013-07-25 15:26:26 +02:00
Mike Hearn
4f92c24dea
Payment channels: stop clients attempting to resume empty channels.
2013-07-25 15:26:10 +02:00
Mike Hearn
70590dac16
Payment channels: add wallet printouts of the contents of the extensions.
2013-07-25 15:09:48 +02:00