Equalizer - Smart Contract Audit Report


Equalizer Bridge Audit Report Equalizer is building a platform enabling flash loans to equalize DeFi markets.

For this audit, we analyzed the project's on-chain bridge logic.
We previously reviewed their token deployments to Ethereum here and BSC here.
We reviewed the project's bridge logic at 0xC18685Aa9efBc77Fee907A124dA6221210163b3A on the Ethereum Testnet.

Notes on the Contract:
  • The team has developed a cross-chain bridge which will allow users to deposits their native Equalizer tokens across the ETH or BSC blockchain.
  • This contract serves as the on and off ramp for each chain.
  • Users can send their tokens to the bridge contract on the ETH chain to bring those tokens over to the BSC chain, and vice versa.
  • There is a fee that users must pay when initiating a cross-chain swap, by default in the amount of 5 tokens.
  • The team can update the fee and claim the collected fees at any time.
  • Cross-chain swaps involve some off-chain logic run by the team. Please note we have not reviewed the off-chain logic related to the bridge.
  • Utilization of SafeMath to prevent overflows.

  • Audit Findings Summary:
    • No security issues were identified.
    • Users must trust the team as they will operate off-chain logic to power the bridge used for cross-chain transfers.
    • Date: May 5th, 2021
    • Date: May 11th, 2021 - Deployment to mainnet with minor improvements.

    Combined External Threat Results

    Vulnerability CategoryNotesResult
    Arbitrary Storage WriteN/APASS
    Arbitrary JumpN/APASS
    Delegate Call to Untrusted ContractN/APASS
    Dependence on Predictable VariablesN/APASS
    Deprecated OpcodesN/APASS
    Ether ThiefN/APASS
    External CallsN/APASS
    Integer Over/UnderflowN/APASS
    Multiple SendsN/APASS
    State Change External CallsN/APASS
    Unchecked RetvalN/APASS
    User Supplied AssertionN/APASS
    Critical Solidity CompilerN/APASS
    Overall Contract Safety PASS

    Inheritence Chart

    Smart Contract Inheritance

    Function Graph

    Smart Contract Graph

    Functions Overview

     ($) = payable function
     # = non-constant function
     Int = Internal
     Ext = External
     Pub = Public
     + [Int] IBridgeV1 
        - [Ext] SwapOut #
        - [Ext] SwapIn #
     +  Context 
        - [Int] _msgSender
        - [Int] _msgData
     +  Ownable (Context)
        - [Pub]  #
        - [Pub] owner
        - [Pub] renounceOwnership #
           - modifiers: onlyOwner
        - [Pub] transferOwnership #
           - modifiers: onlyOwner
     + [Int] IERC20 
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transferFrom #
     + [Lib] SafeMath 
        - [Int] tryAdd
        - [Int] trySub
        - [Int] tryMul
        - [Int] tryDiv
        - [Int] tryMod
        - [Int] add
        - [Int] sub
        - [Int] mul
        - [Int] div
        - [Int] mod
        - [Int] sub
        - [Int] div
        - [Int] mod
     +  Bridge (IBridgeV1, Ownable)
        - [Pub]  #
        - [Ext] SwapOut #
        - [Ext] SwapIn #
           - modifiers: onlyOwner
        - [Ext] withdraw #
           - modifiers: onlyOwner
        - [Ext] updateFee #
           - modifiers: onlyOwner
        - [Ext] addLiquidity #