TapMePet Tap Token - Smart Contract Audit Report

Summary

TapMePet Tap Audit Report TapMePet Token is building an animal NFT game. TapMePet token is launching an ERC-20 governance token in support of their game.

For this audit we reviewed the project's token contract on GitHub at commit 81ef8720203ee01c11d7ebadb54ccbb8f09e9d0c. Further features are still in development.

Notes of the contract:
  • The total supply of the token at the time of deployment is zero.
  • The team has the ability to mint tokens up to the max supply cap of 90 million.
  • No other Ownership-protected functions are present.
  • The token is designed to be a governance token where 1 token = 1 vote.
  • Another contract will be needed to collect votes and execute transactions on behalf of the governance token holders.
  • Token holders can delegate their voting rights to any address. To save gas, users can also do so using an EIP-712 signature.
  • There are no fees for transferring the tokens.
  • The contract includes _burn and _burnFrom functions that are unused. These can be safely removed.
  • Utilization of SafeMath to prevent overflows.
Audit Findings Summary
  • No issues from external attackers were identified.
  • As with any presale, ensure trust in the team prior to investing.
  • Date: September 28th, 2021.

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
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

Function Graph

ERC20 Token Graph

Inheritence Chart

Multi-file Token

Functions Overview


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

  + Context
- [Int]  #
- [Int] _msgSender
- [Int] _msgData

 + Ownable (Context)
- [Int]  #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Int] _transferOwnership #

 + [Int] IBEP20
- [Ext] totalSupply
- [Ext] decimals
- [Ext] symbol
- [Ext] name
- [Ext] getOwner
- [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
- [Int] min
- [Int] sqrt

 + [Lib] Address
- [Int] isContract
- [Int] sendValue #
- [Int] functionCall #
- [Int] functionCall #
- [Int] functionCallWithValue #
- [Int] functionCallWithValue #
- [Prv] _functionCallWithValue #

 + BEP20 (Context, IBEP20, Ownable)
- [Pub]  #
- [Ext] getOwner
- [Pub] name
- [Pub] decimals
- [Pub] symbol
- [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 #

 + TapToken (BEP20)
- [Pub] mint #
- modifiers: onlyOwner
- [Ext] delegates
- [Ext] delegate #
- [Ext] delegateBySig #
- [Ext] getCurrentVotes
- [Ext] getPriorVotes
- [Int] _delegate #
- [Int] _moveDelegates #
- [Int] _writeCheckpoint #
- [Int] safe32
- [Int] getChainId