Replies: 2 comments 1 reply
|
Q1 — Where does auditor public-key registration live, and what key type? The task needs a mapping + registration function so there's something to encrypt K to. The two options as I see them: DinValidatorStake — makes sense since it's validator-identity-scoped and spans models, but adds crypto key storage to a contract that currently only knows about stake amounts Q2 — What happens to the model owner when Stage 2 resolves against them? The role matrix in MECHANISM_DESIGN.md §1 is explicit that model owners don't stake and can't be slashed. The three PR #63 comments use "slashed" loosely for the losing side, which is fine for the auditor's false-dispute case (that maps cleanly to the existing stake system) — but for the model-owner losing case, there's nothing to slash. Options I can think of: forfeit their GI reward deposit, block the model from progressing until they reassign the batch with fresh data, or some combination. What's the intended outcome? Q3 — Dispute bond size and challenge-window length? MECHANISM_DESIGN.md §4 describes a bond-forfeited-if-frivolous / returned+bounty-if-upheld pattern for P3-4.3. Should I reuse those numbers directly, or is there a separate sizing recommendation for this mechanism specifically? Q4 — Batch reassignment mechanics after a losing model-owner outcome? Comment 5383065186 says "batch reassigned with fresh data and a fresh K" but doesn't specify the state machine. Does the GI pause/block until the model owner re-calls assignAuditTestDataset with corrected data? Or does it auto-skip the disputed batch and continue? And who triggers the re-assignment — is it owner-initiated or does the contract enforce a re-assignment window? cc:@umeradl |
|
Closing — merged to PR #110 merged 2026-09-09 (
This is explicitly Part 1 of the larger encrypted test-data effort — the zkVM-based private dispute follow-up (Stage 2 currently makes disputed test data public) is out of scope here by design, tracked as a separate future task/issue per this task's own Notes section, not a gap in this one's completion. |
Uh oh!
There was an error while loading. Please reload this page.
cc @robertocarlous
Assigned now that PR #63 has merged. Full spec:
Developer/tasks/task_240826_10.mdThe task file has the full specification — exact scope, open questions, and the deliverables checklist. This post is just the summary and assignment notice.
Summary
This is Part 1 of finishing the encrypted-test-data-key thread that came out of PR #63's re-review (issue #40): PR #63 shipped
encryptedTestDataKey/testDataCIDas on-chain plumbing only, explicitly scoped with no real encryption —assignAuditTestDatasetwritesb""placeholder keys for every auditor, andtestDataCIDstill points at plaintext IPFS content. Three follow-up review comments on #63 worked out what the real version needs to look like; this task turns that into a build.In scope:
registerEncryptionKey-style function so there's something to encryptKto. Location (DinValidatorStakevsDINTaskAuditor) and key type are Open Question 1 — ask, don't guess.K, test file encrypted before IPFS upload,encryptedCID = SymmetricEncrypt(K, Sign(ownerSK, rawCID))replacing the plain publictestDataCID, real per-auditorencryptedKeys[i]replacing theb""placeholders — model-owner side (cache_model_0/services/modelowner.py,dincli/cli/modelownerd/auditor_batches.py) and auditor side (dincli/cli/auditor.py,cache_model_0/services/auditor.py).gi/batchId/keccak256(K)(not just the plaintext hash, per Robbert's own refinement on PR feat(auditing): commit-then-reveal scoring, encrypted test-data keys, resampling policy #63), a stake-gateddisputeTestData(gi, batchId)with staged resolution — Stage 0 (free: empty-key check), Stage 1 (stake: signature check), Stage 2 (stake: content-hash + round-binding check).Explicitly out of scope: zkVM-based private dispute resolution (Robbert's own call on PR #63 — track as a separate Phase 2/3 issue), any economic-penalty redesign beyond what Stage 2's losing outcome needs, and mandating a specific ECIES/X25519 library (build one, but which primitive isn't dictated).
Open questions to resolve before/while building (see task file for full detail — ask rather than guess per repo convention):
MECHANISM_DESIGN.md§1's role matrix.MECHANISM_DESIGN.md§4's P3-4.3 design is the closest existing pattern.Reference material
Developer/tasks/task_240826_10.md— full spec, deliverables checklistDeveloper/design/MECHANISM_DESIGN.md§4 (dispute resolution), §1 (role matrix)feature/auditor-commit-reveal) — merged intodevelop2026-08-27, everything this task builds on top of (commitAuditScore/revealAuditScore,encryptedTestDataKey,assignAuditTestDataset) is livePost progress updates, questions, and PR links here as the task moves — same convention as prior task-tracking discussions (e.g. #49, #76). If anything in the task spec doesn't feel right, is ambiguous, or needs clarification — comment here and cc @umeradl.
All reactions