Vetter Token, where crowdsourcing meets a.i. and gamification to empower the crypto investor. Reinventing the Crypto Research Game.
Vetter Token, helping crypto insiders become a better Vetter. Crypto Calendar helps identify the projects most likely to 2x to 1000x based on poster history.
Vetter Token (VETTER) makes crypto research fun! With a proven use case, the dApp highlights projects worth researching by ranking the poster’s performance. Add in compensation, points, tipping and a bad-ass interface, and you have the best crypto research tool at your fingertips.
VetterToken.addLiquidity(uint256,uint256) (#402-416) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),getTime()) (#408-415)
VetterToken.transferBNBToAddress(address,uint256) (#825-828) sends eth to arbitrary user
Dangerous calls:
- recipient.transfer(amount) (#827)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
VetterToken.swapMarketingPoolTokens(uint256) (#489-513) uses a dangerous strict equality:
- transferredBalance == 0 (#497)
VetterToken.swapVetterPoolTokens(uint256) (#517-538) uses a dangerous strict equality:
- transferredBalance == 0 (#531)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#67) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#68) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#69) is not in mixedCase
Function IUniswapV2Router01.WETH() (#89) is not in mixedCase
Parameter VetterToken.setVetterAddress(address)._vetterAddress (#547) is not in mixedCase
Parameter VetterToken.takeTaxes(bool)._enabled (#672) is not in mixedCase
Parameter VetterToken.changeRouterVersion(address)._router (#838) is not in mixedCase
Parameter VetterToken.transferForeignToken(address,address)._token (#865) is not in mixedCase
Parameter VetterToken.transferForeignToken(address,address)._to (#865) is not in mixedCase
Function VetterToken._setRankContract(address) (#873-876) is not in mixedCase
Parameter VetterToken._setRankContract(address)._contractAddress (#873) is not in mixedCase
Function VetterToken._getAllFounders() (#988-996) is not in mixedCase
Function VetterToken._getAllAdmins() (#1045-1053) is not in mixedCase
Function VetterToken._getAllVetters() (#1126-1134) is not in mixedCase
Function VetterToken._getAllShareholders() (#1136-1144) is not in mixedCase
Parameter VetterToken.addToStableList(address,uint256,bool,bool)._wallet (#1146) is not in mixedCase
Parameter VetterToken.addToStableList(address,uint256,bool,bool)._shares (#1146) is not in mixedCase
Parameter VetterToken.addToStableList(address,uint256,bool,bool)._private (#1146) is not in mixedCase
Parameter VetterToken.addToStableList(address,uint256,bool,bool)._active (#1146) is not in mixedCase
Parameter VetterToken.adjustStableListEnrty(address,uint256,bool,bool,uint256)._wallet (#1162) is not in mixedCase
Parameter VetterToken.adjustStableListEnrty(address,uint256,bool,bool,uint256)._shares (#1162) is not in mixedCase
Parameter VetterToken.adjustStableListEnrty(address,uint256,bool,bool,uint256)._private (#1162) is not in mixedCase
Parameter VetterToken.adjustStableListEnrty(address,uint256,bool,bool,uint256)._active (#1162) is not in mixedCase
Parameter VetterToken.adjustStableListEnrty(address,uint256,bool,bool,uint256)._minTokens (#1162) is not in mixedCase
Function VetterToken._getMaxTier() (#1255-1258) is not in mixedCase
Function VetterToken._getTierLevel(uint256) (#1261-1265) is not in mixedCase
Function VetterToken._getAllTiers() (#1268-1277) is not in mixedCase
Function VetterToken._setTierLevel(uint256,uint256) (#1282-1287) is not in mixedCase
Function VetterToken._addNewTier(uint256) (#1290-1295) is not in mixedCase
Function VetterToken._getWalletTier(address) (#1298-1309) is not in mixedCase
Function VetterToken._getUserInfo(address) (#1312-1315) is not in mixedCase
Constant VetterToken._name (#194) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._symbol (#195) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._decimals (#196) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken.addressV2Router (#200) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._totalTokens (#205) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialFounder (#206) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialStable (#207) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialPrivateSale (#208) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialPreSale (#209) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialLiquidity (#210) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialTier1 (#214) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialTier2 (#215) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialTier3 (#216) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._initialTier4 (#217) is not in UPPER_CASE_WITH_UNDERSCORES
Variable VetterToken._founderList (#230) is not in mixedCase
Constant VetterToken._initialFounderLock (#233) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._founderRelease (#234) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._founderPercentPerPeriod (#235) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._stableRelease (#252) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._marketTaxCap (#267) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._participitoryCap (#272) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._vetterCap (#277) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._maxHighTaxTime (#278) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._liquidityCap (#287) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._royaltyCap (#292) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VetterToken._royaltyMin (#293) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in VetterToken.swapVetterPoolTokens(uint256) (#517-538):
External calls:
- transferBNBToAddress(vetterAddress,transferredBalance) (#536)
- recipient.transfer(amount) (#827)
Event emitted after the call(s):
- VetterPoolSwapped(swapAmt) (#537)
Apply the check-effects-interactions pattern.
Additional information: link
VetterToken._stablePercent (#253) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
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
VetterToken.distributeFounderTokens() (#942-975) performs a multiplication on the result of a division:
-tokensPerPeriod = (_initialFounder * _founderPercentPerPeriod) / 100 (#963)
-tokensToDistribute = _founderTokens - (_initialFounder - (periods * tokensPerPeriod)) (#964)
VetterToken.distributeStableTokens() (#1193-1225) performs a multiplication on the result of a division:
-tokensPerShare = tokensThisPeriod / getStableShares() (#1203)
-amount = tokensPerShare * _shareHolders[index]._shares (#1210)
VetterToken.airdropPrivateTokens() (#1227-1252) performs a multiplication on the result of a division:
-tokensPerShare = _privateSaleTokens / getPrivateShares() (#1231)
-amount = tokensPerShare * _shareHolders[index]._shares (#1238)
VetterToken.distributeRoyaltyTokens() (#1327-1336) performs a multiplication on the result of a division:
-amount = _royaltyUndistributed / _numRoyaltyHolders (#1331)
-_royaltyUndistributed = _royaltyUndistributed - (amount * _numRoyaltyHolders) (#1332)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in VetterToken.addLiquidityPoolTokensToLP(uint256) (#556-582):
External calls:
- swapTokensForBNB(half) (#571)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _liquidityTokens = _liquidityTokens - amount (#577)
Reentrancy in VetterToken.swapMarketingPoolTokens(uint256) (#489-513):
External calls:
- swapTokensForBNB(amount) (#495)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _marketingTokens = _marketingTokens - amount (#500)
Reentrancy in VetterToken.swapVetterPoolTokens(uint256) (#517-538):
External calls:
- swapTokensForBNB(swapAmt) (#529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _vetterTokens = _vetterTokens - swapAmt (#535)
Apply the check-effects-interactions pattern.
Additional information: link
VetterToken._transfer(address,address,uint256).buyTax (#439) is a local variable never initialized
VetterToken._transfer(address,address,uint256).sellTax (#438) 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
VetterToken.addLiquidity(uint256,uint256) (#402-416) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),getTime()) (#408-415)
Ensure that all the return values of the function calls are used.
Additional information: link
VetterToken.allowance(address,address).owner (#354) shadows:
- Ownable.owner() (#145-148) (function)
VetterToken._approve(address,address,uint256).owner (#418) shadows:
- Ownable.owner() (#145-148) (function)
Rename the local variables that shadow another component.
Additional information: link
VetterToken.setVetterAddress(address)._vetterAddress (#547) lacks a zero-check on :
- vetterAddress = address(_vetterAddress) (#549)
VetterToken.setPresaleAddress(address).who (#856) lacks a zero-check on :
- presaleAddress = who (#858)
VetterToken._setRankContract(address)._contractAddress (#873) lacks a zero-check on :
- _rankContract = _contractAddress (#875)
Check that the address is not zero.
Additional information: link
Reentrancy in VetterToken.addLiquidityPoolTokensToLP(uint256) (#556-582):
External calls:
- swapTokensForBNB(half) (#571)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount (#576)
Reentrancy in VetterToken.changeRouterVersion(address) (#838-854):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#846)
State variables written after the call(s):
- _isExcludedFromFee[address(uniswapV2Router)] = true (#852)
- uniswapV2Pair = _pair (#850)
- uniswapV2Router = _uniswapV2Router (#851)
Reentrancy in VetterToken.constructor() (#308-333):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#318)
State variables written after the call(s):
- _isExcludedFromFee[address(this)] = true (#321)
- _isExcludedFromFee[owner()] = true (#322)
- _isExcludedFromFee[addressV2Router] = true (#323)
- _isExcludedFromFee[uniswapV2Pair] = true (#324)
- _isExcludedFromFee[vetterAddress] = true (#325)
- _tiers[1] = _initialTier1 (#327)
- _tiers[2] = _initialTier2 (#328)
- _tiers[3] = _initialTier3 (#329)
- _tiers[4] = _initialTier4 (#330)
- _timeTokenLaunched = block.timestamp (#332)
- uniswapV2Router = _uniswapV2Router (#319)
Reentrancy in VetterToken.swapMarketingPoolTokens(uint256) (#489-513):
External calls:
- swapTokensForBNB(amount) (#495)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount (#499)
Reentrancy in VetterToken.swapVetterPoolTokens(uint256) (#517-538):
External calls:
- swapTokensForBNB(swapAmt) (#529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
State variables written after the call(s):
- _tokensOwned[address(this)] = _tokensOwned[address(this)] - swapAmt (#534)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in VetterToken.addLiquidityPoolTokensToLP(uint256) (#556-582):
External calls:
- swapTokensForBNB(half) (#571)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
- addLiquidity(otherHalf,newBalance) (#578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),getTime()) (#408-415)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),getTime()) (#408-415)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#424)
- addLiquidity(otherHalf,newBalance) (#578)
- LiquidityAddedToLP(amount) (#579)
Reentrancy in VetterToken.changeRouterVersion(address) (#838-854):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#846)
Event emitted after the call(s):
- ChangeRouter(address(uniswapV2Router),address(uniswapV2Pair)) (#853)
Reentrancy in VetterToken.swapMarketingPoolTokens(uint256) (#489-513):
External calls:
- swapTokensForBNB(amount) (#495)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
Event emitted after the call(s):
- MarketingPoolSwap(amount) (#501)
Reentrancy in VetterToken.swapVetterPoolTokens(uint256) (#517-538):
External calls:
- swapTokensForBNB(swapAmt) (#529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#598-611)
External calls sending eth:
- transferBNBToAddress(vetterAddress,transferredBalance) (#536)
- recipient.transfer(amount) (#827)
Event emitted after the call(s):
- VetterPoolSwapped(swapAmt) (#537)
Reentrancy in VetterToken.transferForeignToken(address,address) (#865-871):
External calls:
- _sent = IERC20(_token).transfer(_to,_contractBalance) (#869)
Event emitted after the call(s):
- TransferForeignTokens(_token,_to,_contractBalance) (#870)
Apply the check-effects-interactions pattern.
Additional information: link
VetterToken.setInitialLaunchTaxes(uint256) (#713-719) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(getTime() < _timeTokenLaunched + _maxHighTaxTime,Past Allowed High Tax Period) (#715)
VetterToken.distributeFounderTokens() (#942-975) uses timestamp for comparisons
Dangerous comparisons:
- getTime() < _timeTokenLaunched + _initialFounderLock (#947)
- (totalUnlocked < 100) && (getTime() > (_timeTokenLaunched + _initialFounderLock + (_founderRelease * periods))) (#951)
VetterToken.distributeStableTokens() (#1193-1225) uses timestamp for comparisons
Dangerous comparisons:
- getTime() < _timeTokenLaunched + (_stableRelease * (_stablePeriod + 1)) (#1198)
VetterToken.getRoyaltyAmount(address) (#1351-1362) uses timestamp for comparisons
Dangerous comparisons:
- lastTime < 1 (#1354)
- _distributions[index].whenAvailable > lastTime (#1359)
VetterToken.claimRoyalties() (#1366-1379) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_royaltyIndex[_msgSender()] > 0,Not a Royalty Holder) (#1368)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#7-20) uses assembly
- INLINE ASM (#15-18)
Do not use evm assembly.
Additional information: link
VetterToken.removeArchitect(address) (#904-923) has costly operations inside a loop:
- _numberOfFounders = _numberOfFounders - 1 (#919)
VetterToken.distributeFounderTokens() (#942-975) has costly operations inside a loop:
- _founderTokens = _founderTokens - amount (#971)
VetterToken.removeAdmin(address) (#1022-1037) has costly operations inside a loop:
- _numberOfAdmins = _numberOfAdmins - 1 (#1033)
VetterToken.distributeStableTokens() (#1193-1225) has costly operations inside a loop:
- _stableTokens = _stableTokens - amount (#1213)
VetterToken.airdropPrivateTokens() (#1227-1252) has costly operations inside a loop:
- _privateSaleTokens = _privateSaleTokens - amount (#1240)
Use a local variable to hold the loop computation result.
Additional information: link
Address.isContract(address) (#7-20) is never used and should be removed
Remove unused functions.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#91) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#91)
Variable VetterToken._initialTier1 (#214) is too similar to VetterToken._initialTier2 (#215)
Variable VetterToken._initialTier1 (#214) is too similar to VetterToken._initialTier3 (#216)
Variable VetterToken._initialTier1 (#214) is too similar to VetterToken._initialTier4 (#217)
Variable VetterToken._initialTier2 (#215) is too similar to VetterToken._initialTier3 (#216)
Variable VetterToken._initialTier2 (#215) is too similar to VetterToken._initialTier4 (#217)
Variable VetterToken._initialTier3 (#216) is too similar to VetterToken._initialTier4 (#217)
Prevent variables from having similar names.
Additional information: link
VetterToken.slitherConstructorVariables() (#182-1390) uses literals with too many digits:
- presaleAddress = 0x000000000000000000000000000000000000dEaD (#198)
VetterToken.slitherConstructorConstantVariables() (#182-1390) uses literals with too many digits:
- _initialTier2 = 100000 (#215)
VetterToken.slitherConstructorConstantVariables() (#182-1390) uses literals with too many digits:
- _initialTier4 = 500000 (#217)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#161-166)
acceptOwnership() should be declared external:
- Ownable.acceptOwnership() (#168-174)
approve(address,uint256) should be declared external:
- VetterToken.approve(address,uint256) (#360-364)
setVetterReserve(uint256) should be declared external:
- VetterToken.setVetterReserve(uint256) (#540-543)
setAllTaxes(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) should be declared external:
- VetterToken.setAllTaxes(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (#681-707)
setInitialLaunchTaxes(uint256) should be declared external:
- VetterToken.setInitialLaunchTaxes(uint256) (#713-719)
getTotalBuyTax() should be declared external:
- VetterToken.getTotalBuyTax() (#721-724)
getTotalSellTax() should be declared external:
- VetterToken.getTotalSellTax() (#726-729)
getTokenPoolSizes() should be declared external:
- VetterToken.getTokenPoolSizes() (#773-776)
getTaxPoolSizes() should be declared external:
- VetterToken.getTaxPoolSizes() (#786-789)
getSellBnBAmount(uint256) should be declared external:
- VetterToken.getSellBnBAmount(uint256) (#812-822)
_getAllFounders() should be declared external:
- VetterToken._getAllFounders() (#988-996)
_getAllAdmins() should be declared external:
- VetterToken._getAllAdmins() (#1045-1053)
removeVetter(address) should be declared external:
- VetterToken.removeVetter(address) (#1091-1101)
_getAllVetters() should be declared external:
- VetterToken._getAllVetters() (#1126-1134)
_getAllShareholders() should be declared external:
- VetterToken._getAllShareholders() (#1136-1144)
_getAllTiers() should be declared external:
- VetterToken._getAllTiers() (#1268-1277)
getRoyaltyAmount(address) should be declared external:
- VetterToken.getRoyaltyAmount(address) (#1351-1362)
Use the external attribute for functions never called from the contract.
Additional information: link
VetterToken.transferBNBToAddress(address,uint256) (#825-828) has external calls inside a loop: recipient.transfer(amount) (#827)
Favor pull over push strategy for external calls.
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
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
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account