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)ValsetUpdateSetMetaData
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
LastObservedEventNonceandLastObservedEventHeight. - For each validator in the active validator set:
- fetch their
LastProcessedEventNonceandLastProcessedEventHeight. - if the
WaitTime> (LastObservedEventHeight-LastProcessedEventHeight), then slash the validator (WaitTimeis 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:
FundDepositFundPaid
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:
ValsetUpdateCrosschainRequest(Outbound)CrosschainAckRequest(OutboundAck)
The wait time and slashing amount need not be the same for aforementioned requests as all these requests are processed independently.