Shar Pei - Smart Contract Audit Report
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
|Arbitrary Storage Write||N/A||PASS|
|Delegate Call to Untrusted Contract||N/A||PASS|
|Dependence on Predictable Variables||N/A||PASS|
|State Change External Calls||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] 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