* 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`.
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.
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.
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`.
There is no longer a need to decorate `ScheduledThreadPoolExecutor` to support
`ListeningScheduledExecutorService` since `PeerGroup` no longer uses it.
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`.
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.
This also requires updating to the latest Gradle GraalVM Plugin,
which requires Gradle 7.4 or later.
Recent Gradle GraalVM Plugins don't require the `javaLauncher` setting (which
we had hardcoded to use JDK 17) so that setting is removed.
Also updates the container to Debian Bookworm, because we need
its specific (patched for JDK 17) Gradle version.
Note this change makes the JavaDoc build artifact reproducible.
Currently, buildah, Podman and Docker are supported.
The goals of the reference build are:
- Make our release process more transparent
- Improve reproducibility by shielding our build from the hosts
environment
- Reduce the trust necessary for running our build by shielding
the hosts environment from possible side effects of our build
Note both the signing and the uploading of release artifacts are out
of scope for the reference build.