Plethori Token - Smart Contract Audit Report

Summary

Plethori Token Audit Report Plethori is a new project which intends to build a decentralized cross-chain investment platform for open trading and creation of trustless ETFs.

For this audit we reviewed the project's token contract provided to us by the team. Source code is available below.
Please note we have not reviewed the project's staking platform. .

Notes of the Token Contract:
  • The initial total supply is 100 million tokens.
  • At the time of deployed, the team will receive the total supply.
  • There is no way for tokens to be minted after deployment.
  • No ownership-restricted functions are present.
  • All public functions could be declared external instead of public to save a minimal amount of gas.
  • The token contract complies with the ERC20 standard.
Notes on the Staking Contract: (Added May 1)
  • Users can stake their Plethori tokens in this contract to earn rewards in Plethori tokens.
  • There is a 1.5% fee associated with making a deposit into the contract.
  • The reward rate for deposits is hard-coded at 40% per year.
  • Rewards will accrue once per day.
  • There is a 0.5% fee associated with withdrawing from the contract
  • No ownership-restricted functions are present.
  • The team must manually provide the tokens to serve as rewards for this contract.
  • Utilization of SafeMath to prevent overflow issues.

  • Audit Findings Summary:
    • No threats from external attackers were identified.
    • As with any presale, ensure trust in the team prior to investing.
    • Ensure trust in the team as they will need to provide staking rewards manually (Added May 1)
    • Date: April 28th, 2021.
    • Update Date: May 1st, 2021 - Addition of analysis on Staking contract.

    External Threat Results

    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
    Integer Over/UnderflowN/APASS
    Multiple SendsN/APASS
    SuicideN/APASS
    State Change External CallsN/APass
    Unchecked RetvalN/APASS
    User Supplied AssertionN/APASS
    Critical Solidity CompilerN/APASS
    Overall Contract Safety PASS


    PLE Token Contract


    Multi-file Token

    ERC20 Token Graph

    
     ($) = payable function
     # = non-constant function
     
     Int = Internal
     Ext = External
     Pub = Public
    
     +  Plethori 
        - [Pub]  #
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] approve #
        - [Ext] allowance
        - [Ext] transferFrom #
    
     + [Lib] SafeMath 
        - [Int] sub
        - [Int] add
    							


    PLE Staking Contract


    Multi-file Token

    ERC20 Token Graph

    
     ($) = payable function
     # = non-constant function
     
     Int = Internal
     Ext = External
     Pub = Public
    
     + [Lib] SafeMath 
        - [Int] add
        - [Int] sub
        - [Int] mul
        - [Int] div
        - [Int] mod
    
     + [Lib] EnumerableSet 
        - [Prv] _add #
        - [Prv] _remove #
        - [Prv] _contains
        - [Prv] _length
        - [Prv] _at
        - [Int] add #
        - [Int] remove #
        - [Int] contains
        - [Int] length
        - [Int] at
        - [Int] add #
        - [Int] remove #
        - [Int] contains
        - [Int] length
        - [Int] at
    
     + [Int] IERC20 
        - [Ext] name
        - [Ext] symbol
        - [Ext] decimals
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] allowance
        - [Ext] transfer #
        - [Ext] approve #
        - [Ext] transferFrom #
    
     + [Lib] Address 
        - [Int] isContract
    
     + [Lib] SafeERC20 
        - [Int] safeTransfer #
        - [Int] safeTransferFrom #
        - [Pub] safeApprove #
        - [Int] safeIncreaseAllowance #
        - [Int] safeDecreaseAllowance #
        - [Prv] callOptionalReturn #
    
     +  Ownable 
        - [Pub]  #
        - [Pub] transferOwnership #
           - modifiers: onlyOwner
    
     +  PleStaking (Ownable)
        - [Pub]  #
        - [Prv] updateAccount #
        - [Pub] getPendingDivs
        - [Pub] getNumberOfHolders
        - [Pub] stake #
        - [Pub] unstake #
        - [Pub] claimDivs #
        - [Pub] getStakersList