Prometheus - Smart Contract Audit Report

Summary

Prometheus is a token where fees charged on transactions are shared among all token holders.

We reviewed Prometheus's token and interest contracts at commit 6c120b2e26e5ff2ab95f81bac729c2872748b467 and again at commit 3d3257b8345317f8c5c7fb7d2813e6827b8cb977.

Notes on the Contracts:
  • Prometheus is a fork of Reflect Finance (RFI). The key notable differences are the increased transfer tax, introduction of a burn tax, and the increased total supply.
  • The total supply of the token is 175 million.
  • When deployed, the team will receive the entirety of the supply.
  • No mint functions are present.

  • The contract implements a 5% fee on all transfers of the token, once enabled.
  • 3.5% of each transaction will be redistributed among all token holder proportionally.
  • 1.5% of each transaction will be burned, reducing the circulating supply.
  • The team has the ability to enable fees. Once enabled, they cannot be disabled.
  • The team can also exclude any address from the fee mechanism.

  • The interest contract allows the team to segment tokens into a contract where they can earn interest from the transfer fees.
  • All functions on the contract can only be called by the owner of the contract.
  • Anyone can send tokens into the contract. The token used will be set on deployment.
  • The owner will need to call initiate() to have the contract realize it's token balance.
  • The owner of the contract can then withdraw the interest earned from redistribution fees.
  • The owner can also burn the tokens from the contract at any time.
  • The number of tokens initially sent in to the contract, saved during the initiate() call, cannot be recovered; only burned.
  • The contract utilizes Solidity 0.8.x which has built-in overflow checks.

Audit Findings Summary
  • No external threats were identified.
  • As with any presale, ensure trust in the team prior to investing.
  • Date: May 18th, 2021

Audit Results

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

Details: Prometheus Interest Contract



Function Graph

ERC20 Token Graph


Inheritance Chart

Multi-file Token


Functions Overview


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

 +  InterestLocker 
    - [Pub]  #
    - [Ext] initiate #
       - modifiers: onlyOwner
    - [Ext] transferOwnership #
       - modifiers: onlyOwner
    - [Ext] burnFromLocker #
       - modifiers: onlyOwner
    - [Ext] withdraw #
       - modifiers: onlyOwner


Details: Prometheus Token Contract



Function Graph

ERC20 Token Graph


Inheritance Chart

Multi-file Token


Functions Overview


 ($) = payable function
 # = non-constant function
 
 Int = Internal
 Ext = External
 Pub = Public
 
 +  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 #

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

 +  ProjectPrometheus (Context, IERC20, Ownable)
    - [Pub]  #
    - [Pub] name
    - [Pub] symbol
    - [Pub] decimals
    - [Pub] totalSupply
    - [Pub] balanceOf
    - [Pub] transfer #
    - [Pub] allowance
    - [Pub] approve #
    - [Pub] transferFrom #
    - [Pub] increaseAllowance #
    - [Pub] decreaseAllowance #
    - [Pub] isExcluded
    - [Pub] totalFees
    - [Pub] totalBurn
    - [Pub] deliver #
    - [Pub] reflectionFromToken
    - [Pub] tokenFromReflection
    - [Ext] excludeAccount #
       - modifiers: onlyOwner
    - [Ext] includeAccount #
       - modifiers: onlyOwner
    - [Prv] _approve #
    - [Prv] _transfer #
    - [Prv] _transferStandard #
    - [Prv] _transferToExcluded #
    - [Prv] _transferFromExcluded #
    - [Prv] _transferBothExcluded #
    - [Prv] _reflectFee #
    - [Prv] _getValues
    - [Prv] _getTValues
    - [Prv] _getRValues
    - [Prv] _getRate
    - [Prv] _getCurrentSupply
    - [Pub] _getTaxFee
    - [Pub] _getBurnFee
    - [Ext] enableFees #
       - modifiers: onlyOwner