|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|
BerrySwap Token - Smart Contract 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.
($) = 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