-
Notifications
You must be signed in to change notification settings - Fork 228
Description
Consider the following scenario:
- A users requests a message transfer from the Home chain to the Foreign chain
N
oracles provided theirs confirmations and theCollectedSignatures
event was emitted- 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.
- The user tries to finalize the transfer by calling
executeSignatures
. - 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.