Celo Contracts Audit

OpenZeppelinFiles named in the report

Audit · firm’s term: audit

OpenZeppelin reviewed Celo (Celo Contracts Audit) on 5 Feb 2021: 94 findings, 2 critical; 58 marked fixed, 5 acknowledged, 31 open.

2 critical findings, fixed
Open the reportOpen Celo’s security record

Report hosted on blog.openzeppelin.com.

Trustblock does not review code.

Findings94

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

SeverityOpenAcknowledgedFixed
Critical002
High202
Medium8311
Low21243
Critical[C01] Funds of the Escrow contract can be locked by anyoneFixed

The report gives no description here.

Critical[C02] Any owner of the Multisig can execute unconfirmed transactionsFixed

The report gives no description here.

High[H01] removeSlasher can cause mismatch between slashingWhitelist and slashingMapFixed

The report gives no description here.

High[H02] Commissions can deceive members of a validator groupFixed

The report gives no description here.

Medium[M01] Deployment can be frontrunFixed

The report gives no description here.

Medium[M01] Incorrect value of MAX_UINTFixed

The report gives no description here.

Medium[M01] Metadata stripping regex may mismatchFixed

The report gives no description here.

Medium[M02] Functions in StableToken do not emit Transfer eventFixed

The report gives no description here.

Medium[M02] Inputs are not checked in setReserveFractionFixed

The report gives no description here.

Medium[M03] Input data may not be usedFixed

The report gives no description here.

Show 10 more
Medium[M04] Undocumented assembly blocksFixed

The report gives no description here.

Medium[M05] Missing counter additionFixed

The report gives no description here.

Medium[M06] Lack of input validationsFixed

The report gives no description here.

Medium[M08] The reveal process can get stuck for a proposerFixed

The report gives no description here.

Medium[M12] There is no security policyFixed

The report gives no description here.

Low[L01] Celo registry address defined multiple timesFixed

The report gives no description here.

Low[L01] Duplicated onlyWhenFrozen modifierFixed

The report gives no description here.

Low[L01] Duplicated transfer of ownershipFixed

The report gives no description here.

Low[L01] Frozen function can be bypassedFixed

The report gives no description here.

Low[L01] Grace period is hardcodedFixed

The report gives no description here.

Show 10 more
Low[L02] Function visibilityFixed

The report gives no description here.

Low[L02] Inconsistent quorum calculationFixed

The report gives no description here.

Low[L02] Logs are incomplete and overwritten with each script invocationFixed

The report gives no description here.

Low[L02] Parameter and input variable type mismatchFixed

The report gives no description here.

Low[L03] Long and complex functionFixed

The report gives no description here.

Low[L03] Missing revert messages in require statementsFixed

The report gives no description here.

Low[L03] The initialize function is inconsistently declared in interfacesFixed

The report gives no description here.

Low[L04] BitmapSetForInterval event does not broadcast caller informationFixed

The report gives no description here.

Low[L04] Lack of indexed parameters in eventsFixed

The report gives no description here.

Low[L04] Remove commented out codeFixed

The report gives no description here.

Show 10 more
Low[L05] Check backwards-compatibility throws for versions 10 and aboveFixed

The report gives no description here.

Low[L05] Lack of input validation in the Heap libraryFixed

The report gives no description here.

Low[L06] Lack of validation may produce unexpected state in the distribution of epoch rewardsFixed

The report gives no description here.

Low[L07] The minimum gas price calculation differs from documentationFixed

The report gives no description here.

Low[L07] Unnecessary loopFixed

The report gives no description here.

Low[L08] Lack of indexed parameters in eventsFixed

The report gives no description here.

Low[L08] There are two different whitelist gettersFixed

The report gives no description here.

Low[L08] Unused eventsFixed

The report gives no description here.

Low[L09] Lack of indexed parameters in eventsFixed

The report gives no description here.

Low[L09] Misleading comments and typographical errorsFixed

The report gives no description here.

Show 10 more
Low[L09] Whitelist setters do not emit eventsFixed

The report gives no description here.

Low[L10] Inconsistent validation of variablesFixed

The report gives no description here.

Low[L11] Missing revert messages in require statementsFixed

The report gives no description here.

Low[L11] Removed account signers cannot be reauthorizedFixed

The report gives no description here.

Low[L12] Comments still refer to removed functionsFixed

The report gives no description here.

Low[L12] Transactions’ outputs are not being returnedFixed

The report gives no description here.

Low[L13] Duplicated code in updatePublicKeysFixed

The report gives no description here.

Low[L13] Fraction reduction is not applied in all methodsFixed

The report gives no description here.

Low[L14] maxDistribution can be set before the factory sends the goldFixed

The report gives no description here.

Low[L15] Failure of ecrecover function does not revertFixed

The report gives no description here.

Show 8 more
Low[L15] Missing revert messages in require statementsFixed

The report gives no description here.

Low[L16] Not using the SafeMath libraryFixed

The report gives no description here.

Low[L16] Transfer of CELO may unexpectedly failFixed

The report gives no description here.

Low[L16] Unclear overwrite of commission update queueFixed

The report gives no description here.

Low[L18] Lack of checks for denominatorFixed

The report gives no description here.

Low[L19] Signers cannot change association once setFixed

The report gives no description here.

Low[L21] Lack of assert statement may produce unexpected slashFixed

The report gives no description here.

Low[L22] Not following the fail-loudly principleFixed

The report gives no description here.

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 (23)

  • packages/protocol/contracts/identity/interfaces/IRandom.sol
  • packages/protocol/contracts/stability/interfaces/IReserve.sol
  • packages/protocol/contracts/common/UsingRegistry.sol
  • packages/protocol/contracts/governance/LockedGold.sol
  • packages/protocol/contracts/governance/Governance.sol
  • packages/protocol/contracts/stability/Reserve.sol
  • packages/protocol/contracts/common/UsingPrecompiles.sol
  • packages/protocol/contracts/common/FractionUtil.sol
  • packages/protocol/contracts/identity/Attestations.sol
  • packages/protocol/contracts/governance/Proposals.sol
  • packages/protocol/contracts/governance/SlasherUtil.sol
  • packages/protocol/contracts/identity/Escrow.sol
  • packages/protocol/contracts/baklava/Freezable.sol
  • packages/protocol/contracts/common/interfaces/IValidators.sol
  • packages/protocol/contracts/governance/EpochRewards.sol
  • packages/protocol/contracts/common/Proxy.sol
  • packages/protocol/contracts/stability/SortedOracles.sol
  • packages/protocol/contracts/stability/interfaces/IStableToken.sol
  • packages/protocol/contracts/common/FixidityLib.sol
  • packages/protocol/contracts/governance/interfaces/IValidators.sol
  • packages/protocol/contracts/governance/Validators.sol
  • packages/protocol/contracts/stability/Exchange.sol
  • packages/protocol/contracts/common/Initializable.sol

Part of Celo’s security record

Celo
Audits8 audits by 2 firmsLast audit Apr 2024, by Hexens.
Critical findingsNo open critical findingsAcross the 8 reports, 2 critical findings were reported. Each is marked fixed by the firm that reported it.
Open Celo’s security record

Security firm

OpenZeppelin

67 projects reviewed · 184 reports · latest Aug 2026

See OpenZeppelin’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