Royal Protocol Token - Smart Contract Audit Report


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 Category Notes Result
Arbitrary Storage Write N/A PASS
Arbitrary Jump N/A PASS
Delegate Call to Untrusted Contract N/A PASS
Dependence on Predictable Variables N/A PASS
Deprecated Opcodes N/A PASS
Ether Thief N/A PASS
Exceptions N/A PASS
External Calls N/A PASS
Flash Loans N/A PASS
Integer Over/Underflow N/A PASS
Multiple Sends N/A PASS
Oracles N/A PASS
Suicide N/A PASS
State Change External Calls N/A PASS
Unchecked Retval N/A PASS
User Supplied Assertion N/A PASS
Critical Solidity Compiler N/A PASS
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 #