币圈教父马斯克新宠:TwitterDoge(推特狗)粉红震撼上市
马斯克成功收购Twitter,必将携带TwitterDoge登录火星,震撼全球
TwitterDoge粉红预售,快来完成任务获取白名单吧
发行量:1000000000000
未开盘即燃烧50%
锁池子1年
推特系列正版推特狗,在行情低迷的市场闪亮登场
TG:https://t.me/TwitterDOGE6
TwitterDoge.addLiquidity(uint256,uint256) (#706-716) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in TwitterDoge._transfer(address,address,uint256) (#616-654):
External calls:
- swapAndLiquify(contractTokenBalance) (#638)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#638)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#641)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#649)
- finalAmount = takeFee(sender,recipient,amount) (#643-644)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#730)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
TwitterDoge.addLiquidity(uint256,uint256) (#706-716) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
Ensure that all the return values of the function calls are used.
Additional information: link
TwitterDoge.allowance(address,address).owner (#476) shadows:
- Ownable.owner() (#130-132) (function)
TwitterDoge._approve(address,address,uint256).owner (#499) shadows:
- Ownable.owner() (#130-132) (function)
Rename the local variables that shadow another component.
Additional information: link
TwitterDoge.setBuyTaxes(uint256,uint256,uint256) (#519-525) should emit an event for:
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee) (#524)
TwitterDoge.setDistributionSettings(uint256,uint256,uint256) (#532-538) should emit an event for:
- _liquidityShare = newLiquidityShare (#533)
- _teamShare = newTeamShare (#535)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare) (#537)
TwitterDoge.setMaxTxAmount(uint256) (#540-542) should emit an event for:
- _maxTxAmount = maxTxAmount (#541)
TwitterDoge.setWalletLimit(uint256) (#552-554) should emit an event for:
- _walletMax = newLimit (#553)
TwitterDoge.setNumTokensBeforeSwap(uint256) (#556-558) should emit an event for:
- minimumTokensBeforeSwap = newLimit (#557)
Emit an event for critical parameter changes.
Additional information: link
TwitterDoge.setMarketingWalletAddress(address).newAddress (#560) lacks a zero-check on :
- marketingWalletAddress = address(newAddress) (#561)
TwitterDoge.setTeamWalletAddress(address).newAddress (#564) lacks a zero-check on :
- teamWalletAddress = address(newAddress) (#565)
Check that the address is not zero.
Additional information: link
Reentrancy in TwitterDoge.changeRouterVersion(address) (#585-602):
External calls:
- newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#593-594)
State variables written after the call(s):
- isMarketPair[address(uniswapPair)] = true (#601)
- isWalletLimitExempt[address(uniswapPair)] = true (#600)
- uniswapPair = newPairAddress (#597)
- uniswapV2Router = _uniswapV2Router (#598)
Reentrancy in TwitterDoge.constructor() (#425-454):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#428-429)
State variables written after the call(s):
- _allowances[address(this)][address(uniswapV2Router)] = _totalSupply (#432)
- _balances[_msgSender()] = _totalSupply (#452)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare) (#439)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee) (#437)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee) (#438)
- isExcludedFromFee[owner()] = true (#434)
- isExcludedFromFee[address(this)] = true (#435)
- isMarketPair[address(uniswapPair)] = true (#447)
- isTxLimitExempt[owner()] = true (#445)
- isTxLimitExempt[address(this)] = true (#446)
- isWalletLimitExempt[owner()] = true (#441)
- isWalletLimitExempt[address(uniswapPair)] = true (#442)
- isWalletLimitExempt[address(this)] = true (#443)
- marketingWalletAddress = address(address(0x19eA2b76273925ae00ee1Caf3f3EDf2DDe900000)) (#450)
- teamWalletAddress = address(address(0x19eA2b76273925ae00ee1Caf3f3EDf2DDe900000)) (#449)
- uniswapV2Router = _uniswapV2Router (#431)
Reentrancy in TwitterDoge.swapAndLiquify(uint256) (#663-685):
External calls:
- swapTokensForEth(tokensForSwap) (#668)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#678)
- recipient.transfer(amount) (#582)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#681)
- recipient.transfer(amount) (#582)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- _allowances[owner][spender] = amount (#503)
Reentrancy in TwitterDoge.transferFrom(address,address,uint256) (#610-614):
External calls:
- _transfer(sender,recipient,amount) (#611)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
External calls sending eth:
- _transfer(sender,recipient,amount) (#611)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#612)
- _allowances[owner][spender] = amount (#503)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in TwitterDoge._transfer(address,address,uint256) (#616-654):
External calls:
- swapAndLiquify(contractTokenBalance) (#638)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#638)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#731)
- finalAmount = takeFee(sender,recipient,amount) (#643-644)
- Transfer(sender,recipient,finalAmount) (#651)
Reentrancy in TwitterDoge.constructor() (#425-454):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#428-429)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_totalSupply) (#453)
Reentrancy in TwitterDoge.swapAndLiquify(uint256) (#663-685):
External calls:
- swapTokensForEth(tokensForSwap) (#668)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#678)
- recipient.transfer(amount) (#582)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#681)
- recipient.transfer(amount) (#582)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#504)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
Reentrancy in TwitterDoge.swapTokensForEth(uint256) (#688-704):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#703)
Reentrancy in TwitterDoge.transferFrom(address,address,uint256) (#610-614):
External calls:
- _transfer(sender,recipient,amount) (#611)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#695-701)
External calls sending eth:
- _transfer(sender,recipient,amount) (#611)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#504)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#612)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#78-83) uses assembly
- INLINE ASM (#81)
Address._functionCallWithValue(address,bytes,uint256,string) (#98-114) uses assembly
- INLINE ASM (#106-109)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#98-114) is never used and should be removed
Address.functionCall(address,bytes) (#89-91) is never used and should be removed
Address.functionCall(address,bytes,string) (#92-94) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#95-97) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#116-119) is never used and should be removed
Address.isContract(address) (#78-83) is never used and should be removed
Address.sendValue(address,uint256) (#84-88) is never used and should be removed
Context._msgData() (#11-14) is never used and should be removed
SafeMath.mod(uint256,uint256) (#67-69) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#71-74) is never used and should be removed
Remove unused functions.
Additional information: link
TwitterDoge._totalSupply (#389) is set pre-construction with a non-constant function or state variable:
- 1000000000000 * 10 ** _decimals
TwitterDoge._maxTxAmount (#390) is set pre-construction with a non-constant function or state variable:
- 1000000000000 * 10 ** _decimals
TwitterDoge._walletMax (#391) is set pre-construction with a non-constant function or state variable:
- 1000000000000 * 10 ** _decimals
TwitterDoge.minimumTokensBeforeSwap (#392) is set pre-construction with a non-constant function or state variable:
- 10000 * 10 ** _decimals
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#84-88):
- (success) = recipient.call{value: amount}() (#86)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#98-114):
- (success,returndata) = target.call{value: weiValue}(data) (#100)
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() (#190) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#191) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#207) is not in mixedCase
Function IUniswapV2Router01.WETH() (#225) is not in mixedCase
Parameter TwitterDoge.setSwapAndLiquifyEnabled(bool,uint256,address)._enabled (#568) is not in mixedCase
Variable TwitterDoge._balances (#365) is not in mixedCase
Variable TwitterDoge._buyLiquidityFee (#373) is not in mixedCase
Variable TwitterDoge._buyMarketingFee (#374) is not in mixedCase
Variable TwitterDoge._buyTeamFee (#375) is not in mixedCase
Variable TwitterDoge._sellLiquidityFee (#377) is not in mixedCase
Variable TwitterDoge._sellMarketingFee (#378) is not in mixedCase
Variable TwitterDoge._sellTeamFee (#379) is not in mixedCase
Variable TwitterDoge._liquidityShare (#381) is not in mixedCase
Variable TwitterDoge._marketingShare (#382) is not in mixedCase
Variable TwitterDoge._teamShare (#383) is not in mixedCase
Variable TwitterDoge._totalTaxIfBuying (#385) is not in mixedCase
Variable TwitterDoge._totalTaxIfSelling (#386) is not in mixedCase
Variable TwitterDoge._totalDistributionShares (#387) is not in mixedCase
Variable TwitterDoge._maxTxAmount (#390) is not in mixedCase
Variable TwitterDoge._walletMax (#391) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#12)" inContext (#7-15)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in TwitterDoge._transfer(address,address,uint256) (#616-654):
External calls:
- swapAndLiquify(contractTokenBalance) (#638)
- recipient.transfer(amount) (#582)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#638)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#641)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#649)
- finalAmount = takeFee(sender,recipient,amount) (#643-644)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#730)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#731)
- finalAmount = takeFee(sender,recipient,amount) (#643-644)
- Transfer(sender,recipient,finalAmount) (#651)
Reentrancy in TwitterDoge.swapAndLiquify(uint256) (#663-685):
External calls:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#678)
- recipient.transfer(amount) (#582)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#681)
- recipient.transfer(amount) (#582)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#678)
- recipient.transfer(amount) (#582)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#681)
- recipient.transfer(amount) (#582)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
- _allowances[owner][spender] = amount (#503)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#504)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#684)
Reentrancy in TwitterDoge.transferFrom(address,address,uint256) (#610-614):
External calls:
- _transfer(sender,recipient,amount) (#611)
- recipient.transfer(amount) (#582)
External calls sending eth:
- _transfer(sender,recipient,amount) (#611)
- recipient.transfer(amount) (#582)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#708-715)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#612)
- _allowances[owner][spender] = amount (#503)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#504)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#612)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#230) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#231)
Prevent variables from having similar names.
Additional information: link
TwitterDoge.constructor() (#425-454) uses literals with too many digits:
- teamWalletAddress = address(address(0x19eA2b76273925ae00ee1Caf3f3EDf2DDe900000)) (#449)
TwitterDoge.constructor() (#425-454) uses literals with too many digits:
- marketingWalletAddress = address(address(0x19eA2b76273925ae00ee1Caf3f3EDf2DDe900000)) (#450)
TwitterDoge.slitherConstructorVariables() (#356-738) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#364)
TwitterDoge.slitherConstructorVariables() (#356-738) uses literals with too many digits:
- _totalSupply = 1000000000000 * 10 ** _decimals (#389)
TwitterDoge.slitherConstructorVariables() (#356-738) uses literals with too many digits:
- _maxTxAmount = 1000000000000 * 10 ** _decimals (#390)
TwitterDoge.slitherConstructorVariables() (#356-738) uses literals with too many digits:
- _walletMax = 1000000000000 * 10 ** _decimals (#391)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
TwitterDoge._decimals (#361) should be constant
TwitterDoge._name (#359) should be constant
TwitterDoge._sellMarketingFee (#378) should be constant
TwitterDoge._sellTeamFee (#379) should be constant
TwitterDoge._symbol (#360) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
waiveOwnership() should be declared external:
- Ownable.waiveOwnership() (#143-146)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#148-152)
getTime() should be declared external:
- Ownable.getTime() (#154-156)
name() should be declared external:
- TwitterDoge.name() (#456-458)
symbol() should be declared external:
- TwitterDoge.symbol() (#460-462)
decimals() should be declared external:
- TwitterDoge.decimals() (#464-466)
totalSupply() should be declared external:
- TwitterDoge.totalSupply() (#468-470)
allowance(address,address) should be declared external:
- TwitterDoge.allowance(address,address) (#476-478)
increaseAllowance(address,uint256) should be declared external:
- TwitterDoge.increaseAllowance(address,uint256) (#480-483)
decreaseAllowance(address,uint256) should be declared external:
- TwitterDoge.decreaseAllowance(address,uint256) (#485-488)
minimumTokensBeforeSwapAmount() should be declared external:
- TwitterDoge.minimumTokensBeforeSwapAmount() (#490-492)
approve(address,uint256) should be declared external:
- TwitterDoge.approve(address,uint256) (#494-497)
setMarketPairStatus(address,bool) should be declared external:
- TwitterDoge.setMarketPairStatus(address,bool) (#507-509)
setIsExcludedFromFee(address,bool) should be declared external:
- TwitterDoge.setIsExcludedFromFee(address,bool) (#515-517)
setSwapAndLiquifyEnabled(bool,uint256,address) should be declared external:
- TwitterDoge.setSwapAndLiquifyEnabled(bool,uint256,address) (#568-571)
setSwapAndLiquifyByLimitOnly(bool) should be declared external:
- TwitterDoge.setSwapAndLiquifyByLimitOnly(bool) (#573-575)
getCirculatingSupply() should be declared external:
- TwitterDoge.getCirculatingSupply() (#577-579)
changeRouterVersion(address) should be declared external:
- TwitterDoge.changeRouterVersion(address) (#585-602)
transfer(address,uint256) should be declared external:
- TwitterDoge.transfer(address,uint256) (#605-608)
transferFrom(address,address,uint256) should be declared external:
- TwitterDoge.transferFrom(address,address,uint256) (#610-614)
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 Twitter account
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account