Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

BL-15: One-shot dispute resolution (one dispute per batch, ever) is undocumented

Abierto Apto para principiantes
#248 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Documentación
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
solidity

Línea de trabajo

Lee DINTaskCoordinator.sol en openDispute y resolveDispute y luego revisa la sección sobre la resolución de disputas de Developer/design/slashing-taxonomy.md. Añade el comentario sobre la restricción de un solo uso y registra la decisión de diseño, incluido dónde volver a revisarla si se desea admitir múltiples disputas. El trabajo estará terminado cuando ambas actualizaciones de la documentación describan que un lote resuelto no puede volver a ser objeto de una disputa; no se espera ningún cambio de comportamiento.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Approved documentation

Summary

DINTaskCoordinator.resolveDispute sets disputes[gi][tierKind][batchId].resolved = true with no path back. Once a dispute on a batch is resolved — upheld or rejected — no further dispute can be opened for that batch:

// DINTaskCoordinator.sol — openDispute
if (disputes[_GI][_tierKind][_batchId].resolved) revert TC_DisputeAlreadyResolved();

This means exactly one dispute per batch is possible in a GI's lifetime. This is a reasonable design choice at the scaffold stage, but it was never recorded:

  • No comment in resolveDispute or openDispute explains the one-shot constraint.
  • Developer/design/slashing-taxonomy.md describes the dispute flow without noting the limit.

If a future reviewer or implementer assumes disputes can be reopened (e.g. if new evidence surfaces), they will either silently hit TC_DisputeAlreadyResolved or incorrectly treat it as a bug to fix, potentially introducing unintended multi-dispute behaviour.

Fix

Documentation-only — no behaviour change.

  1. Add a one-line comment above resolveDispute in DINTaskCoordinator.sol:
    // One dispute per batch per GI: once resolved (upheld or rejected), the batch cannot be re-disputed.
    
  2. Add a note to Developer/design/slashing-taxonomy.md in the dispute resolution section recording this as an explicit design decision and noting where to revisit it if multi-dispute-per-batch is ever desired.

When to upgrade

If multi-dispute-per-batch is later needed, the fix is to replace the boolean resolved flag with a counter or a re-openable state enum. That decision belongs in a separate issue.

References

  • Developer/BACK_LOG.md BL-15
  • PR #66 review (original observation)
  • DINTaskCoordinator.sol — openDispute / resolveDispute
  • Developer/design/slashing-taxonomy.md — dispute resolution section
Lenguaje dominante
Python
Estrellas
4
Forks
7
Merge medio
3 d 58 min
PR fusionados (30 d)
39

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de InfiniteZeroFoundation/DevNet

Todos los issues de InfiniteZeroFoundation/DevNet

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.