FolioWatch Token - Smart Contract Audit Report

Summary

FolioWatch Token Audit Report FolioWatch intends to build a smart Defi Dashboard with LP management on the Binance Smartchain.

For this audit we reviewed the project's token contract at 0x5CdCB6C1A30F59D59393D1629172634056E0461C on the Binance Smart Chain mainnet.

Notes of the Token Contract:
  • The total supply of the token is currently 167 million tokens.
  • The token can be minted at any time by the owner; the owner of the contrat is JulSwap for the purpose of minting purchased tokens.
  • Any user may burn their own tokens.
  • The top two addresses control 40% of the token's supply.
  • 10.8% of the token's supply is in the liquidity pool.
  • 99% of liquidity has been burned.
  • 10% of the token's supply is locked and will vest to the team.
  • The next largest holder has 9%.
  • The owner (JulSwap) can pause all transfers of the token at any time.
  • The owner of the contract can grant the roles discussed above to any address.
  • The contract utilizes SafeMath to prevent overflow issues.
Audit Findings Summary
  • No issues from external attackers were identified.
  • Ensure trust in the Julswap team as they have substantial control in the ecosystem.
  • Be aware of the wallets which hold a large number of tokens.
  • Date: May 31st, 2021.

External Threat Results

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

ERC20 Token Graph

Multi-file Token


 ($) = payable function
 # = non-constant function
 
 Int = Internal
 Ext = External
 Pub = Public

 +  Initializable 
    - [Prv] isConstructor

 +  Context (Initializable)
    - [Int]  #
    - [Int] _msgSender
    - [Int] _msgData

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

 + [Lib] SafeMath 
    - [Int] add
    - [Int] sub
    - [Int] sub
    - [Int] mul
    - [Int] div
    - [Int] div
    - [Int] mod
    - [Int] mod

 +  ERC20 (Initializable, Context, IERC20)
    - [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] _burnFrom #

 +  ERC20Burnable (Initializable, Context, ERC20)
    - [Pub] burn #
    - [Pub] burnFrom #

 +  ERC20Detailed (Initializable, IERC20)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] name
    - [Pub] symbol
    - [Pub] decimals

 + [Lib] Roles 
    - [Int] add #
    - [Int] remove #
    - [Int] has

 +  MinterRole (Initializable, Context)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] isMinter
    - [Pub] addMinter #
       - modifiers: onlyMinter
    - [Pub] renounceMinter #
    - [Int] _addMinter #
    - [Int] _removeMinter #

 +  ERC20Mintable (Initializable, ERC20, MinterRole)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] mint #
       - modifiers: onlyMinter

 +  PauserRole (Initializable, Context)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] isPauser
    - [Pub] addPauser #
       - modifiers: onlyPauser
    - [Pub] renouncePauser #
    - [Int] _addPauser #
    - [Int] _removePauser #

 +  Pausable (Initializable, Context, PauserRole)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] paused
    - [Pub] pause #
       - modifiers: onlyPauser,whenNotPaused
    - [Pub] unpause #
       - modifiers: onlyPauser,whenPaused

 +  ERC20Pausable (Initializable, ERC20, Pausable)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] transfer #
       - modifiers: whenNotPaused
    - [Pub] transferFrom #
       - modifiers: whenNotPaused
    - [Pub] approve #
       - modifiers: whenNotPaused
    - [Pub] increaseAllowance #
       - modifiers: whenNotPaused
    - [Pub] decreaseAllowance #
       - modifiers: whenNotPaused

 +  Ownable (Initializable, Context)
    - [Pub] initialize #
       - modifiers: initializer
    - [Pub] owner
    - [Pub] isOwner
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] transferOwnership #
       - modifiers: onlyOwner
    - [Int] _transferOwnership #

 +  JulPadToken (Initializable, ERC20Burnable, ERC20Mintable, ERC20Pausable, ERC20Detailed, Ownable)
    - [Ext]  ($)
    - [Ext] initialize #
       - modifiers: initializer
    - [Ext] setOwner #
       - modifiers: onlyOwner