FolioWatch Token - Smart Contract Audit Report
Summary
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:Audit Findings Summary
- 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.
- 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 |
($) = 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