Shar Pei - Smart Contract Audit Report
Summary
Shar Pei ($SHARPEI) is a new community-driven DeFi token on the Binance Smart Chain.
Notes on the Contract:Audit Findings Summary
- 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.
- 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 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 |
Function Graph
Inheritence Chart
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