Explaining tDOT

Shengda Ding
4 min readAug 30, 2022

--

tl.dr. tDOT is a synthetic DOT asset that unifies DOT liquidity on Polkadot.

Overview

DOT serves several critical functions in the Polkadot network: governance, staking and bonding. They promote DOT’s demand but segregate DOT’s liquidity across parachains and applications. For example,

  • Acala LDOT and Moonbeam stDOT are both staked DOT derivatives;
  • Acala LCDOT and Parallel cDOT are both bonded DOT derivatives for parachain auctions.

Different forms of DOT across the Polkadot network cause the liquidity fragmentation issues:

  • Each DOT derivative needs to bootstrap their own liquidity and solve pricing issues;
  • Polkadot application builders need to support multiple forms of DOT

tDOT aims at solving this issues by generating unified DOT liquidity across the Polkadot network.

Architecture

tDOT is a DOT-pegged derivative built on top of the stable asset protocol. Stable asset is a synthetic asset protocol based on Curve’s stable swap algorithm. It utilizes traders to capture value change of the underlying assets while maintaining a constant pool value, thus generating a synthetic asset with a stronger peg.

There are two kinds of pegged synthetic assets in the tDOT architecture, as show above:

  • Local LP(green), which is generated by individual stable asset pool and managed by the stable asset pallet;
  • Aggregate LP(orange), which is generated by local LPs and managed by the stable asset XCM pallet.

For tDOT, each stable asset pool is a pair of DOT-xDOT where xDOT represents individual DOT derivatives such as LDOT and LCDOT. Each stable asset pool has its own governable parameters which determine the acceptable price discount for individual DOT derivative.

The stable asset pallets are deployed on parachains where xDOT is native. For example, the DOT-LDOT pool is deployed on Acala and the generated DOT-LDOT local LP is Acala-native. The stable asset XCM pallet, on the other hand, is deployed on the parachain where tDOT is native.

Minting tDOT

tDOT minting is triggered on the stable asset pallet. Users can use DOT or xDOT to mint tDOT on the parachain where xDOT is native.

When local LP and aggregate LP are on the same parachain, minting tDOT is a single extrinsic which reverts if minting fails.

When local LP and aggregate LP are on different parachains, minting tDOT becomes a two-step process:

  • DOT and/or xDOT is firstly minted to local LP, which is then used to mint aggregate LP(tDOT) via XCM;
  • If minting succeeds, tDOT is minted to user on the host chain where aggregate LP(tDOT) is native;
  • If minting fails(e.g. exceeding mint limit for this local LP), local LP is returned to user on the guest chain where local LP is native. Users can keep local LP to earn trading fees or mint aggregate LP later.

Redeeming tDOT

tDOT can be redeemed to DOT or xDOT on where xDOT is native. It must be triggered on the stable asset XCM pallet, so tDOT redeeming must be done on the parachain where tDOT is native.

If xDOT is on the same chain as tDOT, redeeming tDOT is a single extrinsic which reverts if redeeming fails.

If xDOT is on a different parachain as tDOT, redeeming tDOT is a two-step process:

  • tDOT is first redeemed to local LP and then redeemed to DOT and/or xDOT;
  • If the second redeeming fails, local LP is returned to the users. Users can keep local LP to earn trading fees or mint aggregator LP later.

Cross-Chain Swap

Even though not explicitly implemented on pallets, tDOT can be used as cross-chain swap between DOT derivatives. For example, assuming DOT-aDOT and DOT-bDOT are both local LP for tDOT. Swapping aDOT to bDOT can be done via XCM call with DOT as the medium.

Summary

tDOT is a natural choice for the Polkadot and its parachains:

  • tDOT provides stable swap between DOT and xDOT on their native chains. The swap liquidity is locked in their native chains while minting tDOT so parachains can retain their TVL;
  • tDOT unifies DOT liquidity across different DOT use scenario. It enhances capital efficiency of DOT and generates a single DOT derivative for Polkadot applications.

--

--