Repository navigation
Conversation
…lash + blacklist (InfiniteZeroFoundation#274) Abraham decided on issue 274 to keep the code's S5 behaviour: DinValidatorStake.slashPartial slashes MIN_STAKE and jails for s5JailDuration, with no blacklist. Update the S5 taxonomy row, narrow the "Full slash" tier to provable malice (S4), add an S5 escalation entry recording the decision and its reasoning, and note the possible mainnet escalation path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Santiagocetran
left a comment
There was a problem hiding this comment.
Thanks, Umer. Checked 8243ba6 against Abraham’s decision on #274 and DinValidatorStake. The S5 taxonomy and penalty description now match the agreed behavior, and the possible mainnet escalation is clearly marked as a follow-up rather than current policy.
One minor wording suggestion: “once the jail expires, the validator can reactivate if activeStake is at least MIN_STAKE, topping up if needed.” This avoids implying every jailed validator must top up.
No blocking content findings from me. Please sync with current develop and confirm fresh CI before merging.
|
Verification — head Single substantive commit:
Scope: |
Files changed (1) — as of
|
| Field | Value |
|---|---|
| Change | Modified |
| Lines | +5/-3 |
| Diff | S5 taxonomy row: "Full + jail/blacklist" → "Escalated: MIN_STAKE + jail (no blacklist)". Penalty tiers: "Full slash" description narrowed to S4 only; new "S5 escalation" tier added documenting the code's behaviour, Abraham's decision (issue No. 274, 2026-10-25), the rationale, and a mainnet follow-up note. Old implementation note removed (superseded by the resolution). |
| Functionality — how & why | How: The design doc previously said S5 escalates to full slash + blacklist, while the code (DinValidatorStake.slashPartial) applies MIN_STAKE + jail with no blacklist. This closes the doc/code gap: the doc now matches the code and records the decision. Why: Without this fix, the design doc mis-states the live contract behaviour, which could lead contributors or integrators to expect a blacklist that never fires on S5. Abraham's decision on issue No. 274 resolved the question explicitly. |
Diff vs current develop HEAD |
None — no other PR has touched this file since the merge-base |
| Recommended merge proposal | Merged as-is — code claims verified against DinValidatorStake.sol ✓ |
| Actual merge proposal | Soon |
| Pending proposal | None |
| Local merge conflict | No |
| GitHub merge conflict | No |
Verification
Doc-only change. CI Docs and Python green. Code claims cross-checked against DinValidatorStake.sol (_applySlash(MIN_STAKE) + _jailInternal(s5JailDuration) in the S5 escalation branch, no blacklist call). Merge-tree clean.
Local vs. GitHub agree: both report no conflicts; BLOCKED is approval-only.
robertocarlous
left a comment
There was a problem hiding this comment.
Doc/code gap confirmed: DinValidatorStake.slashPartial S5 path applies MIN_STAKE + jail (no blacklist), matching the update. Code claims verified at lines 369-370. Merge-tree clean. Approving at 389121d.
Approval withdrawn: din_peer_check.py returns REFUSE — commit 389121d (develop-sync merge) was authored by robertocarlous, making them a co-author (MAINTAINING No. 7). Approval must come from a non-co-author: @Abidoyesimze, @Santiagocetran, or @abrahamnash.
|
Correction to the review above: |
Closes #274.
Abraham decided on issue No. 274 (comment) to keep the code's S5 behaviour: repeated liveness failures slash
MIN_STAKEand jail fors5JailDuration, with no permanent blacklist. This PR updatesDeveloper/design/MECHANISM_DESIGN.mdto match.Changes (
Developer/design/MECHANISM_DESIGN.mdonly)MIN_STAKE+ jail (no blacklist)".MIN_STAKEslash plus as5JailDurationjail (7 days by default) and thereactivate()exit after the jail. It records the decision and its reasoning, including the correlated-outage concern from issue No. 155, and notes the possible mainnet escalation path (repeated S5 after a jail could lead to a full slash and blacklist).Verification
foundry/src/DinValidatorStake.solondevelop. InslashPartial, the escalation calls_applySlash(validator, MIN_STAKE, "S5_RECIDIVISM")and then_jailInternal(validator, s5JailDuration, ...). Nothing blacklists the validator.reactivate()requires the jail to have expired andactiveStake >= MIN_STAKE.Documentation/technical/contracts/DinValidatorStake.mdandDocumentation/technical/mechanisms/staking-mechanism.mdalready describe this behaviour, so they are unchanged.task_100926_13andtask_240926_17is historical spec text and was left as-is.🤖 Generated with Claude Code