POODL - Smart Contract Audit Report

Summary

POODL Audit Report POODL is a new competitor in the meme-coin space with frictionless fee redistribution.

We audited POODL's token contract contract at 0x2c5282f04c43e759f273431ce5e231f55cbc4399 on the Binance Smart Chain mainnet. It is deployed behind an upgradable proxy at 0x4a68c250486a116dc8d6a0c5b0677de07cc09c5d.

Overview of the Contract:
  • The total supply of the token is set to 100 trillion.
  • No mint or burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
  • As of the date of this report, 100% of the supply is held by the team.

  • Users who hold tokens will automatically receive a portion the fees from a transaction tax on each transfer.
  • A portion of the fee charged on transactions is also used to fund PancakeSwap liqudity.
  • Liquidity-adds are funded by selling half of the tokens collected as fees, pairing the received BNB with the token, and adding it as liquidity to the BNB pair.

  • The owner of the contract can exclude and include users from transfer fees, update the maximum transaction amount, update the minimum number of stored tokens to cause a liquidity-addition, and update the fee percentages at any time.
  • The contract is upgradable, meaning the team can swap out the current contract for a new one at any time.
  • The team has worked with us to streamline the logic of this contract.
  • The contract utilizes SafeMath libraries to prevent overflows along with following the BEP20 standard.

Audit Findings Summary
  • No security issues were identified in our analysis.
  • As with any presale, ensure trust in the team prior to investing. The team is anonymous.
  • Further, ensure trust in the team as they have substantial control in the ecosystem and can upgrade the contract to a new one at any time. We advise renouncing ownership after a successful launch.
  • Date: April 22nd, 2021
  • Update Date: April 22nd, 2021 - Updated implementation address, updated to PancakeswapV2, setter for numTokenToSell's value.

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

 +  Initializable 

 +  ContextUpgradeable (Initializable)
    - [Int] __Context_init #
       - modifiers: initializer
    - [Int] __Context_init_unchained #
       - modifiers: initializer
    - [Int] _msgSender
    - [Int] _msgData

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

 + [Lib] SafeMathUpgradeable 
    - [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

 + [Lib] AddressUpgradeable 
    - [Int] isContract
    - [Int] sendValue #
    - [Int] functionCall #
    - [Int] functionCall #
    - [Int] functionCallWithValue #
    - [Int] functionCallWithValue #
    - [Int] functionStaticCall
    - [Int] functionStaticCall
    - [Prv] _verifyCallResult

 +  OwnableUpgradeable (Initializable, ContextUpgradeable)
    - [Int] __Ownable_init #
       - modifiers: initializer
    - [Int] __Ownable_init_unchained #
       - modifiers: initializer
    - [Pub] owner
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] transferOwnership #
       - modifiers: onlyOwner

 +  ERC20Upgradeable (Initializable, ContextUpgradeable, IERC20Upgradeable)
    - [Int] __ERC20_init #
       - modifiers: initializer
    - [Int] __ERC20_init_unchained #
       - modifiers: initializer
    - [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] _beforeTokenTransfer #

 +  Poodl (Initializable, ERC20Upgradeable, OwnableUpgradeable)
    - [Ext] initialize #
       - modifiers: initializer
    - [Pub] startSwapFunctionality #
       - modifiers: onlyOwner
    - [Pub] decimals
    - [Pub] balanceOf
    - [Pub] isExcluded
    - [Ext] isExcludedFromFee
    - [Ext] totalFees
    - [Pub] totalSupply
    - [Ext] totalLiquidity
    - [Ext] totalBurn
    - [Ext] deliver #
    - [Ext] reflectionFromToken
    - [Pub] tokenFromReflection
    - [Ext] excludeAccount #
       - modifiers: onlyOwner
    - [Ext] includeAccount #
       - modifiers: onlyOwner
    - [Prv] _tokenTransfer #
    - [Int] _transfer #
    - [Prv] swapAndLiquify #
       - modifiers: lockTheSwap
    - [Prv] swapTokensForEth #
    - [Prv] addLiquidity #
    - [Prv] _transferStandard #
    - [Prv] _transferToExcluded #
    - [Prv] _transferFromExcluded #
    - [Prv] _transferBothExcluded #
    - [Pub] setSwapAndLiquifyEnabled #
       - modifiers: onlyOwner
    - [Ext]  ($)
    - [Prv] _reflectFee #
    - [Prv] _reflectBurn #
    - [Prv] _takeLiquidity #
    - [Prv] calculateTaxFee
    - [Prv] calculateBurnFee
    - [Prv] calculateLiquidityFee
    - [Prv] removeAllFee #
    - [Prv] restoreAllFee #
    - [Prv] _getValues
    - [Prv] _getTValues
    - [Prv] _getRValues
    - [Prv] _getRate
    - [Prv] _getCurrentSupply
    - [Prv] _getMaxTxAmount
    - [Ext] getTaxFee
    - [Ext] getLiquidityFee
    - [Ext] _setTaxFee #
       - modifiers: onlyOwner
    - [Ext] _setLiquidityFee #
       - modifiers: onlyOwner
    - [Pub] excludeFromFee #
       - modifiers: onlyOwner
    - [Pub] includeInFee #
       - modifiers: onlyOwner