Commit Graph

4907 Commits

Author SHA1 Message Date
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
Sean Gilligan
539d25b35a KeyDerivationTasks: replace wildcard import
Replace import of `jakarta.annotation.*` with `jakarta.annotation.Nullable`.
2023-11-21 21:48:12 +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
69366caa9d wallettemplate: migrate to Jakarta Annotations
Migrate `@Nullable` from JSR 250 (Common Annotations) to Jakarta
Annotations.

Jakarta Annotations supports Java modules, so this is necessary
to migrate to running `wallettemplate` on the module path.
2023-11-19 23:08:50 +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
Sean Gilligan
5d3cd2c115 TestWithNetworkConnections: make peerServers final 2023-11-10 12:37:47 +01:00
Andreas Schildbach
02ef9d50c3 WalletTool: new option for setting the type of filter for syncing
Currently, only server-side (bloom) filtering is supported.
2023-10-24 23:50:30 +02:00
Andreas Schildbach
c210fe7ba2 WalletTool: remove validation mode option
Keep only "simply payment verification" (SPV). Full validation is
utterly broken in bitcoinj, not tested, not maintained and as of
today nobody cares.
2023-10-24 23:46:29 +02: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
6219c56138 BlockFileLoaderBitcoindTest: add test streamEntireBitcoindBlockchainAsBlocks()
This test is useful for performance comparisons with
`streamEntireBitcoindBlockchainAsBuffers()`.

With adding to the `TxConfidenceTable` removed from `Block.read()` and
on a fast, modern laptop, `streamEntireBitcoindBlockchainAsBuffers()`
currently takes under 2 minutes while `streamEntireBitcoindBlockchainAsBlocks()`
takes over 5 minutes.
2023-10-24 12:21:22 +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
712d8aac10 build.gradle: update JavaFX to 21.0.1 2023-10-24 12:07:04 +02:00
Sean Gilligan
dfe8d3866c build.gradle: updade picocli to 4.7.5 2023-10-24 12:00:11 +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
Sean Gilligan
ac9967b1d9 .gitlab-ci.yml: enable Gradle Build Scan 2023-10-24 11:44:20 +02:00
Sean Gilligan
474d8d91f7 gradle.yml, graalvm.yml: enable Gradle Build Scan
Adds a Gradle initialization script to non-interactively agree to the
Gradle Build Scan terms of service. Provided by Stefan Wolf via GitHub
Issues, see

https://github.com/gradle/gradle/issues/26316#issuecomment-1739245349

Tested with Gradle 4.4 to Gradle 8.4.
2023-10-15 14:11:08 +02:00
Sean Gilligan
bfae3a8913 gradle.yml: update JDK to 21 in the build matrix 2023-10-13 00:48:14 +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
531ba5cfd5 gradle.yml, graalvm.yml: update Gradle to 8.4 2023-10-05 10:48:58 +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
b959b7bdfb KeyDerivationTasks: use Thread.sleep() instead of Guava Uninterrruptables
We don't really need to sleep uninterrruptibly here. The code is only displaying
a progress indicator and the `call()` method is already throwing `Exception`.
2023-10-02 21:47:43 +02:00
Sean Gilligan
7f341d9aab KeyDerivationTasks: Use Duration for PROGRESS_UPDATE_INTERVAL 2023-10-02 21:44:52 +02:00
Sean Gilligan
cb740d2eaa PeerTest, PeerGroupTest: replace usage of Guava Lists 2023-10-02 21:10:08 +02:00
Sean Gilligan
647c7ecbd7 TransactionBroadcastTest: use AtomicLong over Guava AtomicDouble
Use `AtomicLong` with some wrapping and unwrapping instead.
2023-10-02 21:06:17 +02:00
Sean Gilligan
1b63903ad3 TestWithPeerGroup: remove unneeded use of ListeningScheduledExecutorService
There is no longer a need to decorate `ScheduledThreadPoolExecutor` to support
`ListeningScheduledExecutorService` since `PeerGroup` no longer uses it.
2023-10-02 20:48:49 +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
a5ab229f9f WTUtils: remove redundant public on interfaces 2023-10-01 16:47:33 +02:00
Sean Gilligan
a89e309d66 ClickableBitcoinAddress: make address property final 2023-10-01 16:45:29 +02:00
Sean Gilligan
b0ef27a019 WalletSetPasswordControllerTest: test key derivation time
Ensure key derivation time with `WalletSetPasswordController#SCRYPT_PARAMETERS`
isn't inordinately slow. This is in preparation for some forthcoming changes to
the progress meter in `WalletSetPasswordController`.
2023-10-01 16:06:58 +02:00
Sean Gilligan
d9e33a553a build.gradle: enable JUnit 5 for wallettemplate 2023-10-01 15:51:32 +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
1a30c00df8 WalletTool: remove unused/obsolete print help code
This code has been unused since the conversion to picocli which generates
help text and automatically handles printing it. The `wallet-tool-help.txt`
file was deleted in the commit with the picocli implementation.

Note: this also removes the last use of Guava in WalletTool.
2023-10-01 01:11:12 +02:00
Sean Gilligan
41885df896 PrintPeers: remove unused imports
This is the last Guava import in `examples`.
2023-09-30 18:33:13 +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
Sean Gilligan
eefadef5f6 build.gradle: update JavaFX to 21 2023-09-30 18:15:36 +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