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

344 Commits

Author SHA1 Message Date
Mike Hearn
a54e2e96eb Fix a bug in difficulty calculation logic that is revealed by testnet3. It should not impact the main net. Resolves issue 262. Rethrow block verification errors with a message containing the block. 2012-12-24 16:12:13 +00:00
Mike Hearn
9639b45ad8 BitCoin -> Bitcoin 2012-12-24 16:11:11 +00:00
Mike Hearn
93893e10ad Make PeerGroup use the Guava services framework. Makes start/stop optionally non-blocking. Resolves issue 258. 2012-12-21 23:03:15 +01:00
Mike Hearn
826aafd3e0 Make H2 non required. 2012-12-16 13:38:46 +01:00
Mike Hearn
eacda0bdfc Decouple the wallet from the block chain by introducing a BlockChainListener interface, and making the Wallet implement it. Resolves issue 94. 2012-12-14 17:04:30 +01:00
Mike Hearn
5abd546eb2 Update the AbstractBlockChain javadoc. 2012-12-14 16:33:37 +01:00
Mike Hearn
f6a498c241 Remove the redundant Wallet.isTransactionRelevant(..., includeDoubleSpending) parameter, as it was always set to true. 2012-12-14 16:24:24 +01:00
Mike Hearn
ca629e330f Duplicate a transaction before sending to wallets beyond the first. Resolves issue 257. 2012-12-14 15:24:22 +01:00
Mike Hearn
1710be5b06 Fix typo in PeerGroup c'tor javadoc. Spotted by Matt. 2012-12-12 22:23:55 +01:00
Mike Hearn
590fd82fdc Fix a regression introduced by the block height accessor changes that prevented DownloadListener from triggering. Fix more inconsistent locking issues. 2012-12-11 00:22:25 +01:00
Mike Hearn
372a23fbfe Fix more inconsistent synchronization bugs. 2012-12-11 00:08:46 +01:00
Mike Hearn
93fd045488 Lock the ping time accessors correctly. 2012-12-10 23:50:21 +01:00
Mike Hearn
df1ba42100 Fix OP_PUSHDATA decoding by preventing sign-extension. Clears some FindBugs warnings. 2012-12-10 23:44:14 +01:00
Mike Hearn
5668e1457e Fix a bogus format string. 2012-12-10 23:43:46 +01:00
Mike Hearn
917e4460f0 Tabs to spaces. 2012-12-10 13:32:11 +01:00
Mike Hearn
b64a3b5d1e Some work on DNS discovery - look up all seeds in parallel, pick 30 results, shuffle them and return. Allow users to specify a timeout. Return after the 30 results are found or we run out of time, whichever is first. Should smooth bumpy startup delays caused by occasional seed breakdowns. 2012-12-07 17:06:53 +01:00
Mike Hearn
68fa57c922 Fix unit test bug 2012-12-07 16:59:49 +01:00
Mike Hearn
2bcef988b4 Take out @author annotation from PeerGroup, as it's been worked on by lots of people by now. 2012-12-07 15:41:58 +01:00
Mike Hearn
26f63550be Implement calculation of a moving average of ping times. Improve PeerMonitor by making columns sortable. 2012-12-07 14:45:41 +01:00
Mike Hearn
3f89eda933 Fix some bugs that happen in chainless operation. Make Peer.getBestChainHeight() more accurate by taking into account blocks announced after a peer is connected, not just what it announced in the initial version message. 2012-12-07 13:59:37 +01:00
Mike Hearn
5cc9710e1f Have PeerGroup ping peers that support BIP 31 ping/pong responses, by default every 5 seconds. The last time ping is available in Peer.getLastPingTime(). This will shortly be used for ordering peers by responsiveness so we don't try and download from overloaded peers. 2012-12-07 12:47:38 +01:00
Mike Hearn
f440913c1d Some improvements to the network code:
- Delete the PeerGroupThread and replace it with a connectToAnyPeer() method. Getting connected to the network is now significantly faster as there is no sleep-wait loop between connections.
- Delete the connectionTimeMillis param to the PeerGroup constructors.
- Expose the PeerGroup c'tor that lets you specify the ClientBootstrap and expose a utility method to make one. This means users can now customize TCP options directly.
- PeerGroup.setMaxConnections() now actually creates or tears down connections to meet the new required number, if the peer group is running.
- Update the PeerMonitor so there's a spinner that lets you add or remove peers. Connecting and version handshaking is very fast now.
- Misc changes and fixes.
2012-12-06 15:06:37 +01:00
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
Matt Corallo
4989ecf15a Fix testnet3 NetworkParameters SubsidyDecreaseBlockCount 2012-11-29 17:36:55 +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
Mike Hearn
8f52cabdf7 Allow blockChain to be skipped when creating PeerGroups/Peers. 2012-11-02 15:24:39 +01:00
Mike Hearn
eb430dfc52 Take out dead tasks functionality from the peer group thread. 2012-11-02 14:50:45 +01:00
Mike Hearn
c25dd9327a Make isAcked private. Minor reformatting. 2012-11-02 14:50:30 +01:00
Mike Hearn
6f036f9cf2 s/BitCoinJ/bitcoinj/ everywhere except the version handshake.
Resolves issue 249.
2012-11-01 16:24:26 +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
739b2c6183 Add constructor to H2FullPrunedBlockStore to specify cache size. 2012-11-01 15:43:09 +01:00
Matt Corallo
a011948139 Avoid expensive calls to getClass().getSimpleName() in Message 2012-11-01 15:42:51 +01:00
Matt Corallo
a036b68aa2 Refactor some Stored* classes that are worthless...
Specifically, this moves StoredTransaction to
MemoryFullPrunedBlockStore and uses custom serialization for
StoredTransactionOutput.
2012-11-01 15:41:52 +01:00
Matt Corallo
91cd289a5c Make getMessageSize() public 2012-11-01 15:33:57 +01:00
Matt Corallo
49d26f6e28 Make genesis coinbase unspendable. 2012-11-01 15:33:46 +01:00
Matt Corallo
bf11bf08c3 Add data-driven Script tests from the reference client. 2012-11-01 15:21:06 +01:00
Mike Hearn
35ff3e1735 Add some comments to Script.java 2012-11-01 15:18:49 +01:00
Matt Corallo
050d70cf15 Validate P2SH in Script.correctlySpends 2012-11-01 15:07:17 +01:00
Matt Corallo
69f441b6c7 Make Script Verification multi-threaded in FullPrunedBlockChain. 2012-11-01 15:05:51 +01:00
Mike Hearn
c4d0364a60 Update a couple of copyright notices that missed Matts name. 2012-11-01 15:03:06 +01:00
Matt Corallo
5321352820 Add TransactionOutPoint.setIndex 2012-11-01 14:40:09 +01:00
Mike Hearn
da0f8a791b Re-throw wrapped ScriptException in FullPrunedBlockChain. 2012-11-01 14:40:05 +01:00
Matt Corallo
cba837cfef Verify scripts in FullPrunedBlockChain.connectTransactions 2012-11-01 14:37:53 +01:00
Matt Corallo
8ec3cdeb9c Add a Script.correctlySpends for Script execution verification. 2012-11-01 14:36:20 +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
2f2850610e Add a Script.removeAllInstancesOf(script object) 2012-11-01 13:40:05 +01:00
Matt Corallo
d7dc953da8 Add a startLocationInProgram field to ScriptChunk. 2012-11-01 13:34:48 +01:00
Mike Hearn
6a36dcd0ca Add hasKey method to Wallet. Also add addKeys method so keys can be added in bulk without triggering disk saves for each key. Resolves issue 255. 2012-11-01 13:32:32 +01:00
Mike Hearn
640db52cf4 Implement equals/hashCode on ECKey. Resolves issue 254. 2012-11-01 13:32:32 +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
9585729398 Remove redundant TransactionOutput constructor 2012-10-24 16:44:53 +02:00
Matt Corallo
f3d9c02841 Return false when calling Chain.add on an orphan we already have 2012-10-24 16:44:52 +02:00
Matt Corallo
599d4a671c Add a testnet-in-a-box mode.
Which allows connecting to a peer with only the genesis block.
2012-10-24 16:44:52 +02:00
Matt Corallo
2bfe8dfa25 Let calls to Block.addTransaction override sanity checks in testing 2012-10-24 16:44:52 +02:00
Mike Hearn
dd47862829 Minor reformatting 2012-10-24 16:44:52 +02:00
Matt Corallo
c5f8135f60 Allow coinbase value to be specified in createNextBlock for testing 2012-10-24 16:44:52 +02:00
Matt Corallo
a1124e696b Verify MAX_BLOCK_SIZE in verifyTransactions(). 2012-10-24 16:44:51 +02:00
Mike Hearn
7eae91ea47 Remove temp announcement listener in PeerGroup.broadcastTransaction once done. 2012-10-08 18:26:28 +02:00
Matt Corallo
425126689e Move subsidy decrease block count constant to NetworkParameters. 2012-10-08 18:26:28 +02:00
Mike Hearn
7c636d7ecc Move block inflation calculator to be a static method of Block. In future this will move again to NetworkParameters. 2012-10-08 18:05:14 +02:00
Matt Corallo
90f5ab7e47 Check transaction fees and block subsidies in conenctTransactions.
After this commit, bitcoinj implements all non-script-executing
checks at block connect time that the reference implementation
does.
2012-10-08 18:05:14 +02:00
Matt Corallo
ef6e1b89ca Check depth of spent coinbases during connectTransactions. 2012-10-08 18:05:14 +02:00
Matt Corallo
c789b757f3 Count P2SH SigOps the way the reference client does. 2012-10-08 18:05:14 +02:00
Matt Corallo
7ca87c078c Add block timestamp and transaction finalization checks.
This brings bitcoinj's block connection up to the reference
client's AcceptBlock().
2012-10-08 17:32:45 +02:00
Mike Hearn
5e0d4a168e Add a note that spending the genesis transaction should be impossible. 2012-10-08 17:13:49 +02:00
Mike Hearn
fd941fe46a Don't recalculate fast catchup time to avoid hitting an assert. 2012-10-08 17:13:37 +02:00
Matt Corallo
0cf2325640 Add a H2-backed FullPrunedBlockStore.
This adds yet another dependency to bitcoinj, but Derby's
performance (especially on DELETE operations) was godawful...
2012-10-08 17:03:14 +02:00
Matt Corallo
4018af8d51 Implement a Transaction.verify() to mimic Satoshi CheckTransaction 2012-10-08 16:40:44 +02:00
Matt Corallo
626ff2fa2c Verify SigOp counts when verifying Blocks. 2012-10-08 16:34:55 +02:00
Matt Corallo
1cbd5c07b4 Make a block with no txn a VerificationException, not Precondition 2012-10-08 16:29:17 +02:00
Matt Corallo
dfebcc83ab Add a few test cases to test FullPrunedBlockChains. 2012-10-08 16:28:57 +02:00
Matt Corallo
0bdb9bc6f4 Add the option to use a valid input in createNextBlock. 2012-10-08 16:15:21 +02:00
Matt Corallo
de2a6db666 Add a FullPrunedBlockChain class which can do full verification. 2012-10-08 16:12:47 +02:00
Mike Hearn
2a9c5b32d9 Add a checkpoint at height 200,000 2012-10-08 15:43:45 +02:00
Matt Corallo
c3ff3d112e Add checkpoint support and use it in AbstractBlockChain.
This greatly simplifies block connection logic as it does not need
to consider reorgs through non-BIP30-compliant blocks.
2012-10-08 15:43:45 +02:00
Matt Corallo
8edd6c5399 Add basic support for using AbstractBlockChains in Peer/PeerGroup. 2012-10-08 15:43:45 +02:00
Matt Corallo
03d8c71df3 Add a FullPrunedBlockStore interface and in-memory implementation. 2012-10-08 15:43:44 +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
b4215e8b01 Add a few Storage classes which avoid storing unnecessary data.
Specifically, this adds:
* StoredTransaction, which avoid having to store the entire
  transaction when we only need its inputs+outputs.
* StoredTransactionOutput, which avoids having to store the entire
  parentTransaction just to get the hash and index.
* TransactionOutputChanges, which is used to store two lists of
  StoredTransactionOutputs, one for the created set and one for
  the spent set.
* StoredUndoableBlock, which can store either only
  TransactionOutputChanges or only StoredTransactions so that the
  block can be more easily connected/disconnected at will.
2012-10-04 00:32:14 +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
cca393eea5 Use a HashSet instead of a TreeSet. Resolves issue 250. 2012-09-28 14:57:32 +02:00
Simon Vermeersch
232d2cd51d testnet3 2012-09-28 14:44:26 +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
Matt Corallo
a9cdf99135 Fix comment example for buildMerkleTree 2012-09-24 18:03:41 +02:00
Mike Hearn
254393253c Version 0.7-SNAPSHOT 2012-09-24 15:27:30 +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
793254b6f5 Quieten some debug logs. 2012-09-09 15:26:06 +02:00
Mike Hearn
d3a540bb1e Fix a bug where we'd attempt to migrate depths of pending transactions. 2012-09-09 14:45:34 +02:00
Mike Hearn
7867841579 Fix an off by one error in tx depth migration. 2012-09-08 23:28:26 +02:00
Mike Hearn
8003266a66 Set the tx depth fields whilst loading 0.5 era wallets if the chain height is provided before load. This does NOT migrate workDone as that'd involve scanning potentially the entire block store and nobody uses this data much today. Resolves issue 240. 2012-09-06 18:50:35 +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
915a2adb10 Fix a NullPointerException introduced by the TCPNetworkConnection helper APIs. 2012-09-06 17:25:43 +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
38aabdfa24 JavaDoc improvements and other minor tweaks. Remove a few things that are not really meant to be public APIs. 2012-08-30 23:46:54 +02:00
Mike Hearn
8453654b85 Add a TODO in PeerGroup 2012-08-30 23:16:15 +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
5c8bfbda8b Delete a bit of dead code in PeerGroup. 2012-08-30 15:49:52 +02:00
Mike Hearn
0ae4c6e4d5 Mark JDK SLF adapter as scope test. Resolves issue 231. 2012-08-30 15:42:21 +02:00
Mike Hearn
56d74d504a Another pass at the auto-save code. Resolves issue 246. 2012-08-30 15:39:31 +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
e5c88cda8b Fix Utils.decodeMPI and add a Utils.encodeMPI 2012-08-20 17:50:19 +02:00
Matt Corallo
61ed962e63 Implement PUSHDATA4 in Script.parse 2012-08-20 17:50:19 +02:00
Matt Corallo
a831374b72 Fix handling of improperly-encoded DER signatures to match OpenSSL
This always reads variables in DER signatures as positive, even
when they are encoded as negative.
2012-08-20 17:50:19 +02:00
Matt Corallo
dd89369538 Fix a bug in Script.parse to allow 0-length pushes. 2012-08-20 17:50:19 +02:00
Matt Corallo
60748ed72e Print any opcode in Script.toString, adding Script.getOpCodeName 2012-08-20 17:50:19 +02:00
Matt Corallo
8b07672922 Add all script OP constants from the reference client. 2012-08-20 17:50:18 +02:00
Mike Hearn
8cc41330e6 Delete the old confidence migration code that was used in the days of serialized wallets. It's no longer needed. 2012-08-20 16:55:53 +02:00
Mike Hearn
200ca96f49 Rewrite the class javadoc for Wallet and remove a dead autosave variable. 2012-08-20 16:44:56 +02:00
Matt Corallo
5abc124134 Remove redundant programCopy from Script. 2012-08-20 16:23:12 +02:00
Matt Corallo
dc943b6e6d Remove unused multi-byte script support. 2012-08-20 16:23:11 +02:00
Matt Corallo
30db7cfd47 Use pong(+nonce) messages.
* Adds a Pong class
* Uses nonces in pings (when applicable)
* Responds to pings with pongs (when applicable)
* Changes protocol version to 60001
2012-08-20 16:23:11 +02:00
Matt Corallo
5f8ae00dd6 Use minimum values for SpendableCoinbaseDepth.
Use 100 for SpendableCoinbaseDepth instead of 120 on mainnet, and
use 100 on testnet, as the reference client does.
2012-08-20 16:23:11 +02:00
Matt Corallo
20d72d7de4 Use a ScriptChunk class in place of byte[] arrays. 2012-08-20 16:23:11 +02:00
Matt Corallo
ca1466e628 Make isCoinBase() equivalent to the reference one. 2012-08-20 16:23:11 +02:00
Matt Corallo
2aaa601293 Use signed 64-bit values for TransactionOutput.value.
The reference client (stupidly) does this, and we were incorrectly
de-serializing values from the reference client.
2012-08-20 16:23:11 +02:00
Matt Corallo
8cd9cc11a4 Make Script throw ScriptException instead of ArrayIndexOutOfBounds
...when an invalid PUSHDATA constant is used.
2012-08-20 16:23:11 +02:00
Matt Corallo
c5e62f16b0 Fix serialization of GetBlocksMessage 2012-08-20 16:23:11 +02:00
Matt Corallo
6f6a946967 Fix typo in comment in TransactionConfidence.java 2012-08-20 16:23:10 +02:00
Mike Hearn
e2108d922d Close ByteArrayOutputStreams. Resolves issue 244. 2012-08-20 16:12:49 +02:00
Mike Hearn
6f6c5d6773 Add a toString overload on Wallet. Print private keys in WalletTool when available. 2012-08-20 16:01:19 +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
8746dabcad Rewrite wallet auto-saving to not require polling. Resolves bug 242. 2012-08-20 14:46:44 +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
Miron Cuperman
c4304fe07d Bring back PeerGroupThreadFactory 2012-08-03 16:49:45 -07:00
Mike Hearn
3560d18ea2 Don't increment maxConnections when using connectTo from the PeerGroup thread. Resolves issue 234. 2012-07-23 16:42:21 +02:00
Mike Hearn
bc3fbb1448 Make the added logging more compact. 2012-07-23 16:37:14 +02:00
Mike Hearn
912760830a Add some more logging to the Peer class. 2012-07-23 14:50:13 +02:00
Mike Hearn
abc9f09db3 Ensure peer.eventListeners is always accessed under the peer lock, and switch to EventListenerInvoker in most places so listeners can remove themselves.
Resolves issue 210.
2012-07-22 02:00:30 +02:00
Mike Hearn
915a878a13 Also inform the wallet in the single peer case in broadcastTransaction. 2012-07-22 01:50:09 +02:00
Mike Hearn
5bae8ffe6c Make PeerGroup.maxConnections fully synchronized. 2012-07-22 01:22:56 +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
42152c2483 Fix a bug in EventListenerInvoker that would crash if the last event listener removed itself. 2012-07-22 00:45:06 +02:00
Mike Hearn
c5caeaea74 Duplicate channel futures list before closing channels.
Resolves issue 221
2012-07-21 23:02:07 +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
Mike Hearn
d20c185253 Re-order DNS seeds to match upstream. Pieters node comes first as it's the best maintained, Jeffs last as it's just a static list. 2012-07-21 22:34:31 +02:00
Mike Hearn
ba65e7ccf3 Delete dead code from PeerGroup that was obsoleted by the move to Netty. 2012-07-21 22:34:31 +02:00
Mike Hearn
c6d900e91c Correct stale comment in bitcoin.proto 2012-07-21 22:34:31 +02:00
Miron Cuperman
00ce3d7523 Fix incorrect synchronization on map values. 2012-07-18 12:16:29 -07:00
Miron Cuperman
0a9f529f72 Clean up Peer callback API.
Resolves issue 220.
2012-07-18 11:44:55 -07:00
Miron Cuperman
4d58ea5111 Missing synchronization for iterations.
(over synchronizedMap/synchronizedSet)
2012-07-18 10:48:07 -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