ZARP Token - Smart Contract Audit Report
ZARP ($ZARP) is a new Stablecoin on the Ethereum Blockchain.The ZARP Stablecoin contract is deployed at 0x8CB24ed2e4f7e2065f4eB2bE5f6B0064B1919850 on the Ethereum Blockchain mainnet.
Notes on the Contract:
Audit Findings Summary
- There was no token allocation for our team to analyze as the project was recently deployed.
- The contract utilizes a Minter role, Burner role, Verifier role, and Default Admin role. The assigned addresses to these roles have access to certain functionality of the contract.
- Any Minter address has the ability to mint any amount of tokens to any Verified address at any time.
- Any Burner address can burn their own tokens to reduce the total supply. Only a Verified address can send tokens to a Burner address.
- Although the contract utilizes the Burner role, any user also has the ability to burn their own tokens to reduce the total supply.
- The Default Admin role previously had the ability to pause/unpause all trading at any time. As the Default Admin role has been transferred to the 0x00 address, this feature can no longer be utilized.
- The contract complies with the ERC20 standard.
- As the project is implemented with Solidity v0.8.7, it is protected from overflows.
- No external threats were identified.
- Date: October 18th, 2021
|Arbitrary Storage Write||N/A||PASS|
|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 + [Int] IAccessControl - [Ext] hasRole - [Ext] getRoleAdmin - [Ext] grantRole # - [Ext] revokeRole # - [Ext] renounceRole # + Context - [Int] _msgSender - [Int] _msgData + [Lib] Strings - [Int] toString - [Int] toHexString - [Int] toHexString + [Int] IERC165 - [Ext] supportsInterface + ERC165 (IERC165) - [Pub] supportsInterface + AccessControl (Context, IAccessControl, ERC165) - [Pub] supportsInterface - [Pub] hasRole - [Int] _checkRole - [Pub] getRoleAdmin - [Pub] grantRole # - modifiers: onlyRole - [Pub] revokeRole # - modifiers: onlyRole - [Pub] renounceRole # - [Int] _setupRole # - [Int] _setRoleAdmin # - [Prv] _grantRole # - [Prv] _revokeRole # + Pausable (Context) - [Pub]
# - [Pub] paused - [Int] _pause # - modifiers: whenNotPaused - [Int] _unpause # - modifiers: whenPaused + [Int] IERC20 - [Ext] totalSupply - [Ext] balanceOf - [Ext] transfer # - [Ext] allowance - [Ext] approve # - [Ext] transferFrom # + [Int] IERC20Metadata (IERC20) - [Ext] name - [Ext] symbol - [Ext] decimals + ERC20 (Context, IERC20, IERC20Metadata) - [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] _beforeTokenTransfer # - [Int] _afterTokenTransfer # + ERC20Burnable (Context, ERC20) - [Pub] burn # - [Pub] burnFrom # + ZARP (ERC20, ERC20Burnable, AccessControl, Pausable) - [Pub] # - modifiers: ERC20 - [Pub] verify # - modifiers: whenNotPaused,onlyRole - [Pub] removeVerification # - modifiers: whenNotPaused,onlyRole - [Pub] isVerified - [Pub] mint # - modifiers: onlyRole - [Pub] burn # - modifiers: onlyRole - [Pub] burnFrom # - modifiers: onlyRole - [Pub] transfer # - [Pub] pause # - modifiers: onlyRole - [Pub] unpause # - modifiers: onlyRole - [Int] _beforeTokenTransfer # - modifiers: whenNotPaused