Efficient trading through auto balancing non-custodial crypto funds.

In this document you can get familiar with dexETF, get all the necessary guides for ease of use, get acquainted with the technical implementation of the project and get information about partnerships.

Overview of dexETF

dexETF enables efficient trading by auto-balancing funds on every mint or burn. Make the most of your held assets by letting others “buy the dip” for you and maximize gains from continually “selling the top”.

When purchasing an ETF you are getting exposure to a wide range of crypto with less downside risk of holding a single token. And the auto-balancing creates forced appreciation so that you’re tokens inside the ETF are work more than they would if u held the same tokens outside of the ETF.



Diversification is a strategy that involves spreading your investments across different types of assets. Instead of buying only crypto or gold (for example), you allocate certain percentages to certain assets within your overall portfolio. By taking this approach, you limit risk and reduce volatility, thereby making your portfolio more stable. If you hedge your bets and invest heavily but the price plummets, then your portfolio will plummet along with it. In simple terms, diversifying your portfolio ensures that you don’t lose everything at once if one type of investment goes down in value.

Diversifying your crypto portfolio involves spreading your investment across multiple coins, tokens, or projects. Investing in a single cryptocurrency can be risky, too, even if you decide to invest in the best cryptocurrencies such as Bitcoin and Ethereum. Both have experienced significant price swings over the past year and will likely continue to experience similar movements in the future.

For example, Bitcoin’s price grew substantially in early 2021 when Coinbase went public, with speculations about BTC’s imminent institutional adoption growing as well. A few months later, though, that positive outlook abruptly changed following growing attention to Bitcoin’s energy use and subsequent carbon impact, with critics pointing out that it is far from being one of the most energy efficient cryptocurrencies.

By putting all of your (crypto) eggs in one basket, you risk losing the value of your entire portfolio due to a one-off event such as a market crash, crypto winter, or even something as mundane as an unforeseen crypto malware attack. If you spread your investments across different coins and tokens, you will be less exposed to the consequences of a negative news event or market downturn, enabling you to weather the storm and continue to grow your portfolio.

Using dexETF

Exchange-traded funds, or ETFs, are similar to mutual funds in that they invest in a basket of tokens. But unlike mutual funds and like stocks, ETFs can trade at any time.

The way ETFs work is that the fund buys a range of assets into its portfolio, according to a stated strategy. The ETF then issues its own tokens, which can be freely bought and sold on the exchange. Within a single ETF, there can be hundreds of tokens from different use domains or it can be tied to one specific one.

By combining the diversification benefits inherent in mutual funds with the ease of trading, ETFs provide investors with an easy way to allocate their funds securely.

You can view all the active funds by clicking on this LINK!!! Switch to another chain to browse through all our funds and choose the one that best suits your needs.

The token icons in the preview mean which tokens your assets will be allocated to.

TVL (Total Value Locked) shows how much money has already been invested in a given fund. In order to see the detailed information, you have to open the fund by clicking on the button in the preview.

The allocation percentages indicate how much of your investments will be held in this asset. The current interest and the general fund’s interest (shown in brackets) may differ slightly. This is done due to changes in market prices and the need to stabilise the funds already invested.

All you need to do next is buy the tokens of the fund you like and keep them in your wallet. As soon as you need your funds, you can burn the tokens issued to you at any time and get the funds both in the tokens you want from the list above or get the tokens your investment was allocated to.

dexETF Tokens

An ETF token is a token whose value is formed from the price of the assets within it. This token serves to diversify funds and is already divided into a list of coins.

The price of this token will change depending on the price of the assets within it. You can see which fund tokens are inside your ETF. To do so, you will need to expand the fund and look at the list.

In order to sell ETF tokens you need to open a fund for that token and follow the guide below. You can receive funds in native tokens of the chain or in equal shares of the tokens it consisted of.


Connect wallet

Follow the guide carefully and safely to back up your recovery phrases. The navigation bar is on the top right corner of the page, where the “Connect Wallet” button is located. Once you click it, choose which wallet you want. Check the guide below to connect MetaMask or WalletConnect with our app.


  1. Click the [Connect Wallet] button on the top right corner of DexETF App. You’ll now see a pop-up presenting different options for connecting your wallet. Click Metamask to move forward.
  2. Approve the connection on your Metamask wallet pop-up. You should be automatically connected to the BNB Chain as default.
  3. If you haven’t connected to the BNB Chain, go to
  4. Search for BSC Mainnet and click [Add to Metamask]. You should be able to connect to the BNB Chain and start using Wombat now!
Never share your private key or seed phrases with anyone under any circumstances.

ETF Transactions


Before you start a mint, make sure you have the funds to pay Gas in tokens for the selected chain!

1. Select the desired chain at the top of the screen. The drop-down list is next to the My wallet button.

2. Select the fund you are interested in and open it by clicking on the View fund button. The icons on the preview of the fund show which tokens it is made up of. A detailed description will be available when the fund is opened.

3. Select the asset with which you want to buy the tokens of this fund.

4. Approve access to the given asset.

5. Enter the investment amount.

6. Click the Mint button.

7. Confirm the action in your wallet.


Technical Overview

The structure of an ETF is determined by its configuration, which includes a list of tokens with specified distribution weights, commission values, and parameters.

This data is set when the ETF is created, but can be further modified and configured using external update methods.

The base token (base) plays a key role in the ETF architecture. It is also set during configuration, and in the future, all algorithmic calculations inside the ETF are made in base.

Due to the continuous change in the market rates of tokens and actions performed within the ETF, a situation often arises in which the distribution of tokens differs from those specified in the configuration. The rebalance() function is used to bring the percentage distribution of tokens to the target values.

The need for rebalancing is determined using the needForRebalance() function, which uses a custom parameter maxDeviationPercent, which is responsible for the size of the allowable deviation.

Implementation Details

Contracts Interaction Architecture

Main Contracts Functions

ETF (DexFiETF.sol)

The function join(uint256 amountIn, uint256 mintAmountOut) accepts the amount of the base token (used to enter the ETF) amountIn, the minimum amount of the ETF token (obtained after mint) mintAmountOut. The volume of the ETF token (received after mint) mintAmount is returned.

The function exit(uint256 amountIn, uint256 minAmountOut) takes the amount of the ETF token (used to exit the ETF) amountIn, the minimum amount of the base token (obtained after burn) minAmountOut. Returns the volume of the base token (received after burn) amountOut.

The function exitMulti(uint256 amountIn) – accepts the amount of the ETF token (used to exit the ETF). Returns an array of volumes of tokens (contained in the ETF) received after burn – amountsOut.

Each function that performs operations with the tokens contained in the configuration uses the rebalance() method.

Thus, interaction with ETF leads to automatic rebalancing and maintenance of targets (regardless of the market situation).

Zapper (DexFiETFZapper.sol)

This contract acts as a user’s interface for easy interaction with the ETF contract.

The function join(address etf, address[] path, uint256 minAmountOut) accepts the amount of the chain’s native token (used to enter the ETF), as arguments – the ETF’s address (with which it is expected to interact) etf, the path of the tokens to convert to the base – path, the minimum amount of the ETF token (obtained after mint) amountOut. The volume of the ETF token (received after mint) amountOut is returned.

The function joinMulti(address etf, Source[] memory sources, uint256 minAmountOut) accepts as arguments – the ETF’s address (with which it is expected to interact) etf, an array of the Source struct (corresponding to the tokens selected for join), including the amount of token and the path of the tokens to convert to the base, – sources, the minimum amount of the ETF token (obtained after mint) amountOut. The volume of the ETF token (received after mint) amountOut is returned.

The function exit(address etf, uint256 amountIn, address[] memory path, uint256 minAmountOut) — accepts as arguments – the ETF’s address (with which it is expected to interact) etf, the amount of the ETF token (used to exit the ETF) amountIn, path to convert from base in the token selected for the exit — path, the minimum amount of the token selected for the exit (received after burn) amountOut. Returns the volume of the selected token (received after burn) amountOut.