CertiK reviewed DeXe Protocol (DeXe Audit) on 4 May 2023: 27 findings, 0 critical; 15 marked fixed, 1 acknowledged, 11 open.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 1 | 1 |
| Medium | 0 | 0 | 0 |
| Low | 11 | 0 | 14 |
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
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (53)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething 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