BL-11 follow-up: mainnet-grade randomness (VRF / multi-party commit-reveal) for dispute subgroup seed
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- solidity
- 领域
- blockchain, security
调研方向
Read DINTaskCoordinator, _assignFreshSubgroup, and _shuffleAddressArray(address[], bytes32 seed), then inspect DisputeResolution.t.sol and the review on #151. Compare the VRF and multi-party commit-reveal options, including funding, timeouts, and anti-reroll incentives; coordinate with #156 on aggregation shuffles. Done means the seed resists bias by all named parties, missing randomness has a tested non-free-reroll outcome, existing tests pass, and NatSpec documents the trust model.
由索引模型根据 Issue 内容生成。
描述
Context
Follow-up from #151, which is closed via PR #171 and tracked as BL-11 in Developer/BACK_LOG.md.
Since PR #171, DINTaskCoordinator seeds the dispute recomputation subgroup from a block in the future. openDispute sets seedBlock = block.number + disputeSeedDelay. After that block is mined, anyone can call lockDisputeSeed, which stores keccak256(blockhash(seedBlock), GI, tierKind, batchId). So the draw no longer depends on when the model owner calls resolveDispute.
What remains: on OP Stack, blockhash comes from the sequencer. A sequencer that wants a particular subgroup can grind the seed block. That's acceptable for DevNet/testnet, but not for mainnet.
What needs to change
Replace the source of randomness behind the dispute seed with one the sequencer can't bias. Options:
- VRF, e.g. Chainlink VRF v2.5 on OP. The seed is fulfilled by a callback, and
lockDisputeSeedbecomes a request/fulfil pair. Needs a subscription or funding model, plus handling for a VRF request that never gets fulfilled. - Multi-party commit-reveal with a slashable non-reveal penalty. This has no external dependency, but the penalty must make aborting at the last reveal cost more than the value of re-rolling. See the review on #151 for why a commit-reveal where only one party commits doesn't work.
The seed-in, subgroup-out interface should stay the same. _assignFreshSubgroup and _shuffleAddressArray(address[], bytes32 seed) already take an explicit seed, so only the way the seed is produced should change.
Scope notes
- Coordinate with #156. The aggregation-side shuffles (
autoCreateTier1AndTier2,DINTaskAuditor._shuffleAddressArray) will probably need the same mainnet-grade source. Ideally a single randomness provider serves both. - BL-11 residual (2): if nobody calls
lockDisputeSeedwithin about 256 blocks, the seed re-anchors and a second draw happens. Under VRF this goes away, but a VRF request that never gets fulfilled needs its own timeout and re-request path. - Not a DevNet 2.0 blocker. It must land before mainnet, or before dispute adjudication moves off the model owner, whichever comes first.
Acceptance criteria
- The dispute seed no longer depends on
blockhash, and its source can't be biased by the sequencer, the model owner, the challenger or the accused aggregators. - There is a defined, tested outcome for a seed that never arrives (a VRF request that isn't fulfilled, or a missed reveal), and it can't be used as a free re-roll.
- Existing
DisputeResolution.t.soltests still pass, including the timing-independence test. - A trust-model NatSpec note explains what the new source trusts.
- 主要语言
- Python
- 星标
- 4
- 派生
- 7
- 平均合并
- 3 天 58 分钟
- 30 天内合并 PR
- 39
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
InfiniteZeroFoundation/DevNet 的其他 Issue
-
dincli: `task model-owner register-request --manifestCID` fails because the registry contract isn't initialised可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug good first issue
难度 2/5 1-3 小时 新手友好度 79/100
InfiniteZeroFoundation/DevNet#295 ·
维护者通常 1 天内回复
-
ROADMAP.md: refresh "What is still open for P3" (several items were fixed in October)可能已有人在做 @umermjd11 于 1 天前认领。 未关闭documentation good first issue
难度 2/5 1-3 小时 新手友好度 74/100
InfiniteZeroFoundation/DevNet#285 · 已指派 1 人 ·
维护者通常 1 天内回复
-
good first issue help wanted
难度 2/5 1-3 小时 新手友好度 76/100
InfiniteZeroFoundation/DevNet#277 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
InfiniteZeroFoundation/DevNet#266 ·
维护者通常 1 天内回复
-
Approved documentation
难度 1/5 1-3 小时 新手友好度 82/100
InfiniteZeroFoundation/DevNet#248 · 1 条评论 ·
维护者通常 1 天内回复
查看 InfiniteZeroFoundation/DevNet 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 1 天内回复
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistencies可能已有人在做 @github-actions 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
admission-deferred priority: medium status: ready work-class: scoped
难度 2/5 1-3 小时 新手友好度 70/100
melodic-software/claude-code-plugins#10887 · 4 条评论 ·
维护者通常 1 天内回复
-
backend bug good first issue
难度 2/5 1-3 小时 新手友好度 70/100
PoCInnovation/Distribox#255 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
google/langextract#598 ·
维护者通常 1 天内回复