SSV.network

QuantstampFiles named in the report

Quantstamp reviewed SSV Network (SSV.network) on 21 Jul 2023: 25 findings, 0 critical; 6 marked fixed, 17 acknowledged, 2 open.

No open critical findings
Open the reportOpen SSV Network’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings25

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium023
Low2153
MediumCluster Owner Can Withdraw Into LiquidationFixed

The `withdraw()` function allows the cluster owner to withdraw funds from the cluster balance. The withdrawal is successful as long as there is sufficient balance and the cluster is not liquidatable. The `cluster.isLiquidatable()` function checks whether the cluster is eligible for liquidation based on operator fees, the current network fee, the minimum blocks before the liquidation, and the minimum liquidation collateral. The liquidation check is done before the `amount` is subtracted from the cluster `balance`. This means that it is possible for a cluster owner to withdraw funds that would cause the cluster to become liquidatable.

MediumIncomplete Error Handling for Failed DelegatecallFixed

The `CoreLib.delegateCall()` function uses a low-level `delegatecall` to execute the logic of another contract. When the `delegatecall` is unsuccessful, the function checks for returned data, and if present, it reverts the transaction and returns this data as an error message. However, in scenarios where the `delegatecall` fails but does not provide any return data, the function does not revert and continues to execute. This could potentially lead to undesired outcomes and unexpected behaviors because the function does not stop despite the `delegatecall` failure.

MediumRegister Same OperatorsFixed

While the `registerValidator()` function validates the operator count using `_validateOperatorIds()`, it does not prevent the registration of identical operators for a validator. The function only checks that the operator IDs are sorted in ascending order but does not verify whether there are any duplicate operator IDs. If duplicate operator IDs are registered, it could lead to issues with consensus among the operators.

Low`Type256.shrink()` Can OverflowFixed

`Type256.shrink()` converts 256-bit values to 64-bit values by dividing a 256-bit value by `10,000,000` and typecasting it to a 64-bit value. Additionally, the 256-bit value must be divisible by `10,000,000` or else the function will revert. If the input 256-bit value is greater than `2^64 * 10,000,000`, the returned 64-bit value is incorrect.

LowFee Change Request Viewer Function Fails with Zero Fee RequestFixed

The `getOperatorDeclaredFee()` function, which retrieves the details of an operator's fee change request, does not function correctly when the requested fee is zero. The function contains a check that reverts the transaction if the requested fee is zero, returning an error of `NoFeeDeclared()`. However, setting a fee request to zero is a valid operation that an operator might wish to perform. This means that a legitimate fee change request to zero is inaccessible via this viewer function.

LowSame Operator Registered Multiple TimesFixed

Using `SSVNetwork.registerOperator()`, the same operator can register their public key multiple times where each registration generates a new operator ID. If an operator desires to exceed the `validatorsPerOperatorLimit`, the operator could register the same public key again and partner with more validators.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (9)

  • contracts/libraries/OperatorLib.sol
  • contracts/libraries/ClusterLib.sol
  • contracts/ISSVNetworkCore.sol
  • contracts/ISSVNetwork.sol
  • contracts/SSVNetworkViews.sol
  • contracts/libraries/Types.sol
  • contracts/libraries/NetworkLib.sol
  • contracts/SSVNetwork.sol
  • contracts/ISSVNetworkViews.sol

Part of SSV Network’s security record

SSV Network
Audits2 audits by 2 firmsLast audit Nov 2024, by ChainSecurity.
Critical findingsNo open critical findingsAcross 2 reports.
Open SSV Network’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us