NSBC Token - Smart Contract Audit Report
Audit SummaryNSBC 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.
Please ensure trust in the team as they have substantial control in the ecosystem.
Date: January 28th, 2022.
Finding #1 - NSBC - InformationalDescription: Several functions are declared public, but are never called internally.Recommendation: We recommend declaring these functions external for additional gas savings on each call.
setLockingStatus, name, symbol, decimals, totalSupply, maxSupply, minted, balanceOf, transfer, allowance, approve, transferFrom, increaseAllowance, decreaseAllowance, mint
Finding #2 - NSBC - InformationalDescription: 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 - InformationalDescription: In the _transfer() function, the second condition in the first require statement is redundant.Recommendation: The second condition should either be removed or altered to fit the project team's intended functionality.
require((lockingAddressStatus[sender] == false) || (lockingAddressStatus[sender] == false && lockingStatus == false));
- 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
|Arbitrary Storage Write||N/A||PASS|
|Centralization of Control||WARNING|
|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 + [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 #