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 |
Royal Protocol Token - Smart Contract Audit Report
Summary
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:Audit Findings Summary
- 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.
- 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.
($) = 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 #