Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

No recovery path when a T1/T2 batch never reaches reveal quorum — GI stuck forever (BL-30)

Ouverte
#222 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
30/100
Type d'issue
Fonctionnalité
Clarté
Clairement spécifiée
Activité
Active
Stack technique
solidity
Domaine
blockchain

Piste de recherche

Read Developer/BACK_LOG.md BL-30 and the T1/T2 finalization and GI lifecycle logic in DINTaskCoordinator.sol; the issue identifies the relevant functions and lines. First map how failed reveal quorum blocks finalization, slashing, and endGI, then design the abort or batch-skip decision points described here. Done means a reviewed recovery design that accounts for authorization, timing, and reward and slashing state.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug

Summary

finalizeT1Aggregation/finalizeT2Aggregation (DINTaskCoordinator.sol) iterate every batch in the GI in a single transaction and revert the entire call if any one batch has too few reveals:

if (winningCID == bytes32(0)) revert TC_NoSubmissions();
if (submissionCount < T1_AGGREGATORS_PER_BATCH / 2 + 1)
    revert TC_InsufficientSubmissions();

(finalizeT1Aggregation L979-980, finalizeT2Aggregation L1127-1128, verified against develop @ 740a613)

There is no per-batch retry, no owner override to skip a stuck batch, and no abort path for the GI as a whole: endGI requires GIstate == AggregatorsSlashed and startGI requires GIended/GenesisModelCreated — both unconditional, no bypass. I checked the full contract for any abort/skip/force/emergency function; none exists.

Reachability

This isn't an edge case — with the demo default of 3 aggregators per T1 batch and majority = 2, any 2 of 3 assigned aggregators simply not revealing (going offline, missing the window, or deliberately withholding — no collusion needed, no cost beyond the existing S1/S2 slash, which doesn't stop the GI) permanently bricks that batch, and therefore the whole GI, forever. DINTaskCoordinator/DINTaskAuditor are not upgradeable, so there is no patch-around once deployed. The model's reward pool and its validators' registration slots (see #223) stay locked with it.

Impact

This gap is already blocking other work, not just a standalone concern: BL-26's residual notes explicitly deferred a contract-side re-anchor cap on the batch-assignment seed "because a capped GI would be stuck forever" with no way to recover.

Suggested approach

Needs a GI-abort design (flagging the decision points, not prescribing an answer):

  • Who may trigger it — model owner only? DIN-Representative as an emergency backstop?
  • When — only after some minimum time/deadline past the batch's reveal window opening, so an impatient owner can't abort a GI that would've resolved fine?
  • Where the reward pool and in-flight slashing state go on abort — forfeited? refunded pro-rata? rolled to the next GI?
  • Whether it's a full abort (GIended early) or a narrower "skip this batch, exclude it from T2" path

References

  • Developer/BACK_LOG.md BL-30
  • PR #191 review (BL-26, the deferred re-anchor-cap decision this blocks)
  • PR #204 review (DINTaskCoordinator.md §10 No. 6)
Langage dominant
Python
Étoiles
4
Forks
7
Merge moyen
3 j 4 h
PR mergées (30 j)
34

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de InfiniteZeroFoundation/DevNet

Toutes les issues de InfiniteZeroFoundation/DevNet

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.