Andreas Schildbach
b292679aa4
build.gradle: update Bouncy Castle to 1.78.1
2024-04-29 12:19:49 +02:00
Sean Gilligan
bd0a36b1e5
build.gradle: update equalsverifier to 3.16.1
...
This is needed for building with JDK 22.
2024-04-29 09:27:00 +02:00
Sean Gilligan
53a6b3e150
BitcoinNetwork: add address validation methods
...
There are use cases where an already parsed address needs to be validated
for a specific network. In one use case the address came from an external
source and needs validation with an error message displayed: that's what
`isValidAddress(Address)` is for. In the other case we can treat the invalid
address as a fatal error. That's `checkAddress(Address)`.
2024-04-29 09:19:18 +02:00
Andreas Schildbach
19cce08825
build.gradle: update protobuf-javalite to 4.26.1
2024-04-27 23:39:21 +02:00
Andreas Schildbach
dcd49e5645
ByteUtils: remove unused helpers
2024-04-27 23:24:45 +02:00
Sean Gilligan
7a00b82746
build.gradle: enforce Android flavor of Guava
2024-04-27 21:16:43 +02:00
Sean Gilligan
8dd7b3e0b8
BitcoinNetwork: add strings()
method to list names of all values
...
This simplifies code that needs a list of all the values.
2024-04-23 17:06:56 +02:00
Sean Gilligan
298a75808e
BitcoinNetwork: private static stream()
method
...
Create a private method to stream the `values()` array, as it is used in
multiple places.
2024-04-23 16:58:39 +02:00
hanmz
ead69daae6
ByteUtils: fix typos in JavaDoc comments
2024-04-23 10:58:17 +02:00
hanmz
1f591df71c
Buffers: fix typo in JavaDoc comment
2024-04-23 10:55:57 +02:00
Johannes Zweng
fb6aa09081
ECKey: add comments better explaining the meaning of recId
2024-04-10 15:55:58 +02:00
avoidaway
ece3943bab
LegacyAddress, BitcoinSerializer, MessageSerializer, TransactionReceivedInBlockListener, ECKey, ChildKeyDerivationTest: fix repetitive words in comments
2024-04-07 13:55:38 +02:00
snoppy
6cf2cb4211
Wallet, KeyChainGroup: fix typos in JavaDoc
2024-04-07 13:53:47 +02:00
Andreas Schildbach
1b4eafb7d6
build.gradle: update Guava to 33.1.0-android
2024-03-14 11:40:59 +01:00
Sean Gilligan
9dee165fec
ECKey: Make HALF_CURVE_ORDER package private
2024-03-11 10:08:00 +01:00
Sean Gilligan
e3f0f23ff9
ECKey: make CURVE
package private, provide accessor
...
* Make the static field ECKey.CURVE (which is a Bouncy Castle
type) package private and provide the ecDomainParameters() accessor
for those who really need it.
* Use the accessor in DefaultRiskAnalysisTest
* We will not update code within the `o.b.crytpo` package
to use the accessor, since we intend to migrate all/most
of those usages to the `java.security` types.
2024-03-11 10:06:02 +01:00
Sean Gilligan
3a28fb0274
LazyECPoint: make private curve
member static
...
We do not need to specify the curve for each instance as
bitcoinj uses SECP256K1 curve exclusively.
This change reduces per instance memory usage, simplifies the API,
and reduces public API dependence on Bouncy Castle.
One two-arg constructor is deprecated and replaced with a single-arg
constructor that no longer requires the curve parameter.
Just to be extra safe, in the deprecated method we validate the curve
argument and make sure it is the P256K1 curve.
Also correctly mark private `bits` field as @Nullable, and improve
JavaDoc and other comments.
2024-03-10 21:13:27 +01:00
Andreas Schildbach
155b404063
always use dots in "e.g."
2024-02-24 23:48:49 +01:00
Andreas Schildbach
5046ad3a49
build.gradle: update SLF4J to 2.0.12
2024-02-09 19:16:44 +01:00
Andreas Schildbach
e3ca33469f
Services: add NODE_P2P_V2 service bit
2024-01-16 20:19:25 +01:00
Andreas Schildbach
a0724fcbb2
Services: add NODE_COMPACT_FILTERS service bit
2024-01-16 20:19:25 +01:00
Andreas Schildbach
2c9cdb77cc
checkpoints.txt: refresh bundled checkpoints
2024-01-10 23:05:59 +01:00
Andreas Schildbach
1c27229a93
Prepare 0.17-SNAPSHOT
2023-12-20 17:47:41 +01:00
Andreas Schildbach
be826ce9b0
Tag 0.17-alpha3
2023-12-20 17:47:26 +01:00
Andreas Schildbach
0e8a51123b
Transaction: add back a constructor as deprecated
...
Problem: At the moment, we don't have a replacement.
2023-12-20 02:10:10 +01:00
Andreas Schildbach
7230fbf7e5
KeyChainGroup: reword two comments about fallback chains being skipped in future
2023-12-19 17:47:17 +01:00
Andreas Schildbach
4cf9fc5450
build.gradle: update Guava to 33.0.0-android
2023-12-19 15:49:20 +01:00
Sean Gilligan
51266b6bbc
Wallet: fix incorrect constructor JavaDoc
...
The (canonical) constructor does not create a wallet with a random seed.
2023-12-18 20:30:30 +01:00
Sean Gilligan
1f7ed7f94b
Wallet: improve JavaDoc for fromMasterKey()
...
The JavaDoc was incorrect/incomplete. The changes add `@param`/`@return` items,
fix errors, add important details.
2023-12-18 18:38:26 +01:00
Sean Gilligan
74153c321f
Context, HDKeyDerivation, KeyChainGroupStructure: fix punctuation regarding 'e.g.' in comments
2023-12-18 18:24:27 +01:00
Peter Todd
e03c6a500b
MainNetParams, TestNet3Params: update petertodd DNS seed
...
Moved to `.net` from `.org`.
2023-12-08 12:28:25 +01:00
Sean Gilligan
7e073f1793
Bech32: refactor, support arbitrary byte[] encodings
...
* Move/refactor utility methods from `SegwitAddress` to `Bech32`
* Add `Bech32.Bech32Bytes` class for wrapping `Bech32` 5-bit byte arrays
* Have existing `Bech32.Bech32Data` class extend `Bech32.Bech32Bytes`
* Add `encodeBytes` and `decodeBytes` to `Bech32` for encoding/decoding arbitrary `byte[]`
* Add tests for Nostr NIP-19 test vectors
2023-12-05 16:40:36 +01:00
Andreas Schildbach
89e190614a
build.gradle: drop the Eclipse plugin
...
We assume that these days the plugin isn't needed to set up bitcoinj within
Eclipse.
2023-11-19 23:12:10 +01:00
Sean Gilligan
f298a49162
build.gradle: update Jackson to 2.16.0
2023-11-19 23:00:09 +01:00
Andreas Schildbach
fe6382d850
build.gradle: update protobuf-javalite to 3.22.5
2023-11-16 15:47:29 +01:00
Sean Gilligan
7b6f48a739
build.gradle: update Bouncy Castle to 1.77
2023-11-16 15:31:20 +01:00
Sean Gilligan
8566f8a21c
Block: use stream in readTransactions()
...
* Use `IntStream` to build the list
* Return an unmodifiable list
2023-11-10 12:45:30 +01:00
Andreas Schildbach
d8e864fb24
TransactionConfidence: check for mutation of an already set source
2023-10-24 13:29:25 +02:00
Sean Gilligan
e0b46d7c64
Block, Peer: set TransactionConfidence source
more selectively
...
* Don't set it in `Block.readTransactions()` (this is a performance and
a layering issue)
* When received from the network (or simulating network reception in a test)
only set `source` to `NETWORK` if it was previously `UNKNOWN`.
2023-10-24 12:28:54 +02:00
Sean Gilligan
d347ef996e
BlockFileLoader: stream()
call streamBuffers()
...
`stream()` is `streamBuffers()` with a `map()` operation to
read a buffer into a Block. Make this more clear by removing
duplicated code.
2023-10-24 12:13:50 +02:00
Sean Gilligan
03d6d4cf87
build.gradle: update equalsverifier to 3.15.2
2023-10-24 11:57:41 +02:00
Sean Gilligan
e650f0f160
build.gradle: update Jackson to 2.15.3
2023-10-24 11:52:39 +02:00
Sean Gilligan
b8b64a339a
build.gradle: update SLF4J to 2.0.9
2023-10-24 11:48:23 +02:00
Sean Gilligan
1b16d0b87f
build.gradle: update Guava to 32.1.3-android
2023-10-24 11:46:11 +02:00
Andreas Schildbach
d326fadda0
WalletTool, BitcoinURITest: update fictious example URLs
...
- Use a subdomain of `example.com`
- Use HTTPS, though not strictly necessary with BIP-70
- Strip the `.php` suffix
2023-10-11 10:35:32 +02:00
Andreas Schildbach
432fa51168
EncryptedData, KeyCrypter, KeyCrypterScrypt: update links to MIT license
2023-10-09 10:11:33 +02:00
Sean Gilligan
f190f589e6
TransactionBroadcast: allow interrupt in dropPeerAfterBroadcastHandler()
...
If an `InterruptedException` occurs while sleeping in `dropPeerAfterBroadcastHandler()`,
close the peer immediately instead of delaying the exception to preserve a full 1-second
delay.
Peers/PeerGroups can be shut down, and they should shut down as quickly as possible.
2023-10-03 23:03:02 +02:00
Sean Gilligan
5513f7dff0
InternalUtils: new helper getUninterruptibly()
to replace Guava method
...
Update usages in `PeerGroup` and `PeerTest`.
2023-10-02 20:44:46 +02:00
Sean Gilligan
04a783282d
FakeTxBuilder: make BlockPair fields immutable
2023-10-02 20:38:48 +02:00
Sean Gilligan
fea737b39b
Address, AddressParser: improve JavaDoc regarding network normalization
2023-10-02 20:35:12 +02:00
Sean Gilligan
3dd29e2d3a
build.gradle: apply artifact normalization to all subprojects
...
Normalization is needed for reproducibility. Previously it was
applied only to `core`.
2023-10-01 09:41:06 +02:00
Andreas Schildbach
a9b9af8102
PeerGroup: check required services on discovered addresses via addr/addrv2
...
If the discovered peer has the required services, mark it with a slightly
higher priority than peers discovered via `PeerDiscovery`.
2023-10-01 09:27:43 +02:00
Sean Gilligan
2526f5c78a
BitcoinSerializer: use Network
not NetworkParameters
...
Also deprecate (unused) method `getParameters()`.
2023-09-30 18:27:28 +02:00
Andreas Schildbach
8bf4f57888
BitcoinSerializer: remove a whitespace at EOL
2023-09-30 18:23:37 +02:00
Andreas Schildbach
6686782ffa
ECKey: remove native interface to libsecp256k1
...
Of course, Bouncy Castle is still used.
2023-09-30 18:06:55 +02:00
Sean Gilligan
576adf229b
PBKDF2SHA512: remove redundant Mac.reset()
calls
...
Calls to `Mac.reset()` are not needed after `Mac.doFinal(input)`.
2023-09-25 15:21:13 +02:00
Sean Gilligan
3023188541
PBKDF2SHA512: simplify F()
by using ByteUtils.concat()
2023-09-25 15:14:07 +02:00
Sean Gilligan
053cd60dc5
PBKDF2SHA512: chain methods in INT()
...
Simplify slightly by using a more functional-style approach.
2023-09-25 15:11:15 +02:00
Sean Gilligan
e67401d7a5
PBKDF2SHA512: add JavaDoc comment to derive()
method
2023-09-25 15:08:00 +02:00
Andreas Schildbach
0d57e1ece1
MnemonicCode: fix comment about iteration count
2023-09-25 15:04:17 +02:00
Sean Gilligan
56658e44de
build.gradle: normalize file/directory permissions within JARs
...
This aims to make our build reprodicible.
2023-09-19 14:00:38 +02:00
Andreas Schildbach
f41b495610
build.gradle: strip timestamps from JavaDoc HTMLs
...
This aims to make our build reprodicible.
2023-09-16 22:09:51 +02:00
Andreas Schildbach
7605fa9535
build.gradle: strip timestamps from JARs
...
This aims to make our build reprodicible.
2023-09-16 22:08:45 +02:00
Sean Gilligan
81b78292e2
PeerGroup, FilterMerger: deprecate setting false-positive rate
...
In the bitcoinj code itself, the false-positive rate is never changed
after constructing a `PeerGroup` or a `FilterMerger`.
* Deprecate methods for setting Bloom Filter FP rate in both methods
* Add constructor params to `PeerGroup` so they can be set at construction
time, if non-default values are needed
2023-09-16 11:42:24 +02:00
Sean Gilligan
5955eee4c8
Wallet: replace Interables.concat()
with Stream.concat()
in getWatchedOutputs()
...
This simplifies the code and removes a Guava dependency.
2023-09-16 11:31:32 +02:00
Sean Gilligan
68e61d9507
Wallet: refactor getWatchedOutputs()
to use streams
...
1. Get a spliterator from the concatenated iterator
2. Use streams instead of nested loops
3. Extract `isWatchedScriptPubKey()` helper function
2023-09-16 11:28:56 +02:00
Sean Gilligan
bce4475aaf
replace Guava Bytes.concat()
with own ByteUtils.concat()
2023-09-16 11:22:11 +02:00
Sean Gilligan
daa4da8d9f
remove use of Guava @VisibleForTesting
on all package-private members
...
From now on we will only use this annotation on `public` or `protected` members.
2023-09-16 11:13:22 +02:00
Sean Gilligan
57b3649e55
PBKDF2SHA512: replace unneeded check for max dkLen
with comment
...
Since the check for `dkLen > (2^32 - 1) * H_LEN` is effectively a no-op,
replace it with a comment.
2023-09-16 09:07:50 +02:00
Sean Gilligan
b4f7deaba5
PBKDF2SHA512: calculate l
with integer math
2023-09-14 22:46:25 +02:00
Sean Gilligan
5a11957eb3
PBKDF2SHA512: declare/catch specific exceptions
...
Make it more clear which exceptions are thrown by `F` and caught by
the `try` in `derive()`.
2023-09-14 22:39:58 +02:00
Sean Gilligan
ee23c2d6ff
PBKDF2SHA512: don't allow negative count or dkLen
2023-09-14 22:37:09 +02:00
Sean Gilligan
140deb0669
PBKDF2SHA512: move dkLen check out of try/catch
...
It throws an exception so doesn't need an if/else
and it also doesn't need to be in the try.
2023-09-14 22:34:12 +02:00
Sean Gilligan
4e039df446
PBKDF2SHA512: make hLen a constant
2023-09-14 18:25:31 +02:00
Sean Gilligan
c830107bce
PBKDF2SHA512: set hLen to correct value of 64
...
This is a bugfix to the API, but since `MnemonicCode` always
passes `dkLen` of 64 and the `System.arraycopy()` on line 66 truncates
`baos.toByteArray()` to `dkLen` length, the call to `derive()` works
correctly for our use-case.
2023-09-14 18:21:53 +02:00
Andreas Schildbach
4b987cb172
PBKDF2SHA512: remove comment about SHA-1 test vectors
...
They won't pass against our SHA-512 based code, and we have
our tests now.
2023-09-14 17:07:23 +02:00
Andreas Schildbach
040e2f4b3e
PBKDF2SHA512Test: tests for PBKDF2SHA512.derive()
2023-09-14 08:17:53 +02:00
Sean Gilligan
b90af12aea
PBKDF2SHA512: update URLs in JavaDoc
...
The IETF `https:` URLs are what the previous `http:` URLs redirect to.
The Cryptofreak URL is the same but with `https:`.
2023-09-12 22:18:19 +02:00
Sean Gilligan
f7d2b38aae
PBKDF2SHA512: properly format JavaDoc
2023-09-12 22:16:48 +02:00
Sean Gilligan
7af3124f65
FilteringCoinSelector: use stream in select()
...
Note: this also prevents mutation of the candidate list which isn't
a problem as used within bitcoinj, but could be a problem if used
externally.
2023-09-12 19:01:41 +02:00
Sean Gilligan
0597c3383f
CoinSelector: mark as functional interface
...
The `@FunctionalInterface` annotation doesn't change behavior of `CoinSelector`
in any way. It just declares our intention that it be used as a functional
interface and will generate compiler errors if someone changes the code so that
it is no longer a SAM type.
2023-09-12 18:46:18 +02:00
Sean Gilligan
bd52545fb7
DefaultCoinSelector: use List.sort()
instead of Collections.sort()
2023-09-12 18:36:24 +02:00
Sean Gilligan
2be7ee33f8
DefaultCoinSelector: extract compareByDepth()
comparator
2023-09-12 18:34:24 +02:00
Sean Gilligan
9eaff37897
FilteringCoinSelector: make immutable
...
This is an API-breaking change because it requires a list of
`TransactionOutPoint` to be passed to the constructor and remove the
`excludesOutputsSpentBy(tx)` method.
`Wallet` is updated to use the new constructor.
2023-09-12 18:30:30 +02:00
Sean Gilligan
82feb7b831
CoinSelection: add defensive copy in constructor
2023-09-12 18:22:34 +02:00
Sean Gilligan
e8491bbd88
KeyTimeCoinSelector: use a stream in select()
...
Note that this removes the warning about exceeding the limit.
2023-09-12 18:19:14 +02:00
Sean Gilligan
339e0d0450
KeyTimeCoinSelector: factor out method isKeyBeforeCutoff()
2023-09-12 18:12:56 +02:00
Sean Gilligan
0c7e1aec3b
KeyTimeCoinSelector: use Wallet.getConfidence(parent)
in isConfirmed()
...
Also make `Wallet.getConfidence(parent)` package-private.
2023-09-12 18:09:06 +02:00
Sean Gilligan
bbe7f088ca
KeyTimeCoinSelector: check for parent is non-null in isConfirmed()
2023-09-12 18:05:07 +02:00
Sean Gilligan
110da96911
Wallet: use getAbsoluteFile()
when checking if parent directory exists
...
This fixes a NPE when using wallet-tool to create a new wallet on a path
without directory, e.g. `wallet-tool create --wallet=test.wallet`.
2023-09-07 17:44:04 +02:00
Andreas Schildbach
929088cde8
Sha256Hash: add back accessor getReversedBytes()
as deprecated
2023-09-07 10:55:34 +02:00
Andreas Schildbach
2cdbc986a8
VersionMessage: add back helper toStringServices()
as deprecated
2023-09-07 10:53:06 +02:00
Andreas Schildbach
e2b1c81b60
TransactionOutput: add back a constructor as deprecated
2023-09-07 10:49:58 +02:00
Sean Gilligan
c8bf030824
build.gradle: update EasyMock to 5.2.0
2023-09-02 18:09:47 +02:00
Andreas Schildbach
21549306ad
build.gradle: generate protobuf classes into the build directory
2023-09-02 16:31:26 +02:00
Sean Gilligan
4b2a5893ff
Peer: improve use of generics for GetDataRequest
...
This gets rid of several warnings including two that had been suppressed.
2023-09-02 00:58:26 +02:00
Sean Gilligan
0033918f82
Transaction: reduce visibility of two methodsn
...
This is a minor breaking change to anything relying on the methods that
now have package visibility, but that should be very rare.
2023-09-01 19:02:07 +02:00
Sean Gilligan
5ff114b7b8
TxConfidenceTable: new method getConfidence(Transaction)
...
Use it in `Wallet`.
2023-09-01 18:59:07 +02:00
Sean Gilligan
dfcaa97b6e
Wallet: use getConfidence(Transaction)
not Transaction.getConfidence()
2023-09-01 18:55:08 +02:00
Sean Gilligan
d45cccc8d6
CoinSelector: new static method fromPredicate()
to create CoinSelector
...
Use it in `ForwardingService`.
2023-09-01 18:38:14 +02:00