Shar Pei - Smart Contract Audit Report

Summary

Shar Pei Audit Report Shar Pei ($SHARPEI) is a new community-driven DeFi token on the Binance Smart Chain.

We reviewed the Shar Pei Token contract at 0xfE3AF7376e412a377358d5894C790bB3e00D0dc1 on the Binance Smart Chain mainnet.

Notes on the Contract:
  • The total supply of the token is initially set to 100 billion [100,000,000,000].
  • Any user can burn their own tokens to reduce the total supply.
  • At the time of writing this report, 49.5% of the total supply is stored in a token locking contract and will vest to the team on October 30th, 2026.
  • The top five holders own a cumulative 14.96% of the total supply.
  • 1.58% of the total supply is in Pancakeswap liquidity.
  • Of that liquidity, 97.2% of the LP tokens are stored in a token locking contract and will vest to the team on November 30th, 2022.

  • The token implements the ERC-1363 standard in order to support transfer-and-call and approve-and-call functionality.
  • The recipient of the token must be a contract with proper implementations of the onTransferReceived and onApprovalReceived functions.
  • The contract complies with the ERC20 token standard.
  • Some gas optimizations can be achieved through declaring functions external instead of public. As this contract is already deployed, this is merely informational.
  • As the contract is deployed with Solidity v0.8.x, it is protected from overflows.
  • Ownership has been renounced.

Audit Findings Summary
  • No external threats were identified.
  • Please be aware of the amount of liquidity available in proportion to the largest wallets.
  • Date: November 10th, 2021

Audit 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] IERC20 
    - [Ext] totalSupply
    - [Ext] balanceOf
    - [Ext] transfer #
    - [Ext] allowance
    - [Ext] approve #
    - [Ext] transferFrom #

 + [Int] IERC20Metadata (IERC20)
    - [Ext] name
    - [Ext] symbol
    - [Ext] decimals

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

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

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

 + [Lib] Address 
    - [Int] isContract
    - [Int] sendValue #
    - [Int] functionCall #
    - [Int] functionCall #
    - [Int] functionCallWithValue #
    - [Int] functionCallWithValue #
    - [Int] functionStaticCall
    - [Int] functionStaticCall
    - [Int] functionDelegateCall #
    - [Int] functionDelegateCall #
    - [Prv] _verifyCallResult

 + [Int] IERC165 
    - [Ext] supportsInterface

 +  ERC165 (IERC165)
    - [Pub] supportsInterface

 + [Int] IERC1363 (IERC20, IERC165)
    - [Ext] transferAndCall #
    - [Ext] transferAndCall #
    - [Ext] transferFromAndCall #
    - [Ext] transferFromAndCall #
    - [Ext] approveAndCall #
    - [Ext] approveAndCall #

 + [Int] IERC1363Receiver 
    - [Ext] onTransferReceived #

 + [Int] IERC1363Spender 
    - [Ext] onApprovalReceived #

 +  ERC1363 (ERC20, IERC1363, ERC165)
    - [Pub] supportsInterface
    - [Pub] transferAndCall #
    - [Pub] transferAndCall #
    - [Pub] transferFromAndCall #
    - [Pub] transferFromAndCall #
    - [Pub] approveAndCall #
    - [Pub] approveAndCall #
    - [Int] _checkAndCallTransfer #
    - [Int] _checkAndCallApprove #

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

 +  TokenRecover (Ownable)
    - [Pub] recoverERC20 #
       - modifiers: onlyOwner

 +  ERC20Decimals (ERC20)
    - [Pub]  #
    - [Pub] decimals

 +  ERC20Mintable (ERC20)
    - [Ext] mintingFinished
    - [Ext] mint #
       - modifiers: canMint
    - [Ext] finishMinting #
       - modifiers: canMint
    - [Int] _finishMinting #

 +  CoinToken (ERC20Decimals, ERC20Mintable, ERC20Burnable, ERC1363, TokenRecover)
    - [Pub]  ($)
       - modifiers: ERC20,ERC20Decimals
    - [Pub] decimals
    - [Int] _mint #
       - modifiers: onlyOwner
    - [Int] _finishMinting #
       - modifiers: onlyOwner