Prometheus - Smart Contract Audit Report
SummaryPrometheus 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
|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|
Details: Prometheus Interest Contract
($) = 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
($) = 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