3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-22 15:15:49 +00:00

639 Commits

Author SHA1 Message Date
Mike Hearn
b3673999d4 Move WalletTransaction into the wallet package. 2013-12-22 18:48:46 +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
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
Devrandom
462c75324e Faster FP tracking using double exponential 2013-12-14 12:42:44 -08:00
Matt Corallo
2f29660d0d Fix broken test case. 2013-12-14 01:11:52 -05: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
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
c278867186 Add a unit test for Script.toString and don't emit trailing whitespace. 2013-12-12 08:11:23 -08:00
Mike Hearn
2f8740f8a8 Remove usage of deprecated method in PeerTest. 2013-12-11 10:39:31 -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
ba543a3b10 Only do network writes on the handler thread in nio wrappers 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
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
Devrandom
da2e3e6c98 Support watching of scripts/addresses in wallet 2013-11-30 16:39:58 +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
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
3161c6c7ba TransactionBroadcast: add a unit test that verifies the rebroadcast functionality works. 2013-11-20 14:53:34 +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
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
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
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
Matt Corallo
b9363999ae Fix signedness issue reading scripts (resolves issue 478) 2013-11-08 12:32:47 -05: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
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
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
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
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