Rushmoon - Smart Contract Audit Report

Summary

Rushmoon Finance Audit Report Rushmoon is building a new automatic liquidity acquisition yield farm and AMM decentralized exchange on the Binance Smart Chain.

For this audit, we reviewed Rushmoon's token contract, deployed at 0xff96ce2cc0d20da0250a63bdca2b568f52a5bc71 on mainnet.
Please note we have not reviewed Rushmoon's staking or any other contracts.
Notes on the Contract:
  • The initial total supply is 3 billion tokens.
  • Due to burn fees, the total supply is now ~2.85 billion.
  • The team has the ability to appoint minters who can mint the token at any time.
  • All transactions are subject to a 5% tax.
  • 4% of this tax on transactions is used to fund automated adding of liquidity.
  • The remaining 1% of the transfer tax is burned.

  • 41% of the total supply is held in two Pancakeswap liquidity pools.
  • 68% of liquidity is staked in a contract not reviewed by our team.
  • 17% of liquidity is held in the contract.
  • The rest of liquidity is held by various community members.
  • 28.5% of the token's supply has been burned.
  • 6% of the supply is in a staking contract not reviewed by our team.
  • The next largest holder has 3%.

  • While the team has the ability to update fees, the total fees can never exceed 6%.
  • Admins of the smart contract have the ability to blacklist users and prevent them from transferring tokens.
  • The admin also has the ability to add any other address as an admins and minters.
  • The admin can update the address of the pancakeswap router and pair as well. This functionality, however, would also allow the team to claim the LP tokens in the contract if they wanted to.
  • Rushmoon uses SafeMath libraries to prevent overflows. The contract also follows the BEP20 standard.
  • The contract uses a standard governance model so users will be able to vote on proposals.

  • Audit Findings Summary
    • No security issues from external attackers were identified.
    • Ensure trust in the team as they have notable control in the ecosystem.
    • Date: May 29th, 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

ERC20 Token Graph

Multi-file Token


   ($) = payable function
    # = non-constant function
    
 +  Context 
    - [Int]  #
    - [Int] _msgSender
    - [Int] _msgData

 + [Int] IERC20 
    - [Ext] totalSupply
    - [Ext] balanceOf
    - [Ext] transfer #
    - [Ext] allowance
    - [Ext] approve #
    - [Ext] transferFrom #

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

 +  ERC20 (Context, IERC20)
    - [Pub]  #
    - [Pub] totalSupply
    - [Pub] balanceOf
    - [Pub] transfer #
    - [Pub] allowance
    - [Pub] approve #
    - [Pub] transferFrom #
    - [Pub] increaseAllowance #
    - [Pub] decreaseAllowance #
    - [Int] _transfer #
    - [Int] _mint #
    - [Int] _burn #
    - [Int] _approve #
    - [Int] _burnFrom #

 +  MinterRole (Context)
    - [Int]  #
    - [Pub] isMinter
    - [Pub] addMinter #
       - modifiers: onlyMinter
    - [Pub] renounceMinter #
    - [Int] _addMinter #
    - [Int] _removeMinter #

 +  ERC20Burnable (Context, ERC20)
    - [Pub] burn #
    - [Pub] burnFrom #

 +  ERC20Mintable (ERC20, MinterRole)
    - [Pub] mint #
       - modifiers: onlyMinter

 + [Lib] Roles 
    - [Int] add #
    - [Int] remove #
    - [Int] has

 +  ERC20Detailed (IERC20)
    - [Pub]  #
    - [Pub] name
    - [Pub] symbol
    - [Pub] decimals

 +  WhitelistAdminRole (Context)
    - [Int]  #
    - [Pub] isWhitelistAdmin
    - [Pub] addWhitelistAdmin #
       - modifiers: onlyWhitelistAdmin
    - [Pub] renounceWhitelistAdmin #
    - [Int] _addWhitelistAdmin #
    - [Int] _removeWhitelistAdmin #

 +  ERC20TransferLiquidityLock (ERC20)
    - [Pub]  #
    - [Pub] calculateFees
    - [Pub] isContract
    - [Int] _transfer #
    - [Ext]  ($)
    - [Pub] RebalanceLiquidity #
    - [Prv] _rewardLiquidityProviders #
    - [Prv] remLiquidity #
    - [Prv] addLiquidity #
    - [Ext] lockableSupply
    - [Ext] lockedSupply
    - [Ext] burnedSupply
    - [Pub] burnableLiquidity
    - [Pub] burnedLiquidity
    - [Pub] lockedLiquidity

 + [Int] IPancakeV2Router01 
    - [Ext] factory
    - [Ext] WETH
    - [Ext] quote
    - [Ext] getAmountOut
    - [Ext] getAmountIn
    - [Ext] getAmountsOut
    - [Ext] getAmountsIn
    - [Ext] addLiquidityETH ($)

 + [Int] IPancakeswaoRouter02 
    - [Ext] WETH
    - [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
    - [Ext] removeLiquidityETH #
    - [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
    - [Ext] addLiquidityETH ($)

 + [Int] IPancakeswapV2Pair 
    - [Ext] sync #

 +  ERC20Governance (ERC20, ERC20Detailed)
    - [Int] _transfer #
    - [Int] _mint #
    - [Int] _burn #
    - [Ext] delegates
    - [Ext] delegate #
    - [Ext] delegateBySig #
    - [Ext] getCurrentVotes
    - [Ext] getPriorVotes
    - [Int] _delegate #
    - [Int] _moveDelegates #
    - [Int] _writeCheckpoint #
    - [Int] safe32
    - [Int] getChainId

 +  Balancer 
    - [Pub]  #
    - [Ext]  ($)
    - [Ext] rebalance #
    - [Prv] swapEthForTokens #

 +  RushMoon (ERC20, ERC20Detailed, ERC20Burnable, ERC20Governance, ERC20Mintable, ERC20TransferLiquidityLock, WhitelistAdminRole)
    - [Pub] setPancakeV2Router #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setPancakeV2Pair #
       - modifiers: onlyWhitelistAdmin
    - [Pub] unlockLP #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setRebalanceDivisor #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setRebalanceInterval #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setRebalanceRewardDivisior #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setPresaleAddress #
       - modifiers: onlyWhitelistAdmin
    - [Pub] recoverLostBNB #
       - modifiers: onlyWhitelistAdmin
    - [Pub] recoverLostTokensExceptOurTokens #
       - modifiers: onlyWhitelistAdmin
    - [Pub] createPancakeSwapPair #
       - modifiers: onlyWhitelistAdmin
    - [Pub] userBalanceInPancake
    - [Pub] toggleFeeless #
       - modifiers: onlyWhitelistAdmin
    - [Pub] toggleFees #
       - modifiers: onlyWhitelistAdmin
    - [Pub] toggleUnlocked #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setBlackListAddress #
       - modifiers: onlyWhitelistAdmin
    - [Pub] activateTrading #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setMinRebalanceAmount #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setBurnTxFee #
       - modifiers: onlyWhitelistAdmin
    - [Pub] setTaxFee #
       - modifiers: onlyWhitelistAdmin