Skip to content

Improve Signer handling of late block approvals #6915

@jacinta-stacks

Description

@jacinta-stacks

Signers currently do a check on a block proposals block height and reject it if its height is less than the expected height (this would be a reorg). This is the current flow:

  1. Block proposal arrives:
  2. Local checks
  3. Send to node for validation,
  4. Receive back validation response
  5. Local checks

Now often after the block is sent to the node for validation and receiving the response back, a block proposal is globally signed and announced so that when local checks are performed at the end, the block is seen as a reorg of itself. Would be good in this instance to check "is the block the tip? If yes, issue signature without further local checks, else continue with all the local checks" because then it would be simply a late approval going out. This isn't strictly important as the signature doesn't really help in this case nor does the rejection make a huge difference but its a little bit confusing why a signer rejects it in the first place.

Would not really want to short circuit the validation an step 2 though in theory we could also do this tip check.

A similar scenario can occur where we reach the block acceptance threshold and mark the block as locally_accepted(group_signed) which would result in a rejection if our validation returns AFTER this occurs. Would expect this case to be handled as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Status: 🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions