DeXe Audit

CertiKFiles named in the report

CertiK reviewed DeXe Protocol (DeXe Audit) on 4 May 2023: 27 findings, 0 critical; 15 marked fixed, 1 acknowledged, 11 open.

No open critical findings
Open the reportOpen DeXe Protocol’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings27

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High011
Medium000
Low11014
HighCentralization Related RisksAcknowledged

According to the business logic of DeXe project, the privileged roles can be classified into five categories: `DeXe Owner`, `GovPool`, `Trader`, `TraderAdmin`, and `Others`. **The `DeXe Owner` has authority over the following functions**: `CoreProperties.sol`: - `setCoreParameters()` to set the state variable `coreParameters`. - `addWhitelistTokens()` to add the input `tokens` into the whitelist. - `removeWhitelistTokens()` to remove the input `tokens` from the whitelist. - `addBlacklistTokens()` to add the inputs `tokens` into the blacklist. - `removeBlacklistTokens()` to remove the input `tokens` from the blacklist. - `setMaximumPoolInvestors()` to set the maximum number of investors in the TraderPool. - `setMaximumOpenPositions()` to set the maximum number of concurrently opened positions by a trader. - `setTraderLeverageParams()` to set the first and second parameters in the trader's formula. - `setCommissionInitTimestamp()` to set the initial timestamp of the commission rounds. - `setCommissionDurations()` to set the durations of the commission periods in seconds. - `setDEXECommissionPercentages()` to set the protocol's commission percentage, the individual percentages of the commission contracts and the protocol's commission percentage. - `setTraderCommissionPercentages()` to set the minimal and maximal trader's commission that the trader can specify. - `setDelayForRiskyPool()` to set the investment delay after the first exchange in the risky pool in seconds. - `setInsuranceParameters()` to set the insurance parameters. - `setGovVotesLimit()` to set the maximum number of simultaneous votes of the voter. `Insurance.sol`: - `acceptClaim()` is called by the DAO to accept the claim. `UserRegistry.sol`: - `setPrivacyPolicyDocumentHash()` to set the document hash. **The `GovPool` has authority over the following functions**: `ERC20Sale`: - `mint()` to mint a certain `amount` tokens to a specified `account`. - `burn()` to burn a certain `amount` tokens from a specified `account`. - `pause()` to trigger the stopped state of the project. - `unpause()` to return to normal state of the project. `DistributionProposal.sol`: - `execute()` to set the reward token and amount for the proposal associated with `proposalId`. `TokenSaleProposal.sol`: - `createTiers()` to create a new tier. - `addToWhitelist()` to update the whitelist with the whitelisting request parameters. - `offTiers()` to stop the tier. `GovSettings.sol`: - `addSettings()` to add new proposal settings. - `editSettings()` to update the proposal settings. - `changeExecutors()` to change a new executor. `GovUserKeeper.sol`: - `depositTokens()` to deposit a certain amount of tokens for the `receiver`. - `withdrawTokens()` to withdraw a certain amount of tokens from the `payer` account. - `delegateTokens()` to delegate a certain amount of tokens to a `delegatee`. - `undelegateTokens()` to undelegate a certain amount of tokens from a `delegatee`. - `depositNfts()` to deposit NFTs for the `receiver`. - `withdrawNfts()` to withdraw NFTs from the `payer` account. - `delegateNfts()` to delegate NFTs to a `delegatee`. - `undelegateNfts()` to undelegate NFTs from a `delegatee`. - `createNftPowerSnapshot()` to create a new NFT power snapshot. - `updateMaxTokenLockedAmount()` to update the max token locked amount for a `voter`. - `lockTokens()` to lock a certain amount of tokens for a `voter`. - `unlockTokens()` to unlock a certain amount of tokens from a `voter`. - `lockNfts()` to lock the NFT associated with the input `nftIds`. - `unlockNfts()` to unlock the NFT associated with the input `nftIds`. - `updateNftPowers()` to get the latest powers for the input `nftIds`. - `setERC20Address()` to set the state variable `tokenAddress`. - `setERC721Address()` to set the state variable `nftAddress`. `GovValidators.sol`: - `createExternalProposal()` to create an external proposal. - `changeBalances()` to change the balances of `userAddresses` to `newValues`. **The `Trader` has authority over the following functions**: `BasicTraderPool.sol`: - `createProposal()` to create risky proposals (basically subpools) and allow investors to invest into it. `InvestTraderPool.sol`: - `createProposal()` to creates an investment proposal that users will be able to invest in. **The `TraderAdmin` has authority over the following functions**: `TraderPool.sol`: - `modifyAdmins()` to modify trader admins. - `modifyPrivateInvestors()` to modify private investors. - `changePoolParameters()` to change certain parameters of the pool. - `investInitial()` to invest initial positions into the pool. - `reinvestCommission()` that takes the commission from the users' income. - `exchange()` to exchange tokens for tokens. `TraderPoolInvestProposal.sol`: - `changeProposalRestrictions()` to change the restriction of proposal at `proposalId`. - `withdraw()` to withdraw the invested funds to the trader's account. - `supply()` to supply reward to the investors. - `convertInvestedBase

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (53)

  • contracts/core/CoreProperties.sol
  • contracts/libs/trader-pool/TraderPoolInvest.sol
  • contracts/libs/price-feed/UniswapV2PathFinder.sol
  • contracts/trader/InvestTraderPool.sol
  • contracts/libs/gov-pool/GovPoolCommission.sol
  • contracts/core/ContractsRegistry.sol
  • contracts/factory/PoolFactory.sol
  • contracts/core/Globals.sol
  • contracts/libs/trader-pool/TraderPoolPrice.sol
  • contracts/libs/trader-pool/TraderPoolView.sol
  • contracts/libs/trader-pool-proposal/TraderPoolRiskyProposalView.sol
  • contracts/libs/trader-pool/TraderPoolDivest.sol
  • contracts/libs/gov-user-keeper/GovUserKeeperLocal.sol
  • contracts/libs/factory/GovTokenSaleDeployer.sol
  • contracts/libs/trader-pool/TraderPoolModify.sol
  • contracts/libs/gov-pool/GovPoolView.sol
  • contracts/gov/validators/GovValidatorsToken.sol
  • contracts/libs/gov-pool/GovPoolExecute.sol
  • contracts/libs/gov-pool/GovPoolRewards.sol
  • contracts/gov/ERC20/ERC20Sale.sol
  • contracts/libs/trader-pool-proposal/TraderPoolInvestProposalView.sol
  • contracts/gov/user-keeper/GovUserKeeper.sol
  • contracts/libs/gov-pool/GovPoolVote.sol
  • contracts/libs/utils/TokenBalance.sol
  • contracts/libs/gov-pool/GovPoolUnlock.sol
  • contracts/libs/trader-pool/TraderPoolExchange.sol
  • contracts/user/UserRegistry.sol
  • contracts/libs/gov-pool/GovPoolOffchain.sol
  • contracts/gov/proposals/TokenSaleProposal.sol
  • contracts/gov/validators/GovValidators.sol
  • contracts/libs/trader-pool/TraderPoolCommission.sol
  • contracts/libs/gov-user-keeper/GovUserKeeperView.sol
  • contracts/factory/PoolRegistry.sol
  • contracts/libs/trader-pool/TraderPoolLeverage.sol
  • contracts/libs/gov-pool/GovPoolStaking.sol
  • contracts/libs/data-structures/ShrinkableArray.sol
  • contracts/libs/math/MathHelper.sol
  • contracts/trader/TraderPoolRiskyProposal.sol
  • contracts/gov/ERC721/ERC721Power.sol
  • contracts/gov/ERC721/ERC721Multiplier.sol
  • contracts/core/PriceFeed.sol
  • contracts/trader/TraderPoolInvestProposal.sol
  • contracts/trader/BasicTraderPool.sol
  • contracts/libs/gov-pool/GovPoolCreate.sol
  • contracts/insurance/Insurance.sol
  • contracts/gov/settings/GovSettings.sol
  • contracts/gov/GovPool.sol
  • contracts/gov/proposals/DistributionProposal.sol
  • contracts/libs/utils/AddressSetHelper.sol
  • contracts/libs/utils/DataHelper.sol
  • contracts/libs/price-feed/PriceFeedLocal.sol
  • contracts/trader/TraderPool.sol
  • contracts/trader/TraderPoolProposal.sol

Part of DeXe Protocol’s security record

DeXe Protocol
Audits3 audits by 2 firmsLast audit Jun 2023, by Hacken.
Critical findings2 open critical findingsReported in “DeXe / DEX” by Hacken, Jun 2023. Not marked fixed in that report.
Open DeXe Protocol’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us