Commit graph

4352 commits

Author SHA1 Message Date
Andreas Schildbach
85cc162642 PeerGroup: migrate connection retry logic to java.time API 2023-03-10 17:19:25 +01:00
Andreas Schildbach
da8b9ce434 Wallet: migrate lastBlockSeenTime field to java.time API 2023-03-10 16:47:38 +01:00
Andreas Schildbach
be0b2b46b8 PaymentSession: migrate getters to java.time API 2023-03-10 16:43:09 +01:00
Andreas Schildbach
95776f28e3 gradle.yml: set log level to info for the Java CI build
This causes standard output to grow to about 50.000 lines.
2023-03-10 16:07:31 +01:00
Andreas Schildbach
9081d0fd2d WalletTest: reduce false positive rate in marriedKeychainBloomFilter()
This will hopefully reduce spurious test failures.
2023-03-10 15:21:40 +01:00
Andreas Schildbach
63ed4275ac SPVBlockStoreTest: increase threshold for performanceTest() to 5 seconds
This will hopefully reduce spurious test failures.
2023-03-10 14:50:03 +01:00
Andreas Schildbach
c205c67127 KeyChainGroupTest: fix spurious test failure of bloomFilterForMarriedChains()
This was caused by expected bloom filter false positives.
2023-03-10 14:06:19 +01:00
Andreas Schildbach
fb2dad432b WalletTest: fix spurious test failure of witnessTransactionGetFeeTest()
This was caused by a shorter than expected signature encoding, which
can happen in rare cases.
2023-03-10 13:55:30 +01:00
Andreas Schildbach
1484ff595a DefaultRiskAnalysis: don't try to risk-analyze if wallet has not seen any blocks 2023-03-10 10:27:19 +01:00
Andreas Schildbach
54754e14e9 EncryptableItem, ECKey, DeterministicKey, DeterministicSeed: migrate creationTime field to java.time API 2023-03-10 09:28:27 +01:00
Sean Gilligan
3023947df8 ByteUtils: move to o.b.base.internal
We don't consider ByteUtils to be part of our external API.
2023-03-10 01:28:23 +01:00
Sean Gilligan
ec8622e393 gradle.yml, graalvm.yml: update Gradle to 7.6.1 2023-03-10 01:14:28 +01:00
Andreas Schildbach
92ee36848c DeterministicSeed: introduce static constructors meant for external consumers
* native constructors that were meant to be called by consumers now have static equivalents
* all native constructors are discouraged from being used by a JavaDoc comment
* one constructor that wasn't meant to be used by consumers is switched to private access
* tests and tools that resemble consumers are updated to use the new API

Note: although most native constructors are now deprecated, we're not using
annotations because we're still calling them.
2023-03-10 00:53:35 +01:00
Andreas Schildbach
2c28cadda5 MnemonicCode: in toMnemonic() throw unchecked rather than checked exception
When converting from entropy to mnemonic with `toMnemonic()`, a `MnemonicLengthException`
was thrown for entropies with invalid length. This is bad for two reasons:

- it is a checked exception, and the method will not be called with user input
- misleading exception name, the error is about the entropy length not the mnemonic

We now throw a `RuntimeException` instead. The resulting simplification of
calling code can be witnessed in `DeterministicSeed`.
2023-03-09 21:44:31 +01:00
Andreas Schildbach
566cd102b2 ScriptPatternTest: move p2shScriptHashFromKeys() from LegacyAddressTest 2023-03-09 20:51:26 +01:00
Andreas Schildbach
04d4443d08 LegacyAddressTest: separate test into p2shScriptHashFromKeys() and p2shAddressFromScriptHash() 2023-03-09 20:51:26 +01:00
Andreas Schildbach
a61da4fff6 Script: migrate creationTime field to java.time API 2023-03-09 15:09:07 +01:00
Andreas Schildbach
9ba34fc2ed DeterministicKeyChain: convert if-else in getEarliestKeyCreationTimeInstant() to terniary operator 2023-03-08 20:41:51 +01:00
Andreas Schildbach
2cd239eee0 KeyChainGroup: convert if-else in getEarliestChainsCreationTime() to terniary operator 2023-03-08 20:41:51 +01:00
Andreas Schildbach
18898f4fc5 Wallet, KeyChain, KeyChainGroup, PeerFilterProvider: migrate getEarliestKeyCreationTime() methods to java.time API 2023-03-08 20:41:46 +01:00
Sean Gilligan
c41128b4df AesKey: replace o.bouncycastle.c.p.KeyParameter
We were using KeyParameter as a wrapper for a byte[] containing an
AES Key and passing it around our API. This introduced an unnecessary
API dependency on Bouncy Castle. This PR adds an AesKey class
for the same purpose to replace it.

This is a breaking change, but one that should be easy to accommodate.
2023-03-08 18:13:21 +01:00
Andreas Schildbach
46dcfc6bda TestWithNetworkConnections: ask Wallet for an Address right away
Previously, it was asking for a key and converted manually.
2023-03-08 17:29:51 +01:00
Andreas Schildbach
16c90d2891 TimeUtils: migrate mock clock to java.time API
* Migrate `setMockClock()` parameters to Instant
* Migrate `rollMockClock()` parameters to Duration
* Rename to `clearMockClock()` from `resetMocking()`
* Use `Clock` internally to provide the time
2023-03-08 16:20:48 +01:00
Sean Gilligan
7a1c71c319 CryptoUtils: add digestRipeMd160() method, use it to wrap BouncyCastle 2023-03-08 09:46:44 +01:00
Sean Gilligan
fff3b7e837 TransactionWitnessTest: remove unused BouncyCastle import 2023-03-08 09:40:03 +01:00
Sean Gilligan
579a7e986a CryptoUtils: move onionChecksum() from PeerAddress 2023-03-08 02:04:13 +01:00
Andreas Schildbach
6eed19d449 PeerTest, TransactionBroadcastTest: clear the mock clock after some tests that use it 2023-03-07 16:08:40 +01:00
Andreas Schildbach
d1e2e71bb5 TransactionConfidence: migrate lastBroadcastedAt field to java.time API 2023-03-07 00:41:55 +01:00
Andreas Schildbach
c8904a41bd AbstractBlockChain: migrate estimateBlockTime() method to java.time API 2023-03-07 00:06:35 +01:00
Andreas Schildbach
5a69df0a81 Wallet, KeyChainGroup: migrate keyRotationTime field to java.time API 2023-03-06 23:56:49 +01:00
Sean Gilligan
86733a9414 build.gradle: update JavaFX to 17.0.6 2023-03-06 18:28:36 +01:00
Andreas Schildbach
558f6df127 DownloadProgressTracker: migrate progress() method to java.time API 2023-03-06 09:58:48 +01:00
Andreas Schildbach
310b93be4e Peer, PeerGroup: migrate fastCatchupTime field to java.time API 2023-03-06 09:50:07 +01:00
Andreas Schildbach
838b12c046 CheckpointManager: migrate checkpoints map to java.time API 2023-03-06 09:39:02 +01:00
Sean Gilligan
b1ede764a7 Wallet: fix JavaDoc error that was breaking JDK 11 build 2023-03-06 09:35:42 +01:00
Sean Gilligan
1853a63f69 DeterministicHierarchy, MnemonicCode: migrate BIPXX_STANDARDISATION_TIME to java.time API
Deprecate BIPXX_STANDARDISATION_TIME_SECS int constants. Replace with
BIPXX_STANDARDISATION_TIME Instant constants.
2023-03-06 01:24:22 +01:00
Sean Gilligan
8bdc35a32e Wallet: migrate fromWatchingKeyB58() and fromSpendingKeyB58() methods to java.time API 2023-03-06 00:44:34 +01:00
Andreas Schildbach
99bc95a93d WalletFiles: migrate delay field to java.time API 2023-03-05 22:05:39 +01:00
Andreas Schildbach
d3162a4403 SendRequest: migrate two invocations of deprecated NetworkParameters.fromAddress() method 2023-03-05 17:50:11 +01:00
Sean Gilligan
f2a7229676 MessageVerifyUtils: move to o.b.crypto.utils from o.b.utils
This class belongs in the crypto module.
2023-03-05 01:06:12 +01:00
Sean Gilligan
848d2d88bb StreamUtils: move to o.b.base.internal from o.b.base.utils 2023-03-05 01:02:20 +01:00
Sean Gilligan
8e35390b8a SegwitAddress: minor simplification in toBech32()
Calculate encoding using ternary operator and replace if statement.
2023-03-05 00:49:45 +01:00
Sean Gilligan
b83710a242 SegwitAddress: store witnessProgram as 8-bits/byte
Change the internal storage format from 5-bits/byte (Bech32 intermediate format)
to standard 8-bits/byte.

Remove now unneeded conversions and add conversion in toBech32().
2023-03-05 00:44:06 +01:00
Sean Gilligan
f8ac6b3405 SegwitAddress: store witnessVersion internally as a short
Separate witnessVersion from witnessProgram in private members.

Note that the witnessProgram is still stored in a 5-bit per byte encoding
as it was in the combined byte[]. A future PR will change it to 8-bit per
byte encoding.
2023-03-05 00:40:56 +01:00
Sean Gilligan
f9be0b2a3d Address: convert to interface
* Migrate protected members to subclasses
* Remove constructors
* Migrate hashCode and equals to subclasses
2023-03-05 00:38:55 +01:00
Sean Gilligan
6c84ffec85 ScriptBuilder: cast address to LegacyAddress before calling getHash()
In both of these cases we have already checked the ScriptType of the 
address and know that it is a LegacyAddress.
2023-03-04 10:08:44 +01:00
Sean Gilligan
4f66bfc462 MessageVerifyUtils: cast P2SH address to LegacyAddress
* Change the private compareP2SHScriptHashDerivedFromPubKey() method to
  take a LegacyAddress
* In caller cast address (after check for P2SH) to LegacyAddress
2023-03-04 09:58:50 +01:00
Sean Gilligan
9002edbe8f Base58: move tests to o.b.base
These should have been moved when the Base58 class was moved.
2023-03-03 22:45:48 +01:00
Sean Gilligan
d5aeaacc44 modular-architecture.md: improve diagrams, show 4 releases
This updates the document to have 4 diagrams, one for each of the
following releases:

1. 0.16.x (current stable release)
2. 0.17 (according to current plans)
3. 0.18 (according to current plans)
4. 0.19 (this more of a proposal than a plan at this point)

The diagrams have also been enhanced to differentiate between packages
and modules (aka JARs) and to distinguish between "api" and "implementation"
dependencies.

Hopefully this makes things much more clear. We can make further changes
as our plans and implementations change.
2023-03-03 20:24:00 +01:00
Andreas Schildbach
1c380de16d PeerAddress: migrate time field to java.time API 2023-03-03 20:06:34 +01:00