Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
COPIUM.setMarketingWalletAddress(address).marketingWalletAddress_ (#898) lacks a zero-check on :
- marketingWallet = marketingWalletAddress_ (#899)
Check that the address is not zero.
Additional information: link
COPIUM._getReflectFee(uint256) (#920-925) performs a multiplication on the result of a division:
-tFee = tAmount.mul(_taxFee).div(100) (#922)
-rFee = tFee.mul(currentRate) (#923)
COPIUM._takeLiquidity(address,uint256) (#939-949) performs a multiplication on the result of a division:
-tLiquidity = tAmount.mul(_liquidityFee).div(100) (#942)
-rLiquidity = tLiquidity.mul(currentRate) (#943)
COPIUM._takeBurn(address,uint256) (#951-961) performs a multiplication on the result of a division:
-tBurn = tAmount.mul(_burnFee).div(100) (#954)
-rBurn = tBurn.mul(currentRate) (#955)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in COPIUM._transfer(address,address,uint256) (#1010-1064):
External calls:
- swapAndLiquify(contractTokenBalance) (#1051)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1080-1086)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _rOwned[deadWallet] = _rOwned[deadWallet].add(rBurn) (#956)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#944)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1124)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1144)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1187)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1125)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1166)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1146)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1167)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1189)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _rTotal = _rTotal.sub(rFee) (#906)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _tOwned[deadWallet] = _tOwned[deadWallet].add(tBurn) (#957)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#945)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1165)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1186)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1145)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1188)
Apply the check-effects-interactions pattern.
Additional information: link
COPIUM._transferFromExcluded(address,address,uint256).tFeeAmount (#1156) is a local variable never initialized
COPIUM._transferStandard(address,address,uint256).tFeeAmount (#1115) is a local variable never initialized
COPIUM._transferToExcluded(address,address,uint256).tFeeAmount (#1135) is a local variable never initialized
COPIUM._transferBothExcluded(address,address,uint256).tFeeAmount (#1177) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
COPIUM.allowance(address,address).owner (#790) shadows:
- Ownable.owner() (#405-407) (function)
COPIUM._approve(address,address,uint256).owner (#1002) shadows:
- Ownable.owner() (#405-407) (function)
Rename the local variables that shadow another component.
Additional information: link
COPIUM.setTaxFeePercent(uint256) (#869-871) should emit an event for:
- _taxFee = taxFee (#870)
COPIUM.setLiquidityFeePercent(uint256) (#873-875) should emit an event for:
- _liquidityFee = liquidityFee (#874)
COPIUM.setBurnFeePercent(uint256) (#877-879) should emit an event for:
- _burnFee = burnFee (#878)
COPIUM.setNumTokensSellToAddToLiquidity(uint256) (#881-883) should emit an event for:
- numTokensSellToAddToLiquidity = swapNumber * 10 ** _decimals (#882)
COPIUM.setMaxTxPercent(uint256) (#885-887) should emit an event for:
- _maxTxAmount = maxTxPercent * 10 ** _decimals (#886)
COPIUM.setMaxWalletAmount(uint256) (#889-891) should emit an event for:
- _maxWalletAmount = maxWalletAmount * 10 ** _decimals (#890)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in COPIUM._transfer(address,address,uint256) (#1010-1064):
External calls:
- swapAndLiquify(contractTokenBalance) (#1051)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1080-1086)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _burnFee = _previousBurnFee (#995)
- _burnFee = 0 (#989)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _liquidityFee = _previousLiquidityFee (#994)
- _liquidityFee = 0 (#988)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _previousBurnFee = _burnFee (#985)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _previousLiquidityFee = _liquidityFee (#984)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _previousTaxFee = _taxFee (#983)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _tFeeTotal = _tFeeTotal.add(tFee) (#907)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- _taxFee = _previousTaxFee (#993)
- _taxFee = 0 (#987)
Reentrancy in COPIUM.constructor() (#727-761):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#748-749)
State variables written after the call(s):
- _isExcludedFromFee[tokenOwner] = true (#755)
- _isExcludedFromFee[address(this)] = true (#756)
- _isExcludedFromFee[address(_uniswapV2Router)] = true (#757)
- _owner = tokenOwner (#759)
- uniswapV2Router = _uniswapV2Router (#752)
Reentrancy in COPIUM.transferFrom(address,address,uint256) (#799-803):
External calls:
- _transfer(sender,recipient,amount) (#800)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1080-1086)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#801)
- _allowances[owner][spender] = amount (#1006)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in COPIUM._transfer(address,address,uint256) (#1010-1064):
External calls:
- swapAndLiquify(contractTokenBalance) (#1051)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1080-1086)
Event emitted after the call(s):
- Transfer(sender,deadWallet,tBurn) (#959)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- Transfer(sender,address(this),tLiquidity) (#947)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- Transfer(sender,recipient,tTransferAmount) (#1127)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- Transfer(sender,recipient,tTransferAmount) (#1148)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- Transfer(sender,recipient,tTransferAmount) (#1169)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
- Transfer(sender,recipient,tTransferAmount) (#1191)
- _tokenTransfer(from,to,amount,takeFee) (#1063)
Reentrancy in COPIUM.constructor() (#727-761):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#748-749)
Event emitted after the call(s):
- Transfer(address(0),tokenOwner,_tTotal) (#760)
Reentrancy in COPIUM.transferFrom(address,address,uint256) (#799-803):
External calls:
- _transfer(sender,recipient,amount) (#800)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1080-1086)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1007)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#801)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#452-457) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#454)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#265-274) uses assembly
- INLINE ASM (#272)
Address._functionCallWithValue(address,bytes,uint256,string) (#358-379) uses assembly
- INLINE ASM (#371-374)
Do not use evm assembly.
Additional information: link
COPIUM.includeInReward(address) (#848-859) has costly operations inside a loop:
- _excluded.pop() (#855)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#358-379) is never used and should be removed
Address.functionCall(address,bytes) (#318-320) is never used and should be removed
Address.functionCall(address,bytes,string) (#328-330) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#343-345) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#353-356) is never used and should be removed
Address.isContract(address) (#265-274) is never used and should be removed
Address.sendValue(address,uint256) (#292-298) is never used and should be removed
COPIUM.calculateLiquidityFee(uint256) (#974-978) is never used and should be removed
COPIUM.calculateTaxFee(uint256) (#968-972) is never used and should be removed
Context._msgData() (#237-240) is never used and should be removed
SafeMath.mod(uint256,uint256) (#210-212) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#226-229) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#292-298):
- (success) = recipient.call{value: amount}() (#296)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#358-379):
- (success,returndata) = target.call{value: weiValue}(data) (#362)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._owner (#395) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#496) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#497) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#514) is not in mixedCase
Function IUniswapV2Router01.WETH() (#536) is not in mixedCase
Parameter COPIUM.setSwapAndLiquifyEnabled(bool)._enabled (#893) is not in mixedCase
Parameter COPIUM.calculateTaxFee(uint256)._amount (#968) is not in mixedCase
Parameter COPIUM.calculateLiquidityFee(uint256)._amount (#974) is not in mixedCase
Variable COPIUM._taxFee (#696) is not in mixedCase
Variable COPIUM._liquidityFee (#699) is not in mixedCase
Variable COPIUM._burnFee (#702) is not in mixedCase
Variable COPIUM._maxTxAmount (#714) is not in mixedCase
Variable COPIUM._maxWalletAmount (#716) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#238)" inContext (#232-241)
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 (#541) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#542)
Variable COPIUM._transferBothExcluded(address,address,uint256).rReflectFee (#1180) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tReflectFee (#1159)
Variable COPIUM._transferStandard(address,address,uint256).rReflectFee (#1118) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tReflectFee (#1180)
Variable COPIUM._transferToExcluded(address,address,uint256).rReflectFee (#1138) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tReflectFee (#1180)
Variable COPIUM._transferStandard(address,address,uint256).rReflectFee (#1118) is too similar to COPIUM._transferToExcluded(address,address,uint256).tReflectFee (#1138)
Variable COPIUM._transferStandard(address,address,uint256).rReflectFee (#1118) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tReflectFee (#1159)
Variable COPIUM._transferToExcluded(address,address,uint256).rReflectFee (#1138) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tReflectFee (#1159)
Variable COPIUM._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tTransferAmount (#1184)
Variable COPIUM._transferBothExcluded(address,address,uint256).rTransferAmount (#1185) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tTransferAmount (#1163)
Variable COPIUM._transferToExcluded(address,address,uint256).rTransferAmount (#1143) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tTransferAmount (#1184)
Variable COPIUM._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to COPIUM._transferToExcluded(address,address,uint256).tTransferAmount (#1142)
Variable COPIUM._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tTransferAmount (#1163)
Variable COPIUM._transferToExcluded(address,address,uint256).rTransferAmount (#1143) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tTransferAmount (#1163)
Variable COPIUM._transferFromExcluded(address,address,uint256).rReflectFee (#1159) is too similar to COPIUM._transferStandard(address,address,uint256).tReflectFee (#1118)
Variable COPIUM._transferFromExcluded(address,address,uint256).rReflectFee (#1159) is too similar to COPIUM._transferToExcluded(address,address,uint256).tReflectFee (#1138)
Variable COPIUM._transferFromExcluded(address,address,uint256).rReflectFee (#1159) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tReflectFee (#1159)
Variable COPIUM._transferFromExcluded(address,address,uint256).rReflectFee (#1159) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tReflectFee (#1180)
Variable COPIUM._transferStandard(address,address,uint256).rReflectFee (#1118) is too similar to COPIUM._transferStandard(address,address,uint256).tReflectFee (#1118)
Variable COPIUM._transferBothExcluded(address,address,uint256).rReflectFee (#1180) is too similar to COPIUM._transferStandard(address,address,uint256).tReflectFee (#1118)
Variable COPIUM._transferBothExcluded(address,address,uint256).rReflectFee (#1180) is too similar to COPIUM._transferToExcluded(address,address,uint256).tReflectFee (#1138)
Variable COPIUM._transferToExcluded(address,address,uint256).rReflectFee (#1138) is too similar to COPIUM._transferStandard(address,address,uint256).tReflectFee (#1118)
Variable COPIUM._transferToExcluded(address,address,uint256).rReflectFee (#1138) is too similar to COPIUM._transferToExcluded(address,address,uint256).tReflectFee (#1138)
Variable COPIUM._transferBothExcluded(address,address,uint256).rReflectFee (#1180) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tReflectFee (#1180)
Variable COPIUM._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to COPIUM._transferStandard(address,address,uint256).tTransferAmount (#1122)
Variable COPIUM._transferBothExcluded(address,address,uint256).rTransferAmount (#1185) is too similar to COPIUM._transferStandard(address,address,uint256).tTransferAmount (#1122)
Variable COPIUM._transferBothExcluded(address,address,uint256).rTransferAmount (#1185) is too similar to COPIUM._transferToExcluded(address,address,uint256).tTransferAmount (#1142)
Variable COPIUM._transferToExcluded(address,address,uint256).rTransferAmount (#1143) is too similar to COPIUM._transferStandard(address,address,uint256).tTransferAmount (#1122)
Variable COPIUM._transferToExcluded(address,address,uint256).rTransferAmount (#1143) is too similar to COPIUM._transferToExcluded(address,address,uint256).tTransferAmount (#1142)
Variable COPIUM._transferBothExcluded(address,address,uint256).rTransferAmount (#1185) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tTransferAmount (#1184)
Variable COPIUM._transferFromExcluded(address,address,uint256).rTransferAmount (#1164) is too similar to COPIUM._transferStandard(address,address,uint256).tTransferAmount (#1122)
Variable COPIUM._transferFromExcluded(address,address,uint256).rTransferAmount (#1164) is too similar to COPIUM._transferToExcluded(address,address,uint256).tTransferAmount (#1142)
Variable COPIUM._transferFromExcluded(address,address,uint256).rTransferAmount (#1164) is too similar to COPIUM._transferFromExcluded(address,address,uint256).tTransferAmount (#1163)
Variable COPIUM._transferFromExcluded(address,address,uint256).rTransferAmount (#1164) is too similar to COPIUM._transferBothExcluded(address,address,uint256).tTransferAmount (#1184)
Prevent variables from having similar names.
Additional information: link
COPIUM.slitherConstructorVariables() (#674-1194) uses literals with too many digits:
- deadWallet = address(0x000000000000000000000000000000000000dEaD) (#708)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
COPIUM.deadWallet (#708) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#424-427)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#433-437)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#439-441)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#444-449)
unlock() should be declared external:
- Ownable.unlock() (#452-457)
name() should be declared external:
- COPIUM.name() (#764-766)
symbol() should be declared external:
- COPIUM.symbol() (#768-770)
decimals() should be declared external:
- COPIUM.decimals() (#772-774)
totalSupply() should be declared external:
- COPIUM.totalSupply() (#776-778)
transfer(address,uint256) should be declared external:
- COPIUM.transfer(address,uint256) (#785-788)
allowance(address,address) should be declared external:
- COPIUM.allowance(address,address) (#790-792)
approve(address,uint256) should be declared external:
- COPIUM.approve(address,uint256) (#794-797)
transferFrom(address,address,uint256) should be declared external:
- COPIUM.transferFrom(address,address,uint256) (#799-803)
increaseAllowance(address,uint256) should be declared external:
- COPIUM.increaseAllowance(address,uint256) (#805-808)
decreaseAllowance(address,uint256) should be declared external:
- COPIUM.decreaseAllowance(address,uint256) (#810-813)
isExcludedFromReward(address) should be declared external:
- COPIUM.isExcludedFromReward(address) (#815-817)
totalFees() should be declared external:
- COPIUM.totalFees() (#819-821)
deliver(uint256) should be declared external:
- COPIUM.deliver(uint256) (#823-830)
excludeFromReward(address) should be declared external:
- COPIUM.excludeFromReward(address) (#838-846)
excludeFromFee(address) should be declared external:
- COPIUM.excludeFromFee(address) (#861-863)
includeInFee(address) should be declared external:
- COPIUM.includeInFee(address) (#865-867)
setNumTokensSellToAddToLiquidity(uint256) should be declared external:
- COPIUM.setNumTokensSellToAddToLiquidity(uint256) (#881-883)
setMaxTxPercent(uint256) should be declared external:
- COPIUM.setMaxTxPercent(uint256) (#885-887)
setMaxWalletAmount(uint256) should be declared external:
- COPIUM.setMaxWalletAmount(uint256) (#889-891)
setSwapAndLiquifyEnabled(bool) should be declared external:
- COPIUM.setSwapAndLiquifyEnabled(bool) (#893-896)
setMarketingWalletAddress(address) should be declared external:
- COPIUM.setMarketingWalletAddress(address) (#898-900)
claimTokens() should be declared external:
- COPIUM.claimTokens() (#964-966)
isExcludedFromFee(address) should be declared external:
- COPIUM.isExcludedFromFee(address) (#998-1000)
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