Suggestion: Short-term Enhancements for Anchor Protocol

While Anchor has been successful in proving market demand for high & stable savings for stablecoins, there are many improvements to be made to its core protocol.

These improvements are best implemented in 2 phases, one short-term, and one long-term.

  • Short-term: Mostly code-level edits. Minor enhancements that were brought up by the community. Useful contract interfaces, sturdy price oracle, improved fee collection to ANC, etc.
  • Long-term: More complex mechanism enhancements that requires code restructuring. Dynamic Anchor rate, tiered yield based on ANC stake, sharing bAsset yield with borrowers, etc.

For now, this post would only focus on the short-term. Additionally, new collaterals are not listed here as they will be developed on an on-going basis separate from the development below.


The short-term list goes as below. Note that the list is not final; it is to be finalized with community consensus.



1. Attach a flat % fee on UST repays, funneled to yield reserve / directly to ANC buybacks

ANC’s value passively increases with continuous AUM growth, but not from increased user activity. A small, flat fee (e.g. 0.1%) could be put in when borrowers repay UST, which can be funnelled to the yield reserve (10% of which goes to buybacks), or directly to ANC buybacks.

With ~50m UST being repaid per day, a 0.1% fee would accumulate ~50,000 UST in daily fees. This leads to a 20% increase in ANC buybacks if supplied to the yield reserve, and a 200% increase if supplied directly to buybacks, leading to more value to ANC token holders.

Routing this fee to the yield reserve may be a better option as this would make the yield reserve more sustainable, allowing the community to increase the % of fees that go to buybacks from the current 10%. Right now this value is not good to be increased as this may put Anchor back in deficit.

However, this feature should be carefully considered as it could discourage borrowings, causing more harm than good.

Edit: maybe the % fee should go to redeemers of aUST? Love to hear how you think


2. New Price Oracle contract
Anchor’s existing price oracle is currently centralized. With better solutions such as Chainlink now in the ecosystem, this can now be a rapid target for decentralization.

The new Oracle contract can accept multiple oracle feeds per asset type, further aiding with protocol redundancy & decentralization. Eventually this contract could accept various feeds such as:

  • Chainlink
  • Band
  • Native L1 Terra oracle (i.e. LUNA/UST)
  • Contract queries
    • bLuna/Luna exchange rate
    • Astroport’s TWAP oracle
  • Data feeds via Wormhole (cross-chain data feeds)
    • e.g. bETH/ETH exchange rate


3. Message Interface to withdraw a specified amount of UST

Anchor has no option to withdraw a specific amount of UST from deposits. This is due to two reasons, being:

  • aUST exchange rate may update during withdrawal Tx confirmation
  • Terra tax applied during UST withdrawal transfer

The ability to withdraw a specified UST amount is useful for reducing confusion in integrations. A new interface that instead uses CW20 transferFrom should be created in the Market contract, enabling the flow of withdrawing UST to be:

  1. Pre-calculate the tax amount required for transferring amount UST. → Let’s put this as tax
  2. Query the current a_terra_exchange_rate
  3. Increase aUST allowance to spend ((amount + tax) / a_terra_exchange_rate) amount aUST
  4. Issue Withdraw(amount+tax) msg to the Market contract, which performs a transferFrom for ((amount + tax) / a_terra_exchange_rate) aUST
  5. Market contract sends amount UST to the withdrawer, with tax UST spent on tax.


4. Message Interface to repay a different address’s loan

Add a borrower address field to the RepayStable{} message interface, making it to be RepayStable{borrower: String}.

This would allow addresses to repay a different address’s loan, something that aids with building yield-farming strategies on Anchor borrows.


5. New governance contract & bANC → (may spin off as a separate release)
Community participation is key for a protocol’s success. The current Anchor governance system has failed to provide a robust framework for smooth, autonomous protocol development, with little-to-no incentives for the community to take part in core development.

The new governance system could instead:

  • Give greater power to active community contributors via delegation systems
  • Contain emergency voting logic for rapid bug fixes
  • Incentivize active voting by giving better staking yield to voters
  • Make governance stakes liquid (bANC)
  • Support efficient dev bounties via bounty contracts



Would love for a sparked-up discussion & community consensus for the above.
All in all, expecting a tentative ship date (including audits) of Jan/Feb 2022.

Onwards.

3 Likes

I am an ANC governance staker. While it would be great for long term holders if we implemented a small fee when repaying the loan, it is my opinion that anything that may discourage borrowing should be avoided at all costs. I compare this to Facebook choosing to avoid ads when they were just starting, we don’t want to cripple the mechanism that drives usage.

Everything else seems to be a common sense update to ANC and the platform.

6 Likes

Like yield reserve over total buyback for payback fee.

On a new thought, perhaps the % fee could be implemented to depositors that redeem (instead of borrowers)

2 Likes

I’ll give out my feedback per idea, as to avoid confusion.

  1. Flat Fee

I don’t really agree with this move, specially at a time like this, borrowing just turned negative against incentives, leaving users wondering if it’s still worth it to borrow, add a fee on top of that and you’re pilling on the negative bias towards borrowing.

It’s too soon imo. With the increased staking rewards, yield sustainability should reach a point that it’s better than ever, and if this means we can’t increase buybacks then don’t, let’s figure out a way to provide value to token holders somewhere else.

  1. Oracles

Seems like an obvious move, and I’m all for it, after making liquidations more “decentralized” let’s do the same for oracles.

  1. Withdraw specified amount

Ease of use will always help with adoption, nothing much to add here, if it helps ease integrations, let’s do it.

  1. Repay different address loan

Yes please! Been meaning to ask for this, this will open up a new class of services with automatic LTV maintenance without having to trust the funds to another contract.

  1. bANC

I’m all for giving greater power on governance, and the emergency voting logic feels like a must in any governance system, but incentivizing votes won’t lead to better votes, only to more votes and that can be both good and bad. Can we add an Abstain option with this? At least there’s an option for those that just want the incentives.

A couple new suggestions to consider

  1. Incentivize borrowing via dynamic borrow APR

Instead of having the borrow APR and incentives APR, I wonder if it wouldn’t be better to have just the borrow APR change with the incentives, so that when incentives are higher than the borrow APR the APR becomes negative and pays out the remaining incentives in ANC, if it’s positive then the increment on the borrowed amount would of couse be less, but no ANC incentives payed out.

This should decrease sell pressure and if people still want ANC as a reward, maybe make it an option to receive ANC or use the dynamic APR.

  1. Reward excess yield

Incentivize excess yield with ANC, say I’m borrowing but want to keep it safe so I leave my LTV at 30%, I 't always feels like I’m missing out on rewards for peace of mind, say that Anchor would reward me on my excess yield up to the 45% recommended mark. I know this clashes a bit with my previous suggestion, but I’m trying to give options here.

I would even be fine with implementing a fee on the ‘Earn’ aspect. (Increase the fee to deposit and withdraw from ‘Earn’)

I don’t have enough information to know if this will affect 3rd party developers (Kash, Alice, Etc.) but I would gladly eat a higher fee to deposit/withdraw.

If we do it on the Earn side, I wouldn’t go over the 0.1% mark and would probably cap it at a certain amount, or maybe make it decrease over time to incentivize longer periods of deposits.

2 Likes

It seems more feasible to implement it for depositors. If we consider a 20% APY that is ~0.05/day so 0.1% would be recovered in 2 days. It seems like a good deal for everyone.

I think that an ANC burning mechanism should also be implemented if possible. For this I was thinking of implementing a minimum borrowing period (e.g. 15 days). If a user repays the loan in less than the minimum period he will have to give back the ANC tokens received as rewards which will be burned.

5 Likes

I don’t think I like this. It feels like we’re at a point where there is so much market Anchor could capture, and I’d rather not deter it with additional fees. Perhaps a topic to revisit after more collateral types are introduced.

Yes! Decentralization and redundancy for oracles seems incredibly important. Just yes.

Sure. Seems like a good way to simplify it for builders.

bANC please :pray:

3 Likes

Wrote a short thread in response specifically to #1 here, ser: https://twitter.com/0xUST/status/1460373504587620356?s=20

If Yearn hypothetically deposited $1b which I simulate here:

At 19.5% APY would make $190.5m that year, which translates to a $190,500 instant payout for the yield reserve.

Big Anchor fan, not so much fan of the fee proposed though :slight_smile:

I understand the need to enhance the value accrual mechanisms , but we should be wary of all protocols trying to integrate with Anchor, especially on the borrow side.

0.1% might seem small, but when automated strategies borrow and need to perform multiple adjustments a day related to a target LTV on Anchor, these will add up quite fast and will eventually lead to a reduction of the total borrowed amount in order to minimize the need for adjustments.

Why not setting a flat fixed fee instead ?

Keep in mind we’re soon going to reach a point where it will be more profitable to hold bLuna spot vs providing it as collateral on Anchor (that’s if the borrowing incentives don’t adjust up)

Same feedback on the longer term idea of providing tiered yield favoring ANC stakers: I likely would qualify as a ANC holder but we should not harm the core Anchor value prop (20%ish on your $ deposits)

The rest of the proposed improvements look great and i’d definitely support them in voting
Great work as always

1 Like
  1. additional fee => no. but we can think of redesign of 10% that goes to protocol stakers. we know that yield reserve is the buffer we need for rainy days. So let’s assume that in good days that buffers increases. Why not define that at 100m yield reserve size we increase the 10% to 15%. Then at 150m or 200m level size we again increase the % that goes to stakeholders. With that you control the pace of increase of yield reserve. Same would go in other direction (if yield reserve drops below certain threshold, it goes back)
  2. cool.
  3. cool
  4. cool
  5. cool, but let’s not design in over leveraged positions.

Thanks @ryanology045 - much appreciated. Comments:

  1. Like many ppl who responded above, I hate the idea of adding a fee unless absolutely necessary. There are many other things that can be done first to improve profitability without hurting any stakeholders - whether depositors or borrowers.
  2. Sounds good, can’t comment on how urgent this is
  3. This doesn’t seem urgent to me, rather a very incremental convenience change. Could the team’s time be better spent doing something else? Maybe I’m missing something.
  4. Looks very simple, let’s do it.
  5. bANC (+ available as collateral) - yes please. Giving better staking yields to voters - disagree. This incentivizes people to spam random votes on matters that many of them wouldn’t bother learning about.

On priorities, here are some things that I didn’t see mentioned in the OP, which to me seem impactful/beneficial and could perhaps be worked on first (maybe I’m missing some key flaws):

  • Self-repaying loan - automatically use ANC rewards that are accruing to either pay down the loan or be added to collateral (maybe as bANC). This increases user peace of mind during the loan (they won’t be coming in regularly just to dump ANC and keep the LTV stable)
  • Net 0% APR time-locked loan - if people commit to a loan for some minimum period of time (say 3+ months) we can explore guaranteeing 0% APR. I’m not fully sure if this is possible tokenomics-wise, but if yes this would be a massive marketing win (Celsius offer 1% loans with strings attached, this is radically better - 0% sounds really sexy).
  • Add a bunch of new bAssets so that borrowing can be promoted directly to hodlers of each.
  • Otherwise simplify borrowing UX - enable it directly on other chains, abstract away the bAsset swap steps. Then promote it much more heavily. Even if only sustainable for a period of time, imagine how much awareness all of that can create.
  • Redirect rewards like ANC LP incentives (liquidity no longer needs bootstrapping) and weekly Luna staker airdrops (people don’t need to be reminded about Anchor) to more productive uses. Right now there’s ~90m ANC that could be more helpful when added to borrower incentives.

Meta comment: I’m not a fan of some ideas suggested, in some cases because of desirability, in others because of the degree of priority (if they’re expected to take a full 2 - 3 months). However, your understanding of Anchor is way better than mine and probably anyone else’s.

I’d love to see a sheet with cost/benefit estimates for all of the ideas mentioned here and other longer term ones, to understand what made you pick these to start with. The other day I was discussing this with @bitn8 , I’d be happy to help put something like this together.

3 Likes

I like your suggestions Kamil but I wonder if the self-repaying loan isn’t just automating the dumping process, if rewards are still payed out and sold on the market to repay, then the dumping won’t stop.
See my suggestion above for a dynamic APR on the loan, without paying rewards the protocol would adjust the APR (Borrow APR - Incentives APR = Dynamic APR), and in periods of negative APR the rewards would still be payed out.

I also like the idea of a time-locked loan and maybe there we could add the proposed fee for those wanting to pay early.

Agree with almost all except the 1st point.

Would love to see “Earn” include other Terra Stablecoins instead.

Are you a product manager or something? That was a great perspective.

I also like most of the ideas that @Kamil proposed, with some comments:

  • Self-repaying loan or dynamic APR should be an optional thing that borrowers can choose. We can see how it will work once implemented and see what is the right direction we should go.
  • I think this kind of “active” asset management is more appropriate to be covered by another ANC dependent dApp, i.e. Nexus protocol.
  • New bAssets: Let’s go for it!!
  • I personally prefer not to do any harm on LUNA itself, which is a root of ANC protocol. Maybe it would be a better idea to run a validator node of ANC protocol which utilize some portion of validator fees (3% of 5%) for additional airdrop similar to ORION protocol?

One additional suggestion is let ANC protocol have its own liquidity pool of bLuna-Luna and other bAsset related pools.

Item 1. A 0.1% fee does not appear onerous and shouldn’t discourage borrowing. I’m in favor of making the yield reserve more sustainable.
Item 2. This change is a must; all in for more decentralization.
Items 3 and 4. Both make good sense.

1 Like

I like this idea and also believe onboarding bAssets at a quicker pace would be more beneficial vs. a potential large release in January/February.

Seems that bANC and bAssets in general are the low hanging fruit and could be implemented at a much quicker pace vs. discussions that need to take place for ideas 1-4.

bETH was launched over 3 months ago, I think it’s time to diversify the collateral and leverage IBC and Wormhole since Ryan stated previously that there is now an optimized/more seamless path towards integrating bAssets.

Why wait another 3 months, let’s diversify the collateral and leverage the power of Terra’s cross-chain capability and start discussing the wide variety of potential bAssets!

2 Likes

@ryanology045 thanks for outlining these priorities.

A new Oracle contract seems like a no-brainer to me:

Chainlink and Band paired with other data oracles would greatly benefit the community.

I am struggling with the idea of the “flat % fee on UST repays”. Seems to deter frequent borrowing and repaying, creating a healthy balance on each side.

Redeemers make more sense to me; it seems to promote added liquidity on the Anchor protocol.

What are other ways to capitalize on the increase in user activity? Tiered supplying rates which at the lowest level includes a fee and incentivizes larger unit sizes?