ANON INU Finance - Smart Contract Audit Report
ANON INU ($AINU) is a new community-driven DeFi token on the Binance Smart Chain that is an automatic liquidity providing protocol that supports automatic buybacks and pays out static rewards to holders.
Notes on the Contract:
Audit Findings Summary
- ANON INU's code implements and builds upon the fee-redistribution features pioneered by Reflect Finance.
- The total supply of the token is initially set to one quadrillion $AINU [1,000,000,000,000].
- No minting functions are available beyond deployment. $AINU holders may burn their tokens if desired. The protocol also includes 7 automatic 'burns' that will reduce the total supply (by reducing the token contract's balance), instead of actually transferring tokens to the burn address.
- As of the date of this report, roughly 58.74% of the token's supply is held in an unverified contract.
- 22.25% of the total supply remains in the contract address; which will either be removed from the circulating supply, or used to fund liquidity and buybacks.
- About 0.46% of the total supply is in Pancakeswap liquidity; and approximately 70% of those LP tokens have been burned.
- The "Charity Wallet" and the "Marketing Wallet" each contain 3.10% of the circulating supply.
- Ownership of the contract has been renounced.
- There is a 5% 'tax fee', 5% 'burn fee', and 5% 'liquidity fee' on all transactions for any "non-excluded" address that participates in a transfer. The owner has the ability to modify these fees to any percentage at any time.
- Users who hold tokens will automatically benefit from the frictionless fee redistribution at the time of each transaction as the tokens collected through taxes are removed from the circulating supply.
- The tokens collected from the 'burn fee' are automatically burned at the time of each transaction.
- The liquidity fee charged on transactions is stored in the contract and, once a threshold value is met, used to fund PancakeSwap liqudity. The owner has the ability to enable and disable this functionality.
- Liquidity-adds are funded by selling a portion of the tokens collected as fees (after a certain threshhold as determined by the owner is met), then pairing the received BNB with the token, and adding it as liquidity to the BNB pair.
- The recipient of the newly created LP tokens is the burn address.
- The contract also features a "buyback" mechanism where the contract address will automatically purchase $AINU tokens from Pancakeswap any time the contract address' BNB balance is in excess of 0.1 BNB.
- There is also whale protection logic which includes a "Daily Sell Limit" that will restrict holders from being able to participate in a transfer to Pancakeswap if they have already transferred (sold) 5 billion $AINU during a 24 hour period.
- The contract includes a "blacklist" which previously allowed the owner to prevent any address desired from being able to participate in transfers.
- The owner of the contract can exclude and include accounts from transfer fees and reward distribution.
- There is a maximum transaction amount of 0.5% of the initial total supply, which will enforce this limit to the number of tokens that can be transferred during any given transaction.
- This maximum transaction amount does not apply to the owner during transactions where the owner is either the sender or the recipient.
- There are several instances of multiplication occuring on the result of a division present in the code, which could lead to a loss of precision during some calculations.
- There are many functions that could have been declared as external and some variables that could have been constant to save gas upon deployment. However, considering this project is already deployed, this is merely informational.
- The contract utilizes SafeMath libraries along with following the BEP20 standard.
- No external threats were identified.
- Ensure trust in the team as they are in possession of a notable percentage of the circulating supply.
- The amount of liquidity that is currently available is considered unhealthy.
- Date: August 1st, 2021
|Arbitrary Storage Write||N/A||PASS|
|Delegate Call to Untrusted Contract||N/A||PASS|
|Dependence on Predictable Variables||N/A||PASS|
|State Change External Calls||N/A||PASS|
|User Supplied Assertion||N/A||PASS|
|Critical Solidity Compiler||N/A||PASS|
|Overall Contract Safety||PASS|
($) = payable function # = non-constant function + [Int] IERC20 - [Ext] totalSupply - [Ext] balanceOf - [Ext] transfer # - [Ext] allowance - [Ext] approve # - [Ext] transferFrom # + [Int] IPancakeSwapV2Factory - [Ext] feeTo - [Ext] feeToSetter - [Ext] getPair - [Ext] allPairs - [Ext] allPairsLength - [Ext] createPair # - [Ext] setFeeTo # - [Ext] setFeeToSetter # + [Int] IPancakeSwapV2Pair - [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] mint # - [Ext] burn # - [Ext] swap # - [Ext] skim # - [Ext] sync # - [Ext] initialize # + [Int] IPancakeSwapV2Router01 - [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] IPancakeSwapV2Router02 (IPancakeSwapV2Router01) - [Ext] removeLiquidityETHSupportingFeeOnTransferTokens # - [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens # - [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens # - [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($) - [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens # + [Lib] SafeMath - [Int] add - [Int] sub - [Int] sub - [Int] mul - [Int] div - [Int] div - [Int] mod - [Int] mod + Context - [Int] _msgSender - [Int] _msgData + [Lib] Address - [Int] isContract - [Int] sendValue # - [Int] functionCall # - [Int] functionCall # - [Int] functionCallWithValue # - [Int] functionCallWithValue # - [Prv] _functionCallWithValue # + Ownable (Context) - [Pub]
# - [Pub] owner - [Pub] renounceOwnership # - modifiers: onlyOwner - [Pub] transferOwnership # - modifiers: onlyOwner - [Pub] geUnlockTime - [Pub] lock # - modifiers: onlyOwner - [Pub] unlock # + ANON_INU_COIN (Context, IERC20, Ownable) - [Pub] # - [Int] getAdjustedBalanceOfThis - [Pub] name - [Pub] symbol - [Pub] decimals - [Pub] totalSupply - [Pub] balanceOf - [Pub] transfer # - [Pub] allowance - [Pub] approve # - [Pub] transferFrom # - [Pub] increaseAllowance # - [Pub] decreaseAllowance # - [Ext] blacklistAddress # - modifiers: onlyOwner - [Ext] isBlacklisted - [Pub] excludeFromReward # - modifiers: onlyOwner - [Ext] includeInReward # - modifiers: onlyOwner - [Pub] isExcludedFromReward - [Pub] setExcludeFromFee # - modifiers: onlyOwner - [Pub] isExcludedFromFee - [Ext] setTaxFeePercent # - modifiers: onlyOwner - [Ext] setLiquidityFeePercent # - modifiers: onlyOwner - [Ext] setBurnFeePercent # - modifiers: onlyOwner - [Int] ensure - [Ext] setMaxTxAmount # - modifiers: onlyOwner - [Ext] setNumTokensSellForLiquidity # - modifiers: onlyOwner - [Ext] setCharityWallet # - modifiers: onlyOwner - [Ext] setMarketingWallet # - modifiers: onlyOwner - [Ext] setMinBnbForBuyBack # - modifiers: onlyOwner - [Ext] setEnforeSellLimit # - modifiers: onlyOwner - [Ext] setMaxAllowedSellLimit # - modifiers: onlyOwner - [Pub] setSwapAndLiquifyEnabled # - modifiers: onlyOwner - [Pub] totalFees - [Pub] totalBurnedTokens - [Pub] deliver # - [Pub] reflectionFromToken - [Pub] tokenFromReflection - [Ext] ($) - [Prv] _reflectFee # - [Prv] _getValues - [Prv] _getBurnValues - [Prv] _getTValues - [Prv] _getRValues - [Prv] _getRate - [Prv] _getCurrentSupply - [Prv] calculateTaxFee - [Prv] calculateLiquidityFee - [Prv] calculateBurnFee - [Ext] setLaunchCompleted # - modifiers: onlyOwner - [Prv] _takeLiquidity # - [Prv] _approve # - [Prv] _transfer # - [Int] checkForFirstSevenBurns # - [Int] whaleProtection # - [Pub] burnTokens # - [Prv] swapAndLiquify # - modifiers: lockTheSwap - [Prv] swapTokensForEth # - [Prv] addLiquidity # - [Prv] swapETHForTokens # - modifiers: lockTheSwap - [Prv] removeFees # - [Prv] restoreFees # - [Prv] _tokenTransfer # - [Prv] _transferStandard # - [Prv] _transferToExcluded # - [Prv] _transferFromExcluded # - [Prv] _transferBothExcluded # - [Prv] _transferCommon #