Discover more from Public Keys
Permissionless Cryptocurrency Proxy Pricing
The Republic Crypto Economics team ponders native token price discovery for infrastructure projects—and proposes a new model to capitalize on their fundamental value.
If you prefer LaTeX formatting, read the full article as LaTeX PDF here.
Post-listing token price is a noisy signal that does not always correlate with the fundamental value of the protocol as a product1. The protocol may face several difficulties if its native token is significantly undervalued:
Key investors may lose their confidence in the protocol if the token price drops below the last funding round valuation, even if the protocol doesn’t have any noticeable product issues.
The protocol may be using its native token to attract and incentivize key stakeholders (validators, liquidity providers). It becomes more difficult if the token is undervalued and the rewards are worth less.
A token that experienced a dramatic price fall after listing has to regain the community trust to climb back up. This creates additional pressure, different from creating a high-quality product.
When a new protocol is launched, it takes some time for it to grow and capture sufficient market share. If the token is listed around the same time, the protocol often is not yet able to show its potential to the community and support the token price.
Our model is addressing this problem by postponing the token price discovery until the protocol is able to present a history of revenue and user base growth.
Since key stakeholders are incentivized with token rewards, it is necessary to provide them with the ability to evaluate and liquidate their rewards even if the token is not listed. We propose the proxy price concept that allows limited token trading at an algorithmically determined price based on the protocol’s fundamental indicators.
The model we describe in this paper helps prepare the token for listing by providing a price reference point, and also supports the token price in the post-listing phase.
2. Proxy Price Fund Structure
Proxy price fund consists of a dual-asset liquidity pool and an AMM with a special pricing mechanism available only to validators. The liquidity pool consists of protocol native tokens and stablecoins which can be staked into the fund by any network participant. Stakers are rewarded with native tokens and a portion of the protocol-generated fees and are incentivized to stake assets in a proportion close to a set ratio, which we refer to as the target reserve ratio (RRtarget). Validators are also boosting their consensus weight by staking assets at a ratio close to the RRtarget.
As the protocol and the native token evolve, the fund’s purpose and functionality change. We distinguish three main stages of the fund life cycle:
The Bootstrap Period. The main goal of the proxy price fund during the Bootstrap Period is to accumulate enough liquidity in the fund. Liquidity is provided by network participants, who are rewarded in the form of protocol fees and/or protocol native tokens. As soon as the amount of liquidity staked in the fund hits a set target, the Calibration Period starts.
The Calibration Period. During this period, the proxy price fund aims to form a history of protocol revenues and internal token prices, accumulate more liquidity in the fund, and provide a redemption mechanism for validators that allows exchanging a portion of their native tokens for the stablecoins. The redemption mechanism is activated only if the ratio of the number of stablecoins to the number of native tokens in the pool exceeds a certain threshold and is deactivated otherwise.
The Post-listing Phase. The main goal of the proxy price fund after the token is listed is to provide validators with the ability to exchange their native tokens at a fair price determined by the protocol-generated revenue, even if the token is undervalued on the open market.
3. The Pre-listing Phase
Let’s assume that there is a new chain release that has an imaginary native token NVM. The chain already has a pool of validators that receive NVM tokens prior to the network launch.
All NVM tokens are locked in the protocol and auto-staked in the proxy price fund till the end of the Pre-listing Phase (including all freshly emitted NVM, i.e., block rewards).
A portion of fees collected by the protocol is redirected to the proxy price fund. Another portion of fees might be distributed directly to NVM holders. All fees are collected in a form of a stablecoin which is also used in the proxy price fund. We will use USDC as an example of a stablecoin used in the protocol.
The Pre-listing Phase consists of two periods: the Bootstrap Period and the Calibration Period we mentioned above.
3.1. The Bootstrap Period
During the Bootstrap Period, the proxy price fund is trying to accumulate a set amount of USDC by incentivizing network participants to stake funds into the fund.
The bootstrap period rewards consist of two parts that should be defined prior to the protocol launch:
A portion of the protocol-generated fees is redirected into the proxy price fund at the end of every epoch and is distributed among the stakers.
Since the fee volume may be low during the early stage of the protocol, a special NVM allocation can be used to incentivize early participation.
3.1.1. Fees Redirected to the Fund
Fees received by the fund are distributed among USDC stakers in proportion to the USDC amount staked. So the amount of fees participant i gets is equal to
where scfund is a time-weighted average amount of USDC staked by participant i during the epoch, scfund is a time-weighted average amount of USDC staked in the fund during the epoch and feesfund is the amount of fees received by the fund at the end of that epoch.
NVM holders might receive their share of protocol-generated fees, but as a completely different flow, which has nothing to do with the fund.
3.1.2. NVM Rewards from a Special Allocation
Fees received by the fund are distributed among USDC stakers in proportion to the USDC amount staked.
where sci and nti are the time-weighted average number of USDC and NVM, respectively, staked by participant i during the epoch. For each epoch, we set the target reserve ratio (i.e., 1: 2).
Any network participant can boost his NVM rewards by staking USDC into the proxy price fund in addition to his NVM. The idea is to encourage NVM stakers to stake USDC into the fund, rewarding them based on how close their actual reserve ratio is to the RRtarget.
The specific implementation of the weighting mechanism may vary. We consider one such design below.
as the weight, determined by a staked position of participant i, that reflects his reward boost. An overall reward share (or staked position) of participant i is equal to:
If R is the amount of NVM rewards during the epoch, then
is the amount of rewards participant i receives.
This model incentivizes NVM holders to stake USDC into the fund in a way to keep their RRi closer to RRtarget.
3.2. Validators and Consensus Weights
An additional mechanism could be implemented to incentivize validators to stake stablecoins along with native tokens. (The mechanism described below is a supplement and is not imperative for the Proxy Price Fund implementation.) In this case, the consensus weight of a certain validator i can be calculated in a similar way:
so that the sum of all consensus weights across all validators is equal to 1.
If BR is the amount of block rewards during the epoch, then
is the average amount of block rewards received by validator i.
Thus validators are incentivized (but not required) to stake USDC into the proxy price fund and keep their RRi closer to RRtarget to boost their consensus weight and NVM gain.
3.3. Calibration Period and the Redemption Mechanism
The Calibration Period starts once the proxy price fund accumulates a set amount of USDC.
We define the fund’s actual reserve ratio as a ratio of the number of stablecoins to the number of native tokens in the fund:
If the actual reserve ratio is above a set minimum reserve ratio RRminimum, the redemption mechanism is activated.
The redemption mechanism allows validators to sell a portion of their NVM tokens for USDC at an algorithmically calculated proxy price that depends on the fees generated by the protocol and the number of tokens emitted during the last epoch. The redemption mechanism is active if RRactual > RRminimum and is deactivated otherwise.
Let’s recall that a set portion of fees generated by the protocol is redirected to the proxy price fund at the end of every epoch.
We define NVM proxy price for a particular epoch as the ratio of fees redirected to the fund at the end of the last epoch divided by the amount of NVM emitted during the last epoch:
If a certain validator decides to sell some NVM for USDC at the proxy price, any network participant can step in and buy these NVM at the same price.
Validators always have to keep the minimum amount of NVM required to be a validator.
How are fees rewards distributed after all the exchanges? It’s pretty simple.
As said before, fees are distributed in proportion to participants’ USDC staked. If a portion of fees got exchanged for NVM, it doesn’t change the distribution, but now USDC stakers receive some amount in USDC and some amount in NVM. So if a certain network participant was going to receive n% of fees, now he will be receiving n% of remaining fees and n% of exchanged NVM.
If the fees collected by the fund got fully exchanged, some amount of staked USDC can be exchanged. In this case, all USDC stakers have their USDC stake position decreased proportionally and are rewarded with NVM.
To keep the fund stable, it’s necessary to limit the amount of both NVM and USDC that can be exchanged during an epoch.
There are many ways to implement the exchange mechanism, which we will observe in the Discussion section. We find the proxy-priced AMM the most reasonable one.
3.3.1. Proxy-priced Constant Product AMM
Firstly, for every epoch maximum amount of USDC that can be withdrawn for NVM at a proxy price is equal to fees collected by the fund. So the USDC amount that a certain validator i can withdraw to exchange for his NVM at the proxy price is equal to:
Then a portion of USDC staked in the fund (i.e., 10%) is placed into a special constant product AMM with a starting NVM/USDC price equal to the proxy price.
The ability to exchange USDC for NVM unlocks when any validator sells his NVM to the AMM. If there is no NVM in the pool (for example at the start of an epoch), it is not possible to buy NVM until someone exchanges USDC for NVM. Thus, the amount of NVM bought from the AMM during a certain epoch can never exceed the amount of NVM sold to it during the same epoch.
This can be implemented as follows:
The AMM is driven by the constant product formula
where sc and nt are the amounts of USDC and NVM, respectively, in the AMM liquidity pool. ntv is a starting "virtual" amount of NVM that is required to achieve the proxy price with nt = 0.
scstart = r ⨯ scfund, where r is a set ratio, i.e., 10%,
ntv = r ⨯ scfund / pp so the starting NVM price (with nt = 0 and sc = scstart) is equal to pp.
The described AMM works as follows:
At first, when nt = 0, validators are only able to exchange NVM for USDC.
As soon as a certain validator sold some amount of NVM, other validators are able to buy this amount of NVM.
If more validators are willing to sell their NVM, the AMM price goes down, making the sale less profitable.
On the other hand, if more validators are willing to buy NVM, the price stays at a proxy price mark and nt stays close to 0.
The above model allows the protocol to have an internal price discovery bound to a proxy price and the protocol’s performance.
Network participants who believe in the protocol’s growth and success are incentivized to get more NVM by keeping their RR close to <> by stacking USDC and buying NVM from validators who are willing to partly liquidate their position.
4. The Post-listing Phase
Over time, the protocol gains user traction and accumulates revenue. At a certain point when enough history has been accumulated to provide good fundamental support to the token price, the stakeholders can decide to list the token.
Once the token is listed, price discovery on the open market begins. Publicly determined token price can differ greatly from the proxy price.
At that stage, the proxy price fund retains its function and operates as a special insurance tool for validators: if NVM price goes down (even when the protocol keeps generating a decent amount of fees), validators can sell some of their NVM for USDC at a proxy price. On the other hand, validators who decide to hold their NVM and keep staking USDC will be rewarded with more NVM in the future.
In effect, the fund provides a limited-capacity price floor fund only available to validators.
The proxy price redemption mechanism is active as long as the actual reserve ratio of the fund is higher than the minimum reserve ratio, which can be set in advance and adjusted by the network. If the actual reserve ratio drops below the minimum reserve ratio, the redemption mechanism is deactivated until network participants push it back.
We suggest the proxy price fund implementation with just two smart contracts: the Fund smart contract and the Redemption module (that allows exchanges, i.e., AMM).
5.1. The Fund Smart Contract
The Fund smart contract should:
Allow users (validators and other network participants) to stake USDC and NVM,
Distribute fees among USDC stakers pro rata time-weighted average stake amount during the last epoch,
Distribute NVM rewards from the special allocation (section 3.1.2).
The Fund contract records the amount of USDC and NVM staked by every network participant and also tracks the time-weighted average of both values during an epoch. At the end of each epoch, a snapshot is created that is used to calculate and distribute the rewards.
Let’s recall that while the redemption mechanism is active, every validator has the ability to exchange his NVM for a portion of fees at a proxy price. We suggest keeping this logic inside the Fund smart contract, since it is fairly simple and exchanging NVM for USDC at a constant proxy price does not change the distribution in (2).
This can be implemented as a smaller pool of assets, separate for each epoch. At the start of epoch n a portion of fees collected during epoch n — 1 are redirected to this pool and the rewards distribution is fixed according to the stakers’ activity in epoch n — 1. During epoch n, validators can exchange their NVM for USDC from the pool, and at the end of epoch n, USDC stakers can claim their rewards in both assets.
If the fund received feesfund at the start of the epoch, there will be x ⨯ feesfund USDC and (1 — x) ⨯ feesfund / pp NVM in the pool at the end of the epoch, with 1 ≥ x ≥ 0, and a certain USDC staker can claim the same portion of NVM and USDC from the pool.
5.2. The Redemption Module
While the redemption mechanism is active, a portion of USDC staked by network participants can be exchanged by validators for their NVM. These NVM should be distributed among USDC stakers in proportion to their stake positions and their USDC stake should decrease the same way. The question is how to design this system, given that USDC stakers can increase and decrease their positions in real-time, thereby changing the liquidity available for exchange. We suggest the following design.
Let’s say, a set portion of USDC staked in the fund available for exchange is equal to 10%.
We define an exchange pool as a pool of assets that can be exchanged by validators at a specific time. So at the start of the new epoch (assuming the redemption mechanism is active) the exchange pool consists of 10% USDC staked in the proxy price fund.
Thus, during a certain epoch, every USDC stake is split into two parts. 90% is a part that stays in the Fund contract in a form of USDC while the rest is a part of the exchange pool and is transferred to the Redemption module.
If validators exchange NVM for USDC, they add some amount of NVM to the exchange pool and withdraw a corresponding amount of USDC from it. And the opposite: if a validator wants to buy NVM from the pool (assuming there is enough NVM in it), he adds USDC to the pool and withdraws the corresponding amount of NVM.
If a certain staker A decides to increase his USDC stake by some amount x, 90% of x stays in the Fund contract and adds to his stake. 10% of x is added to the exchange pool.
In the case of AMM, described in 3.3.1, it’s necessary to increase ntv by 0.1 ⨯ x / pp, so that the system remained stable and NVM price was equal to the proxy price if nt = 0.
Instead of owning x USDC, staker A now owns 0.9 ⨯ x USDC as a stake in the Fund contract and a share of the exchange pool, which is some amount of USDC and some amount of NVM. At any given time, A’s share of USDC staked in the Fund contract is equal to his share of the exchange pool.
If staker A decided to withdraw x USDC, he actually withdraws 0.9 ⨯ x from the Fund and a corresponding share of the exchange pool. In the case of the AMM described in 3.3.1, ntv is decreased by 0.1 ⨯ x / pp.
Thus, stakers always own the share of the exchange pool equal to the share of their USDC stake in the Fund.
At the end of each epoch, a snapshot of the Redemption module is created synchronously with the Fund’s snapshot. Each staker is able to claim his part of the exchange pool pro rata their share of USDC, recorded on the snapshot of the Fund contract.
The model described in this paper can be implemented in a variety of ways. For example, different exchange mechanisms can be used. Even though we suggest using the constant product AMM as a gadget to exchange NVM for staked USDC, it’s also necessary to discuss other approaches.
6.1. Percentage-based Exchange Cap
The idea of this implementation is to allow exchanging NVM for USDC only at a fixed proxy price. So for every epoch maximum amount of USDC that can be exchanged for NVM at the proxy price is equal to fees collected by the fund plus a set percentage of the overall USDC staked in the fund:
with a set x (i.e., 5%), that can be adjusted by the network.
The USDC amount that certain validator i can exchange is equal to:
where nt is the time-weighted average amount of NVM owned by validator i during the epoch and ntval is the time-weighted average amount of NVM owned by all validators during the same epoch.
6.2. Order Book
Similar to AMM, for every epoch maximum amount of USDC that can be withdrawn for NVM at the proxy price is equal to fees collected by the fund.
Validators then have the ability to place buy and sell orders in the order book, whereas other validators can partly or fully execute them.
In this case:
if a certain validator wants to sell more NVM, he can try to sell it at a lower price.
if a certain validator wants to buy NVM and nobody is selling NVM at a proxy price, he can try to buy it at a higher price.
Price discovery which is done among validators is different from the open market price discovery since validators are expected to have a better understanding of the token value and have more interest in holding NVM as a long-term investment.
The core intuition behind the proxy price fund is to decouple the protocol launch from the listing of the protocol token entirely. As we show, premature listing, combined with the open price discovery under insufficient data and a highly volatile market is detrimental to many projects, as well as the market in general — as it incentivizes unhealthy investor behavior and cripples projects that could otherwise be beneficial to the market.
Yet, during all stages, the protocol needs to make incentive payments in native tokens. Proxy price fund provides a mechanism for token redemption without open price discovery, allowing to delay public listing and let the protocol build out strong user traction and prove its viability.
While we are reasonably confident in the overall design of the mechanism, further customizations can be made to some of its components. These include:
Staker weighting formula that determines reward distribution among stakers with different ratios of liquidity provided (NVM from the special allocation, section 3.1.2)
Consensus weights for validators depending on their stake composition (section 3.2)
Expressed as a discounted cash flow from the protocol-generated earnings.