Mike Hearn
f46dc809e4
Add a string c'tor to PaymentRequestException.InvalidPaymentURL
2014-01-31 16:01:00 +01:00
Alex Taylor
c10e029384
Postgres block store, with ability to calculate address balances.
2014-01-31 14:23:40 +01:00
Mike Hearn
00ca0cea0c
PeerGroup: pin TransactionBroadcasts from the peer group to avoid premature garbage collection when user code throws away the broadcast future.
...
Should resolve an issue Ken is having with flaky key sweeping.
2014-01-30 17:46:55 +01:00
Mike Hearn
fff5af29ff
Recalculate but don't rebroadcast bloom filters when a p2pubkey output is received.
...
Resolves issue 513.
2014-01-30 17:43:33 +01:00
Mike Hearn
9204c13233
Move min version for NotFoundMessage to a static member of that class.
2014-01-30 17:18:30 +01:00
Mike Hearn
7c9651a801
Payment protocol: fix broken reflection code for Android.
2014-01-30 15:32:17 +01:00
Mike Hearn
b3bf4aadb7
Payment protocol: re-organise code a bit to handle Android devices that have the javax property set.
2014-01-30 14:40:44 +01:00
Mike Hearn
f94c41e5b6
PeerGroupTest: Clear some minor static analysis warnings.
2014-01-30 14:13:07 +01:00
Mike Hearn
b5127f4414
Make change selectable in regtest mode even if there is only one peer.
2014-01-30 11:23:10 +01:00
Matt Corallo
28b24d0eaa
Fix yet another throw-vs-return but in CHECKSIG ( resolves #514 )
2014-01-30 03:49:37 -05:00
Mike Hearn
a1562836be
Payment protocol: Make PaymentSession use a global thread pool that uses daemon threads.
...
Fixes a 60 second hang that could occur in wallet-tool once the send request was processed. Fixing this revealed another bug - WalletTool was depending on this VM shutdown delay caused by the worker pool timeout, so clean up the code and replace with a blocking get of the future.
Also support the --offline and --password flags when using the payment protocol.
2014-01-28 13:58:08 +01:00
Mike Hearn
ddec4f9106
Allow Bitcoin URI's that don't have any address component if the r= payment protocol param is there.
2014-01-28 13:04:09 +01:00
Kevin Greene
3966875e8e
Adding support for processing PaymentRequests.
2014-01-28 09:46:51 +01:00
Simon de la Rouviere
4ca476ff35
When throwing InsufficientMoneyException, the amount of satoshis missing is required. When the server requests too much value, it is stored so that implementations of the client has access to it.
2014-01-25 18:14:06 +01:00
Matt Corallo
bd5c4e73e7
Prevent memory blowup on orphan storage
2014-01-23 10:37:47 +00:00
Ken Sedgwick
1a3c3be665
BIP-0039 multiple version support.
2014-01-19 09:46:47 +01:00
Mike Hearn
654543bb2b
BlockingClient: some fixes for Orchid
2014-01-15 23:16:04 +01:00
Mike Hearn
ae1e3691f5
WalletAppKit: Allow subclasses to fiddle with some more stuff.
...
This isn't really a stable or supportable API, but bitcoinj does not have a stable API, so live and let live.
2014-01-15 21:26:53 +01:00
Mike Hearn
80d4840199
Threading: prefer OOM to deadlock when the user thread is saturated, but keep the warning.
2014-01-15 17:56:10 +01:00
Mike Hearn
a9a7dd9e06
Lower the priority of the networking thread to avoid competing with UI threads.
2014-01-15 15:11:31 +01:00
Mike Hearn
8e58839d81
Wallet: Short-circuit runnable creation if executor is SAME_THREAD
2014-01-15 01:56:07 +01:00
Mike Hearn
b8a1976422
Fix an edge case bug I just introduced a few minutes ago with the txConfidenceListener changes, and document.
2014-01-14 19:24:49 +01:00
Mike Hearn
3a405302bb
More memory optimisations.
...
Run the wallet txConfidenceListener on the calling thread. Move tx broadcast that occurs inside setTransactionBroadcaster outside the wallet lock to avoid inverting on the mempool class (via PeerGroup, but that doesn't lock on the broadcast path).
This makes memory usage smoother by avoiding the creation of tons of closures and spamming the event thread with them.
2014-01-14 19:06:06 +01:00
Mike Hearn
d7b3766c4b
Memory optimisations to avoid OOM when the user thread falls behind.
...
- Remove needless recalculations of the Bloom filter on any wallet change, instead of just when keys/scripts are added. This may fix one of the privacy leak issues too.
- Run fast catchup/filter recalculations on the dedicated PeerGroup thread instead of abusing the user thread. Resolves a TODO.
- Replace the user thread SingleThreadedExecutor with a custom class that blocks the submitting thread and logs a warning if the queue is saturated, to avoid building up a backlog of closures.
2014-01-14 18:49:09 +01:00
Mike Hearn
e0b698a2e9
Threading: experiment with limiting the user/event thread to 100 pending closures.
2014-01-14 15:25:38 +01:00
Mike Hearn
941bf330a4
Script: intern commonly used chunks.
2014-01-13 14:58:31 +01:00
Mike Hearn
843489111e
Quick hack to try and reduce memory consumption for Androids.
...
Takes a test wallet from around 11.3mb to 9.6mb
2014-01-13 14:58:31 +01:00
Mike Hearn
d50412e24c
Wallet: log exceptions during save.
2014-01-13 14:25:01 +01:00
gubatron
0c2f362795
refactor s/Utils.now().getTime()/Utils.currentTimeMillis()/g
2014-01-07 16:16:02 +01:00
Mike Hearn
7324798242
Remove some superfluous methods in HDUtils
2014-01-07 15:23:26 +01:00
Mike Hearn
34e2d1596f
Address: rename a static ctor method to be more accurate.
2014-01-07 15:22:00 +01:00
Mike Hearn
351299c9ab
Add a new DNS seed from Chris Decker.
...
Vouch: Chris is a researcher at ETH Zurich who I have met several times. He has run several useful experiments and analyses on the Bitcoin network.
2014-01-06 15:23:35 +01:00
Mike Hearn
d0cd770d62
Cleanup.
...
Add lots more nullity annotations.
Clear lots of nullity static analysis warnings.
Delete some dead code.
Simplify a few expressions.
Resolves issue 317.
2013-12-24 00:40:19 +00:00
Devrandom
3d99be48bc
Priority queue and exponential backoff for PeerGroup
...
Connect to peers in a service loop thread.
Resolves issue #159
Resolves issue #503
2013-12-23 22:57:19 +00:00
Mike Hearn
b0ce535aa9
PeerGroup: clear some static analysis warnings. Remove dead code.
2013-12-23 21:45:01 +00:00
Mike Hearn
aaa539bd80
Networking: bump default connect timeout to 5 seconds.
...
Improve some logging.
2013-12-23 20:00:24 +00:00
Mike Hearn
1f37350161
Transaction: clear a couple of static analysis warnings.
2013-12-22 19:13:41 +01:00
Mike Hearn
c5665d68b5
Wallet: misc cleanups.
...
Clear some static analysis warnings.
Throw more appropriate exception types in some cases.
Add a few internal assertions.
Better nullity annotations.
2013-12-22 19:13:23 +01:00
Mike Hearn
f318808cf7
Clean up WalletTransaction and serialization code a bit.
2013-12-22 19:04:24 +01:00
Mike Hearn
b3673999d4
Move WalletTransaction into the wallet package.
2013-12-22 18:48:46 +01:00
Mike Hearn
43460f451a
MnemonicCode: Clean up a bit.
2013-12-20 17:35:11 +01:00
Ken Sedgwick
29e2af7ec0
Update to latest version of mnemonic code spec from the Trezor team.
2013-12-20 17:15:24 +01:00
Mike Hearn
8cc1920fa2
ECKey: use sumOfTwoMultiples for better/faster key recovery.
...
Thanks to Peter Dettman for the tip. Resolves issue 492.
2013-12-15 14:55:43 -08:00
Mike Hearn
e9bf717409
ConnectionHandler: Remove a always-true if condition.
2013-12-15 09:31:07 -08:00
Mike Hearn
25a08c6d75
NioClientManager: minor fix revealed by static analysis.
2013-12-15 09:29:59 -08:00
Mike Hearn
42e75b86cf
PeerGroup: add a couple of missing nullable annotations
2013-12-15 09:27:38 -08:00
Matt Corallo
c61ec5023e
Fix race in TestWithNetworkConnections
...
There was a nasty bug where a connection-failed interrupt was
run afer any interruptible calls were made, making the next
test-case fail due to interruption.
2013-12-15 09:27:19 -08:00
Mike Hearn
f7a944983c
ECKey: use Bouncy Castle to decompress keys. Thanks to Peter Dettman for the hint. Resolves issue 493.
2013-12-14 14:12:52 -08:00
Mike Hearn
8f48b119b7
AbstractBlockChain: minor style fixes from the inspector.
2013-12-14 13:35:22 -08:00
Mike Hearn
30455cb5ce
Suppress some more info logging and update some javadocs.
2013-12-14 13:21:33 -08:00
Devrandom
462c75324e
Faster FP tracking using double exponential
2013-12-14 12:42:44 -08:00
Mike Hearn
1293e42aa3
BloomFilter: minor readability tweak
2013-12-14 11:42:41 -08:00
Matt Corallo
2f29660d0d
Fix broken test case.
2013-12-14 01:11:52 -05:00
Mike Hearn
77f99a596f
Log balance in wallet.toString better
2013-12-13 16:57:28 -08:00
Mike Hearn
cdfa0ae61b
ECKeyTest: once again, fix a flaky decrypt test. There's no MAC on the encrypted bytes so you can't assume padding checks will always catch corrupted data.
2013-12-13 16:08:54 -08:00
Devrandom
7e4f6369e4
Clean up false positive handling, add unit test
2013-12-13 16:00:42 -08:00
Devrandom
ba9415b3ee
Force update Bloom filter when false positive rate gets high
2013-12-13 16:00:41 -08:00
Devrandom
751434ba7c
Fix bloom filter sizing with watched scripts
2013-12-13 15:59:07 -08:00
Mike Hearn
86b42b7fe5
Remove disconnectOldVersions2 as it tests nothing, probably a bad merge conflict.
2013-12-13 15:55:08 -08:00
Mike Hearn
e4e2e60627
Fix DnsDiscovery javadocs and make a couple of fields final.
2013-12-13 09:29:08 -08:00
Mike Hearn
c278867186
Add a unit test for Script.toString and don't emit trailing whitespace.
2013-12-12 08:11:23 -08:00
Mike Hearn
4bbcfc4377
Don't print script creation timestamp in Script.toString()
2013-12-12 08:09:15 -08:00
Mike Hearn
22a58755db
Print peer times using String.format. Resolves issue 495.
2013-12-11 19:13:46 -08:00
Mike Hearn
2f8740f8a8
Remove usage of deprecated method in PeerTest.
2013-12-11 10:39:31 -08:00
Mike Hearn
24d38cdba4
Check for and reject null event listeners.
2013-12-11 10:00:35 -08:00
Matt Corallo
2879f7bb9b
Fix memory leak of downloadListener
2013-12-11 10:00:35 -08:00
Ken Sedgwick
a0f32ab0d2
Improved comment.
2013-12-10 17:49:45 -08:00
Ken Sedgwick
e86ce7f268
Updated to latest version of BIP-0039.
2013-12-10 17:49:45 -08:00
Ken Sedgwick
5cd10a537a
Added Mnemonic{Length,Word,Checksum}Exception and tests for each case.
2013-12-10 17:49:45 -08:00
Mike Hearn
69f52c1b8a
Bug fix to avoid a flake in PeerTest.
...
There seem to be other cases where unit tests can be flaky with nonetty. More fixes will come later.
2013-12-10 13:51:18 -08:00
Mike Hearn
ce4ac86884
Move discovery package into net package.
2013-12-10 13:13:52 -08:00
Mike Hearn
3318d15194
Rename networkabstraction package to just net
2013-12-10 13:12:22 -08:00
Matt Corallo
c10ebd260c
Fix reentrance bug when writing in connectionOpened.
2013-12-10 13:03:15 -08:00
Matt Corallo
ba543a3b10
Only do network writes on the handler thread in nio wrappers
2013-12-10 13:03:15 -08:00
Matt Corallo
abe9513dde
Don't allow setting writeTarget twice.
2013-12-10 13:03:15 -08:00
Mike Hearn
4b035535e2
nonetty: Print fewer stack traces on errors. Handle failure of initial connect call.
2013-12-10 13:03:15 -08:00
Mike Hearn
68a614a33b
nonetty: Fix a couple of unit test bugs.
...
Remove references to netty that still appeared in comments/POM
2013-12-10 13:03:15 -08:00
Matt Corallo
534cec9791
Rewrite the network stack.
...
Remove Netty entirely, using the new Nio wrapper classes instead
* BitcoinSerializer now uses ByteBuffers directly instead of
InputStreams.
* TCPNetworkConnection and NetworkConnection interface deleted,
Peer now extends the abstract class PeerSocketHandler which
handles deserialization and interfaces with the Nio wrapper
classes.
* As a part of this, all version message handling has been moved
to Peer, instead of doing it in TCPNetworkConnection.
* Peer.setMinProtocolVersion() now returns a boolean instead of a
null/non-null future which holds the now-closing channel.
* Peer.sendMessage (now PeerSocketHandler.sendMessage()) now
returns void.
* PeerGroup has some significant API changes:
* removed constructors which take pipeline factories,
makePipelineFactory, createClientBootstrap
* Replaced with a setSocketTimeoutMillis method that sets a
timeout between openConnection() and version/verack exchange.
(Note that because Peer extends AbstractTimeoutHandler, it has
useful timeout setters public already).
* connectTo returns a Peer future, not a ChannelFuture
* removed peerFromChannelFuture and peerFromChannel
* Peer and PeerGroup Tests have semi-significant rewrites:
* They use actual TCP connections to localhost
* The "remote" side is a InboundMessageQueuer, which queues
inbound messages and allows for writing arbitrary messages.
* It ignores certain special pings which come from pingAndWait,
which is used to wait for message processing in the Peer.
* Removed a broken test in PeerGroupTest that should be reenabled
if we ever prefer a different version than our minimum version
again.
* Removed two duplicate tests in PeerTest (testRun_*Exception)
which are tested for in badMessage as well.
* Added a test for peer timeout and large message deserialization
Author: Matt Corallo <git@bluematt.me>
2013-12-10 13:03:14 -08:00
Mike Hearn
81f8b230e3
Script.toAddress now can cast to P2SH addresses.
2013-12-10 11:45:29 -08:00
Mike Hearn
ea6f2a0fc3
Payment channels: invoke destroyConn on server side even when client requested it.
...
This allows servers to do something useful when the channel closes normally, like forward the money onwards.
2013-12-10 11:39:30 -08:00
Mike Hearn
54b1054d03
Add a couple of utility methods for working with P2SH scripts.
2013-12-10 11:38:45 -08:00
Mike Hearn
cebebcef69
Fix unit test failure caused by bad merge. Resolves issue 489.
2013-12-01 13:04:25 +01:00
Mike Hearn
963978c468
Add watched scripts to the wallet toString output.
...
Support watching scripts/addresses in WalletTool
2013-11-30 16:39:58 +01:00
Devrandom
da2e3e6c98
Support watching of scripts/addresses in wallet
2013-11-30 16:39:58 +01:00
Mike Hearn
2271e7198e
Better error handling in Address.
2013-11-30 15:33:24 +01:00
Mike Hearn
98081f0568
Support sending to P2SH addresses. Thanks to Mike Belshe.
...
Resolves issue 461.
2013-11-30 15:14:52 +01:00
Mike Rosseel
7083c8b669
Increase test coverage.
2013-11-27 17:55:43 +01:00
Mike Hearn
70cd2ffb96
Wallet: throw exceptions when completing a transaction fails.
...
If there's insufficient balance (typical error) then InsufficientMoneyException is thrown (checked).
If the SendRequest is bad in some way, like asking to create a spend that would violate the protocol rules, IllegalArgumentException is thrown (unchecked).
Also make VerificationException (and thus ProtocolException+ScriptException) unchecked.
Resolves issue 425.
2013-11-27 15:25:52 +01:00
Ken Sedgwick
02ce88e6a3
Added buffer to MnemonicCode, it was modifying it's key argument (stretching in place).
2013-11-25 11:24:46 +01:00
Mike Hearn
ff678d116f
ECKey: some more nullity checks/annotations.
2013-11-25 00:08:06 +01:00
Mike Hearn
a5d14ba45b
HDW: Add some docs and a safety check to HDKeyDerivation.
2013-11-25 00:04:11 +01:00
Mike Hearn
8769773717
Add a default c'tor to MnemonicCode and simplify the unit tests.
2013-11-25 00:04:11 +01:00
Mike Hearn
3569dfe2d4
Payment channels: fix a simple thread-affinity bug revealed by a flaky unit test. It does not affect real apps.
...
Disable signature checking in ChannelTest to make it run faster, especially in the debugger, and bump timeouts so client/server don't timeout when debugging.
2013-11-21 13:29:01 +01:00
Mike Hearn
a9469758fd
ECKey: allow unit tests to disable signature creation/verification.
2013-11-21 13:29:01 +01:00
Mike Hearn
857b34fcee
Wallet: don't call killTx if it has no work to do, cleans up a misleading log line.
2013-11-21 13:29:01 +01:00
Mike Hearn
434f7d003a
Wallet: always broadcast all pending txns, not only those that are unmarked.
2013-11-20 23:19:12 +01:00
Mike Hearn
3161c6c7ba
TransactionBroadcast: add a unit test that verifies the rebroadcast functionality works.
2013-11-20 14:53:34 +01:00
Mike Hearn
62078f55c0
TransactionBroadcast: when there are an odd number of peers, bias towards more receivers rather than more announcers.
2013-11-20 14:53:17 +01:00
Mike Hearn
44944a62d0
Payment channels: clear a static analysis thread safety warning.
2013-11-18 18:54:43 +01:00
Ken Sedgwick
8dcead3508
Added MnemonicCode, implements BIP-0039.
2013-11-18 11:28:55 +01:00
Mike Hearn
c11456c9f4
Wallet: improve double spend handling.
...
Now connects all inputs of an overriding transaction, meaning balance is correct if a bit-tweaked but semantically identical transaction double spends its shadow (e.g. during key rotation on a cloned device).
Still does not recursively kill transactions however.
Resolves issue 439.
2013-11-18 00:17:07 +01:00
Mike Hearn
e49255c9e0
Experimental tweak to the definition of the numBroadcastPeers confidence field: now it actually does what the name implies.
2013-11-17 23:13:07 +01:00
Mike Hearn
e636ee2927
Take out a flaky part of WalletTest that isn't relevant anymore since even immediate auto-saves now run on a separate thread. The auto-saving is tested elsewhere anyway.
2013-11-17 23:08:08 +01:00
Mike Hearn
9c35501662
Payment channels: bump protocol version.
...
The protocol gained a PAYMENT_ACK message and now requires a min payment up front. Thus, it is incompatible with previous versions.
2013-11-13 18:30:14 +01:00
Mike Hearn
fc70f7362d
Payment channels: require a minimum payment to initiate.
...
This is a (backwards incompatible) protocol change that prevents clients or servers getting into a situation where they have opened a channel that they then cannot close because insufficient value has been transferred.
The server is allowed to specify the minimum payment it requires in order to open any channel at all, and the client then sanity checks that. Currently the rule is very simple - the min payment must be equal to the hard-coded dust limit. In future it will get more complicated as the dust limit starts to float and a more nuanced risk analysis may become required.
2013-11-13 18:18:10 +01:00
Mike Hearn
bba5e2b449
Payment channels: expose server state object via PaymentChannelServer property
2013-11-13 18:18:01 +01:00
Mike Hearn
6c40363c3d
Payment channels: expose whether a channel was initiated or resumed in the ClientConnection interface.
2013-11-13 18:18:01 +01:00
Mike Hearn
d41814ced2
FullPrunedBlockChainTest: add more debug logging.
2013-11-13 18:18:01 +01:00
Mike Hearn
9045add4c0
Add missing copyright headers in a few places.
2013-11-12 13:39:25 +01:00
Mike Hearn
0bc28781ae
Payment channels: rename "close" to "settle".
...
The previous overloading of the term "close" to mean both settlement of the channel (broadcast of the final payment tx) and terminating/cleaning up the underlying network connection was very confusing and made the code harder to work with. The notion of "closing" a protocol that is often embedded inside others isn't really well defined, so there's perhaps more work to do here, but this change makes the code easier to follow and is basically a big pile of no-ops.
2013-11-12 13:37:46 +01:00
Mike Hearn
edf37998ca
Wallet: improved risk analysis.
...
Extract out the "is time locked" risk analysis code to a pluggable implementation.
Ensure the default implementation has 100% test coverage.
Consider finality, not merely the presence of a lock time, when judging risk.
Don't consider a tx risky if it would become final in the next block.
Do not consider self-created transactions risky.
2013-11-11 19:07:44 +01:00
Mike Hearn
c33c20fe3d
Wallet: record the timestamp of the last block seen.
2013-11-11 17:54:21 +01:00
Mike Hearn
32009c5250
Cleanup: use varargs methods in slf4j rather than new Object[]{}
2013-11-11 17:21:34 +01:00
Matt Corallo
0506b1b30c
Fix yet another dumb script bug (resolves issue 479)
2013-11-11 03:31:47 -05:00
Mike Hearn
bf47b872c0
Tweak broadcast logic again.
...
Now broadcast to half the connected peers immediately, and wait until half of the rest (i.e. a quarter) have announced the tx. This should give some robustness against a random subset of peers silently swallowing transactions.
2013-11-10 20:06:47 +01:00
Mike Hearn
4da8fbc301
Add a builder function to InventoryMessage
2013-11-10 20:05:22 +01:00
Mike Hearn
688ba42c45
WalletTool: allow skipping of mandatory extensions.
...
This allows it to read MultiBit wallets.
2013-11-10 20:03:30 +01:00
Mike Hearn
a68bc627ee
TransactionBroadcast: refactor
2013-11-10 18:08:50 +01:00
Matt Corallo
b9363999ae
Fix signedness issue reading scripts (resolves issue 478)
2013-11-08 12:32:47 -05:00
Mike Hearn
f6fb6c211d
Payment channels: extract an IPaymentChannelClient interface for the basic PaymentChannelClient operations.
...
This is useful for code that wants to make micropayments in a generic fashion, whilst being independent of whether the implementation is in-process using a local wallet, or perhaps running elsewhere (like inside an Android wallet app with communication happening using Binder RPC).
2013-11-04 16:37:17 +01:00
Matt Corallo
5304a55d86
Fix b61 creation (why was it written this way in the first place?)
2013-11-01 15:38:05 +01:00
Matt Corallo
f2678463be
Fix race condition in NioWrapperTest testcase (resolves issue 474)
2013-11-01 15:37:40 +01:00
Matt Corallo
2d36b89bb9
Update script json tests from upstream
2013-11-01 15:32:41 +01:00
Matt Corallo
8fc7a2a34b
Fix RegTestParams subsidy decrease block count (150)
2013-11-01 15:32:29 +01:00
Mike Hearn
aff5f140fb
Payment channels: add payment acks.
...
Add a new PAYMENT_ACK message to the protocol. Make incrementPayment return a future that completes when the server has acknowledge the balance increase.
Also, prevent users from overlapping multiple increase payment requests.
This resolves race conditions that can occur when the billed-for activity is asynchronous to the protocol in which the micropayment protocol is embedded. In this case, it was previously impossible to know when the async activity could be resumed as it would otherwise race with the process of the server checking the payment signature and updating the balance. Most applications of micropayments will use a single protocol that has been extended with an embedding, and thus this is not an issue. However in some rare applications the payment process may run alongside the existing protocol rather than inside it. In this case, payment acks should be used for synchronization.
2013-11-01 15:31:57 +01:00
Mike Hearn
06ac0105f3
Payment channels: make ProtobufParser use finer grained, cycle detecting locking.
2013-11-01 13:00:26 +01:00
Mike Hearn
c36989cfce
MockTransactionBroadcast: add to wallet.
2013-10-30 13:35:24 +01:00
Matt Corallo
2468100937
Fix some Script nits/add comments. Thanks Peter Todd
2013-10-28 10:52:29 +01:00
Mike Hearn
bd6a5f62d9
PeerGroup: Split some broadcast related code out into a separate class.
...
This is in anticipation of it getting larger and more complicated.
2013-10-27 18:28:15 +01:00
Mike Hearn
16fb2f83eb
Wallet: fix a couple of bugs.
...
1) TX confidence listeners were being run for chain height changes, even if they were not confirmed yet.
2) req.fee was being miscalculated for empty wallet transactions.
2013-10-27 18:24:37 +01:00
Mike Hearn
a3356c511a
TestWithWallet: add a TODO to clean it up
2013-10-27 18:23:06 +01:00
Mike Hearn
4d23183283
Disable fragmentedRekeying test for now as bouncy castle is so slow at signature generation
2013-10-27 18:09:27 +01:00
Mike Hearn
9d96f77f19
PeerGroup: add logging of the change reason to the broadcast confidence listener. Also attach the listener to the pinned TX (it shouldn't make any difference normally, but when mixed with bluetooth stuff it might possibly change things).
2013-10-27 15:37:06 +01:00
Mike Hearn
387717c6c5
Wallet template: various updates.
...
Backport misc improvements from PayFile.
Refactor the clickable address out into a custom widget.
Use FontAwesome and the wrapper class for icons instead of a custom image.
QRcode support.
2013-10-26 02:28:44 +02:00
Mike Hearn
6ec7880079
Payment channels: add a method to obtain the seconds remaining until next channel expiry for a given server ID.
...
This is useful for UIs that need to tell the user what's going on when there's a connect-back failure.
2013-10-24 11:12:18 +02:00
Mike Hearn
5a3aa5d6e1
Remove redundant query in H2FullPrunedBlockStore.
...
Patch from Eric W Dickerson. Resolves issue 441.
2013-10-23 14:22:44 +02:00
Mike Hearn
f315125bf5
ECKey: Always use the canonical form of the S component.
...
This is a part of the general Bitcoin protocol anti-tx malleability work.
2013-10-23 13:08:21 +02:00
Mike Hearn
32a823804c
Payment channels: server closes/settles the channel automatically if the client has sent the last remaining money in it.
...
Also, throw an exception if the client tries to submit a rolled back amount of money instead of silently ignoring it.
2013-10-16 19:26:02 +02:00
Mike Hearn
5b28091c9a
Payment channels: split CLOSE message processing on the server side into a separate method.
2013-10-16 19:26:02 +02:00
Mike Hearn
31a4c08615
VarInt: remove superfluous and bizarrely named encodeBE method.
2013-10-15 18:34:17 +02:00
Mike Hearn
2f0dfd5c1b
FullBlockTestGenerator: treat coinbase scriptSig as a 16-bit counter not 8 bit.
...
This bug led to mysterious failures that only showed up when tests were run in a certain order and the counter happened to wrap around exactly.
2013-10-14 18:16:57 +02:00
Mike Hearn
5a673ebe7e
Untabify
2013-10-14 12:33:04 +02:00
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
Mike Hearn
d3842cc0f4
Wallet: Print Wallet extensions in toString() and make tx printouts optional.
2013-07-25 14:11:42 +02:00
Mike Hearn
89b6b54d24
Payment channels: better logging in client state.
2013-07-25 11:28:45 +02:00
Mike Hearn
9e78268813
Wallet: don't crash if receivePending is called twice with the same tx, even if the override flag is on.
2013-07-24 16:17:47 +02:00
Mike Hearn
51d717e93a
Payment channels: Make the ProtobufParser timer daemon and labelled.
2013-07-24 14:58:33 +02:00
Mike Hearn
00bc4e30ee
PeerGroup: add a todo about the pinging thread.
2013-07-24 14:53:34 +02:00
Mike Hearn
52b478a6f8
PeerGroup: Ignore an IllegalStateException from the ping timer that can be thrown occasionally during a shutdown race.
2013-07-24 14:52:08 +02:00
Mike Hearn
67f3605570
Transaction: format date based time locks correctly.
2013-07-24 14:45:42 +02:00
Mike Hearn
2a635317c3
WalletAppKit: Configure the peergroup with candidate peers before adding wallet extensions, as payment channel state can attempt to broadcast a transaction as soon as the state is loaded/instantiated. This ensures the number of min peers required for broadcast is correct at that point.
2013-07-24 13:56:12 +02:00
Mike Hearn
a1daaa73be
PeerGroup: Don't allow attempts to broadcast to zero peers.
2013-07-24 13:55:20 +02:00
Mike Hearn
81a9e1e893
Peer: drop out of fast catchup mode when reaching the top of the chain.
...
This bug could cause problems if you sync a wallet containing no keys, and then a chain fork happens (you won't follow the fork).
2013-07-23 20:10:57 +02:00
Mike Hearn
2acbd55d47
NetworkParameters: Remove ID_PRODNET. Resolves issue 430.
2013-07-22 18:12:36 +02:00
Mike Hearn
adea4f9479
Wallet: log completed transactions completely.
2013-07-22 17:22:13 +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
87ad8f2e5b
Add JNI peers for some listener classes.
2013-07-22 15:25:21 +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
516327289f
Payment channels: Expose a client connection method that terminates the TCP connection but doesn't try to close the channel (ask the server to broadcast the contract).
2013-07-19 14:41:15 +02:00
Mike Hearn
a7dbe7cd03
Payment channels: Add more logging on the server resume path.
2013-07-19 12:04:15 +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
Mike Hearn
c04708dd1e
Payment channels: Add detail to an error log message.
2013-07-17 21:40:52 +02:00
Mike Hearn
87897fbb37
Payment channels: Describe reason for connection closing in log message.
2013-07-17 21:40:17 +02:00
Matt Corallo
c5d267f0f9
PaymentChannelCloseException: Show reason in toString()
2013-07-16 17:25:25 +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
ff714fbd77
Add a PeerAddress.localhost() helper.
2013-07-15 18:22:57 +02:00
Matt Corallo
0fe56bf544
Let balance check fail later iff the server wants maxValue
2013-07-15 18:22:51 +02:00
Mike Hearn
00da963bbb
Payment channels: use daemon threads so the VM can exit after the state objects are created.
2013-07-13 02:24:19 +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
bf585d8627
Transaction: note that a ScriptException is expected at this point.
2013-07-11 16:52:11 +02:00
Mike Hearn
2c26f8802b
Add PeerGroup.clearListeners(). Resolves issue 426.
2013-07-11 16:34:57 +02:00
Mike Hearn
4e95ab3cfc
Assert on lock.isHeldByCurrentThread() instead of isLocked() - the latter is not correct.
...
This didn't cause any actual bugs but just reduced the safety of making code changes.
2013-07-11 16:30:44 +02:00
Mike Hearn
e687e52230
Use the correct alert signing key for testnet.
2013-07-11 16:29:56 +02:00
Mike Hearn
6a39af30c4
Add AbstractBlockChain.removeWallet(). Resolves issue 419.
2013-07-11 16:11:33 +02:00
Mike Hearn
5c1063860a
WalletAppKit: Improve javadoc a bit.
2013-07-11 16:07:14 +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
be89be6f43
PaymentChannelServerState: Fix typo in variable name.
2013-07-11 15:35:17 +02:00
Mike Hearn
d2232ed4aa
Fix hdw unit tests after I broke them.
2013-07-11 14:19:48 +02:00
Matt Corallo
c98badcf1c
Store states in protobufs instead of using Java Serialization.
...
Saves having to use reflection.
2013-07-11 14:16:40 +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
Matt Corallo
f0be874815
Add option to skip isRelevant checks in Wallet.receivePending
2013-07-11 14:14:24 +02:00
Mike Hearn
86bd974958
Move HD wallets code into plain crypto package.
2013-07-11 13:45:12 +02:00
Mike Hearn
be39c176db
Add a TODO to merge DeterministicKey and ECKey together.
2013-07-11 13:43:35 +02:00
Mike Hearn
98219bdd1b
More static analysis tweaks.
2013-07-11 13:42:42 +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
50dd5af0c8
Add more javadocs.
...
Delete the wallet integration code - it's good, but we won't ship it in 0.10 as it's not finished.
2013-07-11 13:10:07 +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
00f4c82342
WalletFiles: Make saving thread shut down after 5 seconds of doing nothing.
2013-07-10 18:14:10 +02:00
Mike Hearn
2b6022cd7c
WalletFiles: log how long saving the wallet took.
2013-07-10 16:59:39 +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
acc2877329
Reject dust outputs with ensureMinRequiredFee ( fixes #429 )
2013-07-10 16:28:29 +02:00
Mike Hearn
48cee2e668
KeyCrypterScrypt: Fix some minor code style issues.
2013-07-10 16:27:01 +02:00
Mike Hearn
53dc5c2e6a
Make Andreas happy. Resolves issue 423.
2013-07-10 16:23:05 +02:00
Matt Corallo
b51485ca23
Peer Bloom filter generation -> new PeerFilterProvider interface
2013-07-10 15:59:51 +02:00
Matt Corallo
2061d28e52
Use direct byte buffers instead of normal ones in niowrapper
2013-07-10 15:55:21 +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
Matt Corallo
1277df32d8
Fix a few minor typos.
2013-07-10 15:53:19 +02:00