Commit Graph

3947 Commits

Author SHA1 Message Date
Andreas Schildbach
77de8684e9 SPVBlockStore: deprecate constant HEADER_MAGIC
It's an implementation detail. We should be switching this to private in future.
2024-07-12 12:59:41 +02:00
Andreas Schildbach
147e479e63 SPVBlockStore: lock the store file as early as possible 2024-07-12 12:17:53 +02:00
Andreas Schildbach
ce126353a2 BuildCheckpoints: create mixed-format checkpoints
Create checkpoints with 12 (or less) bytes of work in the old V1 format,
otherwise V2. This will make checkpoint files easier to review.

This un-deprecates the V1 format in StoredBlock, since it's no longer
planned to remove that in the forseeable future.

This also reverts recent changes to the bundled checkpoints
(commit de8afc67ca).
2024-07-01 15:53:03 +02:00
Andreas Schildbach
de8afc67ca CheckpointManager, BuildCheckpoints: support checkpoints with 32 byte chain work
* `BuildCheckpoints` now always creates checkpoints with 32 byte chain work
* `CheckpointManager` knows how to read both 12 and 32 byte chain work

Also updates the bundled checkpoints to the new format and a test.
2024-06-28 18:50:45 +02:00
Andreas Schildbach
db329beca5 CheckpointManager, BuildCheckpoints: remove support for binary checkpoint format
Use the textual format instead.
2024-06-27 21:21:45 +02:00
Andreas Schildbach
f5c36e1a80 checkpoints.txt: refresh bundled checkpoints 2024-06-27 20:41:27 +02:00
Andreas Schildbach
a1257ce83d StoredBlock: add serializeCompactV2(), deserializeCompactV2()
The old format will soon run out of bytes for the chain work value.

Also deprecates the old methods and adds tests for the V2 format.
2024-06-27 18:23:29 +02:00
Andreas Schildbach
39f409f351 StoredBlock: rework comment about usage of serializeCompact(), deserializeCompact()
The explicit list of usages was already stale. Rather, just mention
it's being used internally.
2024-06-27 09:05:38 +02:00
Andreas Schildbach
a05fc05e56 StoredBlockTest: add tests for serializeCompact(), deserializeCompact(), moreWorkThan() 2024-06-27 08:59:28 +02:00
Andreas Schildbach
009f19abc1 StoredBlock: remove an outdated comment
We don't have unsafeBitcoinSerialize() any more.
2024-06-26 23:32:47 +02:00
Sean Gilligan
32e9145722 StoredBlock: update comment about CHAIN_WORK_BYTES
The original comment, written in 2011 said "12 bytes should be plenty for now".
As of June 2024, we know that 12 bytes is not enough.
2024-06-24 19:14:38 +02:00
Sean Gilligan
0aa17cd0a2 ByteUtils: improve JavaDoc comments for bigIntegerToBytes(), bytesToBigInteger() 2024-06-24 19:11:16 +02:00
Sean Gilligan
fae543bb6d StoredBlock: use ByteUtils.bigIntegerToBytes to convert chainWork
This is a fix for Issue #3410 that will allow main net blocks above
849,137 to be processed. As of block 849,138 we can no longer fit
total chainwork in a 12-byte *signed* field. This fix "kicks the can
down the road" by making the field 12-bytes *unsigned*.

We should open a new issue to address the long term need for bigger
values. Note that converting the field to 12-byte unsigned precludes
us from using the most-significant bit as a flag for a new format, but
we should be able to pick some arbitrary value, say 0xA0 as a version
flag and declare that values less than 0xA0 are "unversioned".
2024-06-23 18:49:54 -04:00
Andreas Schildbach
d265ea0aa8 ECKey: remove mention of mailing list in documentation 2024-06-01 23:58:11 +02:00
Andreas Schildbach
6feeb5a1c0 TransactionConfidence: rename getLastBroadcastTime() method from lastBroadcastTime()
This effectively reverts commit c2cabead9a.
2024-05-14 17:51:00 +02:00
Andreas Schildbach
ff42c49648 PeerGroup: rename getFastCatchupTime() method from fastCatchupTime()
This effectively reverts commit 45f87d8339.
2024-05-14 17:51:00 +02:00
Andreas Schildbach
781d64550b Script: rename getCreationTime() method from creationTime()
This effectively reverts commit b309308076.
2024-05-14 17:51:00 +02:00
Oliver Aemmer
70fb77d2d1 wallet.proto: rename to Key.Type.ENCRYPTED from ENCRYPTED_SCRYPT_AES 2024-05-05 14:24:59 +02:00
Andreas Schildbach
92c2c29508 Prepare 0.17-SNAPSHOT 2024-04-29 20:13:45 +02:00
Andreas Schildbach
e42c59b818 Tag 0.17-alpha4 2024-04-29 20:12:26 +02:00
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