Vulnerability Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
Delegate Call to Untrusted Contract | N/A | PASS |
Dependence on Predictable Variables | N/A | PASS |
Deprecated Opcodes | N/A | PASS |
Ether Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Flash Loans | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Oracles | N/A | PASS |
Suicide | N/A | PASS |
State Change External Calls | N/A | Pass |
Unchecked Retval | N/A | PASS |
User Supplied Assertion | N/A | PASS |
Critical Solidity Compiler | N/A | PASS |
Overall Contract Safety | PASS |
Rushmoon - Smart Contract Audit Report
Summary
Rushmoon is building a new automatic liquidity acquisition yield farm and AMM decentralized exchange on the Binance Smart Chain.
For this audit, we reviewed Rushmoon's token contract, deployed at 0xff96ce2cc0d20da0250a63bdca2b568f52a5bc71 on mainnet.Please note we have not reviewed Rushmoon's staking or any other contracts.
Notes on the Contract:
- The initial total supply is 3 billion tokens.
- Due to burn fees, the total supply is now ~2.85 billion.
- The team has the ability to appoint minters who can mint the token at any time.
- All transactions are subject to a 5% tax.
- 4% of this tax on transactions is used to fund automated adding of liquidity.
- The remaining 1% of the transfer tax is burned.
- 41% of the total supply is held in two Pancakeswap liquidity pools.
- 68% of liquidity is staked in a contract not reviewed by our team.
- 17% of liquidity is held in the contract.
- The rest of liquidity is held by various community members.
- 28.5% of the token's supply has been burned.
- 6% of the supply is in a staking contract not reviewed by our team.
- The next largest holder has 3%.
- While the team has the ability to update fees, the total fees can never exceed 6%.
- Admins of the smart contract have the ability to blacklist users and prevent them from transferring tokens.
- The admin also has the ability to add any other address as an admins and minters.
- The admin can update the address of the pancakeswap router and pair as well. This functionality, however, would also allow the team to claim the LP tokens in the contract if they wanted to.
- Rushmoon uses SafeMath libraries to prevent overflows. The contract also follows the BEP20 standard.
- The contract uses a standard governance model so users will be able to vote on proposals.
Audit Findings Summary
- No security issues from external attackers were identified.
- Ensure trust in the team as they have notable control in the ecosystem.
- Date: May 29th, 2021
($) = payable function
# = non-constant function
+ Context
- [Int] #
- [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
+ ERC20 (Context, IERC20)
- [Pub] #
- [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] _burnFrom #
+ MinterRole (Context)
- [Int] #
- [Pub] isMinter
- [Pub] addMinter #
- modifiers: onlyMinter
- [Pub] renounceMinter #
- [Int] _addMinter #
- [Int] _removeMinter #
+ ERC20Burnable (Context, ERC20)
- [Pub] burn #
- [Pub] burnFrom #
+ ERC20Mintable (ERC20, MinterRole)
- [Pub] mint #
- modifiers: onlyMinter
+ [Lib] Roles
- [Int] add #
- [Int] remove #
- [Int] has
+ ERC20Detailed (IERC20)
- [Pub] #
- [Pub] name
- [Pub] symbol
- [Pub] decimals
+ WhitelistAdminRole (Context)
- [Int] #
- [Pub] isWhitelistAdmin
- [Pub] addWhitelistAdmin #
- modifiers: onlyWhitelistAdmin
- [Pub] renounceWhitelistAdmin #
- [Int] _addWhitelistAdmin #
- [Int] _removeWhitelistAdmin #
+ ERC20TransferLiquidityLock (ERC20)
- [Pub] #
- [Pub] calculateFees
- [Pub] isContract
- [Int] _transfer #
- [Ext] ($)
- [Pub] RebalanceLiquidity #
- [Prv] _rewardLiquidityProviders #
- [Prv] remLiquidity #
- [Prv] addLiquidity #
- [Ext] lockableSupply
- [Ext] lockedSupply
- [Ext] burnedSupply
- [Pub] burnableLiquidity
- [Pub] burnedLiquidity
- [Pub] lockedLiquidity
+ [Int] IPancakeV2Router01
- [Ext] factory
- [Ext] WETH
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
- [Ext] addLiquidityETH ($)
+ [Int] IPancakeswaoRouter02
- [Ext] WETH
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] addLiquidityETH ($)
+ [Int] IPancakeswapV2Pair
- [Ext] sync #
+ ERC20Governance (ERC20, ERC20Detailed)
- [Int] _transfer #
- [Int] _mint #
- [Int] _burn #
- [Ext] delegates
- [Ext] delegate #
- [Ext] delegateBySig #
- [Ext] getCurrentVotes
- [Ext] getPriorVotes
- [Int] _delegate #
- [Int] _moveDelegates #
- [Int] _writeCheckpoint #
- [Int] safe32
- [Int] getChainId
+ Balancer
- [Pub] #
- [Ext] ($)
- [Ext] rebalance #
- [Prv] swapEthForTokens #
+ RushMoon (ERC20, ERC20Detailed, ERC20Burnable, ERC20Governance, ERC20Mintable, ERC20TransferLiquidityLock, WhitelistAdminRole)
- [Pub] setPancakeV2Router #
- modifiers: onlyWhitelistAdmin
- [Pub] setPancakeV2Pair #
- modifiers: onlyWhitelistAdmin
- [Pub] unlockLP #
- modifiers: onlyWhitelistAdmin
- [Pub] setRebalanceDivisor #
- modifiers: onlyWhitelistAdmin
- [Pub] setRebalanceInterval #
- modifiers: onlyWhitelistAdmin
- [Pub] setRebalanceRewardDivisior #
- modifiers: onlyWhitelistAdmin
- [Pub] setPresaleAddress #
- modifiers: onlyWhitelistAdmin
- [Pub] recoverLostBNB #
- modifiers: onlyWhitelistAdmin
- [Pub] recoverLostTokensExceptOurTokens #
- modifiers: onlyWhitelistAdmin
- [Pub] createPancakeSwapPair #
- modifiers: onlyWhitelistAdmin
- [Pub] userBalanceInPancake
- [Pub] toggleFeeless #
- modifiers: onlyWhitelistAdmin
- [Pub] toggleFees #
- modifiers: onlyWhitelistAdmin
- [Pub] toggleUnlocked #
- modifiers: onlyWhitelistAdmin
- [Pub] setBlackListAddress #
- modifiers: onlyWhitelistAdmin
- [Pub] activateTrading #
- modifiers: onlyWhitelistAdmin
- [Pub] setMinRebalanceAmount #
- modifiers: onlyWhitelistAdmin
- [Pub] setBurnTxFee #
- modifiers: onlyWhitelistAdmin
- [Pub] setTaxFee #
- modifiers: onlyWhitelistAdmin