AIP 26: Consolidate Fee Token Pools

Summary

  • Current rewards claiming is inefficient because it is spread over 30 token pools.
  • New system enables smaller fee pools to be converted into a single stablecoin rewards pool.
  • Any staker (100+ sAST) can perform a conversion and earn 1% of the converted value.
  • Claims are configurable by setting “slope” and “max” parameters similar to the existing pool.
  • New rewards pool includes slippage protection and AIP 18 functionality.

Specification

The AIP proposes a new “rewards pool” from which participants who earn points through activities like voting and bounties can claim rewards from a single pool. This includes a “fee receiver” that holds multiple “fee pools” prior to being converted and transferred to the rewards pool.

Fee Receiver

A smart contract will be developed to receive protocol fees in a variety of tokens. Each balance of each token that it holds can be converted by calling a function on the contract, which swaps the balance for (stable)coin using an on-chain AMM. Once swapped, the (stable)coin will be transferred to the rewards pool contract.

The Receiver contract should have a consolidate function which takes in a swapFrom token address and performs an on-chain swap of the selected token balance to a chosen swapTo rewards token. The rewards token is then split

  • 1% of the rewards will be sent to the address of the wallet which calls consolidate
  • 99% is sent to Pool contract(s)

The addresses of the Pool contracts should be configurable by the contract owner. This will allow us to easily setup additional Pools in the future (e.g. for funding Dev work etc). The token to be swapped to should also be configurable, allowing us to change the rewards token easily in the future (e.g. if we decide to use AST as the rewards token)

Rewards Pool

A smart contract will be developed to receive a (stable)coin that can be claimed using points. The conversion of points to coins is based on a function with two parameters “slope” (formerly “scale”) and “max” which is the maximum withdrawable amount for each claim.

Because rewards will be in a single token we propose that slope starts at a value of 10 and max starts at a value of 20%. This means that a claim of infinite points will be able to withdraw a maximum of 20% of the rewards pool and 1M points approximately 10%. This will be similar to current claim rates (slope = 10 and max = 100%) when there are 5 equal sized pools to be claimed from.

This should be similar to the current Pool contract. However, an additional function is required for AIP18 which allows rewards to be compounded back as staked AST.

The new Pool contract will require a restake function which performs an on-chain swap of the chosen token amount to AST, and then sends it to the Locker contract using the stakeFor function.

Team and Budget

Implementation and auditing is to be led by the ConsenSys contributing team. For their contributions to this proposal, Lasse, astholder, VladislavW and Jortmoney will share AIP rewards according to the author.

Rationale

  • We currently have 30+ token pools of which only the largest four are being claimed from. There are rewards left on the table, which conversion solves.
  • Conversions are incentivized so we expect them to be often and at smaller sizes. This will ensure that there are not drastic increases to the size of the rewards pool.
  • While the reward asset is not specified, it will be either DAI, USDC, or USDT, to be discussed among coordinators and the community prior to contract deployment. In the future the reward asset can be set by configuration vote.

Copyright

Copyright and related rights waived via CC0.

Previous version AIP 26 - Consolidation of Tokens from Smaller Reward Pools

Executive Summary

  • Creation of a new Pool contract with a token conversion function - when called, the function converts a certain token pool to a mix of Eth and Stablecoins, which is then transferred to the rewards Pool
  • Anyone can call the conversion function at any time. To incentivize the conversion, a reward is given for the person who calls the conversion (e.g. 1-2% of the token pool to cover gas costs + a little extra). This ensures that any time a pool is larger than a certain amount, it would be converted.
  • At the start, minor token pools will be the first to be converted this way since currently these pools are currently not enabled / worth to be claimed from
  • Claims from the major token pools (wETH, USDC, USDT, DAI) will proceed as usual at present. In the future, these pools may also be converted and consolidated into a common rewards pool in the same way.

Summary

This AIP is consolidated from AIP 21.

AIP 26 proposes to introduce a new Pool contract which will allow for conversion of minor token pools (e.g. LINK) to a mix of ETH and stable coins which could then be claimed as part of the rewards.

Rationale

Currently, there are 31 token pools in the Rewards Contract of which only the largest 4 pools are consistently being claimed from (Wrapped tokens: wETH and Stablecoins: DAI, USDT, USDC).

A conversion function would allow these smaller pools to be converted while consolidating them into a common currency to be claimed from.

Specification

  1. A new Pool contract will be created with a token conversion function.
  2. Token pools which are not being claimed from will be converted and consolidated
  3. An incentive will be implemented for token conversion where a percentage of the converted token will be paid out to the person who calls the token conversion in order to cover gas fees plus a little more. This will ensure that token pools will be converted once it reaches a certain threshold. This will allow consolidated tokens to be streamed into the rewards pool in smaller chunks

Example

Conversion incentive = 2%.
$1,000 worth of Token A is converted into $500 worth of ETH and $500 worth of USDC.
$10 worth of ETH and $10 worth of USDC to be paid to the person who called the conversion
$490 worth of ETH and $490 worth of USDC to be transferred into the rewards Pool

Budget

  1. The implementation of the new smart contract feature should be covered by existing funds and will not need to utilize any budget from the AirSwap treasury
  2. AIP rewards - rewards for this AIP will be split between Lasse, astholder, VladislavW and Jortmoney (ratio tbc)
1 Like

The idea to swap a small balances (for example >$1000 but < $4000) to one of the stable pools is not new and was discussed a few weeks ago. I guess it would be fair if you check a discord and add all participants of this conversation to the contributors.
As Don said not so long ago in Discord, i think that is better idea to add the button with opportunity for anyone to execute the transaction of specified pool conversion to stable one because it costs gas but the pool ETH balance is always zero and autoconversion will need multiple transactions (one to buy ETH and +1 for each pool to be converted that is about $40-100 in gas fees per transaction). Also the autoconversion function force the “fastest fingers” problem to appear again.

Yes this issue was split off from Aip21 which I wrote weeks ago as it was mentioned that we should not be combining multiple issues into a single vote. Happy to split the rewards as always of course.

Have you thought about taking the small value currencies and putting them in compound or something similar where they can earn interest? then the interest can be send to the eth and stable coin pools… that way the small value junk earns us interest…

Also was thinking of that but each compounding transaction would cost a lot of gas

Yeah this seems sensible and a good idea. To avoid a huge spike in one pool. I would suggest consolidating all the small pools into the top 4 pools wETH, USDT, USDC, DAI in proportion of their weighting. So for example

Top 4 pools were as follows:

wETH - $23,000
USDT - $22,000
USDC - $21,000
DAI - $18000
Total of top 4 $84,000

Pools over $1000 equals $12,000. The $12,000 is converted as follows:

wETH - 12,000 x 23/84
USDT - 12,000 x 22/84
USDC - 12,000 x 21/84
DAI - 12,000 x 18/84

I’m not sure as to the reasoning behind being able to call it anytime? I thought it would make sense to do this at fixed times say 1 week after a vote for example (this helps reduce fastest finger first). This is for two reasons:

  1. You may get someone call it just before they plan to claim and if others miss this, the pools are inflated briefly and then claimed by the person calling the consolidation

  2. It requires someone with the authority to consolidate the pools to constantly be checking the communication channels in case someone has called for a consolidation

I might be missing the benefit though?

What if the smaller coin pools were allowed to be claimed on a different scale than the larger coin pools?

If someone is able to claim 10% of a pool based on their points… perhaps any coin that is equal to or less than the average amount that is claimable from the top 3 or 4 coins (or just top 1 coin?)

EXAMPLE
Total Pool = 200,000
User’s Claim Size based on sAST = 10% of a coin

WETH is $40,000 therefor $4000 can be claimed
USDT is $38,000 therefor $3800 can be claimed
WBTC is $37,000 therefor $3700 can be claimed

Average of top 3 claims = $3833.33

Therefor any coin that has a value of $3833 OR LESS can be claimed at 100% by this user.

I don’t want to take credit for this as I’m pretty sure the idea came from @astholder originally, but I prefer the idea of buying AST on the open market with these smaller pools.

That AST could then go back to the treasury.

EDIT: we could potentially spin up our own AirSwap maker that serves quotes for [dust] → ETH/StableCoin at a competitive price to do this?

Would also be possible. But I do think we need to keep a store of stable/ETH in the treasury which is much easier to transact in (e.g. dev payments or otherwise) and less liable to price fluctuations.

Perhaps we could look at periodic AST buybacks if our treasury grows to be quite big in the future?

That works too. It’s either buy & hold AST in treasury now and sell for ETH/stable later, or sell AST for something more widely accepted at the point of using treasury funds for payments.

I like the idea of buying AST with alts but it should go back into the fee pool not the treasury.

1 Like

Infact it should be done steadily / consistently so that there will always be a slow buildup of AST in the fee pool to be claimed !

PRE-POOL EXAMPLE:
5000 USDT
5000 WETH
800 AST
123 ABC (example coins)
43 QST (example coins)

@ every vote any coins with less than X value get converted/swapped to AST and fed back into fee pool.

POST-POOL EXAMPLE:
5000 USDT
5000 WETH
966 AST

Obviously used example coins value as obvious values for sake of argument.

That way people have the option to compound their interest or take profit or whatevs.

The treasury should never hold anything for speculated value imo… other than it’s own currency.

1 Like

Agree with sephrok, if we are not going to just convert smaller pools so we can convert that to AST to let people claim in AST so that there is a big chance they will stake it. All collected fees have to stay in the fee pool, stakers fee are not so huge to replenish treasury at current time, it could be changed in future but not now.

2 Likes

agreed. fee pools are still quite small so I don’t think we should start up the treasury just yet.

maybe at some point in the future (alongside our web app?) - but we will need that as an eventual goal to self sustain

2 Likes

Yea i’d like to see any conversions we do be converted to AST rather than DAI or any other tokens. Seems to be the most “neutral” conversion.

And also could be considered a better investment — investing in ourselves! This is assuming we keep growing the project and it’s value :smiley:

Something to keep in mind and likely plan ahead for regarding the fee pool —

Once we start collecting fees off the BSC network it may change the dynamic of the fee pools available.

We may want to have a top 3 (or 5 or whatever) fee pools on ERC20 network and a top 3 (or 5) on the BSC network.

I.e.

Top ERC20 = ETH, Dai, USDT, AST, etc
Top BSC = BNB, BUSD, etc, etc, etc

Also something up for discussion… fees are much smaller on the BSC network , how will that effect the BSC fee pools? Maybe we only want to consolidate to 1 or 2 there actually? (Or I could be wrong with how i’m thinking about it here… gas fees may be smaller but perhaps Metamask/Airswap fees remain the same? but in that case they wouldn’t remain competitive with other swapping services)

Haha yes, as much as I would love to collect in AST, I think that using a stablecoin would be the most practical approach. Note that the new Pool contract will also be linked to a AST swapping function, which will allow you to collect your claim in sAST!

You are correct about BSC, there is lower gas fees but the metamask/AirSwap fees will likely stay the same. We would most likely do a similar fee pool structure on BSC to mirror that of ERC20. How the lower gas fees might affect our competitiveness is probably discussion for a different forum.

I am a very big fan of using this function to swap, via either an AMM or maybe a Maker, smaller pools for AST.

I fully understand the rationale and practicality of swapping for a stable coin like USDC, as it ensures the reward pools do not loose value. However, as it just so happens, the users who are claiming anything from the pools are already sufficiently committed to AST that they are staking some non-trivial amount of AST. In essence, we are all believers of AST.

Why not, then, create some new, wonderfully beneficial, tokenomics that benefit all sAST holders? If this pool swap function trades for AST, then ALL token holders benefit every time the function is called – as it creates a forcing function for AST price appreciation. Not only would this mean us holders could regularly claim AST from the rewards pools, but our existing stakes would also regularly increase in value.

This is a Win, Win, Win, Win, Win:

  1. Smaller pools are consolidated into a large pool that is worth claiming
  2. AST tokens can be claimed via the reward pools (presently it is rarely worth doing since pool is so small)
  3. Creates a forcing function for price appreciation by creating consistent AST buy pressure on AMMs
  4. AST would be moving from the weak hands that put the AST into the AMMs, and moving to the strong hands of loyal AST stakers who are very likely to convert their new AST into sAST – thus locking up even more AST, decreasing the supply side.
  5. Mechanizes a powerful longterm feedback look for increasing the value of the protocol. As Airswap gets more Volume, there will be more opportunities to swap pools for AST, which increases buy pressure and price appreciation, which steadily puts Airswap on the radar of more users, which creates more Volume, ect…

Swapping to AST benefits all AST holders and the protocol itself on a regular basis. Swapping to stable coins only accomplished #1 above with a little downside protection.

I think we are all in this for the long run, so it only makes sense to put the money where our beliefs are. Swapping to stable coins helps short term reward claimers. Swapping to AST raises the tide for the entire Airswap ecosystem.

3 Likes

Agree but would like to modify a bit:
Just let the main 4 (WETH, USDT, USDC, DAI) pools untouchable and add the option to convert all other pools to AST.

1 Like

I am also in agreement with both @justin and @VladislavW that AST should be one of the primary tokens in the fee pool.

1 Like