3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-19 13:45:48 +00:00

654 Commits

Author SHA1 Message Date
Adam Mackler
e2b802235d Extension of java.text.Format for locale-sensitive Bitcoin value formatting & parsing. 2014-08-24 00:35:08 +02:00
Mike Hearn
03c8cf5927 Wallet: ban usage of wallet.importKey with deterministic keys. 2014-08-23 20:42:22 +02:00
Mike Hearn
729c716b18 WalletTest: pin creation time of wallet key hierarchy in keyRotationHD test to avoid timing race. Should resolve issue 575. 2014-08-23 13:11:05 +02:00
Andreas Schildbach
9546a13870 Fix spelling UTXOS -> UTXOs. 2014-08-22 23:43:01 +02:00
Andreas Schildbach
8e5ab9356c Introduce Fiat as a holder for fiat values. Coin and Fiat share an interface Monetary so that monetary infrastructure can be re-used.
Adapt CoinFormat to be used with Monetary. Add an ExchangeRate value class that can convert from Coin to Fiat and back.
2014-08-21 15:10:27 +02:00
Andreas Schildbach
483b3bbc9b When a wallet is added to a block chain that has a lower block height than the chain, try to repair.
Adds a "crash simulation" unit test.
2014-08-21 13:49:46 +02:00
Kosta Korenkov
d8944b922f Make LocalTransactionSigner to sign P2SH inputs.
Transaction inputs are now prepopulated with empty scriptSig. Each signer
is expected to update this scriptSig with a signature at a proper place.
There is a new method in RedeemData to locate index of the key/signature
within scriptSig/program.
To generalize an above approach for all supported types of inputs,
RedeemData can now represent data for any type of input. For
pay-to-address and pay-to-pubkey inputs it is expected to contain single
key and CHECKSIG program.

Signers now accept ProposedTransaction object that could carry additional
metadata shared between signers. For now it shares derivation path of the
signing key.

To preserve the dummy sig feature, a new flag was introduced in a SendRequest.
It specifies whether to fill empty sigs with dummies during tx completion
or not. Default value is true (for backward compatibility).

There is a CustomTransactionSigner class that may be used as a base for
simple third-party signers (or may be not). It is used in unit test which
may be treated as a usage example.
2014-08-21 13:47:08 +02:00
Matt Corallo
ecd6afc7b7 Fix null getNewParser (again, and add test this time) 2014-08-18 14:11:47 -07:00
Kosta Korenkov
e2dbd2a3f7 Fix DeterministicKeyChainTest failing on Windows
Git changes line endings in files to CR+LF on Windows by default, while
protobuf always uses LF. That makes serialization tests fail.
2014-08-17 22:50:29 +07:00
Andreas Schildbach
4834fe6eb6 Remove TransactionConfidence.workDone. It doesn't seem useful and was somehow buggy. 2014-08-16 15:16:11 +02:00
Mike Hearn
f00aef2048 HDW: Add a getKeyByPath() method to wallet, and (experimental) sanity check precomputed keys before they're returned by the wallet API to guard against the potential of a bitflip in either the stored pubkey bytes, or the ECC precomputed tables. The chance of such a bit flip is small but such flips HAVE been seen in the wild against other bitcoin implementations, so it could happen to a bitcoinj user too. The consequences can be catastrophic (destroyed money) so best to try and do what we can. 2014-08-15 18:06:06 +02:00
Mike Hearn
f8bc4d544e HDW: Create/activate a new HD chain when a wallet is constructed if the passed KeyChainGroup is empty. This means you can back up a wallet immediately after construction even before you request a key. Thanks to Andreas for the suggestion. 2014-08-15 17:04:27 +02:00
Mike Hearn
014438b456 Take out the redundant SigHashType parameter to wallet.signTransaction.
In the end the API evolved in such a way that changing this param isn't that useful. To do contracts you tend to work with transactions directly, and a Wallet subclass that needs to do special signing by default can override the signing engine used.
2014-08-13 14:57:43 +02:00
Kosta Korenkov
f6b2fa5a2b Pluggable signers: simple local KeyBag signer
Introduced pluggable signers notion. Instances of
TransactionSigner could be added into the wallet, so that they subsequently
applied to transaction to complete it.
Existing signing code (Transaction.signInputs) was refactored into
LocalTransactionSigner, which is always implicitly added to any wallet.

Related pull request: #157
2014-08-12 17:58:29 +02:00
Mike Hearn
e8ba287029 HD wallets: experimental change to not trigger full lookahead when deriving keys. This allows a savvy app to get keys/addresses at startup fast, if they do so before starting up the peergroup (which wants all keys in the zone so it can calculate a Bloom filter). May be reverted if it causes trouble. 2014-08-11 17:53:33 +02:00
Mike Hearn
d824666c2f HD Wallets: fix a lookahead bug.
We were not previously triggering lookahead before calculating a Bloom filter, which means we might have missed transactions in some edge cases. Add a test to catch this and then fix up various unit tests to have fewer magic numbers and be more robust to changes.
2014-08-11 16:37:31 +02:00
Kosta Korenkov
0d2fb93536 Introduce MultisigKeyBag to expose P2SH redeem data
For married wallets KeyChainGroup now keeps redeem scripts together with keys
2014-08-11 11:34:20 +02:00
Mike Hearn
e41e0c4a1d Allow usage of signMessage for deterministic keys. 2014-08-06 16:26:48 +02:00
Mike Hearn
96e4774e79 Add support for fetching UTXOs from a peer using the getutxo message. 2014-08-06 13:43:51 +02:00
Kosta Korenkov
5cfdca1c98 Add ability to create scriptSigs with empty signatures
For partial scriptSig OP_0 is used as a signature placeholder:
Pay-to-address: OP_0 [pubkey]
Pay-to-pubkey: OP_0
P2SH with 2-of-3 CHECKMULTISIG: OP_0 OP_0 OP_0 [redeem script]
2014-08-05 20:49:40 +02:00
Andreas Schildbach
299879c418 Allow fallback URLs for BIP72 payment request fetching. Adds unit tests. 2014-08-04 14:30:59 +02:00
cyberzac
eff9ac2ecc Support for bundling an optional info Protobuf ByteString with a PaymentAck message 2014-08-03 21:02:40 +02:00
Mike Hearn
fe6f5aff01 Payment channels: ByteString.EMPTY -> null 2014-07-31 16:18:48 +02:00
cyberzac
1153192be8 Support for bundling an optional info Protobuf ByteString with an UpdatePayment message. 2014-07-31 16:01:38 +02:00
Mike Hearn
4dc3392719 Fix Java 6 compatibility. 2014-07-31 15:53:14 +02: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
Carlos Lopez-Camey
e208430ab6 adds helper methods Transaction.getWalletOutputs, TransactionOutput.getAddressFromPubKey and TransactionOutput.getAddressFromScript. 2014-07-27 13:15:20 -06:00
Andreas Schildbach
c6659bcf5f BIP38: Fix test using supplementary characters in the passphrase. 2014-07-23 16:07:26 +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
Andreas Schildbach
72b7929523 Getter for addresses watched by wallet. 2014-07-15 14:42:20 +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
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
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
Andreas Schildbach
c7fe06d4c7 Fix java package of ExponentialBackoffTest. 2014-07-08 13:54:05 +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
Devrandom
39d8da6764 relax assumption that HD seeds are 128 bits 2014-07-02 14:39:32 -07: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
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
09286a932c Remove some superfluous new String() calls around HEX.encode, now it has a sane API. 2014-06-24 14:11:09 +02:00