Repository navigation
docs: analyse anti-snipe per-position throttle - #222
Conversation
Adds V2_ANTI_SNIPE_THROTTLE.md, the written analysis requested in drydocs#213. The document covers: - How the existing anti-snipe extension works in register() - The cost floor imposed by drydocs#155's effective_minimum - Attack cost modelling for both single-address top-up and Sybil paths - Why registration_hard_deadline + max_total_weight already bound the worst case below what a throttle would achieve - Two throttle candidates (first-deposit-only, per-assertion flag) and why each hurts legitimate late-arriving participants more than it constrains attackers - A verdict that no throttle is recommended, with an appendix giving the two parameter checks operators should verify before launch Updates SUMMARY.md to list the new document under Deployment V2.
| | Profile | `T_reg` | `T_ext` | `T_hard` | Max extensions | | ||
| | ------- | ------- | ------- | -------- | -------------- | | ||
| | Private beta | 3 600 s (1 h) | 300 s (5 min) | 7 200 s (2 h) | 12 | | ||
| | Public testnet | 14 400 s (4 h) | 600 s (10 min) | 43 200 s (12 h) | 47 | |
There was a problem hiding this comment.
The public testnet row's max-extension count is off by one. (43 200 - 14 400) / 600 = 48, not 47. Correct the table so deployment sizing math built on it doesn't inherit the error.
|
|
||
| ### Comparing to `max_total_weight` | ||
|
|
||
| The attack cost floor above — `72 × base_bond` — sits just inside the |
There was a problem hiding this comment.
72 x base_bond is well above the 30 x base_bond cap and above the 28 x base_bond of third-party headroom, so it does not sit just inside the cap. The floor exceeding what max_total_weight can absorb is exactly why the attacker cannot trigger all 72 extensions. Reword accordingly.
|
Requested Change Fixed in 333ceac.
|
collinsezedike
left a comment
There was a problem hiding this comment.
Hey @Kayce10, thank you for the contribution and the quick turnaround on the corrections. Merging now.
|
Hey @Kayce10, thank you for the contribution. If the work was worth your time, a star on the repo helps other contributors find the project. |
|
@collinsezedike, It was worth my time. Once again thank you for the opportunity to contribute to this project |
Summary
Adds
docs/src/V2_ANTI_SNIPE_THROTTLE.md, the written analysis requested in #213. Updatesdocs/src/SUMMARY.mdto list it under the Deployment V2 section.closes #213
What the document covers
register(): any qualifying deposit (landing withinanti_snipe_extension_secsof the current soft deadline) pushes the deadline out, capped unconditionally atregistration_hard_deadline.effective_minimum: every deposit — first-time or top-up — must clearmin_resolution_bond, so dust-sized triggers are already blocked.max_total_weightis the binding constraint in practice (not the number of extension slotsanti_snipe_hard_max_secswould theoretically permit).has_been_extendedflag) and why each reduces coverage for legitimate late-arriving participants more than it constrains attackers — the Sybil path is unaffected by any per-position restriction.registration_hard_deadline+max_total_weight+ [Chore] Anti-snipe extension griefable via cheap repeated top-ups #155 floor already bound the worst case to a meaningful capital cost with no added mechanism.What was tested
Documentation-only change; no contract code modified. Verified that:
V1_MAINNET_PARAMETERS.mdandV2_BOND_SIZING.md.SUMMARY.mdindentation and file reference are consistent with existing entries.