THUNDERSTORM - Smart Contract Audit Report
THUNDERSTORM is a deflationary token with frictionless fee redistribution on the Binance Smart chain.
We reviewed THUNDERSTORM's token contract deployed at 0xee84e260fae848f55ebde322b9595682590c456c on the Binance Smart Chain.
Overview of the Contract:
Audit Findings Summary
- THUNDERSTORM is a modified fork of Reflect Finance.
- Users who hold tokens will automatically receive a portion of the fees from a transaction tax set in the contract.
- The contract also implements a variable burn fee on each transaction.
- The burn fee will increase over time, starting at 5% and raising to 12% as more trading volume occurs.
- Each time a total of 1.275 million tokens are burned, an additional 637,500 tokens will be minted and frictionlessly redistriuted among token holders via a rebase.
- Burn fees will end once the total supply reaches 550,000
- In addition, the contract implements a maximum amount of tokens that can be sent in a transaction, set at 100 million tokens.
- 22.6% of the token's supply is held as liquidity in the Pancakeswap pool. 97.7% of this liquidity is locked for 6 months.
- 8% of the token's supply is locked and will be claimable by the team in 1 month. The next largest wallet has 3.6%.
- The owner has the ability to set the burn fee that is is part of the transaciton tax. The value must be between 0% and 15%.
- Owners have the ability to exclude and include users from the fee mechanism.
- The logic in the transfer function will becomes more expensive per-transfer as time goes on due to the unique variable burn logic. As this is already deployed, this is informational.
- Some functions could be declared external instead of public to save on gas. As this is already deployed, this is also informational.
- The contract utilizes SafeMath libraries to prevent overflows.
- No security issues were detected in the analysis.
- Date: April 7th, 2021
External Threat Results
|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 = Internal Ext = External Pub = Public + Context - [Int] _msgSender - [Int] _msgData + [Int] IBEP20 - [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 + Thunderstorm (Context, IBEP20, 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] _burnAndRebase # - [Prv] _getValues - [Prv] _getTValues - [Prv] _getRValues - [Prv] _getRate - [Prv] _getCurrentSupply - [Prv] _setBurnFee # - [Ext] _setFeeStage # - modifiers: onlyOwner - [Pub] _getBurnFee - [Prv] _getMaxTxAmount - [Pub] _getCycle - [Pub] _getBurnCycle - [Pub] _getTradedCycle - [Int] _rebase # - [Int] _initializeFinalStage #