Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

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

已关闭 适合新手
#248 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
1/5
预计耗时
1-3 小时
新手友好度
82/100
Issue 类型
文档
描述清晰度
描述清楚
活跃度
活跃
技术栈
solidity

调研方向

阅读 DINTaskCoordinator.sol 中的 openDispute 和 resolveDispute,然后查看 Developer/design/slashing-taxonomy.md 中关于争议解决的部分。添加一次性约束注释,并记录设计决策,包括如果需要支持多个争议,应在哪里重新审视该决策。完成标准是两处文档更新都说明已解决的批次不能再次被提出争议;预计不会改变行为。

由索引模型根据 Issue 内容生成。

描述

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
主要语言
Python
星标
4
派生
7
平均合并
3 天 5 小时
30 天内合并 PR
34

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

InfiniteZeroFoundation/DevNet 的其他 Issue

查看 InfiniteZeroFoundation/DevNet 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。