USDEX Token Logo

USDEX Token

About USDEX

Listings

Token 2 years
CoinGecko 2 years
CoinMarketCap 2 years
[CoinGecko] alert: The smart-contract owner can mint new tokens, please proceed with caution.
white paper

USDEX is an algorithmic stable coin with a built-in stability mechanism that aims to maintain USDEX’s peg to 1 USDC token. As part of a multi-token token system it is designed to be used as a medium of exchange within the Dex Money Market protocol.

Dex Money Market is an algorithmic reserve protocol with multi step auto-compounded strategies and ETF rewards. Our protocol offers a single regulatory mechanism and protocol owned liquidity. The Money Market consists of three corresponding tokens – USDEX, dexSHARES and dexETF.

Inspired by precursive projects before us (Tomb Finance, Olympus DAO, Balancer, Beefy Finance) we have developed a truly unique multi-token protocol that empowers users by simplifying the advanced trading strategies employed by experienced investors and promotes growth through a low-risk algorithmic trading model.

Laser Scorebeta Last Audit: 25 May 2022

report
Token is either risky or in presale. For presale 30+ is a fine score.

OpsReady._transfer(uint256,address) (contracts/1.USDEX.sol#440-447) sends eth to arbitrary user
Dangerous calls:
- (success) = gelato.call{value: _amount}() (contracts/1.USDEX.sol#442)
Ensure that an arbitrary user cannot withdraw unauthorized funds.

Additional information: link

USDEX.governanceRecoverUnsupported(IERC20,uint256,address) (contracts/1.USDEX.sol#683-689) ignores return value by _token.transfer(_to,_amount) (contracts/1.USDEX.sol#688)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.

Additional information: link

USDEX.setTaxTiersTwap(uint8,uint256) (contracts/1.USDEX.sol#526-537) contains a tautology or contradiction:
- require(bool,string)(_index >= 0,Index has to be higher than 0) (contracts/1.USDEX.sol#527)
USDEX.setTaxTiersRate(uint8,uint256) (contracts/1.USDEX.sol#539-544) contains a tautology or contradiction:
- require(bool,string)(_index >= 0,Index has to be higher than 0) (contracts/1.USDEX.sol#540)
USDEX._updateTaxRate(uint256) (contracts/1.USDEX.sol#558-568) contains a tautology or contradiction:
- tierId >= 0 (contracts/1.USDEX.sol#560)
Fix the incorrect comparison by changing the value type or the comparison.

Additional information: link


Combination 2: Unchecked transfer + 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.


Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains


Contract ownership is not renounced (belongs to a wallet)

USDEX._getTokenPrice()._price (contracts/1.USDEX.sol#551) 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

USDEX._getTokenPrice() (contracts/1.USDEX.sol#550-556) ignores return value by IOracle(dexOracle).consult(address(this),1e18) (contracts/1.USDEX.sol#551-555)
Ensure that all the return values of the function calls are used.

Additional information: link

USDEX.setBurnThreshold(uint256) (contracts/1.USDEX.sol#546-548) should emit an event for:
- burnThreshold = _burnThreshold (contracts/1.USDEX.sol#547)
USDEX.setTaxRate(uint256) (contracts/1.USDEX.sol#594-598) should emit an event for:
- taxRate = _taxRate (contracts/1.USDEX.sol#597)
Emit an event for critical parameter changes.

Additional information: link

OpsReady.constructor(address)._ops (contracts/1.USDEX.sol#436) lacks a zero-check on :
- ops = _ops (contracts/1.USDEX.sol#437)
- gelato = IOps(_ops).gelato() (contracts/1.USDEX.sol#438)
Check that the address is not zero.

Additional information: link

Variable 'USDEX._getTokenPrice()._price (contracts/1.USDEX.sol#551)' in USDEX._getTokenPrice() (contracts/1.USDEX.sol#550-556) potentially used before declaration: uint256(_price) (contracts/1.USDEX.sol#552)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.

Additional information: link

Address.isContract(address) (contracts/1.USDEX.sol#359-364) uses assembly
- INLINE ASM (contracts/1.USDEX.sol#362)
Address._verifyCallResult(bool,bytes,string) (contracts/1.USDEX.sol#405-419) uses assembly
- INLINE ASM (contracts/1.USDEX.sol#411-414)
Do not use evm assembly.

Additional information: link

Address._verifyCallResult(bool,bytes,string) (contracts/1.USDEX.sol#405-419) is never used and should be removed
Address.functionCall(address,bytes) (contracts/1.USDEX.sol#371-373) is never used and should be removed
Address.functionCall(address,bytes,string) (contracts/1.USDEX.sol#374-376) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (contracts/1.USDEX.sol#377-379) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (contracts/1.USDEX.sol#380-386) is never used and should be removed
Address.functionDelegateCall(address,bytes) (contracts/1.USDEX.sol#396-398) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (contracts/1.USDEX.sol#399-404) is never used and should be removed
Address.functionStaticCall(address,bytes) (contracts/1.USDEX.sol#387-389) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (contracts/1.USDEX.sol#390-395) is never used and should be removed
Address.isContract(address) (contracts/1.USDEX.sol#359-364) is never used and should be removed
Address.sendValue(address,uint256) (contracts/1.USDEX.sol#365-370) is never used and should be removed
Context._msgData() (contracts/1.USDEX.sol#27-30) is never used and should be removed
ERC20._setupDecimals(uint8) (contracts/1.USDEX.sol#242-244) is never used and should be removed
Math.average(uint256,uint256) (contracts/1.USDEX.sol#41-43) is never used and should be removed
Math.max(uint256,uint256) (contracts/1.USDEX.sol#35-37) is never used and should be removed
Math.min(uint256,uint256) (contracts/1.USDEX.sol#38-40) is never used and should be removed
OpsReady._transfer(uint256,address) (contracts/1.USDEX.sol#440-447) is never used and should be removed
SafeERC20._callOptionalReturn(IERC20,bytes) (contracts/1.USDEX.sol#273-279) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (contracts/1.USDEX.sol#258-264) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (contracts/1.USDEX.sol#269-272) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (contracts/1.USDEX.sol#265-268) is never used and should be removed
SafeERC20.safeTransfer(IERC20,address,uint256) (contracts/1.USDEX.sol#252-254) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (contracts/1.USDEX.sol#255-257) is never used and should be removed
SafeMath.div(uint256,uint256,string) (contracts/1.USDEX.sol#98-101) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/1.USDEX.sol#90-93) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/1.USDEX.sol#102-105) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (contracts/1.USDEX.sol#48-52) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (contracts/1.USDEX.sol#63-66) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (contracts/1.USDEX.sol#67-70) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (contracts/1.USDEX.sol#57-62) is never used and should be removed
SafeMath.trySub(uint256,uint256) (contracts/1.USDEX.sol#53-56) is never used and should be removed
SafeMath8.add(uint8,uint8) (contracts/1.USDEX.sol#110-114) is never used and should be removed
SafeMath8.div(uint8,uint8) (contracts/1.USDEX.sol#132-134) is never used and should be removed
SafeMath8.div(uint8,uint8,string) (contracts/1.USDEX.sol#135-139) is never used and should be removed
SafeMath8.mod(uint8,uint8) (contracts/1.USDEX.sol#140-142) is never used and should be removed
SafeMath8.mod(uint8,uint8,string) (contracts/1.USDEX.sol#143-146) is never used and should be removed
SafeMath8.mul(uint8,uint8) (contracts/1.USDEX.sol#124-131) is never used and should be removed
Remove unused functions.

Additional information: link

Low level call in Address.sendValue(address,uint256) (contracts/1.USDEX.sol#365-370):
- (success) = recipient.call{value: amount}() (contracts/1.USDEX.sol#368)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/1.USDEX.sol#380-386):
- (success,returndata) = target.call{value: value}(data) (contracts/1.USDEX.sol#384)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/1.USDEX.sol#390-395):
- (success,returndata) = target.staticcall(data) (contracts/1.USDEX.sol#393)
Low level call in Address.functionDelegateCall(address,bytes,string) (contracts/1.USDEX.sol#399-404):
- (success,returndata) = target.delegatecall(data) (contracts/1.USDEX.sol#402)
Low level call in OpsReady._transfer(uint256,address) (contracts/1.USDEX.sol#440-447):
- (success) = gelato.call{value: _amount}() (contracts/1.USDEX.sol#442)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence

Additional information: link

Parameter USDEX.isAddressExcluded(address)._address (contracts/1.USDEX.sol#522) is not in mixedCase
Parameter USDEX.setTaxTiersTwap(uint8,uint256)._index (contracts/1.USDEX.sol#526) is not in mixedCase
Parameter USDEX.setTaxTiersTwap(uint8,uint256)._value (contracts/1.USDEX.sol#526) is not in mixedCase
Parameter USDEX.setTaxTiersRate(uint8,uint256)._index (contracts/1.USDEX.sol#539) is not in mixedCase
Parameter USDEX.setTaxTiersRate(uint8,uint256)._value (contracts/1.USDEX.sol#539) is not in mixedCase
Parameter USDEX.setBurnThreshold(uint256)._burnThreshold (contracts/1.USDEX.sol#546) is not in mixedCase
Parameter USDEX.setTokenOracle(address)._dexOracle (contracts/1.USDEX.sol#578) is not in mixedCase
Parameter USDEX.setTaxOffice(address)._taxOffice (contracts/1.USDEX.sol#583) is not in mixedCase
Parameter USDEX.setTaxCollectorAddress(address)._taxCollectorAddress (contracts/1.USDEX.sol#589) is not in mixedCase
Parameter USDEX.setTaxRate(uint256)._taxRate (contracts/1.USDEX.sol#594) is not in mixedCase
Parameter USDEX.excludeAddress(address)._address (contracts/1.USDEX.sol#600) is not in mixedCase
Parameter USDEX.includeAddress(address)._address (contracts/1.USDEX.sol#606) is not in mixedCase
Parameter USDEX.distributeReward(address,address,address)._genesisPool (contracts/1.USDEX.sol#669) is not in mixedCase
Parameter USDEX.distributeReward(address,address,address)._dexPool (contracts/1.USDEX.sol#670) is not in mixedCase
Parameter USDEX.distributeReward(address,address,address)._airdropWallet (contracts/1.USDEX.sol#671) is not in mixedCase
Parameter USDEX.governanceRecoverUnsupported(IERC20,uint256,address)._token (contracts/1.USDEX.sol#684) is not in mixedCase
Parameter USDEX.governanceRecoverUnsupported(IERC20,uint256,address)._amount (contracts/1.USDEX.sol#685) is not in mixedCase
Parameter USDEX.governanceRecoverUnsupported(IERC20,uint256,address)._to (contracts/1.USDEX.sol#686) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

Redundant expression "this (contracts/1.USDEX.sol#28)" inContext (contracts/1.USDEX.sol#23-31)
Remove redundant statements if they congest code but offer no value.

Additional information: link

name() should be declared external:
- ERC20.name() (contracts/1.USDEX.sol#175-177)
symbol() should be declared external:
- ERC20.symbol() (contracts/1.USDEX.sol#178-180)
decimals() should be declared external:
- ERC20.decimals() (contracts/1.USDEX.sol#181-183)
totalSupply() should be declared external:
- ERC20.totalSupply() (contracts/1.USDEX.sol#184-186)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (contracts/1.USDEX.sol#190-193)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/1.USDEX.sol#197-200)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (contracts/1.USDEX.sol#201-205)
- USDEX.transferFrom(address,address,uint256) (contracts/1.USDEX.sol#627-648)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/1.USDEX.sol#206-209)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/1.USDEX.sol#210-213)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (contracts/1.USDEX.sol#311-314)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (contracts/1.USDEX.sol#315-319)
operator() should be declared external:
- Operator.operator() (contracts/1.USDEX.sol#330-332)
transferOperator(address) should be declared external:
- Operator.transferOperator(address) (contracts/1.USDEX.sol#340-342)
isAddressExcluded(address) should be declared external:
- USDEX.isAddressExcluded(address) (contracts/1.USDEX.sol#522-524)
setTaxTiersTwap(uint8,uint256) should be declared external:
- USDEX.setTaxTiersTwap(uint8,uint256) (contracts/1.USDEX.sol#526-537)
setTaxTiersRate(uint8,uint256) should be declared external:
- USDEX.setTaxTiersRate(uint8,uint256) (contracts/1.USDEX.sol#539-544)
setBurnThreshold(uint256) should be declared external:
- USDEX.setBurnThreshold(uint256) (contracts/1.USDEX.sol#546-548)
enableAutoCalculateTax() should be declared external:
- USDEX.enableAutoCalculateTax() (contracts/1.USDEX.sol#570-572)
disableAutoCalculateTax() should be declared external:
- USDEX.disableAutoCalculateTax() (contracts/1.USDEX.sol#574-576)
setTokenOracle(address) should be declared external:
- USDEX.setTokenOracle(address) (contracts/1.USDEX.sol#578-581)
setTaxOffice(address) should be declared external:
- USDEX.setTaxOffice(address) (contracts/1.USDEX.sol#583-587)
setTaxCollectorAddress(address) should be declared external:
- USDEX.setTaxCollectorAddress(address) (contracts/1.USDEX.sol#589-592)
setTaxRate(uint256) should be declared external:
- USDEX.setTaxRate(uint256) (contracts/1.USDEX.sol#594-598)
includeAddress(address) should be declared external:
- USDEX.includeAddress(address) (contracts/1.USDEX.sol#606-610)
mint(address,uint256) should be declared external:
- USDEX.mint(address,uint256) (contracts/1.USDEX.sol#612-617)
Use the external attribute for functions never called from the contract.

Additional information: link

Holders:


Number of Binance Smart Chain (BSC) token holders is low.


Token is deployed only at one blockchain

No disclosed threats


BscScan page for the token does not contain additional info: website, socials, description, etc.

Additional information: link


Unable to verify token contract address on the website


Unable to find whitepaper link on the website


Token is not listed at Mobula.Finance

Additional information: link


Unable to find token on CoinHunt

Additional information: link


Young tokens have high risks of scam / price dump / death


Young tokens have high risks of scam / price dump / death


Young tokens have high risks of scam / price dump / death


Token has no active CoinGecko listing / rank


Young tokens have high risks of price dump / death

Price for USDEX

News for USDEX