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)`.
* 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.
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.
* 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
* 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`.
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.