Sean Gilligan
185f880e78
NetworkParameters: Move genesis block construction to lazy getter
...
This refactoring breaks the cyclic dependency of NetworkParameters constructors
on the constructors in Block and will allow us to migrate the code
now in the getGenesisBlock() methods into (atomic) factories/constructors
in `Block` allowing us to create block objects that are unmodifiable/immutable.
2021-09-08 11:07:11 +02:00
Sean Gilligan
787c9caced
Block, AbstractBitcoinNetParams subclasses: Constants
...
* Add Block.STANDARD_MAX_DIFFICULTY_TARGET and use in subclasses
* Always define maxTarget in terms of a nBits constant and use
Utils.decodeCompactBits()
* Define constants for GENESIS_TIME and GENESIS_NONCE
2021-09-08 00:51:24 +02:00
Sean Gilligan
01efcea5ea
RegTestParams: Set RegTest MAX_TARGET to match EASIEST_DIFFICULTY_TARGET
...
Clear the lowest 232 bits.
2021-09-08 00:34:46 +02:00
Sean Gilligan
9fa36d495f
UnitTestParams: Set UnitTest maxTarget to EASIEST_DIFFICULTY_TARGET
...
The tests are currently using a custom value for maxTarget
that can’t be generated via CompactBits format.
This commit changes the string constant to match what would be
generated by using Utils.decodeCompactBits(EASIEST_DIFFICULTY_TARGET).
2021-09-08 00:29:53 +02:00
Sean Gilligan
42bb5b386e
AbstractBitcoinNetParams subclasses: Improve Genesis hash checking
...
1. Define Sha256 constants for expected hashes
2. Compare hashes in binary form
3. Move hash comparison to immediately follow Block creation
4. Add error message to the check state call
2021-09-08 00:24:11 +02:00
Sean Gilligan
34184f0949
ChainSplitTest: Use getGenesisBlock() getter
...
This is the only place where getGenesisBlock() is
not being used.
2021-09-08 00:20:10 +02:00
Sean Gilligan
0cb686481f
Block: Fix JavaDoc comment on EASIEST_DIFFICULTY_TARGET
...
It said “half of all possible hash solutions” which
led me to believe that decodeCompactBits() would
extend 1’s all the way out to the least significant
bit.
2021-09-07 12:27:54 +02:00
Sean Gilligan
6412db3319
UtilsTest: Add CompactBits test cases for common difficulties
2021-09-07 12:23:19 +02:00
Sean Gilligan
a19986d475
RegTestParams: remove redundant init of genesis block
...
(It looks like the override of getGenesisBlock() was added
back in 2013 when RegTestParams was a subclass of
TestNet2Params.)
2021-09-06 23:15:49 +02:00
Sean Gilligan
eb74d8aae4
Reorganize NetworkParameters subclass for easy diffs
...
Reorganize the initialization of the constants in each NetworkParameters
subclass so we can easily do diffs of `MainNetParms` vs `TestNet3Params`
and easily see how they are the same and how they are different.
I also reorganized the import statements so they “diff” better as well.
Other than those changes the only code I actually changed is
using the constant `PAYMENT_PROTOCOL_ID_UNIT_TESTS` instead of “unittest”
in getPaymentProcolId in UnitTestParams.
This will help us with the next step which is to create symbolic constants
for some of the parameters for the genesis blocks.
2021-09-05 13:38:59 -07:00
Sean Gilligan
2d9e43f51d
Block: cloneAsHeader() cleanup
...
* Fix redundant write of version in new block
* Re-order setting other fields more logically
2021-09-05 16:01:37 +02:00
Sean Gilligan
4a5207e7ce
FullPrunedBlockChain: Remove use of deprecated Block::getBlockInflation
2021-09-05 15:54:25 +02:00
Sean Gilligan
1df13312b3
AbstractBlockChain: Fix JavaDocs warnings
2021-09-05 15:51:44 +02:00
Sean Gilligan
09ba08ec7c
PeerAddress: Ignore time
in equals()/hashCode()
2021-09-05 00:39:13 +02:00
Sean Gilligan
345cfcad40
Address: Make binary constructor protected, fix JavaDocs
2021-09-05 00:36:19 +02:00
Sean Gilligan
083a8bda3b
core/org.bitcoin.*: Fix JavaDoc warnings
2021-09-05 00:30:21 +02:00
Sean Gilligan
9313097bad
Block: Remove deprecated constructor
2021-09-05 00:18:25 +02:00
Sean Gilligan
5ccc41f35b
BlockTest: Remove unneeded suppress deprecation warning
2021-09-04 09:56:58 +02:00
Sean Gilligan
56a1e24ed2
Block: add createGenesisTransaction() method
...
* Refactor code from createGenesis()
* Also replace (unnecessarily broad) catch of Exception with
catch of IOException
2021-09-03 12:06:01 +02:00
Sean Gilligan
c31d071a04
Block: Move NetworkParameters::createGenesis to Block
...
Its a factory method for creating Blocks, so it really belongs
there. Moving it there will also help us move further along
our path to reduced mutability in the Block class.
2021-09-02 09:31:19 +02:00
Sean Gilligan
05c911115e
Block: Merge copyBitcoinHeaderTo() into cloneAsHeader()
...
Merge copyBitcoinHeaderTo() into cloneAsHeader() as part of an
overall effort to reduce mutability of the Block class.
2021-09-02 00:42:34 +02:00
Sean Gilligan
cd8226987f
Block: Make EMPTY_BYTES constant private
2021-09-02 00:38:32 +02:00
Sean Gilligan
1463423310
Block: Add @VisibleForTesting to some mutating methods
...
These methods should only be used for testing and will hopefully be
deprecated and/or refactored to another class in the future.
2021-09-02 00:34:55 +02:00
Andreas Schildbach
c632aa19fa
AbstractBitcoinNetParams: Make use of REWARD_HALVING_INTERVAL constant
2021-09-01 09:20:20 +02:00
Sean Gilligan
fd75b539da
Sha256Hash: Clarify javadoc
2021-09-01 08:53:37 +02:00
Sean Gilligan
7b435620f4
README.md: Update again now that we support Gradle 7
2021-09-01 08:33:16 +02:00
Andreas Schildbach
8a775a37d8
build.gradle: Migrate from maven to maven-publish plugin
...
To publish to the local Maven repository, use `gradle publishToMavenLocal` rather than `gradle install`.
2021-09-01 01:37:28 +02:00
Sean Gilligan
1d52427f2f
build.gradle: Choose Gradle Protobuf Plugin by Gradle version
...
If Gradle version > 7.0 use compatible Gradle Protobuf Plugin 0.8.11,
else use 0.8.10.
2021-09-01 01:36:46 +02:00
Andreas Schildbach
b8c0438da2
.travis.yml: Remove Travis CI
...
Travis has stalled building for open source projects.
2021-08-31 18:54:51 +02:00
Sean Gilligan
a29aa8df5c
Github Actions: Use ‘temurin’ JDK 8 + 11
...
Temurin is the Eclipse Foundation’s successor to AdoptOpenJDK
and is likely to continue to be the most widely-used community
distribution.
Unfortunately, Temurin only provides JDK 8, 11, and 16,
and since bitcoinj can’t yet be built with JDK 16, we’ll
drop the JDK 15 build without replacing it with JDK 16.
2021-08-31 18:46:07 +02:00
Sean Gilligan
7efca6f19f
.gitlab-ci.yml: Use Debian Bullseye
...
* Move from ubuntu:bionic to debian:bullseye-slim
* Use Gradle version included in distro
* Remove unneeded `java -version` command
2021-08-31 18:19:46 +02:00
Andreas Schildbach
d351bce293
README.md: Core has a max Gradle of 6.9 as well.
2021-08-23 17:40:07 +02:00
Andreas Schildbach
6a9893c3df
MonetaryFormat: Support satoshi denomination.
2021-08-23 13:58:27 +02:00
Sean Gilligan
19a7a50746
README.md: Reflect max Gradle of 6.9.
2021-08-23 13:57:32 +02:00
Sean Gilligan
dbbd1a8470
Github Actions: Build with Gradle 6.9
...
Use the `gradle/gradle-build-action` to build with a specified
version of Gradle. In our case, let’s use Gradle 6.9.
2021-08-13 17:42:16 -07:00
Andreas Schildbach
4e4968ecb5
LazyECPoint: JavaDoc for the constructors.
2021-08-10 23:37:00 +02:00
Andreas Schildbach
ca8811e1f6
UTXO: Make index, hash and value the identity.
2021-08-10 23:26:54 +02:00
Andreas Schildbach
6629bfb4f4
UTXO: Make fields final.
2021-08-10 23:26:54 +02:00
Andreas Schildbach
0857e339dd
UTXO: Migrate constructor that takes a stream to a static constructor fromStream().
2021-08-10 23:26:54 +02:00
Andreas Schildbach
8a99965ac9
UTXO: Remove Java serialization.
2021-08-10 23:26:54 +02:00
newbull
d9157218ea
SendAddrV2Message: Fix 'unterminated inline tag' in a Javadoc.
2021-08-10 23:19:48 +02:00
Andreas Schildbach
a61080ebeb
BlockFileLoader: Remove inexact block size check.
...
Bitcoin Core doesn't allow over- or undersized blocks in its dat files.
2021-08-10 21:58:14 +02:00
Andreas Schildbach
e407240b7e
Support BIP133 feefilter
messages.
2021-05-03 16:23:51 +02:00
Andreas Schildbach
fd85807422
PeerAddress: Support Tor hidden service addresses.
2021-04-30 12:59:47 +02:00
Andreas Schildbach
d511effbce
Support BIP155 addrv2
messages.
2021-04-30 12:52:33 +02:00
Andreas Schildbach
9e9b6b4c74
Block, Transaction: Use VarInt.getSizeInBytes() on a VarInt we already have, rather than the static VarInt.sizeOf().
2021-04-28 14:39:40 +02:00
Andreas Schildbach
bdc0310f1f
Message hierarchy: Use int (rather than long) for several array and string lengths.
2021-04-28 14:39:24 +02:00
Andreas Schildbach
67399b6c13
Message: Make readVarInt() return a VarInt rather than long.
2021-04-24 17:08:59 +02:00
Andreas Schildbach
ae4f6d43ce
VarInt: Introduce intValue() and longValue() accessors and use them, deprecating access to the field.
2021-04-24 17:00:12 +02:00
Andreas Schildbach
742394c434
VersionMessage: Remove support for protocol versions older than 106.
...
The minimum is 70000 anyway, and I'm pretty sure the code path wasn't properly tested.
2021-04-23 19:17:15 +02:00