Add DFX_TVL_KPI as supported price Identifier

Headers

| UMIP # Leave blank - an UMIP no will be assigned at proposal stage

| ------------------- | ------------------------------------------------------------- |
| UMIP Title | Add DFX_TVL_KPI as supported price Identifier|
| Authors | Adrian Li adrian@dfx.finance, Michael Bogan (michael.bogan@gmail.com) |
| Status | Draft |
| Created | 5/31/2021 |
| Discourse Link | Insert link to discourse topic after it has been moved into draft UMIPs_ |

Summary

The DVM should support requests for the TVL of DFX Finance where:

  • TVL can be defined as the dollar value of the sum of the Total Value Locked of all pools in the DFX Finance exchange.

Motivation

Adding this identifier will allow the creation of KPI Options that can incentivize market forces to improve DFX Finance TVL and market penetration. It will allow DFX to share their value with their community members.

Total Value Locked(TVL) is a frequently quoted key performance indicator that has a level of prominence in key Defi dashboards as an indicator of protocol health.

Note: It is anticipated that this Price Identifier will be used to create KPI Options, however it is acknowledged that it may be used for a variety of purposes.

Data Specifications

There are currently three pools on the DFX Finance exchange - USDC/XSGD, USDC/EURS, and USDC/CADC. More pools are expected in the near future. The DFX_TVL_KPI identifier will be the sum if all pools in the DFX exchange.

The data necessary to calculate the DFX TVL can be found from two sources:


  • Price identifier name: DFX TVL
  • Sources: - Defipulse (link TBD)
  • Cost to use: Free
  • Real-time data update frequency: Frequency - tbd
  • Historical data update frequency: Frequency - tbd

  • Price identifier name: DFX TVL
  • Sources: - Subgraph (link TBD)
  • Cost to use: Free
  • Real-time data update frequency: Frequency - tbd
  • Historical data update frequency: Frequency - tbd

As there is no requirement for ongoing monitoring through liquidation or dispute bots, a price feed is not required.

Technical Specifications


  • Price identifier name: DFX_TVL_KPI
  • Base Currency: DFX_TVL
  • Quote currency: USDC
  • Intended Collateral Currency DFX
    Does the value of this collateral currency match the standalone value of the listed quote currency? No, this is a design feature.
    Is your collateral currency already approved to be used by UMA financial contracts? Yes. DFX was approved as a collateral currency in UMIP 104
    Collateral Decimals 18
  • Rounding: Round to nearest 2 decimal places (third decimal place digit >= 5 rounds up and < 5 rounds down)

Rationale

  • Acceptance of this proposal can help improve the UMA Protocol by increasing the marketing reach and usage of KPI options on the UMA protocol. This will in turn increase the overall UMA TVL. This proposal could also lead to collaborative benefits between the UMA and DFX Finance communities.
  • This synthetic is designed as an incentivization mechanism to leverage the DFX community, our partners and the wider Defi userbase to grow our protocol as measured by our identified Key Performance Indicator of Total Value Locked.
  • This price identifier offers a guarantee that these options will be of value, even if this key metric is poor through the floor price mechanism, however the nature of DFX is such that the amount of value that can be locked in the protocol is potentially limitless and consequently a ceiling price is required to limit provide a cap.

Implementation

(details TBD)

  1. Query TVL Value as sum of all DFX pools from DefiPulse or Subgraph at a specific timestamp
  2. Round the sum to the nearest 2 decimal places in dollars

It should be noted that this identifier is potentially prone to attempted manipulation because of its reliance on few pricing sources. As always, voters should ensure that their results do not differ from broad market consensus. This is meant to be vague as the tokenholders are responsible for defining broad market consensus.

Security Considerations

Adding these new identifiers by themselves pose little security risk to the DVM or priceless financial contract users.

  1. Where could manipulation occur? There are negligible opportunities for manipulation.

  2. How could this price ID be exploited?

  • It is possible that as expiry approaches, a user may be able to purchase a large number of DFX_TVL_KPI on the open market, should the TVL be significantly below the level required to achieve the ceiling level, then add large amounts of collateral to a DFX pool slightly before expiry to temporarily drive up the TVL, redeem the synthetic tokens, then withdraw the collateral immediately afterwards.
  • It is possible that a user may purchase DFX_TVL_KPI at a low price, lock substantial amounts of collateral in DFX pools causing the DFX_TVL_KPI price to rise, then sell the these tokens at a profit and immediately withdraw the collateral from the contracts.
  • It is possible that as expiry approaches a user may purchase a large number DFX_TVL_KPI at a low price near expiry on the open market should the TVL be significantly below the level required to achieve the ceiling value per option, then deposit substantial amounts of collateral in DFX pools with the intention of temporarily driving up the returns from the options, then immediately withdraw the collateral after expiry, causing an artificial spike in the TVL. Technical solutions were explored however it was considered that given the variety of potential manipulation and that whatever constraints put in place to mitigate this could be gamed, the DVM was a superior method of addressing any such attempts. In the event of such a manipulation attempt, and a dispute being raised, voters should come to consensus on what a true measure of the TVL locked in the protocol would have been by excluding the collateral used in the manipulation attempt.
  1. Do the instructions for determining the price provide people with enough certainty? Yes

Off to a great start!

So far you have indicated that you plan to use 2 different sources to determine TVL, with details TBD. If you would like both sources to be used, the implementation section should specify to use both (current language suggests they can do either/or). And if they do use both, let them know how to incorporate both numbers (such as averaging the two). The good news is that you’ve set up the framework for the most difficult part.

The next piece to consider is what you want the KPI option to do with that data. Some things to consider:

  • What is your TVL goal?
  • How long would you like for this KPI option to last? Another way to think of it is, how long would you like to give the community to reach this goal?
  • When the KPI option expires, would you like to measure success on a scale or with a pass/fail standard?

If it would be beneficial for you, I’d be happy to set up a time for a call to chat more in depth about those details. Otherwise, if you would prefer you can always reach me here or in the UMA Discord. Nice work so far!

1 Like