Summary
register enforces policy.max_position (a per-position cap) and policy.max_total_weight (a cap on the frozen eligible total W). Both bounds exist purely as arithmetic overflow guards for settlement's forfeiture-distribution math (max_position's own doc comment: "checked at deposit time so settlement's forfeiture-distribution arithmetic can't overflow"), not as a concentration or anti-Sybil control.
Nothing prevents a single funded actor from splitting capital across many addresses, each individually staying under max_position, to collectively acquire far more effective voting weight than any single position could hold, up to the full max_total_weight. docs/src/V2_RESOLUTION.md explicitly and deliberately rejects per-address caps as a concentration control for exactly this reason ("per-address caps... all increase combined influence when a participant splits capital across pseudonymous addresses... making address splitting profitable"), so this isn't an oversight in register's logic, it's a known consequence of the linear-weight design that isn't yet bounded by anything else.
Impact: a single well-funded actor can dominate a dispute's outcome by splitting into enough addresses, up to max_total_weight, the same plutocratic risk V2_RESOLUTION.md's own "Non-goals and trust assumption" section already states plainly ("an address or coalition controlling more than half of the eligible bonded capital can determine the result"), but with no bound at all today on how cheaply one actor can approach that threshold via splitting.
Scope
- Evaluate bounding the ratio between
max_total_weight and max_position at initialize (e.g. requiring max_total_weight be no more than some multiple of max_position), so a deployment can at least cap how many effective "seats" a single split actor could occupy, even without solving Sybil resistance outright.
- Document the residual plutocratic risk explicitly wherever policy parameters are described (
CONTRACT_V2.md), since this isn't fully solvable without an external identity system, per V2_RESOLUTION.md's own analysis.
- This is a design trade-off, not a pure bug fix; the assignee should present options rather than assuming a specific ratio is correct.
Proposed approach
No single fix is prescribed. A bounded max_total_weight/max_position ratio is the most direct lever available without a larger redesign; the assignee's first deliverable should be a short written analysis of what ratio (if any) meaningfully raises the cost of address-splitting without over-constraining legitimate deployments, confirmed with the maintainer before implementation.
Summary
registerenforcespolicy.max_position(a per-position cap) andpolicy.max_total_weight(a cap on the frozen eligible totalW). Both bounds exist purely as arithmetic overflow guards for settlement's forfeiture-distribution math (max_position's own doc comment: "checked at deposit time so settlement's forfeiture-distribution arithmetic can't overflow"), not as a concentration or anti-Sybil control.Nothing prevents a single funded actor from splitting capital across many addresses, each individually staying under
max_position, to collectively acquire far more effective voting weight than any single position could hold, up to the fullmax_total_weight.docs/src/V2_RESOLUTION.mdexplicitly and deliberately rejects per-address caps as a concentration control for exactly this reason ("per-address caps... all increase combined influence when a participant splits capital across pseudonymous addresses... making address splitting profitable"), so this isn't an oversight inregister's logic, it's a known consequence of the linear-weight design that isn't yet bounded by anything else.Impact: a single well-funded actor can dominate a dispute's outcome by splitting into enough addresses, up to
max_total_weight, the same plutocratic riskV2_RESOLUTION.md's own "Non-goals and trust assumption" section already states plainly ("an address or coalition controlling more than half of the eligible bonded capital can determine the result"), but with no bound at all today on how cheaply one actor can approach that threshold via splitting.Scope
max_total_weightandmax_positionatinitialize(e.g. requiringmax_total_weightbe no more than some multiple ofmax_position), so a deployment can at least cap how many effective "seats" a single split actor could occupy, even without solving Sybil resistance outright.CONTRACT_V2.md), since this isn't fully solvable without an external identity system, perV2_RESOLUTION.md's own analysis.Proposed approach
No single fix is prescribed. A bounded
max_total_weight/max_positionratio is the most direct lever available without a larger redesign; the assignee's first deliverable should be a short written analysis of what ratio (if any) meaningfully raises the cost of address-splitting without over-constraining legitimate deployments, confirmed with the maintainer before implementation.