Slashing API for the Proof of Stake Contract - Moved to Consensus Spec

Please reference: RChain consensus specification-Slashing


This details the slashing API for the proof of stake contract. Each bullet will become an API endpoint where the arguments will be the blocks that are asked of.

  • For equivocations, show the base equivocation block and the two that have sequence numbers that follow. This is 3 blocks.
  • For blocks that have parents that don't lead back to a block in the blockDAG, show the justification chains up until X blocks including the block in question. This is X+1 blocks.
  • For blocks with an invalid block number, show the parent block and the block in question. This is 2 blocks.
  • For blocks with an invalid sequence number, show the creator justification block and the block in question. This is 2 blocks.
  • For blocks that don't have a parent that matches the derived parent based on the estimator, show all the justification blocks and the block in question. This is one more than the number of validators.
  • For blocks that contain justifications that lead to invalid blocks but don't slash their creator, show the justification chain that leads to that invalid block including the invalid block itself. This is at least 2 blocks.
  • For blocks that contain justifications that lead to knowledge of a equivocation but don't slash the equivocator, show the justification chain(s) that lead to three blocks that are enough to minimally prove the equivocation. This is at least 4 blocks.
  • For invalid blocks for any other reason show that invalid block. This is 1 block.
    • Blocks that are missing any required fields. Note a block must contain at least a sender and a valid signature from that sender in order to be considered a block.
    • Blocks that don't point to as many justifications blocks as there are bonded validators.
    • Blocks that contain invalid transactions/deployments.
    • Blocks that have hashes that aren't the same as the computed hashes. This includes the block hash, the parents hash list, the post state hash, the new code hash, and the transaction receipt logs hash.