Chainvet
Detectors

Denial of Service

7 detectors (DS-01…DS-07) for locked funds, gas-limit loops, failing calls, and forced-balance assumptions.

Denial-of-service detectors (DS) catch ways a contract can be wedged — funds that can't be withdrawn, loops that exceed the block gas limit, a single failing external call that blocks everyone, and logic that a forced balance change can break. 7 detectors.

IDSlugSeverityConfidenceWhat it detects
DS-01hardcoded-gas-transferLowHightransfer / send with the hardcoded 2300-gas stipend — breaks under gas repricing.
DS-02locked-etherHighMediumThe contract can receive ether but has no way to withdraw it.
DS-03dos-block-gas-limitMediumMediumAn unbounded loop that can exceed the block gas limit.
DS-04dos-with-failed-callHighMediumA single failing external call (e.g. a push payment) can block the whole function for everyone.
DS-05force-ether-balance-checkHighMediumLogic that relies on address(this).balance equality — forcible via selfdestruct.
DS-06unsafe-send-in-requireHighMediumsend / call used inside a require — a failing recipient DoSes the function.
DS-07unchecked-sendMediumMediumThe return value of send / a low-level call is not checked — silent failure.

Remediation

Prefer pull payments over push, bound every loop, avoid strict address(this).balance equality checks, and always check the return value of low-level calls. See the pull-payment pattern.