Slashing Conditions
Condition 1 - Failure to Submit a Vote or Publishing a Conflicting Vote for Events Emitted by the Gateway Contract
An orchestrator will be slashed if it fails to submit a vote or submits a conflicting vote for any event emitted by the Gateway contract. The list of such events is as follows:
CrosschainRequest
(iSend)CrosschainAckRequest
(iReceive)CrosschainAckReceipt
(iAck)ValsetUpdate
SetMetaData
Orchestrators will be given a sufficient amount of time to publish their vote. The wait time period and slashing amount will be the same for all. This is because all the aforementioned events are processed sequentially in the order of EventNonce
. Failure to observe any one of these events will impact other events.
Workflow
At the end of each block:
Step 1) Get the list of active validator set.
Step 2) For each supported chain:
- Get the
LastObservedEventNonce
andLastObservedEventHeight
. - For each validator in the active validator set:
- fetch their
LastProcessedEventNonce
andLastProcessedEventHeight
. - if the
WaitTime
> (LastObservedEventHeight
-LastProcessedEventHeight
), then slash the validator (WaitTime
is custom for each chain).
- fetch their
Condition 2 - Failure to Submit a Vote or Publishing a Conflicting Vote for Events Emitted by the Voyager Contract
An orchestrator will be slashed if it fails to submit a vote or submits a conflicting vote for any event emitted by the Voyager contract. The list of such events is as follows:
FundDeposit
FundPaid
Orchestrators will be given a sufficient amount of time to publish their vote. The wait time period and slashing amount will be the same for all. This is because all the aforementioned events are processed sequentially in the order of EventNonce
. Failure to observe any one of these events will impact other events.
Condition 3 - Failure to Submit Confirmation for Requests Originating on the Router Chain
An orchestrator will be slashed if it fails to submit confirmation for any request originating on the Router Chain. The list of such requests is as follows:
ValsetUpdate
CrosschainRequest
(Outbound)CrosschainAckRequest
(OutboundAck)
The wait time and slashing amount need not be the same for aforementioned requests as all these requests are processed independently.