RemeX - Smart Contract Audit Report

Summary

 RemeX Audit Report RemeX is a new token by the AGAFOS team with a reward system for fee redistribution and a presale.

We reviewed AGAFOS' RemeX token contract using code provided to us by the project team.

Features of the Contract:
  • The total supply of the token is set to one quadrillion and is in possession of the owner.
  • No mint functions are present, although a user can burn any amount of their own tokens at any time.
  • The Private Sale will start 30 days after deployment, and the Public Sale will start 30 days after the Private Sale.

  • Fees are collected by the project team on each transfer and are sent to the development wallet, the fundraising wallet, the liquidity pool wallet, and the reward balance.
  • There is a fee multiplier applied to the fee percentages that varies from 1-4x based on the time of the transaction since the Public Sale started.
  • The development, fundraising, and liquidity wallets are initially the owner's address and are controlled by the team.
  • Users who hold tokens will automatically receive a portion of the fees from the tokens collected as rewards.
  • The owner can use the transfer function during the Private Sale to transfer amounts to recipients and mark them as presale members.
  • All other users may only transfer their tokens after the Public Sale has started.
  • Only 25% of tokens purchased during the Private Sale are immediately available while the rest are frozen and are released in equal parts every 90 days over the course of 270 days.

  • The owner can set the addresses for the development wallet, the fundraising wallet, and the liquidity pool wallet to any address at any time.
  • The owner can set the reward fee, the development fee, the fundraising fee, and liquidity fee to any value at any time, as long as the sum of them does not exceed 10% and the development fee does not exceed 5%.
  • The owner can exclude or include any address from fees and rewards at any time.
  • The owner can push back both the Private and Public Sale start times as long as they have not started yet.

  • The team worked with us to optimize this contract for gas efficiency.
  • The contract utilizes SafeMath libraries to prevent overflows along with following the ERC20 standard.
Audit Findings Summary:
  • No security issues from outside attackers were identified.
  • As with any presale, ensure trust in the team prior to investing.
  • Ensure trust in the team as they have substantial control in the ecosystem.
  • Date: July 17th, 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
Integer Over/UnderflowN/APASS
Multiple SendsN/APASS
SuicideN/APASS
State Change External CallsN/APass
Unchecked RetvalN/APASS
User Supplied AssertionN/APASS
Critical Solidity CompilerN/APASS
Overall Contract Safety PASS

Smart Contract Graph

Contract Inheritance


 ($) = payable function
 # = non-constant function
 
 Int = Internal
 Ext = External
 Pub = Public
 
 + [Int] IERC20 
    - [Ext] totalSupply
    - [Ext] decimals
    - [Ext] symbol
    - [Ext] name
    - [Ext] getOwner
    - [Ext] balanceOf
    - [Ext] transfer #
    - [Ext] allowance
    - [Ext] approve #
    - [Ext] transferFrom #

 +  Context 
    - [Pub]  #
    - [Int] _msgSender
    - [Int] _msgData

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

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

 +  RemeX (Context, IERC20, Ownable)
    - [Pub]  #
    - [Ext] getOwner
    - [Ext] decimals
    - [Ext] symbol
    - [Ext] name
    - [Ext] totalSupply
    - [Ext] balanceOf
    - [Ext] transfer #
    - [Ext] burn #
    - [Ext] allowance
    - [Ext] approve #
    - [Ext] transferFrom #
    - [Ext] increaseAllowance #
    - [Ext] decreaseAllowance #
    - [Prv] totalFeeMultiplierForSender
    - [Prv] checkIfBalanceNotFrozen
    - [Int] _transfer #
    - [Int] _approve #
    - [Int] _burn #
    - [Prv] _deductDevelopmentFund #
    - [Prv] _deductFundRaising #
    - [Prv] _deductLiquidityPool #
    - [Prv] _deductReward #
    - [Prv] _incReward
    - [Prv] _excReward
    - [Prv] _getBalanceIncReward
    - [Prv] _deductBalanceIncReward #
    - [Prv] _addBalanceExcReward #
    - [Ext] setDevelopmentFundsAddress #
       - modifiers: onlyOwner
    - [Ext] setFundRaisingAddress #
       - modifiers: onlyOwner
    - [Ext] setLiquidityPoolAddress #
       - modifiers: onlyOwner
    - [Prv] checkFeeThreshold
    - [Ext] setRewardMilipercent #
       - modifiers: onlyOwner
    - [Ext] setDevelopmentMilipercent #
       - modifiers: onlyOwner
    - [Ext] setFundRaisingMilipercent #
       - modifiers: onlyOwner
    - [Ext] setLiquidityMilipercent #
       - modifiers: onlyOwner
    - [Ext] setRewardCumulationTime #
       - modifiers: onlyOwner
    - [Ext] excludeIncludeFeeFrom #
       - modifiers: onlyOwner
    - [Ext] excludeIncludeFeeTo #
       - modifiers: onlyOwner
    - [Ext] excludeFromReward #
       - modifiers: onlyOwner
    - [Ext] setPrivateSaleHours #
       - modifiers: onlyOwner
    - [Ext] setPreSaleHours #
       - modifiers: onlyOwner