1. Summary
Astroport incentivzes certain liquidity pools (LPs) by emitting $ASTRO tokens who provide liquidity to those LPs. Per Astroport’s documentation, Astroport governance will eventually allow xAstro stakers to vote on which LPs obtain the most $ASTRO emissions (see Calibration - Astroport).
My proposal is to add an additional layer on top that would allow anyone (namely, other protocols) to pay “bribes” to voters to vote for particular LPs. For example, Apollo might offer a $100k UST “bribe” to anyone who votes for the Apollo-UST LP. The $100k UST bribe would then be distributed amongst all of the people who voted for the Apollo-UST LP, in proportion to the # of xAstro tokens that they voted with. These bribes are effectively another form of yield paid to xAstro stakers.
Per Astroport’s documentation, the votes occur every two weeks (and each voting period determines the $ASTRO emissions for the next two weeks), meaning that xASTRO holders can expect to receive bribes every two weeks from the protocols that went to incentivize their own LPs.
Other dex’s that have implemented this feature have seen their dex tokens explode in value. And for dex’s that don’t implement this “bribe” feature, inevitably another protocol comes along and does it (e.g. what Convex did to Curve), which results in the other protocol capturing a lot of that value (e.g. people fighting over Convex tokens instead of Curve).
2. Case Study / Background
One of the DEX’s in the Fantom ecosystem, Beethoven (beets.fi) announced that they’d be implementing their gauged voting + bribing system in late December (when their token was trading around $0.15) and fully implemented it in February. Since then, the token has increased to a high of $1.30. (DEX Screener). Notably, this increase is in spite of the ecosystem’s native $FTM token going down in value by about 50% from mid-January to present (DEX Screener).
One of the beets.fi community members keeps a spreadsheet showing how the past voting rounds & bribes have played out.
(See Beetoven Bribes - Google Sheets). Here’s how the last round went (the “Vote 2” tab in the spreadsheet):
One protocol offered $6,350 in $USDC stablecoins for every 1% of the vote that went to their LP. They ended up capturing 4.66% of the vote, meaning that they paid out $34,735. Not bad.
Another protocol, Statera (which isn’t even native to Fantom), took a different approach: They’d been steadily acquiring $BEETS (the dex token, equivalent to $Astro), and offered 10,000 $Beets for every 1% of the vote they received. They wound up with 18.36% of the vote, which meant an overall payout of $168,192 worth of $BEETS.
Taking all the bribes into account, as well as looking at the # of fBeets (xAstro) holders that voted, the average payout was 2.6 cents per fBeets (see cell 21:L of the spreadsheet). fBeets was trading at ~92 cents back then, so the average ROI was 2.8% over a two-week period. If you extrapolate that out over a year, the APR would be 2.8*26 = 72.8% just from bribes alone. That’s on top of the APR you get from staking $fBeets as a governance holder.
On top of all that, the protocols that participated in the bribe wars saw their own tokens shoot up in price. If a protocol acquires a lot of votes, then their LP ends up having a higher APR (due to more $Beets emissions), which encourages people to buy that protocol’s token in order to farm those high APRs. And since stacking $Beets gives you more votes, which means more voting power (for protocols) and more bribes (for users), people continued to hold onto the $beets rather than dumping.
I think a similar system would play out really well here. There are a lot of new protocols popping up $Astro, many of which have limited liquidity. They would benefit from being able to issue “bribes” in order to incentivize people to deposit in their LPs, and the whole “bribe wars” narrative would also serve as a useful marketing tool.
And for $Astro holders, the bribe mechanic makes $Astro insanely valuable. Staking more $Astro means you get more votes, and therefore a larger share of all bribe payouts. On top of that, protocols will be trying to buy up $Astro directly so that they have more control over the votes.
3. Proposed Implementation
As discussed above, Astroport is already implementing the gauged voting system, so we just need to implement the bribing system. (Note: One small tweak to the gauged voting system would be to make it so votes are reset every two weeks, and xAstro stakers need to re-decide which pools to vote for. That helps with maintaining active involvement, which is important for the bribe wars to play out. Currently, the docs say that your votes will stay the same each period unless you manually change them, which incentivizes people to stop paying attention to their votes.)
Here’s how I’d propose implementing the bribing system:
Create a new page in the Astroport Assembly page called “Voter Incentives” (or some catchier name). The page would look similar to the “Pools” page in that it would list all of the available LPs. However, next to each LP would be a button called “Add Incentives” that anyone can click on. After clicking on the button, they get a pop-up that allows the user to select any number of tokens from their wallet to deposit. Those deposited tokens would then serve as a “bribe” on that LP.
Voters who vote for that LP receive all of the deposited bribes, paid out proportionately based on how much xAstro they committed. (For example, if the xAstro you voted with was 10% of the total # of xAstro used to vote for the Apollo-UST pool, you’d get 10% of all the bribes from that pool).
For the voters, the “Voter Incentives” page would also display all of the current bribes (in a column called “Current Incentives” (or some other catchy name). The bribes would show up next to each of the LPs (after the “Add Incentives” button). For example, if Apollo decided to bribe their pool, then the Apollo-UST LP might show a bribe of, say, 100,000 $APOLLO + 50,000 $Astro + 10,000 $UST.
*Bonus Addon #1:* Let protocols offer a bribe that adjusts based on how many votes are cast for the protocol. For example: "we'll pay out $5,000 for every 1% of the vote we get." Protocols obviously love this because then they don't lose as much $ if it turns out that no one voted for them. On the flip side, if they're already getting lots of votes, users will continue to be incentivized to vote for them because the pool of bribes keeps increasing, rather than there being a fixed pool that gets diluted as more and more people vote for it. This has been the most popular type of bribe in the Beethoven bribe wars.
I think this feature would be part of the “Add Incentives” popup. There’d be a tab (or “Advanced Options”) toggle that brings up an option to pay out bribes per % of votes acquired. The user would still need to deposit the total amount upfront, and the “Current Incentives” column would make clear that a total of, say, $50k UST is being offered, paid out as $5k UST per 1% vote.
Over time, as $UST continues to grow and the Terra ecosystem becomes more integrated with other chains, we can see protocols from other chains coming in to participate in the $ASTRO wars as well, simply because there aren’t many dex’s that give protocols this ability to attract liquidity.
4. Considerations
Potential gaming of the system: Since votes occur at a set time every two weeks, we might see a situation where people buy up $ASTRO right before a vote to get bribes / influence voting, and then dump right after. This isn’t ideal. One way to get around this would be to take a random snapshot 1-3 days ahead of the vote and use that snapshot to determine how many votes each user gets (and how many bribes they can receive).
**Bad actors**: One potential giga-brain strategy would be for someone to accumulate a ton of $ASTRO, then create their own bullshit LP consisting solely of coins they minted for themselves (e.g. $DO and $KWON). They'd then deposit their $DO and $KWON into the LP and, since they're the only one with liquidity in that pool, they'd get 100% of the $ASTRO emissions. This would potentially allow them to continue increasing their share of $ASTRO allocations over time (because more and more of the future $ASTRO emissions would go to them), and ultimately allow the bad actor to gain control over the protocol. **NOTE: This can happen even without the bribing system, and the bribing system would actually help prevent this by incentivizing others to participate in active governance.**
One way to fix this would be to allow “antagonistic voting,” i.e., people can also use their xAstro to vote against a particular LP getting emissions. That way, if a bad actor pursues this strategy, then everyone else would vote against him, and he’ll wind up having bought a ton of $ASTRO for no benefit.
5. Community ask
The purpose of this proposal is to gauge community interest. It’d likely require a significant amount of dev work and audits to make sure it works properly, so it’s not worth bringing up to them unless the community is actually interested in this. If everyone is silent, the devs will (rightly) assume that no one really cares about whether or not we have this system in place, so it’s not worth doing. Accordingly, if you like this idea, please reply below.
Conversely, if you see problems with this idea (or my proposed implementation), or have suggestions for how to do it even better, please share your thoughts as well! The more brains we get involved, the better the protocol will be.