Issue: When launching a new Bisq instance (i.e. new data directory) and
remaining on the user agreement screen for >90 seconds while reading it,
once you accept the agreement the BTC status was not being shown
on the splash screen.
Cause: showTorNetworkSettingsTimer gets triggered after 90 seconds
and since Tor is not started until after accepting the user agreement,
it was incorrectly assuming that Tor is not working and as a result
hiding the BTC status.
Fix: Don't hide the BTC status in showTorNetworkSettingsTimer. If there
is an issue with Tor, splashP2PNetworkErrorMsgListener handles
hiding the BTC status.
To avoid that the UI gets frozen at batch processing of blocks we
delay each parsing to the next render frame. The total parsing time is
just about 5% slower that way but the UI can render updates.
We also changed the hash for the daoState as the hashing of the full
state becomes quite heavy. The size of the blocks is about 1,4 MB for
7000 blocks (dao testnet). As on a new block only the last block in the
chain got added and as we use the previous hash in the hash chain we
do not need to hash the full blocks list but only the last block.
By that we decrease batch processing time from 30 sec to 7 sec. and data
size of the daoState from 1,4 MB to 200 kb.
Also added progress display of missing blocks in the Tx UI.
To be able to apply the validation also on past cycles we need to use
the block height if the proposal tx and not the current one. Just in
case the tx is not confirmed (when temp proposal gets published) we use
the current height, but that would anyway match the cycle.
In a past cycle params could have been different and validation need to
use the correct param value from that cycle.
We want to test on mainnet with a test genesis tx. We create a new
network type which is BTC mainnet but has a different data directory to
make sure to not mix up the real wallet with the betatest
- Change onDaoStateBlockChainChanged to onChangeAfterBatchProcessing
to make it more clear that it is only called after parsing of
blockchain is completed.
- Change file name for DaoStateStore db file to DaoStateStore2
- Remove TODOs and outdated comments
- Increase delay for broadcasting
- Move dao state monitor classes to other package structure
- Add support for proposal payload monitor (WIP)
- Use generics and sub classes for common functionality
Refactor dao state monitor domain.
Add support for requesting all hashed from genesis from a peer which is
in conflict (can help to find at which block the issue started).
We subtract 1 day to be sure to not have any issues with timezones.
Even if we can be sure that the timezone
is handled correctly it could be that the user created the wallet in
one timezone and make a restore at
a different timezone which could lead in the worst case that he miss
the first day of the wallet transactions.