In case of reorgs there are several scenarios:
1. We have no snapshot yet: We start from genesis again
2. We have a snapshot and go back to that: We use last snapshot
3. We have a snapshot but the reorg does deeper so our last block in the
snapshot is invalid as well: -> we go back to genesis
There are many edge cases
There was one important bug fix with a == instead of an equals
comparison.
Added also the check that the first block need to be the genesis block.
Unfortunately the chainHeight is set to the genesis height initially
which is not right (should be 0 as we dont have any block and therefore
no chainHeight). To change that will be a bit risky, but for mainnet we
should consider it. There are several usages where a change might break
stuff, for instance the parameter handling.
On Windows, it is likely that cli-output_windows.txt will have CRLF line
endings since core.autocrlf is normally true which converts LF endings
to CRLF on checkout. This causes BisqHelpFormatterTest to fail since
the actual content it is compared against uses LF endings.
As a result, when loading the cli-output_windows.txt file normalize
line endings to LF.
Prior to this commit, help output for Bisq executables, e.g. Bisq
Desktop itself used JOptSimple's default HelpFormatter implementation,
which creates a quite cramped and hard-to-read output.
This commit introduces a custom HelpFormatter implementation modeled
after bitcoind's own help output. It maximizes readability while making
full use of an 80-character width.
That was a big commit with restructuring the packages and classes.
Motivation was to isolate the daoState value objects so it is more clear
which data are help in the daoState. As it was hard to keep an overview
and easy to add mutable data I think that makes it more safe overall.
I am aware that the downside to take out domain models from the domain
packages is not so nice.
Also moved blockchain models to parser and full node packages.