3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-01-31 15:22:16 +00:00
Commit Graph

1331 Commits

Author SHA1 Message Date
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
81d10b8c10 WalletTemplate: show number of peers seen when emptying the wallet. 2013-10-27 18:27:28 +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
533e2f21b7 Delete ToyWallet example. It's redundant with the wallettemplate app now. 2013-10-27 17:15:42 +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
2e924e217d WalletTool: fix typo 2013-10-11 14:32:44 +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