BerrySwap Token - Smart Contract Audit Report

Summary

BerrySwap Audit Report BerrySwap intends to build a decentralized exchange platform built on the Binance Smart chain (BSC) protocol.

BerrySwap Token has been deployed to 0x8626f099434d9a7e603b8f0273880209eabfc1c5 on the Binance Smart Chain.
Please note we have not reviewed BerrySwap's exchange or any other contracts beyond this token.

Notes on the Contract:
  • The token will have an initial total supply of 300 million, delivered to the team upon deployment.
  • The team has the ability to mint an unlimited amount of tokens at any time.
  • The team can call the finishMinting function to prevent further minting. We recommend they do so.
  • As of the date of this report, the entirety of the supply is held by the deployer.

  • The contract is compliant with the ERC677 standard, adding the transferAndCall() function which enables additional use cases like cross-chain swaps via BurgerSwap.
  • Once the address of the BurgerSwap bridge has been set by the team, it cannot be updated.
  • Kindly note that our team has not audited Burgerswap's cross-chain bridge mechanism.

  • The owner can recover any tokens or BNB erroneously sent to the contract address.
  • The hasMintPermission modifier contains the same logic as the onlyOwner modifier; thus it can be removed. As this contract is already deployed, this is informational.
  • Some gas optimizations can be achieved through marking functions external instead of public. As this contract is already deployed, this is informational.
  • The contract utilizes SafeMath to prevent overflows.

Audit Findings Summary:
  • No security issues from outside attackers were identified.
  • As with any presale, ensure trust in the team prior to investing.
  • The team has the ability to mint tokens at any time.
  • Date: March 9th, 2021.


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
Integer Over/UnderflowN/APASS
Multiple SendsN/APASS
SuicideN/APASS
State Change External CallsN/APass
Unchecked RetvalN/APASS
User Supplied AssertionN/APASS
Critical Solidity CompilerN/APASS
Overall Contract Safety PASS

Smart Contract Graph

Contract Inheritance


 ($) = payable function
 # = non-constant function
 
 Int = Internal
 Ext = External
 Pub = Public
 
 +  BEP20Basic 
    - [Pub] totalSupply
    - [Pub] balanceOf
    - [Pub] transfer #

 + [Lib] SafeMath 
    - [Int] mul
    - [Int] div
    - [Int] sub
    - [Int] add

 +  BasicToken (BEP20Basic)
    - [Pub] totalSupply
    - [Pub] transfer #
    - [Pub] balanceOf

 +  BurnableToken (BasicToken)
    - [Pub] burn #
    - [Int] _burn #

 +  BEP20 (BEP20Basic)
    - [Pub] allowance
    - [Pub] transferFrom #
    - [Pub] approve #

 +  StandardToken (BEP20, BasicToken)
    - [Pub] transferFrom #
    - [Pub] approve #
    - [Pub] allowance
    - [Pub] increaseApproval #
    - [Pub] decreaseApproval #

 +  Ownable 
    - [Pub]  #
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] transferOwnership #
       - modifiers: onlyOwner
    - [Int] _transferOwnership #

 +  MintableToken (StandardToken, Ownable)
    - [Pub] mint #
       - modifiers: hasMintPermission,canMint
    - [Pub] finishMinting #
       - modifiers: onlyOwner,canMint

 +  DetailedBEP20 (BEP20)
    - [Pub]  #

 +  BEP677 (BEP20)
    - [Ext] transferAndCall #

 +  IBurnableMintableBEP677Token (BEP677)
    - [Pub] mint #
    - [Pub] burn #
    - [Pub] claimTokens #

 +  BEP677Receiver 
    - [Ext] onTokenTransfer #

 +  BEP677BridgeToken (IBurnableMintableBEP677Token, DetailedBEP20, BurnableToken, MintableToken)
    - [Pub]  #
       - modifiers: DetailedBEP20
    - [Pub] setBridgeContract #
       - modifiers: onlyOwner
    - [Ext] transferAndCall #
       - modifiers: validRecipient
    - [Pub] getTokenInterfacesVersion
    - [Int] superTransfer #
    - [Pub] transfer #
    - [Prv] contractFallback #
    - [Prv] isContract
    - [Pub] finishMinting #
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] claimTokens #
       - modifiers: onlyOwner