Skip to content

Ability to request confirmations after changes in the validator set #604

@akolotov

Description

@akolotov

Consider the following scenario:

  1. A users requests a message transfer from the Home chain to the Foreign chain
  2. N oracles provided theirs confirmations and the CollectedSignatures event was emitted
  3. The required amount of signatures was changed on the Foreign side OR one of validators sent the confirmation on the step 2 was removed from the validator set.
  4. The user tries to finalize the transfer by calling executeSignatures.
  5. The transactions fails due to changes in the validator set configuration described above.

This behavior blocks the bridges from the actions to increase security of the bridge that's why the current approach must be improved.

One of the possible solutions:
6. After the step 5 above the user makes a request to the contract on the Home side to re-collect the confirmations. The request contains the original message and the collected signatures.
7. The contract checks that the message is marked as confirmed. The contract checks that the collected signatures are for the specified message. The contract checks that the signatures are for the outdated configuration of the validator set (amount of signatures is not enough or a recovered validator address is not in the current validator set).
8. The event ReconfirmationRequested is emitted. Ability to emit another ReconfirmationRequested for the same message is blocked for 24 hours.
9. Oracles are able to re-send the confirmations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions