ACCEL - Smart Contract Audit Report
Summary
ACCEL ($ACCEL) is a new ERC-20 token on the Ethereum Blockchain.
Notes on the Contract:Audit Findings Summary
- 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.
- 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 Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
Centralization of Control | WARNING | |
Delegate Call to Untrusted Contract | N/A | PASS |
Dependence on Predictable Variables | N/A | PASS |
Deprecated Opcodes | N/A | PASS |
Ether Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Flash Loans | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Oracles | N/A | PASS |
Suicide | N/A | PASS |
State Change External Calls | N/A | PASS |
Unchecked Retval | N/A | PASS |
User Supplied Assertion | N/A | PASS |
Critical Solidity Compiler | N/A | PASS |
Overall Contract Safety | PASS |
Function Graph
Inheritance Chart
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 #