Liquidity v.2

i am trying to get an detailed understanding of how provide currently works. The main thing that I can’t seem to find documentation for is how providers of liquidity don’t ever lose anything from impermanent loss. For example if there is 100 BTC in liquidity then someone trades USDC for 10 BTC how is it possible that the liquidity providers of BTC see the same amount of BTC even though there is now only 90 BTC in liquidity remaining?

If I am misunderstanding something please let me know. If there is no documentation for this would i be able to find the answer to my question by looking through the code here https://github.com/incognitochain/incognito-chain?

1 Like

Hey @TeaBear5
The pDEX is based on AMM, so there is still impermanent loss possible, but it’s covered by the LP incentives fund. Find more about the fund here.

As you can see above, the Provide is a temporary solution for a smooth transition from ADD to the Liquidity V2. There is no special documentation for the Provide, but there will be documentation for Liquidity V2 (Tech & Economic). Just give us some time to work it out :sweat_smile:

5 Likes

Do you think we could create a new coin that is minted based on impermanent losses?
Basically depending on the time you withdraw, if you suffered from impermanent losses, you get a specific amount of this new coin to cover the losses. If you took no losses, then you don’t get the new coin. It would only be calculated on withdraw and the amount is correlated to the value of the losses (USD).

What is the use case?
What if your required to stake the coin to use the Provide Tab? Basically your buying losses to prevent yourself from losing your crypto. But this new coin would have value because to put more in Provide, you need to stake more of this coin. It might be an interesting concept to look into.

Maybe you could also make the coin be used for:

  • buying pNodes
  • some sort of lottery
  • Voting Rights
  • required as well as PRV to stake vNodes and pNodes (Could be interesting)
  • etc…

I like the idea of using this coin to give access to the Provide Tab, the value of the coin would be determined by how safe people want to be with their crypto assets.

Using a system like this,
Might require that when you pull out of the Provide Tab, the impermanent losses would be taken out of your holdings in this particular coin instead of your actual crypto. Meaning you still take impermanent losses, you just prepaid for it. But if the economics are done right, you could potentially be earning with the coin too which might counteract the costs to withdraw.

6 Likes

Hey, @Revolve thank you for sharing. The idea sounds interesting. Regarding the end-users wouldn’t it be complicated to understand for them? :thinking:.

2 Likes

Hmmm,
I was trying to think of a simple analogy that makes it easy for users to understand the concept, but I couldn’t think of anything. If we were to go more in depth on the system:

“Add” liquidity providers wouldn’t lose money from impermanent losses as they get compensated with a token at an amount that is equivalent to the losses. They can trade away this token and buy back the same amount of crypto that they lost. This also means providing for lower liquidity pools is less risky because your value isn’t lost.

People buy these tokens because it allows them to earn an APY from the provide tab without having the potential to lose their crypto assets. The Provide Tab also allows one sided provisions, so it’s beneficial for people who don’t want to match their capital with PRV in the “Add” section.

Companies like Nexo.io and Crypto.com all have their own coin that if you own, increases your APY. So it’s a similar concept, except there would be a few differences.


I’m not quite sure how the functionality of the new token should work as there could be many better alternatives then the one i’m putting forward.

With This System:
When users withdraw from “Add”, new tokens get minted based on impermanent losses and given to the provider. That means when people withdraw from the Provide Tab, which is a layer that works on top of the current “Add” functionality. New tokens would be generated.

We have a few options at this point:

  1. We could automatically exchange these new tokens to buy back the losses;
    – But this would just inflate the amount of tokens created and eventually the system would fall apart when to many tokens are generated.

  2. Instead of generating new tokens, we take the tokens from the persons account and use those to compensate for the losses;
    – This scenario forces the losses on to the user who uses the Provide Tab. (Problem)This might force users to use the “Add” feature instead, which means the demand for the token would go down, messing up the system, but i’m not sure.

  3. We could have a membership like program with the Provide Tab. To enter, you have to put these tokens into the Provide Tab. The tokens slowly get removed at a specific rate (Reverse Interest), and all your other holdings gain at at their rates.
    – It is a very weird idea, but the tokens getting drained by everyone who is using the Provide Tab can pay for the Impermanent losses. The earnings should be more then the losses, but idk if this would actually be the case.


I think option 2 is the best I have, but we need to create more of a demand for the token if we want it to succeed. I’d say adding it as a requirement for staking nodes would increase the demand really hard, but their might be other options.

Your average end-user doesn’t necessarily understand impermanent losses so your right that it might be difficult explaining why you have to add this token to the Provide Tab, and lose some of it when you withdraw. But if they earn enough money from putting this token into the provide tab through price increases, or some sort of staking system, then you could make it so they aren’t losing any money on the token and withdraws.

It would be much easier to explain buying this token to put money in. The money is then being used to generate more money to pay for the losses associated with withdrawing.

If putting the token into the Provide Tab returns a rate in the token itself, then it might work out. But I don’t know the logistics behind a mechanism like that. As long as users have to put some percentage of their value into the Provide Tab as this token, then I guess it could work (at least for a while).

Idk this was just some sort of crazy midnight idea I had a thought about, didn’t really work out all the details.

4 Likes

@andrey There is truly only one direction which is maintainable and sustainable over a long period of time. That is getting a part of the pair as a variable percentage of block rewards. Creating another token just for the liquidity has to be one of the most round about things ever. You already have a token it’s PRV. You have a proof of stake system for the voting and decisions. Having a secondary token only complicates and colludes the system while splitting the value.

Rewards for providing liquidity needs to be in the same coin as transacting that liquidity. That is what gives the liquidity coin value and drives bigger and bigger liquidity players (aka whales) to upfront their liquidity in a pool. With not enough liquidity this project will fail. I can’t say enough that other than safety of funds liquidity needs to be a central focus. If you can’t get off the ground you will never fly.

As of divergence loss (impermanent loss is a bad term because it makes people think that their losses will be recovered over time which isn’t true) being helped by a reward coins I think people are missing the point. The point of getting a reward by providing liquidity is not to offset any divergence loss it’s to get people invested in providing liquidity to the project. Which then is able to be used to vote on specific governance systems thus doing this to increase the value of their investment. As much as people hate the idea of big players controlling a large scale of the vote, as far as putting limitations on single addresses, it’s a ineffective way to control governance. A proportional token pricing like BeToken to make a successful vote is one way to combat manipulation. You don’t need to make it perfect just largely unprofitable for someone to attack it.

One of the best things about these DEFI systems is that everyone can be a winner. It provides rewards for those who can provide liquidity (if they were going to hold onto the funds anyway it’s free money to them) while making a pooled exchange system where people can safely transact that can’t be centrally taken down. By providing liquidity you are increasing the value of the reward which then makes people want to provide more liquidity. This is the exponential growth that uniswap got when they reached a breaking point where the slippage in the pool was low enough for the majority of regular trades. That then made people transact more to then increase the value of the reward to then make people provide more liquidity. The cycle repeats until everyone who could provide liquidity has provided liquidity and then it caps off. If that cap is still high enough for the majority of trades to not have a lot of slippage well the project has made it.

Liquidity needs to happen with two pairs in the pool. All the matching in provide is with one coin and PRV. This means that if PRV is ever missing from the pool where one side of the liquidity is provided we got a big problem. There needs to be a sizeable excess of PRV which scales with the liquidity pairing to make sure anything which can be matched DOES get matched and added to the liquidity pool. Right now incognito is relying upon a fixed company reserve to do the provide matching. The moment the reserve is spent liquidity will fall as things are not getting matched. It just makes sense to top up a reserve with a portion of the block rewards. It can scale depending on usage and the amount of things being matched or pending matching for the pool. Validators don’t look at this as cutting your reward. Your reward is paid in PRV. By making sure that liquidity is being matched it directly increases the value PRV in a sustainable and consistent manner which not only makes your stake more valuable overall but helps the health of the network. It’s sustainable and without a doubt the best method to make sure that PRV has a rising consistent value. It also will act as a kind of deflation method being that less PRV will be released to be sold. If you truly believe in the longevity of this project and want to see it’s long term success making sure that a portion of the block reward scales with the demand for the one sided provide matching is a must have.

Having a coin be created based on the ratio of divergence loss is an idea which is solved by this too. Being that people don’t need to back both the pairings in this system it’s no longer a problem. People can provide liquidity in the currency they want and the network itself will match it divergence loss will be a thing of the past. Rewards for providing liquidity (as I minted above) should be provided in the network coin which is PRV. The current set rates however are not sustainable. Instead the method that should be used is not a APR but a pooled reward system. Your reward for the pool is proportional to a fixed percentage of the network coin. These rewards should be from the block rewards too. The pools that are receiving more slippage should receive a higher pooled reward system incentivizing individuals to provide more liquidity. Ideally a portion of these pools should ideally be used to match the one sided pairs. The uniswap model does a really good job of this and I fully believe that this project should share it’s same vision. The coined term is “liquidity mining” and it’s the future for these projects.

8 Likes

@MrAwesome @Revolve. Thank you guys for your inputs.

This month @duc works on a tech design of the one-way liquidity implementation. I’ll draft an economic model of it. Once both parts are ready, we’ll share it here to discuss and analyze deeper.

Meanwhile, please keep sharing ideas, thoughts, models.

4 Likes

Take a look at the way the bancor v2 is done. It’s an amazingly smart protocol which I think would work well for this project. Provide is so good because it allows one side providing. That has shown to directly increase liquidity and reduce slippage. Secure price oracles are quite problematic to integrate outside of ethereum… but you can be the first :blush:

5 Likes

Hi everyone, I’m really happy there is such a fruitful discussion over this topic. It’s one of the most important topics for a long term success.

I’d say focus the energy on the product, the product has to be flawless. Flawless means: useful, secure, with vision and striving for perfect user experience.
Worry about the fees and incentives later. If some users leave because they are not making enough right now it just means they are here only for quick $$. Do what’s best for the Incognito system and it’s future. Than everyone who is here to help build the product will benefit from it later.

What is the main product Incognito is focusing on atm? Is it the shielding of any crypto asset or is it the privacyDEX? Or does it have to come together?

Regarding the liquidity sustainability options, I believe what @MrAwesome suggesting makes total sense.
Liquidity mining has become standard now for onboarding users but seems its not easy to maintain longterm. There has to be economic system set really well, I’d look at successful projects as Uniswap, Balancer, Bancor for inspiration.

To me the governance seems not as priority aspect atm.

Allowing any wallet to connect is essential for pDEX to grow. But than again what is the Incognito’s product you wanna market first?

2 Likes

While I do understand where you are coming from and that your intentions are good the “incentives and fees can come later” line of thinking is what fails so many of these projects.

Everything is so equally important because overall they are all pillars which make things work. You can’t get liquidity to come without incentives and you can’t sustain that liquidity incentive without fees. While governance does a lot of the times get put on the back burner it’s equally important because if only the founders can make onchain decision there is no true decentralization of trust. You would need to trust the founders to do everything which is problematic if persay they suddenly died or went mad. The keys to the kingdom needs to be spread out far and wide to reduce the likelihood of a single point of failure either person or protocol based.

When I look at incognito the true value comes from the utility it can provide for different people. If you want a way to hold your crypto but still have some rewards on it providing it to allow private trades is a great way to do that. If you don’t trust centralized exchanges and want to have as much control as possible, being able to deposit and exchange trustlessly for another cryptocurrency is so valuable. When transactions on the main cryptocurrency chain (see bitcoin or ethereum right now) are so expensive incognito allows people to transact like value within the currency they want to accept for basically nothing in comparable fees, it’s a great layer 2 solution.

These are not seperate utilities that need to be focused on differently. They are one utility, a governed blockchain DEX with a multi-cryptocurrency custodial approach, that can be used in many different ways. It’s so very important not to lose sight of that.

5 Likes

I think we should make pdaaps for new, non standard, features like: farming, stablecoin protocol etc… Like that we keep the main interface simple and smooth. In the same time we can have the pDapps for the more experienced users.

About @Revolve the idea is pretty interesting but i would instead represent the liquidity with LP tokens(Rebalancing pools) that after can be used for other purpose also(farming,staking on other pdaaps).
is there a way to calculate impermanent loss with LP token chart?
If so we could then give a token rewards for the impermanent loss that you could put, for example, on a liquidity pool with PRV/TOKEN get LPtoken and stake them to farm some other coin maybe!(DeFi Yield Farming using pDEX as main DEX and PRV as an intermediary coin)
PRV has strong fundamental value : mainnet coin, staking, provide ,shop. It should stay like this as the main coins of the whole network and other pdaaps could be able to use it.
Another token would never have the same utility but we could try to give it a value with external pdaaps!

2 Likes

Hey @Josef, thanks for the input. I do agree that only world-class products can drive the adoption of our technology.

Privacy in crypto is a small niche, nearly 3-5% of the whole market. Our goal is quite straight forward - to win the niche. To make it happen, we need to reach two goals:

To become the biggest anonymous, decentralized exchange:

About the niche:
Before Incognito pDEX, there was only Bisq. Last month Incognito pDEX caught Bisq in trading volume ≈ 150k/daily

To become the most used anonymous crypto wallet

About the niche

  • On one side, we have a

Samourai wallet which has 100k+ downloads, compared to Incognito’s 10k+

  • On another side, we have Wasabi wallet, that has anonymized $200M+ in BTC to date, compared to $20M+ on Incognito this year.

As you can see to become a leader on this market is quite achievable and if we all together combine effort towards one goal, it might happen even faster then we can imagine :slight_smile:


As always, we are open to discuss other ideas where incognito tech might be useful. Feel free to share your opinion on:

  1. What kind of other real-world problems should be solved by Incognito?
  2. What kind of product can’t exist without privacy (current or future) ?
7 Likes

I have a super crazy idea,
What if we allow staking of any coin through the app?

How would this work:
Each crypto is backed by PRV in the liquidity pools. Besides some trading, most of this PRV is just sitting there doing nothing. What if we have a feature where you can input a coin, and you gain earnings as if it were PRV.

Obviously there isn’t enough PRV in the liquidity pools to handle market price for everyone. So what if the amount that you earn is equivalent to something like:
1/2 the total PRV in a chosen liquidity pool divided by the total number of those pCoins that exists on the platform. (Maybe there are better numbers, idk)

That way when someone wants to stake a coin, they put the coin in the staking function, and some PRV (according to the above calculation) is temporarily allocated from the liquidity pool to staking. When the crypto is removed, the PRV is then allocated back to the liquidity pool. The whole time, the AMM’s pretend that the PRV never left the liquidity pool.
Basing the amount of PRV temporarily used on the number of PRV / pCoins available on the platform locks up enough of the coins to stop liquidity from crumbling. The amount of PRV that’s being staked in place of your coin would obviously be variable depending on the factors above.

We could even skim some from the top and give it to liquidity providers if we really wanted to, which would solve the above problem. Or we could add this feature to Provide and basically double down. Earn enough from this “staking” system to counteract the impermanent losses, and earn directly from transaction fees only. Basically staking liquidity with liquidity, which seems nuts and blows my mind.

TLDR:
When providing liquidity through Provide, you borrow PRV from the liquidity pool to stake and earn enough to counteract impermanent losses.

If the equation to borrow PRV is total PRV from liquidity pool divided by total amount of that particular pCoin on network, then when people pull out of liquidity the borrow amount goes down, meaning less earnings. If the AMM pretends like the PRV is still there, no harm no foul. As liquidity gets drained, the borrow amount gets returned (based on calculation). If liquidity goes up, the borrow amount gets increased.

Hey @Revolve to be honest, not sure if I fully got what you mean. Can you share an example with a real pair and numbers ?)

1 Like

Yes sorry, I might of over complicated it

Let’s say I provide 1 side of a pair for pXMR
XMR pool has 37640 PRV <-> 4376 pXMR

I provide 1 pXMR and it gets added to the liquidity pool. While that happens, behind the scenes, a specific amount of PRV get’s borrowed from the pool and staked.
The amount of PRV that gets borrowed would be equal to 37640(Total amount of PRV in the pool) divided by all pXMR that is currently minted * the amount provided. The rewards gained from staking this PRV would help supplement the cost of impermanent losses.

If people withdraw from the liquidity and the total amount of PRV goes down, the borrow amount goes down accordingly. Some PRV from staking has to go back to the liquidity pool. If the amount of PRV goes up, more PRV can be taken from the liquidity pool and staked. This is dynamic, so liquidity shouldn’t be able to crash.
The AMM’s pretend that no PRV was borrowed, so the price stays the same. This isn’t a problem because if people decide to take out or trade, the PRV that was being borrowed will be returned as needed.

Basically putting money in Provide allows you to borrow a certain amount of PRV from the liquidity pool so you can stake, but if prices change, the amount of PRV that is being staked changes.

It’s kind of like cheating.

It sounds like you are spending your lunch money twice, but I could be misunderstanding things due to the mix of provide pool and liquidity pool.

This is spending the lunch money twice. Let alone if you are providing one side of the pair you have no impermanent loss at all. PRV can’t just be borrowed indefinitely. It needs to come from somewhere.

Staking doesn’t directly increase the price of all PRV. While technically yes do to the less available supply it would push for higher current cost of PRV but unless you are buying something the price wouldn’t be directly effected.

It seems you might be confused upon how multiple parts of the pooling process works and how provide effects that. Provide’s one sided pairing is matched by a kind of founder reserve where incognito’s team upfronts PRV to match the unmatched one sided provide. For example if XMR is provided they match the price equally with PRV from their reserve. That creates the increased pool liquidity to transact larger amounts. The reward also at this time comes from the reserve because there is currently no block reward percentage which is put into reserve.

PRV has a currently capped supply (which I find to be problematic but I’ll explain that in another post) and the supply at this time continues to go up. Reserving supply, while it does remove active supply, does not directly correlate with the increase or decrease of a certain asset’s price. An asset’s price is directly tied to the going rate which is dependent not really on supply but what people are buying it at. You can have an asset with a decreasing supply and yet the price can also be decreasing rapidly too.

1 Like

Correct me if I’m wrong, but Provide is based on current Liquidity providing. Impermanent Loss is still a factor, maybe not for you, but for the Incognito team it still is.
Let’s not talk about Provide then if it complicates things. Instead let’s say that you just add liquidity to the pool, with this implementation you would be able to borrow some of that PRV that’s matched on the other side of the pair, it can be staked to gain profit. If the amount to be borrowed is fractional and dynamic with trading, it shouldn’t be a problem. (When I say borrow, normal users don’t have access to this PRV, this is more behind the scenes)

What I am suggesting is in fact spending the money twice. You add liquidity to the network, then your able to borrow some PRV from the pair, this would be an unofficial borrowing. The AMM’s believe that the PRV is still in the pair. You take that PRV and stake. As trades go on, and PRV is required, the amount borrowed and staked changes and is given back to the liquidity pool.

As long as you can put the PRV back before people do a bank run it’s okay. Nobody would notice. Yes when in the pool, PRV is being used to determine price in the liquidity pools, but if you cheat a little, you can use that PRV to stake and earn some PRV. You just can not get caught with an empty liquidity pool on one side of the pair. This is why the amount borrowed should be determined by the amount of PRV in the pair / total number pCoins minted. This should be a live number, meaning the amount that is staked changes in real time.

1 Like

Ah I think I know where your misunderstanding is coming from. Provide is not based directly on liquidity providing. It’s a kind of in-between.

Generally for pools you need to have both sides of the liquidity pairing to be provided at the same time. Overtime that creates what’s called devergence loss (aka impermanent loss). Because when one asset is bought from the pool your portion of the share to the pool will be different. Effectively you lose a little bit over time unless the prices go back down the rate you provided the pair in. This is a good video on it.

Provide works a bit differently. On the incognito network all pairs are matched with PRV on their respective pools. Provide allows people to not need to buy PRV (with high slippage) to still provide liquidity into the pools. It’s a good middle ground. Rewards from any liquidity being provided into pools are handled by a PRV reserve. Projects like these live and die on the liquidity. PRV’s value is directly tied to the utility of this network. It makes sense why the incognito team wants to upfront PRV to make it much easier for people to provide liquidity in the network. That increases the price of PRV which makes it less of a burden overall and increases their own PRV value.

When a pair is in the pool it much be remained in the pool. Lending it out or doing a secondary restaking isn’t how these systems work. You can’t borrow something which is put in a pool. Let alone where would the reward come from? The reserve?

You can’t double dip or think that funds in pools are unused funds. The funds in the pool provide direct liquidity to make trades. Borrowing it makes the proportion in the pool incorrect and thus the pool value is incorrect.

This is a blockchain project. PRV is chained to the blockchain. That is how we can be certain no double spends happen and exact supply can be verified.

A fractional reserve system cannot work with automated market making because the automated portion of that assumes all funds in the pool are well in the pool. There is a whole lot of things just wrong with your assumptions about how these systems work.

Please watch this to learn how these pooling systems work.

2 Likes

Yes this is correct, I was just suggesting a crazy idea to tweak it to allow this functionality. It would definitely make things more complicated, and the reward would come from staking and fees from liquidity providing. It would probably require an in-between pool of PRV as well. Either way, no matter what solution we do, we are still draining funds out of the Incognito platform to solve the problem.

Before Provide was a thing, we had two separate functions. We had in-app PRV staking (at a really high rate), and Add Liquidity. Provide was the marriage of these two things.
In-app PRV staking allowed you to add and remove PRV at will. The return was something like 50%. Incognito had a small intermediary pool to allow people to pull out and put in at will. The rest of the PRV was being staked in a node. At one point everyone started pulling out which resulted in the the intermediary pool being dried up, this meant that the node had to be unstaked to give people their PRV. This took many days to do as it’s random. The reason why I mention this is because the framework to do this is still there.

Yes this is true, unless you lie and say it’s still there. As long as it’s there when it needs to be there no one will know the difference. I’m not saying lie to the people, i’m saying lie to the algorithm.

You can make an exception to the rule in this specific instance. Add a modifier to the coins to allow something like this to happen in this particular instance only. Make it public like anything else on the blockchain.

I’m saying tweak the system at it’s fundamentals. The amount of PRV borrowed would be minimal and as trades go on, the amount of PRV that needs to be there will be there. Sure it might not be valid in our current state, but the idea is to explore all solutions. I understand how AMM’s work, but that doesn’t mean we can’t add new features or change things to make them a bit different. You don’t even need to technically change how they work, just modify them a bit to add another function that stores Actual Value stored and Supposed Value Stored and tweak a bunch of other things here and there

It was just a crazy idea anyways

4 Likes