3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-01 07:42:17 +00:00
Commit Graph

167 Commits

Author SHA1 Message Date
Mike Hearn
e20c35bf50 Fix FakeChannelSink so events are put into the queue in the right order (BEFORE running event handlers, not after). 2012-12-06 15:01:40 +01:00
Mike Hearn
7bfef81664 Reformat FakeChannel. 2012-12-06 15:01:17 +01:00
Mike Hearn
fc573d5f1c Add a ping() method to the Peer class. It returns a future that can be used to find out when the pong returns and how slow it was. Temporarily, use this in the PeerMonitor example. Next up: moving pinging into the PeerGroup. 2012-11-02 16:19:13 +01:00
Matt Corallo
9cc9607c73 ScriptException extends VerificationExtension, code cleanup follows
Just cleans up code now that ScriptException extends
VerificationExtension.
2012-11-01 16:08:56 +01:00
Matt Corallo
bf11bf08c3 Add data-driven Script tests from the reference client. 2012-11-01 15:21:06 +01:00
Mike Hearn
8d1591183f Rename TransactionInput get/setSequence -> get/setSequenceNumber. The previous name could be confusing and was inconsistent. Add lots of comments to Transaction.hashForSignature. 2012-11-01 14:06:59 +01:00
Matt Corallo
40237f0549 Implement all SigHash types in hashTransactionForSignature. 2012-11-01 13:43:06 +01:00
Matt Corallo
45b89a1935 Use a generic block chain creator for Full Block Chain tests. 2012-10-24 16:44:53 +02:00
Matt Corallo
dfebcc83ab Add a few test cases to test FullPrunedBlockChains. 2012-10-08 16:28:57 +02:00
Matt Corallo
548333bc6f Refactor BlockChain to make it more extensible.
This creates a new AbstractBlockChain abstract class which
BlockChain extends.
It continues to have a createable BlockChain class to avoid
changing the API too much.
2012-10-08 15:16:24 +02:00
Matt Corallo
f2d9a6162d Fix a number of issues with message length caching. 2012-10-04 00:24:51 +02:00
Mike Hearn
deb9da67aa Add a WalletEventListener.onWalletChanged() method that is designed for GUI apps to refresh their tx list. Resolves issue 222. 2012-09-29 18:32:22 +02:00
Mike Hearn
946d25548f Remove dead code that was used for appearsIn -> appearsInHashes migration, which pre-dates protobuf wallets. Make a few package-private members fully private. 2012-09-29 16:37:04 +02:00
Mike Hearn
78dedcc9ba Re-organize how transaction confidence listeners end up being called. Ensure WalletEventListener.onTransactionConfidenceChanged is always called for every building transaction after every block. Resolves issue 251. 2012-09-27 18:43:31 +02:00
Mike Hearn
7b4dc184f7 Fix a bug that could cause us to fail the transition between downloading headers and blocks. 2012-09-09 15:28:52 +02:00
Mike Hearn
572f2a4f4e Implement the ability to explicitly set a fee in the Wallet.SendRequest. Does not yet auto-calculate the correct fees. Resolves issue 45. Resolves issue 245. 2012-09-06 17:45:04 +02:00
Mike Hearn
29d5dcd424 Re-organize the wallet sending APIs to take a SendRequest. Full details of the API changes are sent to the list. 2012-09-06 14:22:05 +02:00
Mike Hearn
8162aa0ed1 Use current time as unit test chain genesis block time. Resolves a weird issue where the unit tests suddenly broke as the previous unit test genesis time was equal to testnet genesis time. 2012-09-06 12:37:00 +02:00
Mike Hearn
26d55f889d Add a convenience API to TCPNetworkConnection to get a handshaked connection. Update JavaDocs. 2012-08-30 23:16:05 +02:00
Mike Hearn
83bb66cc25 Serialize the broadcastBy set for each transaction. Resolves issue 237. 2012-08-20 23:37:46 +02:00
Mike Hearn
fedfe9d0e6 Change the wallet to relay tx confidence events instead of generating them itself, which is a bit cleaner. Centralize state that needs to be rebuilt after a Java deserialization. Resolves issue 235. 2012-08-20 18:30:37 +02:00
Matt Corallo
20d72d7de4 Use a ScriptChunk class in place of byte[] arrays. 2012-08-20 16:23:11 +02:00
Mike Hearn
75e04174c4 Introduce a concept of "minimum peers for broadcast" to PeerGroup.broadcastTransaction. This can be used to make sending faster when you are bringing up the network in parallel. It defaults to half the max connections. The idea is to insulate you from slow remote peers somewhat. 2012-08-20 16:00:55 +02:00
Mike Hearn
9f036bff84 Mark as spent the outputs used by pending transactions. Resolves issue 243. 2012-08-20 14:46:00 +02:00
Mike Hearn
fd9eba1697 Change PeerGroup.broadcastTransaction() to wait for propagation.
It means a send won't be considered completed until it's accepted by the net.
Also is for the case where you receive a transaction (eg, via Bluetooth) and
you want to broadcast it such that you can know it's valid.

Make WalletTool use --peers instead of --peer, a comma separated list of
addresses to use. Remove the crappy sleep after send now we can wait.

Resolves issue 167.
2012-07-22 01:20:48 +02:00
Mike Hearn
bc47fccaeb Add an auto save function. A background thread will atomically auto-save to a file when there are wallet changes at a limited rate. 2012-07-21 22:37:39 +02:00
Miron Cuperman
0a9f529f72 Clean up Peer callback API.
Resolves issue 220.
2012-07-18 11:44:55 -07:00
Mike Hearn
831f2d582f Support the invalid QRcodes generated by blockchain.info (Ben Reeves software). They put bitcoin:// at the front instead of bitcoin:, apparently because otherwise some social networks won't recognize them. 2012-07-14 13:23:00 +02:00
Matt Corallo
ad2c339d85 Fix two false-positives in test cases. 2012-07-13 17:53:30 +02:00
Mike Hearn
9d46c48db9 Fix Sha256Hash hashcode function.
Delete wallet deserialization unit test, as we now consciously are breaking serialization compatibility. Resolves issue 213.
2012-07-09 22:28:29 +02:00
Mike Hearn
ec096993e6 Test and fix transactions in multiple chains going the other way (appears in side chain first, then best) 2012-07-09 22:02:55 +02:00
Mike Hearn
038438b394 Fix a bug that could cause inconsistent wallets.
When a side chain block contains the same transactions as the best chain, we incorrectly inserted into the inactive map, triggering assertion failures. Resolves issue 202.
2012-07-09 21:38:52 +02:00
Mike Hearn
4d1e6259a7 coinbase phase 3 - coinbase death and resurrection now working (updated with Mike's comments) 2012-07-04 19:19:19 +01:00
Miron Cuperman
fa10523007 Netty network stack.
This should resolve some scalability and robustness issues.
2012-07-04 17:08:35 +02:00
Jim Burton
96e27cfe27 Renamed TransactionConfidence.OVERRIDDEN_BY_DOUBLE_SPEND to DEAD 2012-06-08 17:58:41 +02:00
Mike Hearn
643088145e Clear out some FindBugs warnings. 2012-06-08 17:53:50 +02:00
Mike Hearn
335863c75d Add some helpers for creating pubkey-only outputs.
Allow spending of pubkey outputs. There are unit tests but not manually tested yet.
Implement toString() logic for printing pubkey inputs/outputs.
Don't consider coinbase transactions relevant until Jims work is in.
Support sending to pubkeys in wallet-tool
2012-06-07 10:57:34 +02:00
Mike Hearn
e863d01545 Fix receiving of pending transactions, it was broken after the memory pool changes in the case when a tx was received first on a non download peer. 2012-06-05 14:26:18 +02:00
Mike Hearn
da8dba8b23 Re-write block chain download handling to avoid parallel chain downloads occurring. Avoids big slowdowns when a block is solved during the chain download. Resolves issue 180. 2012-06-05 12:26:41 +02:00
Mike Hearn
6ade5c38cc Update wallet tx confidence data for blocks that do not contain any relevant transactions. Resolves issue 197.
TESTED=synced a wallet with a mainnet key and watched depth/work rise as new blocks were solved
2012-06-03 15:31:21 +02:00
Mike Hearn
5deecef64c Update a TestUtils helper to allow solved blocks to have transactions in them. Rewrite lastSeenBlockHash test to use it and eliminate a todo. 2012-06-03 14:20:02 +02:00
Jim Burton
80f141cbf5 TransactionConfidence changes (coinbase phase 2) + Mike's feedback 2012-06-01 16:14:18 +02:00
Fireduck
61fba05d3d Makes Wallet easy to extend.
Adds WalletProtobufHelper, which is an easy class to extend
to add extensions to the wallet serialization.

Modified WalletProtobufSerializer to use that helper.
2012-06-01 15:35:16 +02:00
Mike Hearn
1f96f850e0 Automatically set up fast catchup time on a PeerGroup when wallets are added. Resolves issue 183. 2012-05-30 00:08:18 +02:00
Mike Hearn
e375270d6b Remove deduplication code. It is dead for a long time now already. 2012-05-21 16:10:28 +02:00
Mike Hearn
0739a6f674 Port to the latest BouncyCastle API and switch to the SpongyCastle lightweight API. It has the following benefits:
- Keeps us up to date with the crypto library
 - Resolves the need for an Android artifact by using a renamed lib
 - Switches to the lightweight API so minimizes our dependencies, which is also required for the native branch to be merged

 Resolves issue 171
2012-05-18 17:03:55 +02:00
Jim Burton
6c31abd698 coinbase-tx phase1 complete (add blockheight to wallet and protobuf) 2012-05-17 14:18:31 +01:00
Mike Hearn
1b1457449a Add a BitcoinURI.convertToURI variant that takes a String instead of an Address. Remove test for null param -> IllegalArgumentException as that's not consistent with the rest of the library. Resolves issue 152. 2012-05-14 20:57:14 -07:00
Mike Hearn
c41b6d74fa Better base58 encoding/decoding that resolves some edge cases. Patch from Vasile Rotaru. 2012-05-09 11:12:45 -07:00
Mike Hearn
ff770a8d83 Add an explicit test in WalletTest.blockChainCatchup for confidence levels. 2012-05-02 16:59:50 +02:00
Miron Cuperman
fe9cbf8b7b Wallet.isConsistent tests
Resolves issue 184.
2012-05-01 18:57:03 -07:00
Mike Hearn
7f5c8dc3a8 Set outpoint.fromTx during TransactionInput.connect even in the conflict case. Resolves issue 181. Also introduce a helper for creating double spends and rewrite the test case for this in WalletProtobufSerializer to cover more codepaths. Add a comment noting that in the double spending case the overriding transaction isn't presently being stored in the wallet. 2012-04-15 17:51:31 +02:00
Mike Hearn
513a75b4ba Download transactions from whichever peer announced them first. 2012-04-08 14:26:53 +02:00
Mike Hearn
cf30280767 Catch up with new testnet rules. Resolves issue 164. 2012-04-07 23:28:18 +02:00
Mike Hearn
2f904e7a37 Fix unit test. 2012-04-07 17:02:00 +02:00
Mike Hearn
4e3d5313e6 Fix issue 166. Consider intra-block dependencies when deciding whether to send transactions to the wallet. 2012-04-06 18:03:07 +02:00
Mike Hearn
a170372562 Add a static method to go from string ID to NetworkParameters and use it to simplify the WalletProtobufSerializer API. 2012-04-06 14:58:36 +02:00
Jonny Heggheim
7bf9724079 Fix issue 174, replaced all File usage with TemporaryFolder rule in JUnit. 2012-04-05 17:10:36 +02:00
Mike Hearn
d82f102b4b Introduce a new MemoryPool abstraction and use it for tracking peer confidences. This replaces the previous, less explicit system which had each peer try and track all transactions it'd seen in a per-peer pool.
This makes experimental usage of weak references and a reference queue to make the MemoryPool only bother tracking transactions that were retained by some other part of the program, ie, because they were relevant to the wallet. This stops the memory usage from bloating due to lots of large transactions flying around the network whilst still letting us intelligently monitor how many peers announced transactions without tight coupling between components.

Note that we still need the cap on the pool size because otherwise you could DoS a bitcoinj based program by sending it lots of fake transactions it found interesting. The DoS potential still exists but is a bit different now.
2012-04-05 12:14:36 +02:00
Mike Hearn
dc42630526 Invoke transaction confidence listeners when a new peer broadcasts the given transaction. Use EventListenerInvoker to run the listeners. 2012-04-05 12:12:17 +02:00
Mike Hearn
8fc09f5808 Make network parameters to BitcoinURI optional. 2012-04-02 17:36:47 +02:00
Mike Hearn
9075561993 Support for discovering the network parameters from an address. Different exception type for wrong network parameters so chain-crossing can be handled differently. 2012-04-02 17:10:41 +02:00
Mike Hearn
3e5f796407 Add a dependency on Guava base libraries and replace a few asserts with Preconditions, which means they will always run including in production code. Fix a bug revealed by this (IntelliJ does not run unit tests with assertions enabled!) 2012-04-02 13:40:20 +02:00
Miron Cuperman
9474eaa0d4 Change NetworkConnection API to separate connect method.
This allows the Peer to close the connection earlier when connect()
takes a long time.

Resolves issue 161.
2012-03-26 15:23:14 -07:00
Miron Cuperman
576650142c Lock in BOBS on creation, do not swallow non-IO exceptions 2012-03-23 12:53:54 -07:00
Miron Cuperman
4b1c32584f Lock BlockStore files to prevent concurrent access.
Resolves issue 153.
2012-03-23 10:53:54 -07:00
Mike Hearn
0e52c98c45 Use the standard Maven directory layout, rename "lib" to "core". Mavenize submodules. 2012-03-13 18:57:03 +01:00