How It Works

Creating & Redeeming Shares In a Staking dETF Explained

Create Shares

Step 1:

User Takes Base Denom (USDC) -> And Creates Shares in VAL dETF in the Base Denom. User is issued etf/val dETF token proportional to USDC in and the current price of the dETF. This dETF token represents the ownership of the tokens in the fund.

Step 2:

DeFund IBC transfers each asset to the broker chain in the ecosystem each native token lives on. If it is an EVM chain, we use Axelar and controller contracts that are wrapped with the Axelar GMP contracts. If it is IBC, it's native (aka goes to IBC DEX).

Step 3:

On the success of the transfer, we send an ICA swap, which swaps the token into the token needed.

Step 4:

On the success of the swap, if the asset is not on its native chain, we then send another IBC transfer to the native chain the token lives on.

Step 5:

On the success of the transfer to the native chain, we send an interchain accounts delegate message that takes the assets and stakes them on the remote chain(s) with the validator address specified on creation. In the case of unsuccessful transfers, we just keep retrying (we may add a timeout to this in a future version).

Step 6:

To keep the token rebalanced the best we can since assets are locked for 21 days, on each create, we proportionally send the base denom tokens (USDC) for each create based on the rebalancing needs of the underlying.

Redeem Shares

Step 1:

User takes etf/val tokens and submit them for redemption. The user must submit a list of each redeem address for each chain that the dETF supports

Step 2:

DeFund sends an undelegate message to each chain. This will on average take 21 days to undelegate like it normally would if you were to stake without a dETF.

Step 3:

When DeFund learns that each message was successfully sent, we wait until all assets are unstaked, keeping track of this on-chain. If the undelegate message is unsuccessful we try again.

Step 4:

At each block, DeFund checks to ensure that the undelegated funds are undelegated by checking the unstaked timestamp + a buffer. When the unstaked timestamp + buffer passes. We send the assets to the redeem address in the list of redeem addresses and now you are redeemed.

Last updated