Module massa_models::denunciation
source · Expand description
denunciation Copyright (c) 2022 MASSA LABS info@massa.net Denunciation intro
Currently, nothing prevents a user from producing multiple blocks (for the same Slot) or endorsing a block multiple times. If an invalid Denunciation will just be ignored, a valid Denunciation will slash some locked rolls. Note that this proposal aims at dissuading ‘rational’ users from causing damage but does help against ‘byzantine’ actors that just want to disturb or break the blockclique (at any cost).
Denunciation structure
A denunciation embeds some information such as Slot, the slot from the block header or the endorsements (+ index) A public key: the public key of the secure share endorsement or secured header 2 Hashes & 2 Signatures
All of this constitutes a proof (and is verifiable) that a user produced multiple (at least 2) blocks or endorsements
Denunciation creation
Denunciations are created in a Denunciation pool, receiving new blocks & block headers & endorsements from various places.
The denunciation pool is also responsible of returning a list of denunciations to insert into a new block header.
After execution, the denunciation is kept for some time inside executed_denunciations
in order to prevent multiple executions. Note that this structure is part of the final state hash and thus is bootstrapped.
Denunciation execution
When a Denunciation is proven valid, we then need to ensure that the user has sufficient funds. If we cannot deduct the funds on node balance or staked rolls, we will use ‘locked’ rolls` (or Deferred credits). Selling a roll will lock it for some time (== 4 cycles). Note that it restricts the time, a denunciation can be produced (A constant value will be defined for this).
Structs§
- A Variant of Denunciation enum for block header
- Deserializer for
BlockHeaderDenunciation
- DenunciationPrecursor variant for block header
- Serializer for
BlockHeaderDenunciation
- Deserializer for
Denunciation
- Deserializer for
DenunciationIndex
- Serializer for
DenunciationIndex
- Serializer for
Denunciation
- A Variant of Denunciation enum for endorsement
- Deserializer for
EndorsementDenunciation
- DenunciationPrecursor variant for endorsement
- Serializer for
EndorsementDenunciation
Enums§
- A denunciation enum
- Denunciation error
- Index for Denunciations in collections (e.g. like a HashMap…)
- Lightweight data for Denunciation creation (avoid storing heavyweight secured header or secure share endorsement, see denunciation pool)