Commit Graph

1341 Commits

Author SHA1 Message Date
Mike Hearn
0f124b9ef4 Add some javadocs for Wallet.fromWatchingKey 2014-07-30 12:06:16 +02:00
eleetas
914752623d close connection regardless of autocommit status and set conn to null 2014-07-30 11:25:55 +02:00
Mike Hearn
d681c72b30 Fix typo 2014-07-30 11:09:56 +02:00
Carlos Lopez-Camey
12e1c3f6bd Improve javadocs, revert unnecessary unmodifiable list 2014-07-29 12:31:08 -06:00
Carlos Lopez-Camey
ce7520b0c8 Merge branch 'master' of https://github.com/bitcoinj/bitcoinj 2014-07-29 12:23:42 -06:00
Mike Hearn
6679f42f4a Use a local Bitcoin node if one is detected instead of the p2p network. This allows any user of a bitcoinj based app to upgrade from SPV to full mode security by just installing and running Core on the same machine. Can be controlled with a new property on PeerGroup. 2014-07-29 18:13:52 +02:00
Mike Hearn
812a4f59c4 Re-allow Android devs to override the mnemonic code instance. 2014-07-28 16:13:12 +02:00
Carlos Lopez-Camey
40709495fc Merge branch 'master' of github.com:kmels/bitcoinj 2014-07-27 13:19:06 -06:00
Carlos Lopez-Camey
e208430ab6 adds helper methods Transaction.getWalletOutputs, TransactionOutput.getAddressFromPubKey and TransactionOutput.getAddressFromScript. 2014-07-27 13:15:20 -06:00
Mike Hearn
539037ec0e Switch to accelerated secp256k1: huge speed improvements. 2014-07-26 14:56:34 +02:00
Mike Hearn
6ae4662f93 Upgrade to Bouncy/Spongy Castle 1.51 2014-07-26 14:48:51 +02:00
Kosta Korenkov
55803b15ac Fix Script.getNumberOfBytesRequiredToSpend for P2SH
It is a size of redeem script that should be taken into account, not a
size of scriptPubKey
2014-07-26 01:05:22 +04:00
freak
b2efb0ddc2 Close connections in PostgresFullPrunedBlockStore. same as: b6f61e8850 2014-07-23 16:10:45 +02:00
Jiri Peinlich
cb0d052e08 use List interface instead of LinkedList implementation 2014-07-23 16:08:36 +02:00
Andreas Schildbach
c6659bcf5f BIP38: Fix test using supplementary characters in the passphrase. 2014-07-23 16:07:26 +02:00
Mike Hearn
4a45d4a27f Print full backtrace when a wallet extension fails to load. 2014-07-23 15:40:14 +02:00
Mike Hearn
afb732c528 Restore new tx purposes correctly. 2014-07-22 16:11:29 +02:00
Mike Hearn
626117bc29 Add logging for output disconnection and reconnection. 2014-07-22 16:04:26 +02:00
Mike Hearn
92544e9d47 Add ASSURANCE_CONTRACT_CLAIM/PLEDGE/STUB to the purpose field. 2014-07-21 16:42:20 +02:00
Mike Hearn
a5e4d046df Adjust the behaviour of the current key mechanism to be more like what gui wallets really need. 2014-07-15 20:55:23 +02:00
Mike Hearn
96ee76e506 Update bip38 test3 ignore message again now the problem is better understood. 2014-07-15 20:52:08 +02:00
Mike Hearn
e143b2b4cb Re-organise the layout of the Wallet file and introduce IntelliJ compatible editor regions, so parts of the code can be folded by feature area. This also makes it easier to understand what exactly the wallet does and why it's so huge. 2014-07-15 17:14:59 +02:00
Mike Hearn
b6c1e385c0 Update wallet todo list. 2014-07-15 16:31:03 +02:00
Giannis Dzegoutanis
5e1942f3f0 Made some methods public in BasicKeyChain. Fixes in deterministic key generation 2014-07-15 16:24:53 +02:00
Andreas Schildbach
72b7929523 Getter for addresses watched by wallet. 2014-07-15 14:42:20 +02:00
Andreas Schildbach
15060572a9 Fix some exception messages in BIP38PrivateKey. 2014-07-15 14:06:25 +02:00
Mike Hearn
0addfd63ec Fix reason why BIP38 test vector is failing, Java strings can contain null characters just fine. 2014-07-15 14:05:04 +02:00
Mike Hearn
bab16650f9 HD Wallets: fix key lookahead and auto-advance so it works as intended.
Previously the codepath that was supposed to mark keys as used didn't work, and the lookahead calculation wasn't quite right. Now the current key advances correctly when an inbound tx is found that spends to it, including pending transactions. Additionally the lookahead zone now has the threshold zone after it, not inside it, meaning that if you request a lookahead size of 100 keys you'll actually always have at least 100 keys, never less.
2014-07-15 13:41:45 +02:00
Aaron Voisine
89b4b78dc4 fixed MAX_STANDARD_TX_SIZE to match bitcoin core
in bitcoin core MAX_STANDARD_TX_SIZE is 100000, not 102400

https://github.com/bitcoin/bitcoin/blob/master/src/main.h#L43
2014-07-14 16:19:53 -07:00
Andreas Schildbach
8068230042 Remove superfluous AddressFormatException from BIP38PrivateKey.decrypt(). 2014-07-13 22:10:28 +02:00
Andreas Schildbach
aaf349ea6a Fix Java7'ism. 2014-07-13 22:10:11 +02:00
Mike Hearn
78383f98f4 WalletAppKit: support for restoring a wallet from a seed. The old wallet is moved out of the way. 2014-07-11 00:26:37 +02:00
Mike Hearn
68bb476430 Clear an NPE in wallet printing that could occur when printing a wallet with private keys included. 2014-07-10 21:58:27 +02:00
Mike Hearn
8e6e2256bc WalletAppKit/Template: Cleaner way to check if the app is already running. Backport from Lighthouse. 2014-07-10 21:44:38 +02:00
Mike Hearn
13b2f2104c Less debug spam when sending bloom filters to keep FP rate low. 2014-07-10 21:38:32 +02:00
Mike Hearn
46d4c3487e Generalise the crypto DRM workaround and use from the BIP38 codepath too. 2014-07-10 15:33:47 +02:00
Mike Hearn
682bd035fc Fix a couple of static method via instance warnings. 2014-07-10 15:33:10 +02:00
Andreas Schildbach
a750a14edd Implement BIP38 password encrypted private keys, decryption only. Contains all the test vectors from the spec minus one that is incompatible to Java. 2014-07-10 14:57:25 +02:00
Justas
03652298e1 Dead transaction does not contain confidence depth and should not fail when sorting. 2014-07-10 14:56:47 +02:00
Giannis Dzegoutanis
9446b1b625 added test for HDUtils.formatPath and changed HDUtils.parsePath to handle paths that start with the letter M 2014-07-10 14:56:10 +02:00
Devrandom
fec6cbc7df Remove support for mnemonic-less keychains 2014-07-10 14:53:42 +02:00
Devrandom
2fae12064c Fix BIP39 implementation 2014-07-10 14:53:42 +02:00
Devrandom
3420bdf8ac Add cobertura support 2014-07-10 14:53:42 +02:00
Mike Hearn
483fd8a908 Expose TransactionBroadcast.random 2014-07-09 13:07:56 +02:00
Andreas Schildbach
c7fe06d4c7 Fix java package of ExponentialBackoffTest. 2014-07-08 13:54:05 +02:00
Mike Hearn
f7070df152 Allow TestWithNetworkConnections subclasses to override the wallet with their own. 2014-07-07 16:18:51 +02:00
Andreas Schildbach
afcc7e3f13 Coin.toFriendlyFormat() includes denomination (BTC). This saves a lot of string concatenation code. 2014-07-05 21:03:51 +02:00
Andreas Schildbach
794263436f Add ability to prefix or postfix currency codes when formatting coins. Defaults are BTC, mBTC and µBTC. 2014-07-05 21:03:51 +02:00
Andreas Schildbach
d22ee01f8a Fix ECKey.equals() and toString() to also include encryptedPrivateKey. Convert to Guava and consolidate at bottom of class. 2014-07-05 18:14:16 +02:00
Mike Hearn
bb40036453 Fix a payment protocol unit test that had a forgotten @Test annotation and thus didn't actually work. 2014-07-05 17:27:22 +02:00
Andreas Schildbach
5580fd9d92 Make DumpedPrivateKey serializable, so that it can be used to pass around keys between loosely coupled application components. 2014-07-05 15:14:22 +02:00
Andreas Schildbach
48d748d2be Auto-upgrade to HD when fetching a change address. 2014-07-04 16:24:23 +02:00
Devrandom
bbe983f38a relax assumption that HD seeds are 128 bits
cleanup
2014-07-03 14:07:05 -07:00
Devrandom
39d8da6764 relax assumption that HD seeds are 128 bits 2014-07-02 14:39:32 -07:00
Mike Hearn
009b04551a Update the documentation for Transaction.hashForSignature to note a quirk of P2SH outputs. 2014-06-28 19:01:29 +02:00
Oscar Guindzberg
1d5058626a Peer.blockChainDownloadLocked() - fix getblocks message documentation 2014-06-28 14:55:21 +02:00
Oscar Guindzberg
d1c3be126d PeerGroup.startBlockChainDownload(): add the supplied listener to the
downloadingPeer
2014-06-28 14:49:21 +02:00
Kosta Korenkov
12bfa5f5ee Married wallets: extending fee calculation 2014-06-28 14:36:05 +02:00
Giannis Dzegoutanis
fd0c6a27f4 added a helper function to parse human readable deterministic paths 2014-06-28 14:35:48 +02:00
Mike Hearn
dbd6004f1b HD Wallets: redo key rotation, it's no longer automatic and expects the wallet app to poll for maintenance transactions. Deterministic keys now inherit the creation time of their parent. 2014-06-26 16:21:23 +02:00
Ximo Guanter
b6f61e8850 Close connections in H2FullPrunedBlockStore 2014-06-26 15:25:47 +02:00
troggy
736c4c9907 Married HD wallets: Bloom filter adjustments
Pull request: #115
Based on design notes:
https://groups.google.com/forum/#!msg/bitcoinj/Uxl-z40OLuQ/e2m4mEWR6gMJ
2014-06-26 14:45:03 +02:00
Kosta Korenkov
2edf978af4 Rename addFollowingAccounts -> addFollowingAccountKeys 2014-06-25 01:18:53 +04:00
Mike Hearn
32360fea8d Give regtest mode its own ID so wallets don't get mixed up between regtest and testnet. 2014-06-24 18:37:19 +02:00
Mike Hearn
09286a932c Remove some superfluous new String() calls around HEX.encode, now it has a sane API. 2014-06-24 14:11:09 +02:00
Mike Hearn
704575df1c Add a forgotten @Test annotation and fix the expected exception type. 2014-06-23 16:18:46 +02:00
Mike Hearn
11d8d57a1a Wallet: remove a few dead stores identified via static analysis. 2014-06-23 15:39:33 +02:00
Mike Hearn
f2f64d1e80 Wallet: move setTag to the extensions section of the file. 2014-06-23 15:37:52 +02:00
Andreas Schildbach
e9c777c9a6 Explain why a transaction output value is kept as a long rather than Coin. 2014-06-23 15:23:08 +02:00
troggy
e192f9030c Prevent marriage of used keychain
addFollowingAccounts method now has the check that active keychain has no keys in use. This would prevent divergence of derivation paths for followed and following keys. In future this behaviour should be replaced with some sort of key rotation.
2014-06-23 14:53:09 +02:00
troggy
9dbc507fca Improvement of getFollowingKeys
First of all, freshAddress was actually asking for a fresh key twice for non-married keychain. That was fixed by moving first call (needed only for married chain) inside the getFollowingKeys. As the latter now started to return all keys in a marriage and not only following ones, it was renamed to freshMarriedKeys.
Having all the keys in one block allows to do simple derivation path check to make sure keychains are in sync (as per @devrandom suggestion)
2014-06-23 14:53:09 +02:00
troggy
06755aefde Married HD wallets: introduce shadow keychain notion
Pull request: #99
Based on design notes:
https://groups.google.com/d/msg/bitcoinj/Uxl-z40OLuQ/e2m4mEWR6gMJ
2014-06-23 14:53:09 +02:00
Adam Mackler
b7cb4d8c47 TransactionOutput class private value member changed to type long from Coin. 2014-06-23 13:49:08 +02:00
Adam Mackler
e8048cb672 Changes to the Coin class: some convenience comparison operators;
`parseCoin()` now accepts negative values; the check for an excessive
value is moved to the constructor from `parseCoin()` and uses
`checkArgument()`; some `Coin`-type constants broken out into one
`long` one `Coin` in order to be usable in the constructor.
Corresponding tests included.  The `BitcoinURI` class constructor
throws exception on parsing a negative amount, which is needed now
that `Coin` class accepts negative amounts.
2014-06-23 13:49:08 +02:00
Devrandom
e2ebe69aae Fix key derivation 2014-06-22 12:47:27 -07:00
Piotr Włodarek
3dfaf54e28 Fixed VarInt serialization bug for the 0xffffffff number. Fixed VarInt sizeOf bug for the 0xffffffff number and added tests for VarInt edge cases.
The 4294967295 number (0xffffffff) was incorrectly serialized because the UnsignedInteger.MAX_VALUE.longValue() helper returned 4294967295 instead of expected 4294967296.

The VarInt.sizeOf() incorrectly returned 9 instead of 5 for the 4294967295 (0xffffffff) number.

See https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer
2014-06-20 16:35:33 +02:00
Andreas Schildbach
ae3acdfefd Remove undefined arithmetics method. 2014-06-20 14:57:55 +02:00
Mike Hearn
292a180926 Full mode test generator: use OP_NOP in inputs instead of OP_TRUE to avoid unclean stacks after execution. Additionally, reduce the verbosity of the code somewhat. There's still plenty that could be done to make the code cleaner but .... not today. 2014-06-18 12:21:54 +02:00
Mike Hearn
523b3018cb HD Wallets: do auto upgrade when possible on all inbound codepaths, and make DeterministicUpgradeRequiresPassword extend RuntimeException. 2014-06-17 16:20:38 +02:00
Andreas Schildbach
7f68c3472f Add SendRequest.toString(). 2014-06-17 12:47:34 +02:00
Andreas Schildbach
f86463bab3 Harmonize how BTC values are printed to the log by Wallet.completeTx(). Also, print the value that is emptied. 2014-06-17 12:47:34 +02:00
Andreas Schildbach
f4d24bffb1 Add SendRequest.signInputs flag to allow skipping the signing. It takes a long time and is not needed for when you only want to determine the fee. 2014-06-17 12:47:34 +02:00
Andreas Schildbach
9d1b15612a Fix a bug because the SendRequest.fee field is written to 0 when SendRequest.emptyWallet is used. Missing tests for this case are added.
Use SendRequest.tx.getFee() to get the fee, rather than reading SendRequest.fee.
2014-06-17 12:47:34 +02:00
Mike Hearn
443d556909 HD Wallets: implement auto upgrade behaviour and refresh the design doc. 2014-06-13 14:11:51 +02:00
Mike Hearn
57105f52e6 Fix redundant expression in MnemonicCode. 2014-06-12 20:26:30 +02:00
Andreas Schildbach
7a689fce3d Add Alexykot's test net DNS seed. Tested using Bitcoin Wallet, works fine. 2014-06-12 12:36:34 +02:00
Oscar Guindzberg
bd2536048a Make Transaction comparators compatible with equals 2014-06-12 12:17:24 +02:00
troggy
b40b3a5f9d Fix failing WalletProtobufSerializerTest 2014-06-12 11:25:53 +02:00
troggy
5840c8a66a Fix failing deserialization of wallet with an empty HD chain
Error occurred when deserializing wallet if either internal or external
zero account key chain of this wallet has no keys issued
2014-06-12 11:23:17 +02:00
Mike Hearn
b5911c1ee4 Add a missing lock on BasicKeyChain.getBloomFilter 2014-06-11 16:49:35 +02:00
Adam Mackler
40bc6f4c46 Add a method to deserialize a DeterministicKey from a byte-array rather than from the base-58 encoding thereof. 2014-06-11 16:20:26 +02:00
troggy
2a8454a85c HD wallet: currentKey is now stable after serialization roundtrip
At the moment currentKeys map of KeyChainGroup is not restored after
deserialization and subsequent call to currentKey produces different
key then expected.
Proposed solution reconstructs currentKey map on deserialization using
stored numbers of issues keys. It is
not future-proof as it assumes only RECEIVE and CHANGE keys are being
used.
2014-06-11 11:45:15 +02:00
Piotr Włodarek
9f25af54ab Fixed bitcoinj DoS. It could have been crashed by a malicious message.
Bitcoinj can be crashed with OutOfMemory by sending a message with
a large claimed var_str length or bytes array length.

The actual message size does not matter, it's the claimed length that matters.

This affects all bitcoinj-based apps that receive messages including Multibit, Android Bitcoin Wallet, Mycelium and Hive.

The fix limits accepted length to max message size (32 MB).

Signed-off-by: Mike Hearn <mike@plan99.net>
2014-06-10 18:50:19 +02:00
Andreas Schildbach
9befd32200 Allow zero repetitions for CoinFormat.repeatOptionalDecimals(). Also add tests. 2014-06-10 16:04:45 +02:00
Andreas Schildbach
fc923f8473 Remove unused CouldNotAdjustDownwards. Move JavaDoc to the real one. 2014-06-10 12:06:02 +02:00
Andreas Schildbach
fb4aab3edc Copy @throws from the JavaDoc of Wallet.completeTx() to all calling methods. 2014-06-10 12:06:02 +02:00
Andreas Schildbach
70ce114d8e Fix link in Wallet.notifyTransactionIsInBlock() JavaDoc. 2014-06-10 12:04:20 +02:00
Andreas Schildbach
b9dd0a5417 Fix Wallet.checkForDoubleSpendAgainstPending() JavaDoc. It returns a boolean. 2014-06-10 12:04:20 +02:00
Andreas Schildbach
ffaf18fa94 Fix Wallet.isTransactionRelevant() JavaDoc. There is no "includeDoubleSpending". 2014-06-10 12:04:20 +02:00
Andreas Schildbach
8fde2de992 Remove undocumented and unused Transaction constructor. I found it misleading because it allows you to pass in a hash, but the hash can be changed without notice. 2014-06-09 12:59:51 +02:00