Royal Protocol Token - Smart Contract Audit Report

Summary

Royal Protocol Token Audit Report Roy Token is the currency that supports the Royal Protocol.

For this audit we reviewed the project's token contract using code that was provided to us by the team.

Notes of the contract:
  • As the project was recently deployed, tokens are yet to be minted, so there is currently an undefined circulating supply.
  • The contract utilizes a 'cap' that sets a limit to the number of tokens that can be minted. This cap can only be set once at the time of deployment.
  • No burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
  • The contract utilizes admin accessible functions which restricts access of certain functionality to be limited to only the assigned admin. The current admin has the ability to assign their admin role to a different address at any time.
  • Admin accessibility allows the project team to maintain control of minting tokens for the protocol even if ownership is renounced.
  • The contract utilizes SafeMath libraries along with following the ERC20 standard.
Audit Findings Summary
  • No issues from external attackers were identified.
  • Please ensure trust in the team as they have control over the tokens that are minted for the protocol.
  • Date: August 10th, 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
Flash LoansN/APASS
Integer Over/UnderflowN/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

ERC20 Token Graph

Multi-file Token


 ($) = payable function
 # = non-constant function
 
 +  Context 
    - [Int] _msgSender
    - [Int] _msgData

 + [Int] IERC20 
    - [Ext] totalSupply
    - [Ext] balanceOf
    - [Ext] transfer #
    - [Ext] allowance
    - [Ext] approve #
    - [Ext] transferFrom #

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

 + [Lib] Address 
    - [Int] isContract
    - [Int] sendValue #
    - [Int] functionCall #
    - [Int] functionCall #
    - [Int] functionCallWithValue #
    - [Int] functionCallWithValue #
    - [Prv] _functionCallWithValue #

 +  ERC20 (Context, IERC20)
    - [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] _setupDecimals #
    - [Int] _beforeTokenTransfer #

 +  Ownable (Context)
    - [Int]  #
    - [Pub] owner
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] transferOwnership #
       - modifiers: onlyOwner

 +  ROY (ERC20)
    - [Pub]  #
       - modifiers: ERC20
    - [Ext] updateAdmin #
       - modifiers: onlyAdmin
    - [Ext] faucet #
       - modifiers: onlyAdmin
    - [Ext] finishMinting #
       - modifiers: onlyAdmin
    - [Pub] cap
    - [Int] _beforeTokenTransfer #