Virgo._winnerDraw(uint256) (#615-630) uses a weak PRNG: "index = uint256(hash) % players.length (#618)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Virgo._owner (#426) shadows:
- Ownable._owner (#365)
Remove the state variable shadowing.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract locking ether found:
Contract Virgo (#418-718) has payable functions:
- Virgo.receive() (#574)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
Additional information: link
Virgo._getTValues(uint256) (#686-691) performs a multiplication on the result of a division:
-tFee = tAmount.div(100).mul(2) (#687)
Virgo._getTValues(uint256) (#686-691) performs a multiplication on the result of a division:
-bonusFee = tAmount.div(100).mul(3) (#688)
Consider ordering multiplication before division.
Additional information: link
Virgo.allowance(address,address).owner (#478) shadows:
- Ownable.owner() (#381-383) (function)
Virgo._approve(address,address,uint256).owner (#566) shadows:
- Ownable.owner() (#381-383) (function)
Rename the local variables that shadow another component.
Additional information: link
Virgo.setMaxTxPercent(uint256) (#512-516) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (#513-515)
Emit an event for critical parameter changes.
Additional information: link
Address.isContract(address) (#247-256) uses assembly
- INLINE ASM (#254)
Address._functionCallWithValue(address,bytes,uint256,string) (#340-361) uses assembly
- INLINE ASM (#353-356)
Virgo.isContractaddr(address) (#576-580) uses assembly
- INLINE ASM (#578)
Do not use evm assembly.
Additional information: link
Virgo.includeAccount(address) (#553-564) has costly operations inside a loop:
- _excluded.pop() (#560)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#340-361) is never used and should be removed
Address.functionCall(address,bytes) (#300-302) is never used and should be removed
Address.functionCall(address,bytes,string) (#310-312) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#325-327) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#335-338) is never used and should be removed
Address.isContract(address) (#247-256) is never used and should be removed
Address.sendValue(address,uint256) (#274-280) is never used and should be removed
Context._msgData() (#9-12) is never used and should be removed
SafeMath.mod(uint256,uint256) (#207-209) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#223-226) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#274-280):
- (success) = recipient.call{value: amount}() (#278)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#340-361):
- (success,returndata) = target.call{value: weiValue}(data) (#344)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Constant Virgo._tTotal (#433) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Virgo._maxTxAmount (#440) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#10)" inContext (#4-13)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo._getValues(uint256).rTransferAmount (#682) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._transferBothExcluded(address,address,uint256).tTransferAmount (#664)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._transferToExcluded(address,address,uint256).rTransferAmount (#644) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._getValues(uint256).tTransferAmount (#680)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._transferFromExcluded(address,address,uint256).rTransferAmount (#654) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo.reflectionFromToken(uint256,bool).rTransferAmount (#533) is too similar to Virgo._transferStandard(address,address,uint256).tTransferAmount (#634)
Variable Virgo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#697) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._transferFromExcluded(address,address,uint256).tTransferAmount (#654)
Variable Virgo._transferStandard(address,address,uint256).rTransferAmount (#634) is too similar to Virgo._transferToExcluded(address,address,uint256).tTransferAmount (#644)
Variable Virgo._transferBothExcluded(address,address,uint256).rTransferAmount (#664) is too similar to Virgo._getTValues(uint256).tTransferAmount (#689)
Prevent variables from having similar names.
Additional information: link
Virgo._winnerDraw(uint256) (#615-630) uses literals with too many digits:
- balanceOf(winner) < 1000000000000 * 10 ** 9 (#620)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Virgo._decimals (#439) should be constant
Virgo._name (#437) should be constant
Virgo._symbol (#438) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#400-403)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#409-413)
name() should be declared external:
- Virgo.name() (#449-451)
symbol() should be declared external:
- Virgo.symbol() (#453-455)
decimals() should be declared external:
- Virgo.decimals() (#457-459)
totalSupply() should be declared external:
- Virgo.totalSupply() (#461-463)
getPlayers() should be declared external:
- Virgo.getPlayers() (#465-467)
transfer(address,uint256) should be declared external:
- Virgo.transfer(address,uint256) (#473-476)
allowance(address,address) should be declared external:
- Virgo.allowance(address,address) (#478-480)
approve(address,uint256) should be declared external:
- Virgo.approve(address,uint256) (#482-485)
transferFrom(address,address,uint256) should be declared external:
- Virgo.transferFrom(address,address,uint256) (#487-491)
increaseAllowance(address,uint256) should be declared external:
- Virgo.increaseAllowance(address,uint256) (#493-496)
decreaseAllowance(address,uint256) should be declared external:
- Virgo.decreaseAllowance(address,uint256) (#498-501)
isExcluded(address) should be declared external:
- Virgo.isExcluded(address) (#503-505)
totalFees() should be declared external:
- Virgo.totalFees() (#507-509)
reflect(uint256) should be declared external:
- Virgo.reflect(uint256) (#518-525)
reflectionFromToken(uint256,bool) should be declared external:
- Virgo.reflectionFromToken(uint256,bool) (#527-536)
winningProbability(address) should be declared external:
- Virgo.winningProbability(address) (#582-585)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts