ACCEL - Smart Contract Audit Report

Summary

ACCEL Audit Report ACCEL ($ACCEL) is a new ERC-20 token on the Ethereum Blockchain.

We reviewed the ACCEL contract at 0x7475C42f8BF2c19F4EAF12fEaabaBA859fdC8914 on the Ethereum mainnet.

Notes on the Contract:
  • The total supply of the token is set to 5 billion $ACCEL [5,000,000,000].
  • No minting or burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
  • At the time of writing this report, 85.8% of the total supply belongs to the deployer.
  • 12.9% of the total supply belongs to the team's SwapContract. This contract was out of scope for the purpose of this audit.
  • 1.29% of the total supply belongs to the team's GiveawayContract. This contract was out of scope for the purpose of this audit.

  • There is a Sustainability fee, Development fee, and Staking fee on all transfers where neither the sender nor the recipient is excluded from fees.
  • The tokens collected from the fees during transfers are stored in the contract address balance. Once the threshold number of tokens (determined by the owner) is met, the tokens are swapped for ETH and split between the team's Sustainability, Development, and Staking addresses.
  • Although the Safemath library is utilized, the contract is deployed with Solidity v0.8.7 which has built-in overflow checks. Safemath could be safely removed to reduce contract size and increase gas savings.
  • Some gas optimizations can be achieved through declaring functions external instead of public. As this contract is already deployed, this is merely informational.

  • Ownership Controls:
  • Upon deployment, an address was assigned to a DAOControl role. This address has access to specific functionality in the contract.
  • The DAOControl address can modify the Sustainability fee, Development fee, and Staking fee to any percentages as long as the total fees combined do not exceed 49%.
  • The DAOControl address can exclude and include accounts from transfer fees.
  • The DAOControl address can enable/disable the automatic swapping functionality.
  • The DAOControl address can set the threshold number of tokens that triggers the automatic swapping functionality to any value at any time.
  • The DAOControl address can also manually trigger this swapping functionality at any time.
  • The owner can manually add/remove accounts from a blacklist that prevents accounts from being able to participate in transfers.
  • The DAOControl address can update the team's Sustainability, Development, and Staking addresses at any time.
  • The DAOControl address can update the Uniswap Router address at any time.
  • The DAOControl address can transfer their role to another address at any time.
Audit Findings Summary
  • No external threats were identified.
  • Please ensure trust in the team prior to investing as they have substantial control in the ecosystem and own a large portion of the total supply.
  • Date: December 23rd, 2021
  • Updated: January 6th, 2021 to reflect the contract's new mainnet address.

Audit Results

Vulnerability CategoryNotesResult
Arbitrary Storage WriteN/APASS
Arbitrary JumpN/APASS
Centralization of Control
  • The team can set total fees up to 49%.
  • The team owns a large portion of the total supply.
  • WARNING
    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

    Function Graph

    ERC20 Token Graph


    Inheritance Chart

    Multi-file Token


    Functions Overview

    
     ($) = payable function
     # = non-constant function
     
     +  Context 
        - [Int] _msgSender
        - [Int] _msgData
    
     + [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
    
     + [Int] IERC20 
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transferFrom #
    
     +  ERC20 (Context, IERC20)
        - [Pub]  #
        - [Pub] name
        - [Pub] symbol
        - [Pub] decimals
        - [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] _setupDecimals #
        - [Int] _beforeTokenTransfer #
    
     +  Ownable 
        - [Pub]  #
        - [Pub] owner
        - [Pub] transferOwnership #
           - modifiers: onlyOwner
    
     + [Int] IUniswapV2Factory 
        - [Ext] feeTo
        - [Ext] feeToSetter
        - [Ext] getPair
        - [Ext] allPairs
        - [Ext] allPairsLength
        - [Ext] createPair #
        - [Ext] setFeeTo #
        - [Ext] setFeeToSetter #
    
     + [Int] IUniswapV2Pair 
        - [Ext] name
        - [Ext] symbol
        - [Ext] decimals
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transfer #
        - [Ext] transferFrom #
        - [Ext] DOMAIN_SEPARATOR
        - [Ext] PERMIT_TYPEHASH
        - [Ext] nonces
        - [Ext] permit #
        - [Ext] MINIMUM_LIQUIDITY
        - [Ext] factory
        - [Ext] token0
        - [Ext] token1
        - [Ext] getReserves
        - [Ext] price0CumulativeLast
        - [Ext] price1CumulativeLast
        - [Ext] kLast
        - [Ext] burn #
        - [Ext] swap #
        - [Ext] skim #
        - [Ext] sync #
        - [Ext] initialize #
    
     + [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 #
    
     +  ReentrancyGuard 
        - [Pub]  #
    
     +  Accel (ERC20, Ownable, ReentrancyGuard)
        - [Pub]  #
           - modifiers: ERC20
        - [Ext]  ($)
        - [Ext] updateWalletSustainability #
        - [Ext] updateWalletDevelopment #
        - [Ext] updateWalletStaking #
        - [Ext] updateDAOcontrol #
        - [Pub] excludeFromFee #
        - [Pub] includeInFee #
        - [Pub] setSwapAndSendFeesEnabled #
        - [Pub] setThresoldToSwap #
        - [Pub] setFeesPercent #
        - [Ext] setBlacklistWallet #
        - [Ext] setCEXWhitelistWallet #
        - [Ext] setRouterOther #
        - [Ext] AddToCEX #
        - [Ext] manualswap #
        - [Ext] manualswapcustom #
        - [Ext] manualsend #
        - [Int] _transfer #
        - [Prv] swapAndSendFees #
           - modifiers: lockTheSwap
        - [Prv] swapTokensForEth #