[BIP-252] Timeless 50k BAL Grant Application [ve8020 Program]

PR with multisig payload

Author(s): @mcfly
Status: BIP
Date Applied: 2023-03-01
Date Updated: 2023-03-13
Date Ratified: yyyy-mm-dd
Vote Start Date: yyyy-mm-dd
Vote End Date: yyyy-mm-dd
BAL grant amount: 50k BAL

Summary

This grant application requests 50k BAL to be awarded to Timeless as a participant in Balancer’s program outlined in BIP-146, which aims to support all systems involving the staking/locking of 8020 BPT. This proposal follows a successful vote to enable veLIT gauge on Balancer.

Why we qualify

  • Current ve8020 BPT TVL: $8,548,533
  • 90 days fees: $315,129
  • Project is live on Mainnet since June 2022.
  • BAL incentives will go to ve8020 lockers only, as defined in the BIP-200
  • Project treasury will supply 20% of ETH so that no BAL is sold when locked. cf Timeless snapshot vote approval.
  • TVL exceeds value of 25k BAL by 30x
  • Lifetime total revenue earned exceeds ⅓ the value of 25k BAL

More details about Timeless 8020 BPT here.

References/Useful links:

Description

veLIT stands for vote-escrowed Liquidity Incentive Token, it is simply LIT locked for a period of time. veLIT is the core component of Timeless’ liquidity engine, Bunni.pro. This engine is designed to maximize liquidity on Uniswap v3 by creating complex incentivization schemes. Timeless hopes that by launching LIT, other projects will be able to incentivize their token liquidity at a much higher level of efficiency on Uni v3. Additionally, Timeless use LIT and Bunni to bootstrap liquidity in its own yield token markets.

How does Timeless work?

Timeless is a yield tokenization protocol. You can provide assets to Timeless (e.g. 100 USDC) and mint PYT and NYT (e.g. 100 PYT and 100 NYT). The assets will be deposited into a farm, and the yield earned can be claimed by the PYT holders. By holding either only PYT or only NYT, you can build either a long position or short position on yield rates such as stETH or aUSDC.

How does Bunni work?

Bunni is a liquidity engine that was built on top of Uniswap v3. It was initially released in October 2022 as a public utility that represents Uniswap v3 liquidity positions as fungible ERC-20 tokens instead of NFTs. This allows for more complex incentivization schemes to be created for Uniswap v3 liquidity. Since its initial release, Timeless has continued to improve and develop Bunni, turning it into a full-fledged liquidity engine, with improvements to its tokenomics inspired by protocols such as Curve and Balancer. These improvements aim to:

  • Encourage the longevity of the protocol by disincentivizing farming-and-dumping and aligning the interests of liquidity providers and LIT holders
  • Provide the protocol with a large treasury to fund growth and reduce LIT price volatility
  • Maintain a high level of liquidity for LIT

For more information about the tokenomics, please see FOO: Fungible Ownership Optimization: FOO: Fungible Ownership Optimization | Timeless Finance

Specification

Transaction A will be executed immediately.

DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will transfer 50,000 BAL to 0x89f67f3054bFD662971854190Dbc18dcaBb416f6

Then, DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will call allowlistAddress on 0x7869296Efd0a76872fEE62A058C8fBca5c1c826C with the following argument:

contractAddress: 0x89f67f3054bFD662971854190Dbc18dcaBb416f6

This will whitelist the veBAL locking contract to lock veBAL in the system.

Transaction B, to be executed some time later once ETH is transferred by Timeless:

DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will call createLock on 0x89f67f3054bFD662971854190Dbc18dcaBb416f6 with following arguments:

unlockTime: 1712959367 which corresponds to 4/12/2024 (max lock)
minAmountOut: 0 placeholder value for now

Once A is executed and the ETH is sent to the contract we can use tenderly sim to figure out if transaction B parameters need to be edited. This wouldn’t require another vote, just forum post explaining reasoning.

5 Likes

It’s another milestone of confidence between balancer & timeless for which I contribute. Some additional details:

  • Although we are still at the early stage, bunni -our liquidity engine- has had a good start. You can see some statistics from the AURA/WETH on our Dashboard.

  • We have had also for the past week a strong inflow of early DeFi DAOs that are signaling their interest to test&use our liquidity engine (Liquity, badger, piedao)

  • TVL and stats are having some positive traction :

Let’s make this pass to elaborate further down some synergies on yields & liquidity.

1 Like

I encouraged Timeless to make this proposal for two reasons - their pool has been a significant source of protocol fees lately and Balancer governance signaled its desire to engage in a ve8020 incentives program under BIP-146.

One of the great things about ve8020 is that it does not rely on BAL emissions. The merits are so strong on their own that any BAL emissions are just a nice to have, not a requirement. These pools still pay the usual 50% protocol fee of course. This high protocol fee is beneficial in the context of veBAL and ensuring the protocol benefits from the BAL emissions that subsidize most LP’s - however, when BAL emissions are not the driving force or perhaps not even there at all, paying a 50% protocol fee makes a lot less sense.

ve8020 gauges cannot earn AURA rewards so it’s not economic to bribe for them. Timeless could look to acquire their own voting power but that adds another expense in addition to the 50% protocol fee they’re paying. This gets into the main reason I think a ve8020 incentives program is worthwhile - to give these projects a reason to pay the protocol fee. The milestones were designed in such a way that BAL is only paid out when we earn protocol revenue to a significant degree. The BAL is only paid once but the protocol fee will continue to be paid forever. My goal as I contribute to biz dev/partnerships is to lay out the red carpet for the next Timeless and the one after that, etc. because while it does cost treasury BAL it won’t cost nearly the $ in emissions that we’re earning in fees.

There’s several more ve8020’s coming and hopefully many we don’t even know about yet. I can see a future where ve8020 pools are a primary contributor to Balancer earning more in revenue than we spend in emissions. I don’t think we need to be picky - Timeless has been around for almost two months, $270k lifetime fees generated (50% goes to Balancer), last protocol fee sweep LIT accounted for nearly 1/3rd of passive veBAL fees. That last one is a number that hits home for auraBAL enjoyooors - we could see a significant increase in passive veBAL fees (non-core pool fees) as we see more ve8020 systems come online. More passive fees, more auraBAL yield.

It’s painful to dilute existing veBAL holders by releasing BAL from the treasury. My salary as a contributor is 100% max locked in veBAL so this hits my bottom line too. I still feel the positives outweigh the negatives. My big fear is if we’re resistant to support ve8020 adoption with this incentives program or making it hard to get gauges, projects might go hunting for alternatives. The obvious one is to simply use Balancer v1 where there is no protocol fee (Aave has been using an 80/20 there just fine for years!). I imagine it’s also only a matter of time before another DEX realizes the market potential here and starts offering 80/20 pools. My sense is we’re on the verge of a huge ve8020 adoption wave and I believe we should do everything in our power to encourage it and keep it here on Balancer v2.

9 Likes

As a member of the timeless community, I share your excitement about the balancer 80/20 pool and the potential for ve8020 incentives program. Being an early tester of this platform is a great opportunity for us to showcase the value of this model and contribute to its growth.

One of the things that excites me about ve8020 is its protection from IL which makes independence from BAL emissions easier imo. This means that the pool can thrive based on its own merits, without having to rely on any external subsidies. While paying the usual 50% protocol fee, ve8020 pools can benefit from the strong fundamentals of this model, making it a promising option for LPs and for veLIT holders!!

I agree that the ve8020 incentives program is a worthwhile investment for Balancer because it can encourage projects to pay the protocol fee, thereby generating more revenue for the platform. The program’s milestones are designed in a way that ensures BAL is paid out fairly. This means that the program can help Balancer earn more revenue than it spends on emissions, which is an exciting prospect for both sides!

I share your vision of a future where 80/20 pools being a primary contributor to Balancer’s revenue. With several more 80/20s coming the future seems bright! It’s nice being early on this and the community is excited to enjoy the benefits it provides.

While diluting existing veBAL holders by releasing BAL from the treasury may be painful, I agree that the positives outweigh the negatives.

It’s an exciting time to be a part of the Balancer <> Timeless community, and I look forward to seeing the positive impact we can make on the platform’s growth and success.

1 Like

You’ve made a compelling case, brother. We’re here to support your vision.

Numbers become meaningless when quoted in BAL, which is why I recommended that we standardize to USD values on forum going forward. At today’s price, this is a $322,500 grant. At full value, this grant will be $1,612,500.

The numbers are relevant because BIP-146 was approved in dreamier times. What’s changed since then is the advent of the Balancer budget crisis, resulting in a noticeable move towards fiscal conservation. As you’re aware, we’ve forged a good working relationship with some of the SPs, helping them extend runway by sharing resources. I understand the logic here–you believe the income flowing in through 8020 will exceed outgoing costs. However, the same claim regarding long term value capture per BAL presently spent can be made for the SPs or Maxis as well, the only difference being that with the 8020 program the numbers are more immediate, thus feel more real. I believe it’s discouraging to those SPs and lessens the importance of what they do, when they’re scrambling to find a few K in costs savings in one pocket and you have a few hundred K floating out in another.

That being said, we respect your passion and would like to find a way to make this work. Perhaps the following suggestions will be helpful:

  1. BIP-146 quoted 50K @ 5.50 for a total of 275K. It seems reasonable to keep that USD total fixed, which would result in a 42.6K BAL grant at current prices.

  2. BIP-146 suggests that grantees provide the ETH for the 8020 pair, so no BAL is sold. It’d be ideal to make this a hard requirement. This will discourage freeriders and grifters.

  3. As the BAL granted is to be used solely for voting, it seems logical to make this veBAL non-custodial, meaning that voting rights would accrue to the grantee in perpetuity, but the BAL would be held in a separate smart contract owned by Balancer. The lock could be wound down and privileges revoked through governance as needed. This minimizes the risk of projects redeeming granted BAL to their treasuries should they pivot away from 8020. This will require a new smart contract, which we’d be happy to help write.

  4. It may be best to revisit the TVL requirements on the lower stages, updating them so that entry remains frictionless, but the KPIs are a bit more firm.

Hey Franklin,

Thanks for your insightful feedback on the proposed grant request. While I appreciate your suggestions about standardizing to USD values and revisiting the TVL requirements for the lower stages, I have some concerns about the proposal to hold the ETH provided by grantees in a separate smart contract owned by Balancer.

My concern is that this approach might make the grant program feel less like a true grant program and more like a lend-lease program to another DAO. Holding the grantee’s ETH “hostage” by Balancer governance could also discourage the current discussions we have in our Discord to make it happen, and could also discourage other grantees from participating. We’ll be organizing an official vote tomorrow (March 8) on the Timeless’ Snapshot to provide the required ETH allocation from our treasury to make sure the veBAL voters are reassured about our intentions.

As a supporter of Balancer and its technology, we want to ensure that this grant program is successful and mutually beneficial for both projects. Our contributions will provide tremendous value to Balancer revenues, as @solarcurve has already pointed out, and we see this as just the beginning. With our 8020 pool, we generated $276k in less than 2 months, and - correct me if I’m wrong - from which 50% or $138k went directly to the Balancer community. In that period of time, the revGen represents 44% of the current value of the 50k BAL ($311K). Give us 2 more months, and we’ll probably be able to make this grant net profitable for the Balancer community.

Instead of holding the ETH provided by grantees in a separate smart contract, I would suggest sticking to your proposal of providing the equivalent dollar value in BAL at 5.5USD/BAL or the full 50k BAL promised in the grant description. Your call. In my opinion, this approach would maintain the true grant nature of the program and would not discourage potential grantees from participating.

I hope that we can work together to find common ground on this issue and continue to build a strong partnership between our projects. Let’s make this happen!

6 Likes

Hey, brother, thanks a lot of your detailed reply! You made great good points. I’ll duly pass on your response to the delegates, and will follow up if they have any additional questions.

3 Likes

I propose this thought as a compromise around the grant tokens and locking.

Part of this governance could include whitelisting a multisig to hold and vote with the awarded veBAL (which would be better anyway for a DAO). The multisig would be wholly controlled by timeless.

In the event that there was a “need” whatever that may be, the EmergencyDAO could remove the whitelist on the multisig, thereby removing it’s ability to receive boost or vote, but still allowing the eventual withdraw of the tokens by Timeless.

I personally do not feel such a configuration is necessary, particularly in this case where, as you point out, the fee revenue(past and future) is already almost sure to cover the cost of this first 50k in grant funding.|

Maybe you should consider a multisig whitelist anyway so you don’t have to lock the tokens in an EOA. That can be tricky for a DAO.

2 Likes

Make sense, if everyone agree with this option, we could use the Timeless Gov Treasury MS (address: 0x9a8FEe232DCF73060Af348a1B62Cdb0a19852d13). Lemme know and I’ll update the BIP accordingly.

4 Likes

Hey everyone,

Some updates on Timeless:

  1. Our proposal to supply the ETH side for veBAL was successfully adopted by the Timeless gov: Snapshot
  2. Our LIT/WETH Balancer pool has continued to perform well, and we are proud to report that it has crossed the 300k USD mark in fees, currently at 307k USD: Balancer

Knowing the above, how could we move forward with our application? We would also like to discuss a potential inclusion of the whitelisting of the Timeless Gov Treasury in the proposal. We believe that whitelisting the Treasury will help keep veBAL in control of all parties and at the same time enable it to interact with Balancer gauges.

We’re excited to continue working with the community to achieve our shared goals.

3 Likes

Hey, brother, the Aura delegates have no follow up questions/comments. Feel free to work w/ the Maxis to move this forward at your convenience.

1 Like

Thanks for your reply. I’ve updated the BIP to take in consideration the MS whitelisting.

1 Like

In BIP-146 it is written that:

Please note that only TVL and revenue from locked liquidity will be counted towards the milestones.

Would you point me towards the data where I can see the liquidity being locked (Duration, amount, etc.), please.

The Timeless treasury holds 52.67% of the total TVL, and the Timeless voting escrow contract holds 42.12% of it. We can safely consider that the POL is similar to a locked supply. It’s not in the interest of the treasury to lock its POL for its own vetoken and also not in its best interest to withdraw it. Even if it’s technically possible, there is no incentive for the veLIT voters to approve such a thing, as the whole system depends of the 8020 voting escrow and LIT liquidity. For the remaining 42% in the voting escrow, I don’t have the exact lock duration average currently. I’ll dig into it.

Here are some helpful links for reference:

2 Likes

Thanks for the proposal @McFly and for all the interest Timeless has had so far in Balancer. That’s really appreciated!

My biggest fear with the way this proposal is stated is that the 50k BAL goes directly to Timeless’ possession and then not much can be done to guarantee its intended use (perpetual voting on your ve8020 gauge if I understood correctly). In other words nothing prevents you from stopping unlocking and then withdrawing the underlying BAL and WETH in a year to your treasury. I’m not saying I distrust you by any means, I’m just acknowledging that things are bound to change in such a fast-moving space and maybe you are compelled for some reason to do this.

It’s also possible that both Balancer and Timeless agree for whatever reason it makes sense for you to stop re-locking, in this case I firmly think you should keep the ETH you added (it will be constantly rebalanced to 20% of the pool so it might be more or less than you added depending on how the pool evolved) and Balancer DAO should keep the BAL.

There are many ways how this could be implemented, but I would argue this should not be unilaterally controlled by either Timeless or Balancer so it’s trustless. A quick and trustless idea that comes to mind is a simple contract that:

  • has a permissioned ve lock function (only Balancer and Timeless can lock/relock)
  • gauge voting is controlled by Timeless
  • can withdraw the 8020 BPT into underlying tokens
  • gives infinite allowance on BAL to Balancer governance and infinite allowance on LIT to Timeless governance so both can take back their tokens.

Curious to hear your thoughts.

3 Likes

Hi Fernando,

I understand your concerns about the potential risks involved in the current proposal for the 50k BAL, and I appreciate your suggestion for a trustless solution to ensure the proper use of the funds. The custom contract you proposed could be a viable solution, but it would require resources and time to develop, test, and deploy. Additionally, it would be important to ensure the contract’s security by auditing it.

I was wondering if the Balancer team has already developed a similar contract that could be used for this proposal? It would be helpful to know if there are any existing guidelines or processes in the Balancer grant program for developing and auditing such contracts.

Thank you for bringing this up, and please let me know if you have any other ideas or concerns.

Hi guys, dev from Aura here. Just wanted to chime in with regards to the feasibility of this contract that @Fernando is suggesting. IMO having a contract to manage this agreement is a good idea long term and could be done pretty simply.

I’ve put together a little scratch/pseudocode of an approach that would work based on some work done in the past. It basically covers the core concepts: allows the project to lock, vote and claim rewards, and then allows balancer governance to wind down the lock.

Specification

A single contract that supports two roles:

  • balancer
  • project

The project role would have the ability to:

  • Increase their lock time
  • Increase their lock amount
  • Vote on gauges
  • Claim fees and relock minted BAL
  • Some ability to forward voting incentives

The balancer role would have the ability to:

  • Stop the lock being extended
  • Release the locked tokens

Both the project or balancer can:

  • Redeem the BAL/ETH once the lock has been released

Pseudocode

contract VeBalGrant {
    /* ----------------------------------------------------------------
       Project Functions
    ---------------------------------------------------------------- */

    /// @notice Increate amount locked in veBAL
    function increaseAmount(uint256 amount) external onlyProject whileActive {
        projectLockedAmount += amount;
        VOTING_ESCROW.increase_amount(amount);
    }

    /// @notice Increase veBAL lock time
    function increaseTime(uint256 to) external onlyProject whileActive {
        require(!queueRelease, "release queued");
        VOTING_ESCROW.increase_unlock_time(to);
    }

    /// @notice Vote for a gauge weight
    function voteGaugeWeight(address gauge, uint256 weight) external {
        if(active) {
          require(msg.sender == project);
        } else {
          require(msg.sender == balancer);
        }
        gaugeController.vote_for_gauge_weights(gauge, weight);
    }

    /// @notice Claim BAL from the veBAL gauge
    function claimBalAndLock(address to) external onlyProject whileActive {
        balMinter.mint(VE_BAL_GAUGE);
        _lockBal();
    }

    /// @notice Claim fees
    function claimFees(address distro, address to) external onlyProject whileActive {
        IFeeDistributor(distro).claimToken(address(this), token);
        IERC20(token).transfer(to, IERC20(token).balanceOf(address(this)));
    }

    /// @notice Forward HH voting incentives
    function forwardIncentives() {
        /* ... */
    }

    /* ----------------------------------------------------------------
       Balancer Functions 
    ---------------------------------------------------------------- */

    /// @notice Create the initial lock
    function createLock(uint256 amount, uint256 unlockTime) external onlyBalancer {
        BAL_ETH_BPT.approve(escrow, amount);
        VOTING_ESCROW.create_lock(amount, unlockTime);
    }

    /// @notice Queue a release to stop any new locks
    function queueRelease(bool queued) external onlyBalancer {
        releaseQueued = queued;
    }

    /// @notice Release veBAL lock
    function release() external onlyBalancer {
        VOTING_ESCROW.withdraw();
    }

    /* ----------------------------------------------------------------
       Shared Functions 
    ---------------------------------------------------------------- */

    // @notice Send BAL and ETH share back to project/balancer
    function redeem() external onlyBalancerOrProject {
        BAL_ETH_BPT.transfer(project, projectLockedAmount);

        _exitBalEthPool();

        uint256 balBalance = BAL.balanceOf(address(this));
        uint256 ethBalance = WETH.balanceOf(address(this));

        BAL.transfer(balancer, balBalance);
        WETH.transfer(project, ethBalance);
    }
}
5 Likes

Thanks so much for this @phijifry, appreciate you spending time even creating pseudocode for it. This is exactly what I think we’d need IMO.

1 Like

Thanks guys for your insights. How should we move forward if everyone agree that it’s the best path for handling grants?

If this custom code would take a long time to write, check, test, and audit, would it be wise to go for a simpler route?

Ultimately the Balancer team wants to avoid predatory grants where the protocol could just dump the BAL. Would it be possible for Timeless to offer some sufficient amount of LIT tokens to be held in trust by the Balancer team, thus mitigating that risk?

3 Likes