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 Category Notes Result
Arbitrary Storage Write N/A PASS
Arbitrary Jump N/A PASS
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

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