We don't want to burn BSQ in cases like that the tx was published too
late, which is a valid case if the tx does not make it in the next block.
We set such txs as IRREGULAR and allow spending of the BSQ, but there
function in the governance is invalidated.
We also add a check if the sum of all UTXO is the same as the sum of the
genesis + sum of issuance txs - burned fees.
We limit the possible max. issuance (including reimbursements) to the
valued defined in the ISSUANCE_LIMIT param.
In case we exceed that limit the whole cycle becomes invalid.
The main reason for that feature is limitation of max.
damage in case that an attacker manages to create unjustified issuance.
For valid cases we consider such a case as social consensus problem as
the majority of voters should be aware of that limit before they
accept such a high issuance. If known in advance that an extraordinary
high issuance is expected the DAO parameter can be changed.
We only want to show active bonds in the list for confiscation.
The Inactive bond label is not necessary in the vote result as a
confiscated bond is inactive anyway. Intention was probably to show it
as inactive in the proposal display but they will be filtered out
anyway there.
Use lockup and unlock tx for miner fee and tx size display.
The getMiningFeeAndTxSize in daoFacade was used for blind vote. Got
renamed in the meantime to make it more clear.
We can evaluate the nonBsqTxOutputs without storing it.
Storing them in the map would have required to remove them as well
once withdrawn from the wallet.
To avoid the need to change the required bond in the BondedRoleType
if the BSQ price changes we use the BONDED_ROLE_FACTOR param where the
factor can be changed. In the BondedRoleType we use the requiredBondUnit
which will be multiplied with the BONDED_ROLE_FACTOR value to get the
required bond amount.
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.
Changing validation rules can potentially break consensus (e.g. a past
proposal has been accepted according to old rules, and might become
invalid by new rules. The result of the proposal would become
invalidated then.