Eros - Smart Contract Audit Report

Summary

Eros Audit Report Eros ($EROS) is a new BEP20 token on the Binance Smart Chain with a buyback system for burning supply.

We audited Eros's token contract at 0xe0cA4724Bc8B97B259d25596ee3CfAb816629baD on the Binance Smart Chain mainnet.

Overview of the Contract:
  • The total supply of the token is set to 1 million [1,000,000] $EROS.
  • No burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
  • The owner has the ability to assign and remove addresses to a Minter role.
  • The assigned Minter(s) can mint tokens to any destination address at any time.
  • At the time of writing this report, 100% of the total supply is in possession of the owner as the project was recently deployed.

  • There is a 3% burn fee, a 3% buyback fee, and a 3% marketing fee on all transactions for any non-excluded address that participates in a transfer.
  • The tokens collected through the burn fee and the buyback fee are used to fund the buyback functionality, which once a threshold value is met, is swapped for BNB and is stored in the contract address. Once a BNB buyback threshold is met, the BNB is used to buy tokens which are subsequently burned.
  • The tokens collected through the marketing fee are stored in the contract and, once a threshold value is met, swapped for BNB and is sent to the team's marketing wallet. The Operator can update the marketing wallet to any address at any time.

  • The owner has the ability to assign and remove addresses to an Operator role.
  • The Operator of the contract can exclude and include accounts from all transfer fees.
  • The threshold value for the burn, buyback, and marketing fees can be set by the Operator to any amount at any time.
  • The contract features an Anti-Whale mechanism in which the Operator can impose a transaction limit for specified addresses. The transaction limit can be set to any value between 0.5% and 5% of the circulating supply.
  • The Operator can enable/disable the AntiWhale functionality.
  • The Operator can change the LP token address to any address at any time.
  • The $EROS token smart contract utilizes logic from an external Referral contract that was not reviewed by our team as part of this audit.

  • Ownership has not been renounced.
  • The contract utilizes SafeMath libraries along with following the BEP20 standard.

Audit Findings Summary
  • No issues from external attackers were identified.
  • Please ensure trust in the team as they have subsantial control over the total token supply.
  • We strongly recommend renouncing ownership after a successful deployment.
  • Date: August 20th, 2021

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
ExceptionsN/APASS
External CallsN/APASS
Flash LoansN/APASS
Integer Over/UnderflowN/APASS
Multiple SendsN/APASS
OraclesN/APASS
SuicideN/APASS
State Change External CallsN/APASS
Unchecked RetvalN/APASS
User Supplied AssertionN/APASS
Critical Solidity CompilerN/APASS
Overall Contract Safety PASS

BEP20 Token Graph

Multi-file Token

												
($) = payable function
 # = non-constant function

 + [Int] IReferral 
    - [Ext] addReferrer #
    - [Ext] addRewards #
    - [Ext] getRewards
    - [Ext] getReferrer
    - [Ext] getReferralsCount

 + [Int] IUniswapV2Router01 
    - [Ext] factory
    - [Ext] WETH
    - [Ext] addLiquidity #
    - [Ext] addLiquidityETH ($)
    - [Ext] removeLiquidity #
    - [Ext] removeLiquidityETH #
    - [Ext] removeLiquidityWithPermit #
    - [Ext] removeLiquidityETHWithPermit #
    - [Ext] swapExactTokensForTokens #
    - [Ext] swapTokensForExactTokens #
    - [Ext] swapExactETHForTokens ($)
    - [Ext] swapTokensForExactETH #
    - [Ext] swapExactTokensForETH #
    - [Ext] swapETHForExactTokens ($)
    - [Ext] quote
    - [Ext] getAmountOut
    - [Ext] getAmountIn
    - [Ext] getAmountsOut
    - [Ext] getAmountsIn

 + [Int] IUniswapV2Router02 (IUniswapV2Router01)
    - [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
    - [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
    - [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
    - [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
    - [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #

 + [Int] IUniswapV2Factory 
    - [Ext] feeTo
    - [Ext] feeToSetter
    - [Ext] getPair
    - [Ext] allPairs
    - [Ext] allPairsLength
    - [Ext] createPair #
    - [Ext] setFeeTo #
    - [Ext] setFeeToSetter #

 +  MinterRole 
    - [Pub]  #
    - [Ext] isMinter
    - [Pub] addMinter #
    - [Pub] removeMinter #

 +  OperatorRole 
    - [Pub]  #
    - [Ext] isOperator
    - [Pub] addOperator #
    - [Pub] removeOperator #

 +  OwnerRole 
    - [Pub]  #
    - [Ext] transferOwnership #
       - modifiers: onlyOwner

 + [Lib] SafeMath 
    - [Int] add
    - [Int] sub
    - [Int] sub
    - [Int] mul
    - [Int] div
    - [Int] div
    - [Int] mod
    - [Int] mod
    - [Int] min
    - [Int] sqrt

 +  BEP20e (OwnerRole, MinterRole, OperatorRole)
    - [Pub]  #
    - [Pub] balanceOf
    - [Ext] allowance
    - [Ext] mint #
       - modifiers: onlyMinter
    - [Ext] burn #
    - [Ext] approve #
    - [Ext] addBuybackBalance #
    - [Ext] transfer #
    - [Ext] transferFrom #
    - [Ext] increaseAllowance #
    - [Ext] decreaseAllowance #
    - [Pub] calcFee
    - [Pub] totalSupplyWithoutDeadBalance
    - [Pub] maxAntiWhaleTxAmount
    - [Pub] buyback #
       - modifiers: onlyOperator
    - [Pub] swapMarketing #
       - modifiers: onlyOperator
    - [Pub] swapBuyback #
       - modifiers: onlyOperator
    - [Ext] setMarketingAddress #
       - modifiers: onlyOperator
    - [Ext] setMarketingSwapEnabled #
       - modifiers: onlyOperator
    - [Ext] setMinMarketingSwapAmount #
       - modifiers: onlyOperator
    - [Ext] setMaxMarketingSwapAmount #
       - modifiers: onlyOperator
    - [Ext] setSwapEnabled #
       - modifiers: onlyOperator
    - [Ext] setMinSwapAmount #
       - modifiers: onlyOperator
    - [Ext] setMaxSwapAmount #
       - modifiers: onlyOperator
    - [Ext] setBuybackEnabled #
       - modifiers: onlyOperator
    - [Ext] setMinBalanceRequired #
       - modifiers: onlyOperator
    - [Ext] setMinBuybackSellAmount #
       - modifiers: onlyOperator
    - [Ext] setMaxBuybackAmount #
       - modifiers: onlyOperator
    - [Pub] isLpToken
    - [Ext] setLpToken #
       - modifiers: onlyOperator
    - [Pub] isExcludedFromFee
    - [Pub] setExcludedFromFee #
       - modifiers: onlyOperator
    - [Pub] isExcludedFromAntiWhale
    - [Pub] setExcludedFromAntiWhale #
       - modifiers: onlyOperator
    - [Ext] setAntiWhaleTxAmountRate #
       - modifiers: onlyOperator
    - [Ext] setAntiWhaleEnabled #
       - modifiers: onlyOperator
    - [Pub] addMinter #
       - modifiers: onlyOwner
    - [Pub] removeMinter #
       - modifiers: onlyOwner
    - [Pub] addOperator #
       - modifiers: onlyOwner
    - [Pub] removeOperator #
       - modifiers: onlyOwner
    - [Ext] setReferral #
       - modifiers: onlyOwner
    - [Ext]  ($)
    - [Int] _buyback #
    - [Int] _swapMarketing #
    - [Int] _swapBuyback #
    - [Int] _mint #
    - [Int] _burn #
    - [Int] _approve #
    - [Int] _transfer #
    - [Int] _transferAmount #
    - [Int] _swapTokensForEth #
       - modifiers: lockTheSwap
    - [Int] _swapETHForTokens #
       - modifiers: lockTheSwap

 +  ErosToken (BEP20e)
    - [Pub]  #
       - modifiers: BEP20e