Commit graph

2407 commits

Author SHA1 Message Date
Oscar Guindzberg
2fa06e276f MainNetParams, TestNet3Params: Sync DNS seeds with Bitcoin Core. 2019-11-10 19:07:50 +01:00
Andreas Schildbach
d512d4fc37 Derive lock names from the class they protect.
Also append the word "lock" to the name.
2019-11-06 09:48:34 +01:00
Andreas Schildbach
ec851df530 ProtobufConnection: Remove unused class.
It was forgotten when removing Micropayment Channels.
2019-11-06 09:28:45 +01:00
Andreas Schildbach
f3b48f102f SPVBlockStore: Double the default capacity.
This has proven to be a sensible value for mobile devices.
2019-10-22 23:40:29 +02:00
Peter Dettman
7629677103 Track point compression in LazyECPoint, rather than ECPoint.
The reason is BouncyCastle 1.64 removed point compression tracking.
2019-10-22 19:13:27 +02:00
Andreas Schildbach
7eb9c73655 ECKey: Add helper method isPubKeyCompressed(), and use it. 2019-10-22 16:15:35 +02:00
Andreas Schildbach
b690803442 Update protobuf-java to 3.9.2. 2019-10-08 19:14:02 +02:00
Sean Gilligan
cc445b8fd1 BtcFormat: Fix "heading used out of sequence" JavaDoc error on JDK 13. 2019-10-01 22:02:51 +02:00
Andreas Schildbach
2288c2150f PeerGroup: Make private walletCoinsReceivedEventListener also take care of P2WPKH outputs.
P2WPKH outputs are a similar case as P2PK outputs in that inputs that spend them
cannot be matched by a bloom filter: their scriptSig is empty and their witness
(which would contain a matching pubkey) is not tested for a match. This is a
shortcoming of the SegWit spec.

Hopefully this fixes https://github.com/bitcoinj/bitcoinj/issues/1690
2019-10-01 21:44:46 +02:00
Andreas Schildbach
7f97c8afa6 Change wording p2pubkey to P2PK. 2019-10-01 20:33:07 +02:00
Sean Gilligan
619e8805d6 Wallet: Improve JavaDoc for Wallet#commitTx and Wallet#maybeCommitTx. 2019-09-11 11:04:17 +02:00
Andreas Schildbach
a8230ad495 Peer: Wrap log.debug() in log.isDebugEnabled(). 2019-08-31 22:29:05 +02:00
Andreas Schildbach
1fbd280f14 AbstractBlockChain: Wrap log.debug() in log.isDebugEnabled(). 2019-08-31 22:28:26 +02:00
Andreas Schildbach
8db6639cf4 Peer: Raise log level when logging the setting of a filter. 2019-08-31 21:54:46 +02:00
Andreas Schildbach
726c7291ac Wallet: Remove global coinSelector and allowSpendingUnconfirmedTransactions().
Coin selection is a per SendRequest, per createSend() or per getBalance() call affair.
Having it wallet-global can lead to race conditions, as sometimes experienced in the
WalletTest unit tests.
2019-07-26 20:30:27 +02:00
Andreas Schildbach
a49f681d24 KeyCrypterScrypt: Print all Scrypt parameters, not only N. 2019-07-20 17:28:53 +02:00
Andreas Schildbach
1e55d72dc3 SendRequest: Add allowUnconfirmed() convenience method. 2019-07-15 12:26:14 +02:00
Andreas Schildbach
161bd68dd2 DefaultCoinSelector: Make it a singleton. 2019-07-15 12:07:27 +02:00
Andreas Schildbach
d67f060e27 Remove Micropayment Channels.
Now that HTLC-based bi-directional payment channels are state of the art, nobody will ever use the old style.
2019-07-15 11:05:14 +02:00
Sean Gilligan
e5a6808fd3 HDPath: M() and m() factory methods
Refactor existing of() factory methods to M() (for public key) and
add m() methods for private keys. Also add varargs methods.
2019-07-10 15:46:21 +02:00
Sean Gilligan
823a03db77 Move HDPath methods from HDUtils to HDPath
All HDPath-related methods in HDUtils are now deprecated and delegate
to HDPath. HDPath now contains parsePath code.
2019-07-07 10:13:26 +02:00
Sean Gilligan
b59add47a7 DeterministicKey: toString() output of creation time now corresponds with
getCreationTimeSeconds(), but we indicate if the creation time was inherited
from the parent.
2019-07-05 22:55:31 +02:00
Sean Gilligan
855c061c0c HDPath: Use varargs for extend() and add tests. 2019-07-05 22:40:38 +02:00
Sean Gilligan
a9dd62e34e Replace deprecated Guava Maps.newHashMap()
For JDK7+ `new` with the diamond syntax is preferred.
2019-07-05 12:08:14 +02:00
Sean Gilligan
ba922a910a Fix NPE in o.b.c.Utils runtime and os detection
If getProperty returns null calling toLowerCase results in NPE. Instead
we’ll use a default value and check for .equals(“”) in the following if.
2019-07-02 21:08:27 -07:00
Sean Gilligan
035839fdbf StoredBlock: Mark two constants as private. 2019-06-23 18:20:35 +02:00
Sean Gilligan
b9d88e20ef AbstractBlockChain: Fix typos in JavaDoc. 2019-06-23 18:12:42 +02:00
Sean Gilligan
474700ff50 StoredBlock: Add JavaDoc for constructor. 2019-06-23 18:11:43 +02:00
Sean Gilligan
99b019e5b0 New HDPath type to replace ImmutableList<ChildNumber>. 2019-06-23 14:20:15 +02:00
Sean Gilligan
3c5744a6cb AppDataDirectory: Move from wallettemplate/.utils to core/.utils
This allows usage in both wallettemplate and tools and replaces
similar code in BlockFileLoader.java in core.
Requires minor back-port of Path.of() functionality from JDK11.
2019-06-20 10:09:21 +02:00
Sean Gilligan
ebc59d06c6 MissingSigResolutionSigner: Make the missingSigMode member private and final. 2019-06-17 10:37:33 +02:00
Sean Gilligan
ea26e6bd26 StoredBlock: Make member fields final. 2019-06-12 11:44:40 +02:00
Cameron MacKeen
42cc626717 Transaction: Fix typos in JavaDoc. 2019-06-04 12:11:20 +02:00
Sean Gilligan
806afa0441 Replace Guava newArrayList()/newLinkedList() with direct call to the JDK 7 constructor.
This is recommended by deprecation comment in Guava.
2019-06-01 13:58:11 +02:00
Andreas Schildbach
05ab09b40b ECKey: Fix JavaDoc encoding error on Windows. 2019-05-30 09:10:06 +02:00
Andreas Schildbach
18f9108c6b LegacyAddress: Remove deprecated methods. 2019-05-25 15:39:16 +02:00
Premek
10607fb9f5 AbstractBlockChain: Try connecting orphans more often in add().
This fixes a memory leak.
2019-05-25 15:27:13 +02:00
Matthew Leon
56a44661b6 ScriptPattern: Remove redundant opcode check in isSentToMultisig().
The following line has a check that is strictly stronger.
2019-05-24 15:46:04 +02:00
Matthew Leon
b385e9ed2f ScriptPattern: In isSentToMultisig() replace exception flow by conditional. 2019-05-24 15:40:14 +02:00
Matthew Leon
b51922dde7 ScriptPattern: Correct and clarify the JavaDoc on isSentToMultisig() 2019-05-24 15:35:49 +02:00
Matthew Leon
30e21ea3a0 ScriptChunk.decodeOpN: Remove checkState().
The checkState() on ScriptChunk.decodeOpN() was excessively strict: it excluded OP_0. As the method calls Script.decodeFromOpN(), which itself has a check on the passed-in opcode, we simply remove the check entirely.

No code in bitcoinj was calling ScriptChunk.decodeOpN().
2019-05-21 08:51:25 +02:00
Matthew Leon
735b9143d2 Script: Simplify P2SH pushdata check in correctlySpends().
Simplify the check that all P2SH script content is comprised of pushdata operations, and give a clearer error message when this is not the case.
2019-05-20 10:33:40 +02:00
Matthew Leon
5647f48b0d ScriptChunk: Kill startLocationInProgram.
The startLocationInProgram field of ScriptChunk was used as a caching mechanism for storing the location of each ScriptChunk in a Script. This was memory-inefficient, as this integer was only actually used during interpretation of OP_CODESEPARATOR. Furthermore, it was dangerous and inconsistent: the ScriptBuilder methods, for example, do not properly set startLocationInProgram, leading to a potential runtime failure when interpreting ScriptBuilder-constructed Scripts.

Rather than caching each chunk's location, we add a method called size() that efficiently returns the size of a serialized ScriptChunk. During Script interpretation, we use this method to track the program counter.

Additionally, we add an exhaustive test to ensure that size() properly returns the size of a serialized ScriptChunk.

This will break any code that relied on ScriptChunk.getStartLocationInProgram().
2019-05-19 20:01:06 +02:00
Matthew Leon
0afaaad79a ScriptChunk: Fix IllegalArgumentException in toString() for invalid chunks.
Also see https://github.com/bitcoinj/bitcoinj/issues/1860
2019-05-19 19:51:26 +02:00
Matthew Leon
03f9e94824 ScriptOpCodes: Accept OP_FALSE and OP_TRUE in getOpCode().
Previously, only "OP_0" was accepted as the name for the 0x00 opcode. Similarly, only "OP_1" was accepted for 0x51.
2019-05-19 18:57:00 +02:00
Andreas Schildbach
ab2fb2f9cf KeyChainGroup: New CurrentKeyChangeEventListener that fires when a current key and/or address changes.
This also changes wallet-template to make use of the new listener for updating its current address in the UI.
2019-05-19 08:23:39 +02:00
Matthew Leon
cae0b385a4 ScriptChunk: Add missing @Nullable annotations to constructors. 2019-05-17 11:13:55 +02:00
Matthew Leon
e2e763bd33 ScriptChunk: Fix immutability. 2019-05-17 11:06:50 +02:00
Matthew Leon
67722ff0e8 ScriptOpCodes: Use the Guava BiMap interface to make the relationship between opCodeMap and opCodeNameMap explicit. 2019-05-17 11:00:39 +02:00
Matthew Leon
ce0509d97f TransactionWitness: Simplify toString() and make it more efficient. 2019-05-14 08:36:41 +02:00