Onyx in its final form will be an open-world game with a vast expanse of 7 continents, all of which will be developed in Unreal Engine 4 with cutting edge graphics. The game will feature a multitude of NFTs ranging from playable characters to wearable armors and usable inventory. The playable characters will be highly customizable with six different battle classes.
Reentrancy in ONYX._transfer(address,address,uint256) (#1079-1188):
External calls:
- swapBack() (#1144)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1200-1206)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- (success,None) = address(buyBackWallet).call{value: address(this).balance}() (#1261)
External calls sending eth:
- swapBack() (#1144)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- (success,None) = address(buyBackWallet).call{value: address(this).balance}() (#1261)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#1181)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#363)
- _balances[recipient] = _balances[recipient].add(amount) (#364)
- super._transfer(from,to,amount) (#1187)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#363)
- _balances[recipient] = _balances[recipient].add(amount) (#364)
- swapping = false (#1146)
- tokensForBuyBack += fees * 33 / 99 (#1162)
- tokensForBuyBack += fees * sellBuyBackFee / sellTotalFees (#1169)
- tokensForBuyBack += fees * buyBuyBackFee / buyTotalFees (#1176)
- tokensForLiquidity += fees * 33 / 99 (#1161)
- tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees (#1168)
- tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees (#1175)
- tokensForMarketing += fees * 33 / 99 (#1163)
- tokensForMarketing += fees * sellMarketingFee / sellTotalFees (#1170)
- tokensForMarketing += fees * buyMarketingFee / buyTotalFees (#1177)
Apply the check-effects-interactions pattern.
Additional information: link
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(99).div(100) (#1160)
-tokensForLiquidity += fees * 33 / 99 (#1161)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(99).div(100) (#1160)
-tokensForBuyBack += fees * 33 / 99 (#1162)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(99).div(100) (#1160)
-tokensForMarketing += fees * 33 / 99 (#1163)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(buyTotalFees).div(100) (#1174)
-tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees (#1175)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees (#1168)
-fees = amount.mul(buyTotalFees).div(100) (#1174)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-tokensForBuyBack += fees * sellBuyBackFee / sellTotalFees (#1169)
-fees = amount.mul(buyTotalFees).div(100) (#1174)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(buyTotalFees).div(100) (#1174)
-tokensForBuyBack += fees * buyBuyBackFee / buyTotalFees (#1176)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-tokensForMarketing += fees * sellMarketingFee / sellTotalFees (#1170)
-fees = amount.mul(buyTotalFees).div(100) (#1174)
ONYX._transfer(address,address,uint256) (#1079-1188) performs a multiplication on the result of a division:
-fees = amount.mul(buyTotalFees).div(100) (#1174)
-tokensForMarketing += fees * buyMarketingFee / buyTotalFees (#1177)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in ONYX.constructor() (#923-982):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#932)
State variables written after the call(s):
- transferOwnership(newOwner) (#981)
- _owner = newOwner (#645)
Reentrancy in ONYX.swapBack() (#1227-1262):
External calls:
- swapTokensForEth(amountToSwapForETH) (#1239)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1200-1206)
State variables written after the call(s):
- tokensForBuyBack = 0 (#1252)
- tokensForLiquidity = 0 (#1250)
- tokensForMarketing = 0 (#1251)
Apply the check-effects-interactions pattern.
Additional information: link
ONYX._transfer(address,address,uint256) (#1079-1188) uses tx.origin for authorization: require(bool,string)(_holderLastTransferTimestamp[tx.origin] < block.number,_transfer:: Transfer Delay enabled. Only one purchase per block allowed.) (#1107)
Do not use tx.origin for authorization.
Additional information: link
ONYX.addLiquidity(uint256,uint256) (#1212-1225) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
Ensure that all the return values of the function calls are used.
Additional information: link
ONYX.constructor().totalSupply (#946) shadows:
- ERC20.totalSupply() (#237-239) (function)
- IERC20.totalSupply() (#87) (function)
Rename the local variables that shadow another component.
Additional information: link
ONYX.updateSwapTokensAtAmount(uint256) (#1008-1013) should emit an event for:
- swapTokensAtAmount = newAmount (#1011)
ONYX.updateMaxAmount(uint256) (#1015-1018) should emit an event for:
- maxTransactionAmount = newNum * (10 ** 18) (#1017)
ONYX.updateBuyFees(uint256,uint256,uint256) (#1029-1035) should emit an event for:
- buyMarketingFee = _marketingFee (#1030)
- buyLiquidityFee = _liquidityFee (#1031)
- buyBuyBackFee = _buyBackFee (#1032)
- buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBuyBackFee (#1033)
ONYX.updateSellFees(uint256,uint256,uint256) (#1037-1043) should emit an event for:
- sellMarketingFee = _marketingFee (#1038)
- sellLiquidityFee = _liquidityFee (#1039)
- sellBuyBackFee = _buyBackFee (#1040)
- sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBuyBackFee (#1041)
Emit an event for critical parameter changes.
Additional information: link
ONYX.updateMarketingWallet(address).newMarketingWallet (#1062) lacks a zero-check on :
- marketingWallet = newMarketingWallet (#1064)
ONYX.updateBuyBackWallet(address).newWallet (#1067) lacks a zero-check on :
- buyBackWallet = newWallet (#1069)
Check that the address is not zero.
Additional information: link
Reentrancy in ONYX.constructor() (#923-982):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#932)
State variables written after the call(s):
- _mint(newOwner,totalSupply) (#980)
- _balances[account] = _balances[account].add(amount) (#383)
- excludeFromFees(newOwner,true) (#966)
- _isExcludedFromFees[account] = excluded (#1046)
- excludeFromFees(address(this),true) (#967)
- _isExcludedFromFees[account] = excluded (#1046)
- excludeFromFees(address(0xdead),true) (#968)
- _isExcludedFromFees[account] = excluded (#1046)
- excludeFromFees(buyBackWallet,true) (#969)
- _isExcludedFromFees[account] = excluded (#1046)
- excludeFromMaxTransaction(address(uniswapV2Pair),true) (#933)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1021)
- excludeFromMaxTransaction(newOwner,true) (#971)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1021)
- excludeFromMaxTransaction(address(this),true) (#972)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1021)
- excludeFromMaxTransaction(buyBackWallet,true) (#973)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1021)
- excludeFromMaxTransaction(address(0xdead),true) (#974)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1021)
- _mint(newOwner,totalSupply) (#980)
- _totalSupply = _totalSupply.add(amount) (#382)
- _setAutomatedMarketMakerPair(address(uniswapV2Pair),true) (#934)
- automatedMarketMakerPairs[pair] = value (#1057)
- buyBackWallet = address(0x34bc7DB2bef1816757c6e48b6FC067CCa156036A) (#963)
- buyBuyBackFee = _buyBuyBackFee (#954)
- buyLiquidityFee = _buyLiquidityFee (#953)
- buyMarketingFee = _buyMarketingFee (#952)
- buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBuyBackFee (#955)
- marketingWallet = address(0xd518dBF81F38b1c04b2006e8654fBf766a0cE6ec) (#962)
- maxTransactionAmount = totalSupply * 1 / 1000 (#948)
- maxWallet = totalSupply * 5 / 1000 (#950)
- sellBuyBackFee = _sellBuyBackFee (#959)
- sellLiquidityFee = _sellLiquidityFee (#958)
- sellMarketingFee = _sellMarketingFee (#957)
- sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBuyBackFee (#960)
- swapTokensAtAmount = totalSupply * 5 / 10000 (#949)
Reentrancy in ONYX.swapBack() (#1227-1262):
External calls:
- swapTokensForEth(amountToSwapForETH) (#1239)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1200-1206)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
External calls sending eth:
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
State variables written after the call(s):
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- _allowances[owner][spender] = amount (#429)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ONYX._transfer(address,address,uint256) (#1079-1188):
External calls:
- swapBack() (#1144)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1200-1206)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- (success,None) = address(buyBackWallet).call{value: address(this).balance}() (#1261)
External calls sending eth:
- swapBack() (#1144)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- (success,None) = address(buyBackWallet).call{value: address(this).balance}() (#1261)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#365)
- super._transfer(from,to,amount) (#1187)
- Transfer(sender,recipient,amount) (#365)
- super._transfer(from,address(this),fees) (#1181)
Reentrancy in ONYX.buyBackTokens(uint256) (#1265-1279):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: bnbAmountInWei}(0,path,address(0xdead),block.timestamp) (#1272-1277)
Event emitted after the call(s):
- BuyBackTriggered(bnbAmountInWei) (#1278)
Reentrancy in ONYX.constructor() (#923-982):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#932)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1047)
- excludeFromFees(buyBackWallet,true) (#969)
- ExcludeFromFees(account,excluded) (#1047)
- excludeFromFees(address(this),true) (#967)
- ExcludeFromFees(account,excluded) (#1047)
- excludeFromFees(address(0xdead),true) (#968)
- ExcludeFromFees(account,excluded) (#1047)
- excludeFromFees(newOwner,true) (#966)
- OwnershipTransferred(_owner,newOwner) (#644)
- transferOwnership(newOwner) (#981)
- SetAutomatedMarketMakerPair(pair,value) (#1059)
- _setAutomatedMarketMakerPair(address(uniswapV2Pair),true) (#934)
- Transfer(address(0),account,amount) (#384)
- _mint(newOwner,totalSupply) (#980)
Reentrancy in ONYX.swapBack() (#1227-1262):
External calls:
- swapTokensForEth(amountToSwapForETH) (#1239)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1200-1206)
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
External calls sending eth:
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1217-1224)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#430)
- addLiquidity(liquidityTokens,ethForLiquidity) (#1256)
- SwapAndLiquify(amountToSwapForETH,ethForLiquidity,tokensForLiquidity) (#1257)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (#10-13) is never used and should be removed
ERC20._burn(address,uint256) (#398-406) is never used and should be removed
SafeMath.mod(uint256,uint256) (#575-577) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#591-594) is never used and should be removed
SafeMathInt.abs(int256) (#699-702) is never used and should be removed
SafeMathInt.add(int256,int256) (#690-694) is never used and should be removed
SafeMathInt.div(int256,int256) (#670-676) is never used and should be removed
SafeMathInt.mul(int256,int256) (#658-665) is never used and should be removed
SafeMathInt.sub(int256,int256) (#681-685) is never used and should be removed
SafeMathInt.toUint256Safe(int256) (#705-708) is never used and should be removed
SafeMathUint.toInt256Safe(uint256) (#712-716) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version0.8.9 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.9 is not recommended for deployment
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in ONYX.swapBack() (#1227-1262):
- (success) = address(marketingWallet).call{value: ethForMarketing}() (#1254)
- (success,None) = address(buyBackWallet).call{value: address(this).balance}() (#1261)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#31) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#32) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#49) is not in mixedCase
Function IUniswapV2Router01.WETH() (#722) is not in mixedCase
Event ONYXmarketingWalletUpdated(address,address) (#911) is not in CapWords
Event ONYXbuyBackWalletUpdated(address,address) (#913) is not in CapWords
Parameter ONYX.updateBuyFees(uint256,uint256,uint256)._marketingFee (#1029) is not in mixedCase
Parameter ONYX.updateBuyFees(uint256,uint256,uint256)._liquidityFee (#1029) is not in mixedCase
Parameter ONYX.updateBuyFees(uint256,uint256,uint256)._buyBackFee (#1029) is not in mixedCase
Parameter ONYX.updateSellFees(uint256,uint256,uint256)._marketingFee (#1037) is not in mixedCase
Parameter ONYX.updateSellFees(uint256,uint256,uint256)._liquidityFee (#1037) is not in mixedCase
Parameter ONYX.updateSellFees(uint256,uint256,uint256)._buyBackFee (#1037) is not in mixedCase
Constant ONYX.deadAddress (#860) is not in UPPER_CASE_WITH_UNDERSCORES
Variable ONYX._isExcludedMaxTransactionAmount (#899) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#5-14)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#727) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#728)
Prevent variables from having similar names.
Additional information: link
ONYX.updateSwapTokensAtAmount(uint256) (#1008-1013) uses literals with too many digits:
- require(bool,string)(newAmount >= totalSupply() * 1 / 100000,Swap amount cannot be lower than 0.001% total supply.) (#1009)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#653) is never used in SafeMathInt (#651-709)
Remove unused state variables.
Additional information: link
name() should be declared external:
- ERC20.name() (#205-207)
symbol() should be declared external:
- ERC20.symbol() (#213-215)
decimals() should be declared external:
- ERC20.decimals() (#230-232)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#256-259)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#264-266)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#275-278)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#293-301)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#315-318)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#334-337)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#633-636)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- ONYX.setAutomatedMarketMakerPair(address,bool) (#1050-1054)
isExcludedFromFees(address) should be declared external:
- ONYX.isExcludedFromFees(address) (#1073-1075)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank
Last post in Twitter was more than 30 days ago
Unable to find Youtube account
Unable to find Discord account