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
Harald Hoyer
a690454be1
Wallet: rename setLookaheadThreshold() to setKeychainLookaheadThreshold()
...
for consistency
2014-06-05 11:36:46 +08:00
Piotr WÅ‚odarek
2d9ad0466a
Minor refactorings and fixes in VersionMessage.
...
* Fixed toString() bug.
* Updated comments to match present Bitcoin Core behavior with respect to User-Agent.
* Removed constructor accepting a boolean. This changes public API but neither multibit
nor bitcoin-wallet nor mycelium nor hive-android uses this version of constructor.
The rationale is to avoid passing a boolean to a method as this makes code hard to read.
Client classes updated to preserve original semantic. All tests pass.
2014-06-05 11:32:53 +08:00
Andreas Schildbach
31af80ccd3
CoinFormat class, for formatting and parsing coin values to and from human readable form.
2014-06-05 11:25:06 +08:00
Harald Hoyer
384be446ce
FullPrunedBlockChain: fixed typo
...
s/rage/range/g
2014-06-04 22:55:36 +08:00
Mike Hearn
86c5449ba2
Clarify BlockChainListener javadocs a bit.
2014-06-04 18:11:17 +08:00
Piotr WÅ‚odarek
21b3c06878
Breaks dependency cycle between Script.<clinit>, Script.<init> and NetworkParamenters.<init>. Resolves issue #549 .
...
Script.<clinit> depended both on Script.<init> and NetworkParameters.<init> to prepare ScriptChunk cache.
At the same time NetworkParameters.<init> depended on Script.<clinit> by using Script.writeBytes().
The fix frees Script.<clinit> from both the NetworkParameters and Script objects.
This should remove the root cause behind NetworkParameters construction not being thread safe.
2014-06-02 20:49:36 +02:00
Kalpesh Parmar
4e568354be
Arbitrary number of key creation (batch)
...
Functionality added to create keys in batch (any arbitary number),
previously keys were created/returned one at a time.
2014-06-02 21:47:49 +08:00
Andreas Schildbach
638e921e53
Migrate usages of spongycastle Hex.encode/decode to Utils.HEX.encode/decode(), which in turn uses Guava's Base16 encoding.
2014-06-02 21:37:43 +08:00
Andreas Schildbach
da868973df
Migrate usages of Utils.bytesToHexString() to Utils.HEX.encode(), which in turn uses Guava's Base16 encoding.
2014-06-02 21:37:43 +08:00
Piotr WÅ‚odarek
7f84603e11
Renamed 'bytes', 'msg' to 'payload' in all Message classes.
...
* This is intended to clarify distinction between full message and its payload to match terminology advertised on https://en.bitcoin.it/wiki/Protocol_specification .
* Does not change public API.
* These refactorings were mostly automated and should not introduce bugs. All tests pass.
2014-06-02 21:29:04 +08:00
Piotr WÅ‚odarek
a95c2ed826
Minor comments improvements in Message, EmptyMessage and NetworkParameters.
2014-06-02 21:29:04 +08:00
Piotr WÅ‚odarek
019f5f846d
Regenerate protobuf bindings. They didn't fully survive our refactorings.
2014-06-02 21:16:51 +08:00
troggy
eae64a5357
Wallet now delegates currentAddress/freshAddress calls to KeychainGroup
...
This way it's possible for KCG to yield P2H addresses in future
2014-06-02 21:15:58 +08:00
Andreas Schildbach
927d8514f5
Rename Coin.NANOCOIN to Coin.MICROCOIN.
2014-06-02 08:11:03 +02:00
Andreas Schildbach
fa63c83888
Fix 'java.math.Coin' in the JavaDocs.
2014-05-31 11:27:19 +02:00
Andreas Schildbach
346e8fb3bf
Access NetworkParameters.MAX_MONEY in a static way.
2014-05-31 11:27:19 +02:00
Andreas Schildbach
39586bf515
Replace or remove remaining misuses of the term 'nanocoin'.
2014-05-30 18:09:36 +02:00
Andreas Schildbach
56ef72f36f
Deprecate Coin.longValue() in favour of accessing Coin.value directly.
2014-05-30 18:09:36 +02:00
Andreas Schildbach
b15dbfb836
Remove unused imports.
2014-05-30 15:33:58 +02:00
Andreas Schildbach
f10fefe2ae
Clear a lot of compiler warnings because of unparameterized types.
2014-05-30 15:33:58 +02:00
Andreas Schildbach
d4c1a1b043
Add missing @Override annotations.
2014-05-30 15:33:58 +02:00
Andreas Schildbach
51c48bb69f
Clean up coin constants and make more use of it.
2014-05-30 15:09:33 +02:00
Andreas Schildbach
938dec7a73
Rename Coin.toNanoCoins(coins, cents) to Coin.valueOf(coins, cents).
2014-05-30 15:09:33 +02:00
Andreas Schildbach
49adaeed16
Rename Coin.toNanoCoin(String) to Coin.parseCoin(String).
2014-05-30 15:09:33 +02:00
Andreas Schildbach
3e846901cb
Remove weird value accessors.
2014-05-30 15:09:33 +02:00
Andreas Schildbach
ee4dec1835
Remove weird constructors.
2014-05-30 15:09:32 +02:00
Andreas Schildbach
48a76a8a03
Clean up Coin API for multiplications and divisions.
2014-05-30 15:09:32 +02:00
Andreas Schildbach
eb81b0c815
Move coin related methods and constants from Utils into Coin.
2014-05-30 15:09:32 +02:00
Andreas Schildbach
e2140c5cf8
Refactor internal coin representation from BigInteger to long.
2014-05-30 15:09:32 +02:00
Andreas Schildbach
022e7c27fe
Wrap coin-ish BigIntegers into Coin class.
2014-05-30 15:09:32 +02:00
troggy
d2e1b14d4c
Wallet: add convenience methods to vend Address objects for currentKey/freshKey
2014-05-29 20:20:44 +02:00
Mike Hearn
c63f5f7553
Fix bugs and misc review comments from Harold Hoyer's key lookahead pull request. Still needed: unit tests.
2014-05-29 20:11:17 +02:00
Harald Hoyer
5726b97f70
HD Wallets: mark the DeterministicKeys as issued, if seen in a Transaction
...
If a Transaction contains a DeterministicKey of our
DeterministicKeyChains, then we should mark this key as issued. This can
happen, when we replay/resync the blockchain or when another device uses
one of our keys.
Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
2014-05-29 20:11:17 +02:00
Harald Hoyer
534a1e3a5c
HD Wallets: add a threshold for the DeterministicKey lookahead
...
DeterministicKeyChain.maybeLookAhead() would pre-generate a new key, for
every issued key, even if it is only one. If we replay the blockchain
and update the issuedKeys counter, maybeLookAhead() would trigger the
regeneration and resending of the bloom filter for every used key.
This patch adds a threshold, where keys are only pre-generated after
more keys are needed than the value of the threshold.
Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
2014-05-29 20:11:17 +02:00
Mike Hearn
42bfbb9b1c
Add some Javadocs and clean up the watching key API a tiny bit. Default creation time is now BIP32 standardisation time.
2014-05-29 20:11:17 +02:00
Harald Hoyer
9ff7a91c8c
HD Wallets: let you specify the creation time for a WatchingKey
...
If the creation time for a WatchingKey is known, it should be taken into
account and stored.
Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
2014-05-29 20:11:17 +02:00
Mike Hearn
960b9d686e
KeyChainGroup: defensive copy of the chains list in the c'tor
2014-05-29 20:11:16 +02:00
Mike Hearn
1628bf6329
WalletAppKit: set max connections to size of set peer addresses so localhost broadcast works.
2014-05-29 20:11:16 +02:00
Mike Hearn
e4af9a673f
Tweaks to allow wallet subclasses to add their own extensions in their c'tors.
2014-05-29 20:11:16 +02:00
Mike Hearn
748ff6fc8e
WalletAppKit: allow control of wallet construction.
2014-05-29 20:11:16 +02:00
Mike Hearn
4504633fd5
ECKey.recoverFromSignature: respect the compressed flag again.
2014-05-29 20:11:16 +02:00
Mike Hearn
d2837e8ea9
Wallet: allow customization of the wallet type that is deserialized. Makes subclassing Wallet more useful.
2014-05-29 20:11:16 +02:00
Mike Hearn
b374ba5108
HDW: Fix a decryption bug where we were (again) accidentally relying on padding checks to detect wrong passwords. Check the watching key derives correctly to fix.
2014-05-29 20:11:16 +02:00
Mike Hearn
24e41f01c6
Refactorings.
...
Make a convenience ECKey.decrypt(KeyParameter) that doesn't require the keycrypter to be manually specified, as often (always?) the key knows it already.
Introduce a KeyBag interface that just contains findKeyBy* methods, then make Wallet implement it and change Transaction.signInputs to use it. Take out the encrypted-key specific stuff here: Transaction now requires unencrypted keys. Create a DecryptingKeyBag class that just forwards calls to Wallet and decrypts the returned keys. This decouples the signing code from Wallet a bit.
Should be all API compatible.
2014-05-29 20:11:16 +02:00
Mike Hearn
9ca891c709
Wallet: restrict visibility of the transactions map a bit and tag the others as visible for testing. This should get fixed up in a future refactor.
2014-05-29 20:11:16 +02:00
Mike Hearn
1e4f930b70
Wallet: set lookahead size to 5 when using unit test params instead of scattering calls all over the test code.
2014-05-29 20:11:15 +02:00
Mike Hearn
2be8bc1901
ECKey: make compress/decompressPoint use non-deprecated methods and add a note that BC's tracking of compression state is going to go away.
2014-05-29 20:11:15 +02:00
Mike Hearn
a807994b9a
Bump wallet version and add missing check (!) to detect wallets from the future. The absence/incompleteness of this feature had not been noticed before, and it means that old apps will fail to read HD wallets due to the new key enum value rather than a more sensible error (but there's still no chance of an old app accepting an HD wallet, so it should still be safe).
2014-05-29 20:11:15 +02:00
Mike Hearn
c8850c94ae
Bugfix: don't throw away deserialized wallet in WalletAppKit
2014-05-29 20:11:15 +02:00
Mike Hearn
ef95eb3b79
Bugfix: don't crash if getEarliestKeyTime is called on a DKC that wasn't initialized with a seed (i.e. a watching chain)
2014-05-29 20:11:15 +02:00
Mike Hearn
704339fdfb
Bugfix: copy event listeners to new HD chains when created.
2014-05-29 20:11:15 +02:00
Mike Hearn
2ce5c16815
Switch TestWithWallet to be using an HD key by default.
2014-05-29 20:11:15 +02:00
Mike Hearn
d9fa9e4b68
Fix a casting bug in WalletAppKit. Thanks to Kalpesh Parmar.
2014-05-29 20:11:14 +02:00
Mike Hearn
4df59adeb9
Use setMockClock instead of rollMockClock(0) to resolve flaky tests.
2014-05-29 20:11:14 +02:00
Mike Hearn
51b71a4363
HD Wallets: support watching wallets in Wallet and wallet-tool.
...
Also, respect includePrivateKeys flag for the seed in wallet.toString again.
2014-05-29 20:11:14 +02:00
Mike Hearn
c7f7fd29e0
HD Wallets: add a REFUND key purpose and map it to the same branch as RECEIVE_FUNDS for now.
2014-05-29 20:11:14 +02:00
Mike Hearn
dbf504faa0
HD Wallets: add getImportedKeys() method that returns just the basic key chain.
2014-05-29 20:11:14 +02:00
Mike Hearn
534252de49
HD Wallets: bugfix, ensure we don't store private keys that can be rederived.
2014-05-29 20:11:14 +02:00
Mike Hearn
3f9791d86a
HD Wallets: print seed birthday in wallet dump too
2014-05-29 20:11:14 +02:00
Mike Hearn
a1fcca3883
WalletTool: allow creation of a wallet from a given [word] seed.
2014-05-29 20:11:14 +02:00
Mike Hearn
1ff5d05200
HD wallets: add a Wallet.getKeyChainSeed method.
2014-05-29 20:11:13 +02:00
Mike Hearn
5638387d3a
HD wallets alpha preview
2014-05-29 20:11:13 +02:00
Andreas Schildbach
780be05260
Save value of inputs when completing transactions and persist it to the wallet protobuf. Determine the fee of a transaction in case we have all the values.
2014-05-29 20:06:22 +02:00
Andreas Schildbach
03e8934576
Update note about regenerating protobuf bindings.
2014-05-29 20:06:22 +02:00
Mike Hearn
b36bb5bff0
Bloom: don't requery mempool if the filter is only being refreshed to force down FP rate.
2014-05-28 23:09:40 +02:00
Mike Hearn
ecbaaf01d6
Fix scrypt library hash.
2014-05-28 19:19:32 +02:00
Mike Hearn
e95fef3504
Bloom bugfix: track false positives in blocks including when the tx was broadcast within the session, and don't print an error from the wallet in this case. Should have no impact beyond more accurate FP rate calculations.
2014-05-28 18:44:43 +02:00
Andreas Schildbach
344be21821
Fix 'shortest possible pushdata' logic for transaction inputs. Also add a testcase.
2014-05-28 15:43:52 +02:00
Andreas Schildbach
8ca8075a7b
Convenience ScriptBuilder.addChunk() method can add arbitrary script chunks.
2014-05-28 15:36:53 +02:00
Andreas Schildbach
9fe8e8ee2b
Teach TransactionOutput.toString() to print send-to-pubkey and send-to-multisig types.
2014-05-27 14:50:31 +02:00
Jiri Peinlich
c37423a737
renaming to nonexisting file on Windows
...
The method fails in case the file does not exists before renaming. canonical.delete() returns false in that case and the method throws an exception.
2014-05-27 13:19:16 +02:00
Andreas Schildbach
ccc3dbd339
Implement standard checks for BIP62 shortest possible data push rules. Also fix ScriptBuilder so it doesn't build longer than necessary data pushes any more.
2014-05-27 11:49:14 +02:00
Andreas Schildbach
7b24a72e45
Implement ScriptChunk.toString() by extracting relevant parts from Script.toString().
2014-05-27 10:03:56 +02:00
Piotr WÅ‚odarek
9c8d2cc600
Renamed proofOfWorkLimit to maxTarget along with get/set and minor refactorings.
...
* proofOfWorkLimit renamed to maxTarget to get it more inline with commonly used terminology (wiki, etc.)
* some misleading local variables renamed from 'difficulty' to 'target'
2014-05-25 11:44:52 +02:00
Piotr WÅ‚odarek
c08c68fc5e
Dealt with several compiler notices by verifying and then fixing or suppressing. Reduces compilation output noise.
2014-05-25 11:43:36 +02:00
Piotr WÅ‚odarek
cc6090af88
Fixed type references in javadoc to avoid IntelliJ error reports on rebuild.
2014-05-25 11:43:01 +02:00
Piotr WÅ‚odarek
b32d0cce17
Improved consistency and formal correctness of all existing .equals methods to meet IntelliJ's convention.
...
* added null handling so equals methods return false for null argument
* replaced instanceof with getClass to force strict type equality
* added @Override for equals and hashCode where missing
* minor refactorings in equals methods to simplify and improve consistency
* added missing hashCode for ListMessage based on equals definition
Things that HAVE NOT changed:
* set of attributes used for equality checking
* hashCode calculation (except for added hashCode in ListMessage)
* correlation between equals and hashCode
* no new equals methods added
2014-05-22 20:50:42 +02:00
Andreas Schildbach
ff8d76cf7e
Include PUSHDATA opcode in Script.toString(). Also, smallNums are printed in their decoded form.
2014-05-22 13:03:32 +02:00
Andreas Schildbach
c236ae418f
Keep opcode in ScriptChunk representation of scripts. The goal is to know how data was pushed and be able to apply malleability rules. All unit-tests pass.
2014-05-22 13:03:32 +02:00
Mike Hearn
b47995ed97
Wallet: throw more appropriate exception types during completion.
...
Resolves issue 560.
2014-05-21 19:38:12 +02:00
Mike Hearn
028a1cca69
Upgrade scrypt library.
2014-05-21 19:25:38 +02:00
Mike Hearn
a07a810ed8
Don't crash if there's no logging handler installed.
2014-05-21 19:25:29 +02:00
Mike Hearn
467124a2b3
Wallet: keep risk dropped txns around in RAM and don't miss them when a Bloom filtered block includes them. Resolves issue 545.
2014-05-21 16:50:17 +02:00
Mike Hearn
ed2948cef1
Correctness fix: compare nBits directly not in BigInteger form as nBits has multiple non-canonical encodings.
2014-05-21 15:09:52 +02:00
Andreas Schildbach
4a5854a599
Reformat log messages in DnsDiscovery and add one log message for the success case, to make more clear what's going on.
...
Also, rename hostNames to dnsSeeds as this name is more speaking for itself, and is used in other places as well.
2014-05-21 13:22:04 +02:00
Mike Hearn
ee2a91010e
PeerGroup: return the peers that match the requested protocol version in waitForPeersOfVersion.
2014-05-20 17:51:45 +02:00
Mike Hearn
dfb3a763ce
Add some convenience methods to Transaction for signing.
2014-05-20 17:20:11 +02:00
Mike Hearn
1fe0e7fa6c
Add some JavaDocs to FakeTxBuilder
2014-05-20 17:20:11 +02:00
Mike Hearn
2548076fa6
Refactor TestWithPeerGroup a bit to make it more reusable in apps.
2014-05-20 17:20:11 +02:00
Mike Hearn
9e5a06120a
Add a PeerGroup.waitForPeersOfVersion API and add unit tests for the waitForPeers* methods.
2014-05-20 14:01:55 +02:00
Mike Hearn
f378bb3a43
Add Addy's main net DNS seed and remove Matt's testnet seed as it doesn't work properly.
2014-05-19 16:17:30 +02:00
Piotr WÅ‚odarek
f7e982cee1
Minor refactorings in VersionedChecksummedBytes.
2014-05-18 23:19:55 +02:00
Piotr WÅ‚odarek
e91cc443e9
Updated comment for WalletAppKit class to reflect deprecation of start and startAndWait in Guava.
2014-05-18 22:30:22 +02:00
Piotr WÅ‚odarek
cd4219ccb1
Fixed comment for Wallet.sendCoins regarding MIN_NONDUST_OUTPUT.
2014-05-18 22:30:09 +02:00
Mike Hearn
443b62481d
BloomFilter: set a lower bound on nHashFuncs of 1: there must always be at least one function. Thanks to Kalpesh Parmar for debugging this.
...
Static import Math for shorter more readable code.
2014-05-13 13:06:48 +02:00
Mike Hearn
cbd91c7ea1
Fixes to tagging, thanks to Andreas for the review.
...
- Wallet now forces immediate autosave when a tag is set.
- TaggableObject javadocs s/wallet/object/
2014-05-13 13:00:01 +02:00
Mike Hearn
acebe8e3d2
Tighten scope of the FileInputStream in WalletAppKit to avoid lock collisions on Windows. Resolves issue 556.
2014-05-13 12:57:02 +02:00
Mike Hearn
408bca3433
Do tags lazily as was supposed to happen.
2014-05-09 14:56:26 +02:00
Mike Hearn
d68b3b5108
Update script JSON files with latest changes from Peter Todd.
2014-05-09 14:18:13 +02:00
Mike Hearn
268dfe297f
Add a simple API that lets you tag wallets with arbitrary string->byte[] pairs.
2014-05-08 20:13:09 +02:00
Mike Hearn
c277dc7e4e
Require PeerFilterProviders to expose a lock, and use them to avoid a race that occurs during Bloom filter construction.
...
It's possible in some uses to cause the Wallet to create two batches of keys one after the other, but independently such that the second batch of keys is derived (with HDWs) whilst the filter is being recalculated from the first. This in turn could race with filter calculation and cause asserts or miscalculated filters.
2014-05-08 00:33:01 +02:00
Mike Hearn
46ad86a9af
Refactor bloom filter calculations out of PeerGroup into a separate FilterMerger class.
2014-05-07 21:53:34 +02:00
Mike Hearn
26823d1bf7
Correct the default thread used by AbstractBlockChain.addListener()
2014-05-06 21:44:42 +02:00
Mike Hearn
a893bdd603
PeerGroup: print a log warn if there's no blockchain.
2014-05-05 22:32:46 +02:00
Mike Hearn
0e74eba29f
WalletFiles: don't delete temp file if rename failed. It might be the only copy of the wallet we have! Only really should affect Windows.
2014-05-05 14:42:52 +02:00
Mike Hearn
fbbdbb576e
Minor reformattings + more javadocs + rename signRequestPki to just signRequest as there are no other signing methods at the moment.
2014-05-05 11:39:07 +02:00
Andreas Schildbach
cdfec498a4
Extract methods for creating and parsing payment requests, payment messages and payment acks, as well as Ack data class. Expose more payment request data from PaymentSession. Add unit tests for roundtripping all messages.
2014-05-05 11:26:25 +02:00
Andreas Schildbach
bd49cd4027
Rename misnamed PaymentRequestException to PaymentProtocolException. It's used for payment messages and maybe payment acks as well.
2014-05-05 11:26:25 +02:00
Mike Hearn
28c16738bc
Add a PeerGroup.connectToLocalhost helper method.
2014-05-04 23:43:48 +02:00
Mike Hearn
4df728a7d9
Wallet: add output shuffling (a second time - where did it go?!). It's optional for unit testing.
2014-04-30 23:47:24 +02:00
Mike Hearn
c8ffc1eaee
PaymentSession: Expose params and throw if transactions don't match requested params.
...
Resolves issue 551.
2014-04-30 22:19:39 +02:00
Mike Hearn
6160a2db3d
Wallet: expose saveNow/saveLater to subclasses.
2014-04-29 17:33:02 +02:00
Mike Hearn
31c8f8b494
Make wallets autosave every 200msec instead of every second. Also, save immediately upon creation of a fresh wallet in case the app doesn't sync to the network for some reason.
2014-04-28 18:23:31 +02:00
Mike Hearn
119d26fda2
Fix crash
2014-04-27 20:51:44 +02:00
Mike Hearn
3f3f637779
Integrate Tor support into the PeerGroup and WalletAppKit API.
2014-04-27 18:57:56 +02:00
Mike Hearn
6c3b6ce1b3
TorDiscovery: Be less spammy about timed out circuits. A lot always time out.
2014-04-27 18:57:31 +02:00
Mike Hearn
d39cc8838e
TorDiscovery: Bugfix. Guava now returns immutable lists from Futures methods (annoying).
2014-04-27 18:11:50 +02:00
Devrandom
9cfb420cdb
Use unconnected socket in BlockingClient as before
2014-04-27 17:26:02 +02:00
Devrandom
99448b730a
Tor using the Orchid library
2014-04-27 17:26:01 +02:00
Andreas Schildbach
c5e82e6bc5
Expose word list of MnemonicCode. It's useful for auto-completion.
2014-04-25 19:56:03 +02:00
Mike Hearn
8b8adc6fed
Add a convenience method to MockTransactionBroadcaster.TxFuturePair
2014-04-25 15:05:16 +02:00
Mike Hearn
38e3f6fb9d
Wallet: null out the candidates list after selection so selectors can edit the list if they want.
2014-04-23 15:44:45 +02:00
Mike Hearn
6e999c6054
Simplify the MockTransactionBroadcaster a bit and update the docs.
2014-04-23 00:24:48 +02:00
Mike Hearn
bcc8055b7e
Wallet: expose tx broadcaster to subclasses.
2014-04-22 23:06:32 +02:00
Mike Hearn
dd7973c834
Implement equals/hashCode on TransactionInput.
2014-04-22 22:15:10 +02:00
Mike Hearn
c43362e128
FakeTxBuilder: don't throw checked exceptions, it's just annoying.
2014-04-22 16:51:12 +02:00
Mike Hearn
e1d6707626
Move some testing utilities to a new testing subpackage and rename TextUtils to reflect what it actually does.
2014-04-22 16:48:49 +02:00
Mike Hearn
98fc5827f2
Make some accessors on Ping/Pong public.
2014-04-22 16:48:27 +02:00
Andreas Schildbach
b4644fdf81
Fix size of encrypted bytes when encrypting private keys. Also change decrypting to use similar code.
2014-04-22 14:26:08 +02:00
Andreas Schildbach
53147fab16
Add switch to disable download of pending transaction dependencies. This becomes necessary because the current recursive download strategy is often triggering a stack overflow on Android devices.
2014-04-22 14:24:33 +02:00
Andreas Schildbach
b0fa5435a2
Fix parsing of empty labels and messages, and parsing of labels and messages with an unescaped equals sign in their value.
2014-04-22 14:21:11 +02:00
Mike Hearn
b3162cbc17
Fix a crash that can occur if a peer reports a chain height of zero (this is a protocol violation but such crashes were seen in the wild).
2014-04-22 14:03:10 +02:00
Andreas Schildbach
2708df58b3
Adjust MIN_NONDUST_OUTPUT down to 546 only for risk analysis. This is required because we start seeing more and more transactions using the new fee rules introduced with Bitcoin Core 0.9.
2014-04-18 11:57:36 +02:00
Mike Hearn
5c8cf6bc38
Deprecate Script.isSentToP2SH() as it did the same thing as isPayToScriptHash.
2014-04-15 17:28:55 +02:00
Mike Hearn
f19741d2ab
Add a toString for reject messages.
2014-04-15 13:34:18 +02:00
Matt Corallo
74d611218b
Add (de)serialization support for reject messages.
2014-04-14 17:09:13 +02:00
Mike Hearn
843fa633f3
Re-add verifyPki method to PaymentSession to avoid needless API churn.
2014-04-14 17:05:29 +02:00
Andreas Schildbach
81f62db0e9
Move BIP71 MIME types to PaymentProtocol class.
2014-04-14 16:40:39 +02:00
Andreas Schildbach
40d60306fa
Unit tests for signing and verifying both valid and expired payment requests.
2014-04-14 16:40:39 +02:00
Andreas Schildbach
c6b215d79c
Add signing of payment requests to PaymentProtocol class.
2014-04-14 16:40:39 +02:00
Andreas Schildbach
4502c40e59
Move verification of payment requests into new PaymentProtocol class.
2014-04-14 16:40:39 +02:00
Andreas Schildbach
f13c437a54
Fix X509UtilsTest ended up in wrong package.
2014-04-14 16:35:39 +02:00
Jakob Stuber
188cf6081d
Add support for creating multisig inputs scripts that redeem P2SH outputs
2014-04-14 16:34:24 +02:00
Mike Hearn
2379effd63
ECKey: switch away from the deprecated DERInteger class.
2014-04-08 17:18:01 +02:00
Andreas Schildbach
6087e43377
Upgrade to Guava 16.0.1.
...
Resolves issue 375.
2014-04-08 16:49:09 +02:00
Mike Hearn
feba332e6e
Upgrade to Bouncy Castle 1.50. Patch from Peter Dettman. Resolves issue 497.
2014-04-08 16:28:03 +02:00
Mike Hearn
e372aa4430
Implement equals/hashCode for ECDSA/TransactionSignature, and make them immutable.
...
Change the canonicalisation method to return a canonicalised copy, if required, and change the name to force users to notice that it's no longer mutating the object.
Resolves issue 544.
2014-04-07 18:41:40 +02:00
Mike Hearn
fbf700391f
TransactionInput: verify(): don't crash if the given output has no parent. Clears a static analysis warning.
2014-04-07 18:21:04 +02:00
Mike Hearn
782edd8ea8
TransactionOutput: add equals/hashcode/duplicateDetached methods.
2014-04-07 17:41:04 +02:00
Mike Hearn
af07acd1b6
Payment protocol: add PaymentSession.getNetworkParameters method.
2014-04-07 14:58:55 +02:00
Mike Hearn
8e61a2027f
Move X509Utils/TrustStoreLoader, add JavaDocs, and add back a parameter to allow location data to be included in the display name.
2014-04-07 13:27:49 +02:00
Andreas Schildbach
6f4315ed4d
Extract loading of X.509 trust stores to TrustStoreLoader.
2014-04-07 12:07:36 +02:00
Andreas Schildbach
e7eec49671
Extract getDisplayNameFromCertificate() into new X509Utils class. Also joins PkiVerificationData.name and .orgName into one .displayName. Adds tests using client/smime certificates of mine.
2014-04-07 12:07:36 +02:00
Andreas Schildbach
e640d1eec3
Cheap test to see if an input stream is a wallet.
2014-04-05 23:14:35 +02:00
Mike Hearn
918ceb8f55
Fix unit test broken by less aggressive backoff time.
2014-04-04 15:23:56 +02:00
Mike Hearn
150e9fb7df
More mock clock conversions, to avoid failures when running test cases independently.
...
Probably we should be injecting a mock Clock class so it goes away at the end of each test, but this would complicate the API somewhat.
2014-04-04 15:06:45 +02:00
Mike Hearn
272ee434c0
Consistently mark parent as nullable in TransactionOutput
2014-04-03 16:26:43 +02:00
Mike Hearn
f9e1b1e9e6
PeerGroup: tweak global backoff to be faster.
2014-04-01 16:53:00 +02:00
Mike Hearn
a2afe470c2
PeerGroup: bugfixes to backoff.
...
1) Do the wait even on the exception path so if discoverPeers throws, we don't bypass the sleep.
2) Move some field accesses inside the lock.
Resolves issue 527.
2014-04-01 16:48:31 +02:00
Mora Zyx
b720a868a7
Replace usages of currentTimeMillis where result is / 1000 with currentTimeSeconds
2014-03-29 14:41:44 +01:00
Andreas Schildbach
2cbdf324ab
Fix race of mock clock with current time if tests are all run sequentially. This commit requires you to use one of the setMockClock() variants before being able to roll it.
2014-03-29 12:01:24 +01:00
Andreas Schildbach
1b0954a84a
In Transaction.toString(): For outpoints, show the pubkey-hash of the connected output (if available). This makes it easier to debug wallets.
2014-03-27 11:11:32 +01:00
Mike Hearn
6c5e1344ba
Add a Utils.currentTimeSeconds method with a TODO to convert other usages over
2014-03-26 20:05:52 +01:00
Mike Hearn
a31010b379
BloomFilter: javadoc updates
2014-03-26 20:05:52 +01:00
Mike Rosseel
a22cc7f698
mark didn't really make a mark
2014-03-26 16:51:42 +01:00
Andreas Schildbach
b303d77029
Allow shutting down wallet auto-saving.
2014-03-26 13:56:43 +01:00
Mike Hearn
0ed260bae2
Payment protocol: misc enhancements.
...
Stop using the JDK store and use our own, to make the StartSSL fix effective.
Include the certs in the exception thrown if the chain doesn't verify.
Support loading from a file in the PaymentProtocol tool.
Print the certs out in the PaymentProtocol tool if there's an error.
2014-03-23 19:24:56 +01:00
Mike Hearn
feecc8f486
PaymentSession: extract names from S/MIME certificates as well as SSL certs.
2014-03-23 18:58:08 +01:00
Mike Hearn
822c9011b2
ECKey: fix bug where creation time was lost when encrypting/decrypting.
2014-03-20 14:28:04 +01:00
Mike Hearn
e397928ec3
ECKey: preserve compression state when deserializing from ASN.1.
...
Resolves issue 528.
2014-03-17 17:42:56 +01:00
Andreas Schildbach
f27558bcd2
Include the hash160 of addresses in Wallet.toString(). This makes it easier to debug wallets just from the dump.
2014-03-17 16:38:51 +01:00
Mike Hearn
a49f643cdc
Wallet: disallow adding of keys that don't match the wallet's encryption state.
2014-03-17 16:30:57 +01:00