MCPcopy Create free account
hub / github.com/akash-network/node / processDiscrepancyTimeoutQueue

Method processDiscrepancyTimeoutQueue

x/verification/keeper/abci.go:187–239  ·  view source on GitHub ↗
(ctx sdk.Context, blockTime time.Time, limit uint32)

Source from the content-addressed store, hash-verified

185}
186
187func (k *keeper) processDiscrepancyTimeoutQueue(ctx sdk.Context, blockTime time.Time, limit uint32) error {
188 return k.processDueQueue(ctx, prefixQueueDiscrepancyTimeout, blockTime, limit, func(key []byte, timeout time.Time) error {
189 id, err := decodeIDQueueKey(key)
190 if err != nil {
191 return err
192 }
193
194 discrepancy, found := k.GetDiscrepancy(ctx, id)
195 if !found || discrepancy.ResolutionStatus != vtypes.DiscrepancyStatusPending {
196 return nil
197 }
198 expectedTimeout := discrepancy.Timestamp.Add(k.GetParams(ctx).DiscrepancyResolutionTimeout)
199 if !expectedTimeout.Equal(timeout) {
200 return nil
201 }
202
203 result := SettlementResult{
204 FeeStatus: vtypes.FeeStatusReturnedToProvider,
205 DepositStatus: vtypes.DepositStatusSlashed,
206 }
207 if err = k.timeoutDiscrepancyAttestation(ctx, discrepancy.Provider, discrepancy.AuditorA, result); err != nil {
208 return err
209 }
210 if err = k.timeoutDiscrepancyAttestation(ctx, discrepancy.Provider, discrepancy.AuditorB, result); err != nil {
211 return err
212 }
213
214 auditorA, err := sdk.AccAddressFromBech32(discrepancy.AuditorA)
215 if err != nil {
216 return err
217 }
218 auditorB, err := sdk.AccAddressFromBech32(discrepancy.AuditorB)
219 if err != nil {
220 return err
221 }
222
223 discrepancy.ResolutionStatus = vtypes.DiscrepancyStatusTimedOut
224 discrepancy.FaultAttribution = vtypes.FaultAttributionInconclusive
225 k.SetDiscrepancy(ctx, discrepancy)
226
227 if err = k.resolveDiscrepancyAuditorBond(ctx, auditorA, discrepancy.ID, false); err != nil {
228 return err
229 }
230 if err = k.resolveDiscrepancyAuditorBond(ctx, auditorB, discrepancy.ID, false); err != nil {
231 return err
232 }
233 return ctx.EventManager().EmitTypedEvent(&vtypes.EventDiscrepancyTimedOut{
234 DiscrepancyID: discrepancy.ID,
235 AuditorA: discrepancy.AuditorA,
236 AuditorB: discrepancy.AuditorB,
237 })
238 })
239}
240
241func (k *keeper) timeoutDiscrepancyAttestation(ctx sdk.Context, providerString, auditorString string, result SettlementResult) error {
242 provider, err := sdk.AccAddressFromBech32(providerString)

Callers 1

EndBlockerMethod · 0.95

Calls 7

processDueQueueMethod · 0.95
GetDiscrepancyMethod · 0.95
GetParamsMethod · 0.95
SetDiscrepancyMethod · 0.95
decodeIDQueueKeyFunction · 0.85

Tested by

no test coverage detected