Skip to content

[V124-specific] MissBlockSignSlashPoints for missing block signatures

Multipartite requested to merge Multi/slash-for-missing-block-signatures into develop

[V124-specific]

Intended to close #1726 (closed)
'Missing block signatures currently do not increment slash points'.

As always, feedback is welcome;
in particular format changes are likely appropriate, such as the unwieldy 'nodeAddressValidatorAddressPairVCUR'.


For behaviour testing,
I have for now done a sync test without the new-Slasher-version commit,
to check there is no sync failure for blocks without missing signatures
and a sync failure upon a block with a missing signature.

Commit hash used:
https://gitlab.com/thorchain/thornode/-/commits/7486cd5b

Using pruned snapshot 13020241, this is the sync failure log:

6:06PM INF go/pkg/mod/github.com/tendermint/tendermint@v0.34.14/state/execution.go:235 > committed state app_hash=2E11BA5A8EF97CAC7FF17020B6A16ACD207FEE96D093092C0C9E4FF48C06FE05 height=13020311 module=state num_txs=44
panic: Failed to process committed block (13020312:96027F0B48D9FE0BABE5A1FF0A4EE97570DAFE7D2424B31A8AAB3A7037355CC6): wrong Block.Header.AppHash.  Expected 2E11BA5A8EF97CAC7FF17020B6A16ACD207FEE96D093092C0C9E4FF48C06FE05, got 04ACA4852FBBDDC1234285F8C350F240558274308170459D43F6AE38511ACC91

The Mainnet 04AC. AppHash is here at .block.header.app_hash, determined by block 13020311:
https://thornode-v1.ninerealms.com/blocks/13020312

Block 13020311 has a null in its .block.last_commit.signatures:
https://thornode-v1.ninerealms.com/blocks/13020311

That is to say, one validator didn't vote for block 13020310 (the last_commit for 13020311),
different-from-Mainnet logic was followed in block 13020311,
and so there was a sync failure upon starting block 13020312,
as intended.
(Stressing again that this test was done while deliberately leaving out the new-Slasher-version commit.)

For further context:
https://thornode-v1.ninerealms.com/blocks/13020310
https://thornode-v1.ninerealms.com/blocks/13020312
13020310 and 13020312 indicated that blocks 13020309 and 13020311 respectively were validated by all validators.
(In contrast with block 13020310.)

My prediction is that there are no blocks with unvoting validators between blocks 13020241 and 13020309.

Edited by Multipartite

Merge request reports