NSBC Token - Smart Contract Audit Report

Audit Summary

NSBC Token ($NSBC) is a new BEP-20 token on the Binance Smart Chain.

We reviewed the NSBC contract at 0x64A886C78bDe80cA03B621cE7282f05B180F1FD6 on the Binance Smart Chain mainnet.

Audit Findings

Please ensure trust in the team as they have substantial control in the ecosystem.
Date: January 28th, 2022.

Finding #1 - NSBC - Informational

Description: Several functions are declared public, but are never called internally.
			
setLockingStatus, name, symbol, decimals, totalSupply, maxSupply, minted, balanceOf, transfer, allowance, approve, transferFrom, increaseAllowance, decreaseAllowance, mint
Recommendation: We recommend declaring these functions external for additional gas savings on each call.

Finding #2 - NSBC - Informational

Description: The setManager() function is redundant as the onlyManager() modifier is never used in the contract.
Recommendation: The setManager() function and onlyManager() modifier can be removed to reduce contract size and deployment costs.

Finding #3 - NSBC - Informational

Description: In the _transfer() function, the second condition in the first require statement is redundant.
			
require((lockingAddressStatus[sender] == false) || (lockingAddressStatus[sender] == false && lockingStatus == false));
Recommendation: The second condition should either be removed or altered to fit the project team's intended functionality.

Contracts Overview

  • The total supply of the token is currently 400 million $NSBC [400,000,000].
  • The owner can mint any amount of tokens to any address up to the maximum supply cap of 1 billion tokens.
  • Any address that the owner mints tokens to (with the exception of their own address) is permanently blacklisted from initiating transfers and their tokens are essentially locked.
  • No burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address if desired.
  • At the time of writing this report, 100% of the total supply belongs to the owner.

  • There are no fees associated with transferring tokens.
  • The contract utilizes the SafeMath library to protect against overflows/underflows.
  • The contract complies with the BEP-20 token standard.

External Threat Results

Vulnerability CategoryNotesResult
Arbitrary Storage WriteN/APASS
Arbitrary JumpN/APASS
Centralization of Control
  • The owner can mint tokens to any address up to the maximum supply cap of 1 billion tokens.
  • Any address that the owner mints tokens to (with the exception of their own address) is permanently blacklisted from initiating transfers and their tokens are essentially locked.
  • WARNING
    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
    Logical IssuesN/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

    BEP20 Token Graph

    Inheritance Chart

    Multi-file Token

    Functions Overview

    												
    ($) = payable function
     # = non-constant function
    
     + [Lib] SafeMath 
        - [Int] add
        - [Int] sub
        - [Int] sub
        - [Int] mul
        - [Int] div
        - [Int] div
        - [Int] mod
        - [Int] mod
    
     + [Int] IBEP20 
        - [Ext] totalSupply
        - [Ext] decimals
        - [Ext] symbol
        - [Ext] name
        - [Ext] getOwner
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transferFrom #
    
     +  Context 
        - [Int] _msgSender
        - [Int] _msgData
    
     +  Ownable (Context)
        - [Pub]  #
        - [Pub] owner
        - [Pub] renounceOwnership #
           - modifiers: onlyOwner
        - [Pub] transferOwnership #
           - modifiers: onlyOwner
    
     +  NSBC (Context, IBEP20, Ownable)
        - [Pub]  #
        - [Pub] setManager #
           - modifiers: onlyManager
        - [Pub] setLockingStatus #
        - [Ext] getOwner
        - [Pub] name
        - [Pub] symbol
        - [Pub] decimals
        - [Pub] totalSupply
        - [Pub] maxSupply
        - [Pub] minted
        - [Pub] balanceOf
        - [Pub] transfer #
        - [Pub] allowance
        - [Pub] approve #
        - [Pub] transferFrom #
        - [Pub] increaseAllowance #
        - [Pub] decreaseAllowance #
        - [Pub] mint #
           - modifiers: onlyOwner
        - [Int] _transfer #
        - [Int] _mint #
        - [Int] _burn #
        - [Int] _approve #
        - [Int] _burnFrom #