Getting more LPT into the hands of node operators

Hi all. One of the top priorities that the network would benefit from addressing is getting more LPT into the hands of high performing node operators - those who are running GPUs on the network and are performing reliable transcoding work. More LPT for these node operators would:

  1. allow node operators to lower prices because of the offset in value that the additional LPT is earning - making the network cheaper for broadcasters and attracting more demand.
  2. make high performing node operators even greater committed stakeholders in the future growth of Livepeer - encouraging greater ecosystem contribution and collaboration. When it is only fees that are earned, it is very competitive. But when there is also LPT on the line, then everyone wants what is good for the network as a whole.

Today there are over 50 nodes performing valuable work, but less than 20/day from this group calling reward to earn their LPT.

This is supposed to be enabled by the daily reward calls, the reward cut parameters, and the ability to attract delegators through the sharing of earned fees, however there are a few roadblocks that are preventing this from achieving its full potential.

  1. Gas prices are high, and therefore calling reward is often unprofitable if the node hasn’t attracted a lot of delegated stake.
  2. Attracting stake is difficult if the node isn’t calling reward already reliably (chicken + egg problem)
  3. Delegators have high transaction costs, and a tough UX to move stake around.
  4. It is not clear to delegators why they should move stake and how they may be helping the network. Even when it is in their economic upside to do so.

So what can we do about it?

This thread is the beginning of a discussion as to what we can think about doing to help solve the challenge of getting more stake into the hands of high performing node operators. The solution here doesn’t come from a single change or upgrade through governance. It is likely a combination of:

  1. Scaling work - to reduce the costs of reward calls and staking actions.
  2. Product work - to make it easier to view the economic benefits of moving stake around, and to make the UX of splitting stake across nodes easier.
  3. Community awareness and education - can we as a group focus on a goal and take collective operational actions to get stake to move towards higher-reward-cut-but-high-performing nodes to allow them to call reward profitably? Does this help the network?
  4. Protocol updates and governance - should the community consider governance actions to actually effect the way that inflationary LPT is distributed?
  5. Extra-protocol operations - should DAOs or Grant nodes help step in to solve this problem by distributing LPT outside of the protocol to those who are demonstrably performing well?

I’d love to hear people’s ideas here.

Some people have suggested showcasing nodes sorted by “yield”, in a more DeFi-esque style. Because the yield on inflationary LPT is pretty constant across nodes, the highest yield performers would be the ones with the greatest share of fees earned and lowest existing stake. Yield seeking delegators would move lots of stake onto these nodes to chase the future earnings, and then as more stake comes in, fee share could be lowered, and some would move onto other nodes, finding a more distributed equilibrium with roughly proportional stakes. Rather than a skewed stake distribution like exists right now.

Other suggestions are just to focus on L2 scaling to make reward calls close to free, and make it easy for delegators to move stake for free in seconds through good UX.

Another idea is to rally the community around the goal of activating X node operators to be able to profitably call reward each day, and to see if we can collectively pull it off through shared awareness and action.

What do you think?

2 Likes

hello,

I don’t know if it’s possible but may be you can do something again Orchestrators who did no more transcoding job since several weeks, and just call reward (not always) because they have thousands of LPT on there node.
I don’t know if you can move by yourself there stake, or move them out of the top 100 (cause no transcoding since several weeks) and force delegators to stake with another one.

Great subject!

I think the priority should be the L2 scaling.
With that upgrade, all orchestrators will be able to call LPT rewards on a daily basis and delegators would already find it interesting to move their stake to low-LPT high-performance orchestrators (better share on the fee cut + attract more work/fees).

I agree that computing a reliable yield per orchestrator would result a natural and fair equilibrum for the ecosystem as delegators would “fill the gaps”.
But if you include the orchestrator’s earned fees in the formula, you will worsen the (already huge) effect of the lottery system: a lucky orchestrator would get a better yield and thus more stake.
If so, I believe the lottery system should be fixed first (same ticketValue, more winProb, less faceValue). That would result more transactions but could the L2 scaling solve that problem?

During today’s community call we briefly discussed this topic and also showcased a dashboard with minimum stake requirement data for profitable reward calls that can be used to help with:

  • Spreading awareness amongst orchestrators of when it is profitable to call reward
  • Tracking progress with increasing the # of orchestrators that can profitably call reward as milestones around scaling, product, etc. are hit

The dashboard can be found here.

The graphs highlighted on the call were:

  • “Min Stake Current Round”: A graph of the estimated minimum stake for different rewardCut values in the current round for profitable reward calls
  • “Min Stake Per Round”: A graph of the estimated minimum stake for different rewardCut values in the past 30 rounds for profitable reward calls

The rewardCut values used in the above graphs right now are: 100%, 50%, 25%, 10%, 5% and 1%. The minimum stake values reflect the minimum total stake of an orchestrator which includes the orchestrator’s self-delegated stake as well as the delegated stake of its delegators. The calculation used by the graphs right now currently only consider an orchestrator’s rewards from its rewardCut and do not consider the orchestrator’s self-delegated stake (which would earn a portion of rewards minted by a reward call as well).

At the moment, you can query the # of orchestrators that meet a particular minimum stake requirement by querying the subgraph. The query would be:

{
      transcoders(where: { active: true, totalStake_gte: minStake }) {
        id
        rewardCut
        totalStake
      }
}

where minStake should be replaced with an actual minimum stake value i.e. “2000”, “3000”, etc.

For example, I just queried and recorded the # of orchestrators that meet the minimum stake requirement for the different rewardCut values in the current round:

rewardCut = 100% rewardCut = 50% rewardCut = 25% rewardCut = 10% rewardCut = 5% rewardCut = 1%
34 34 33 32 25 11

As @Wiser mentioned, the protocol is currently paying thousands of dollars (in LPT) per round to Orchestrators without transcoding capability. So instead of spending additional funds, it would be better to redirect those inflationary LPT to the Orchestrators that actually help the network.

One (a bit more extreme) option would be to distribute half of all inflationary LPT to nodes that are able to transcode. There would be a minimum of e.g. 1 LPT distributed to each performing O to compensate for the daily reward call - but then also make the check-in a requirement to receive that LPT, otherwise you could just setup O’s and collect LPT.
The remaining LPT would be distributed proportionally according to stake (but also only to the performing O’s). The other 50% of the inflationary rewards are distributed “normally”.

With this we would solve the reward call problem while also giving a clear incentive to node operators to perform well AND to stakers to bond to good performing operators (otherwise their reward is halved) - with no extra cost to the protocol (and Livepeer Inc.).

However, the implementation of this would probably be very tricky and can’t be done in a completely decentralized manner. E.g. who tests the performance of the Orchestrators and who writes the results to the blockchain to calculate the distribution? A pragmatic approach would be to let Livepeer Inc. collect the results of their test streams and provide a list of performing Orchestrators as a payload to the blockchain (e.g. within the “start round” transaction").

But the question remains if the L2 impementation is not easier :slight_smile:

I would like to highlight that even in an L2 context if even non-performant Os are still calling reward and smaller Os can now also call reward that the stake distribution won’t necessarily shift towards performing O’s.

However less transaction costs could bring a more fluent delegation market in which you could see stake move towards performing O’s more than it does now.

I’m thinking whether we should we nuance this to how to improve the LPT/stake distribution towards performing nodes and align their incentives with the network long-term.

I think in the discussions about non-performing nodes we should all remember a couple things…

  1. You can’t prevent “self dealing” or “faking work” in an anonymized and non-sybil-proofed network. So any constructs where you need to verify who’s doing real work require identify or trusting a party to make that call. A node could always send themselves a winning ticket very easily to give the appearance of earning fees.

  2. If rewards are tied to fee distribution, then it just becomes a game to send fake fees around in order to maximize rewards.

  3. Delegators are going to act in their own self interest - often to maximize their own LPT returns. Ideally it’s in their interest long term to also ensure that good node operators are long term committed through LPT, but it’s probably hard for them to internalize that and calculate that tradeoff, relative to simply maximizing short term LPT by staking towards a node they’re running that isn’t doing anything other than calling reward.

So based upon the above, it leads me to start thinking about some sort of protocol mechanism that introduces just a little bit of burden and risk for those taking the lazy route, such that it actually becomes in their own self interest to stake towards a high performing node. For example, consider:

  • No winning ticket redemption for 60 days, a node gets deactivated and can’t reactivate for 10 days. Values just example parameters

A delegator would risk losing 10+ days of rewards by sticking with a non performing orchestrator.

Yes, a node could fake a winning ticket redemption to stay in the set. But is it easier to do that, or just to move stake towards a node that will actually help the network that will reliably stay in the set? Especially if coupled with a community campaign to educate these users about the protocol change, and the role they have as delegators to help the network long term. And a change to the explorer that showcases highly performing nodes up top? We may just need a small way to spur users into action, rather than a major incentives overhaul.

Livepeer could also introduce the “pool saturation” protocol that other successful POS systems have implemented such as Cardano and Polkadot.

It is basically just diminishing returns on LPT rewards for O’s over a certain saturation point.

Example:
Current LPT Bonded - 11,916,043
divided by 100 (max # of O’s) = 119,160

Therefore:

Saturation point is 119,160 LPT

O’s over the saturation point receive reduced LPT rewards, incentivizing redistribution to other O’s and creates a more decentralized system.

In Cardano this is known as the “k-parameter”. The ideal number of target saturated pools for proper decentralization.

The number can be whatever we vote on, ie. 20, 50, 100. At least 20 would help keep pools under 595,802 LPT.

Furthermore, this is also an easily adjustable parameter that could get Livepeer past the 100 O limit if desired, if we want to incentive more O’s to join the network, just lower the saturation point and you immediately incentivize new nodes to join.
If a large O finds this unfair, they can split into 2 O’s and continue their operation. It forces delegators to consider who they delegate to anytime the parameter changes.

1 Like

I may be wrong but it seems that one big issue is trust from delegators towards unknown/new orchestrators.

Even today, the top delegated-stake Os are taking a huge part of the LPT reward from their stakers and some do not even transcode. How is that possible?
For the big delegators, one move to a high performance O, for a symbolic tx cost, could result almost instantaneously into:

  • more yield from their stake (considering the target O lowers the reward cut, very likely!)
  • more fees from transcoding (as the increased stake to the O will drag more work and eventually more fees)

Yet noone moves.
Maybe delegators are simply comfortable/safe with an O that just “does its job”, even if the yield isn’t as good as it could be.
With no guarantee that moving their stake to another O will result at least the same yield/security, why take the risk?

Then why not dropping the “reward cut” and introduce a “minimum reward amount”.
At each round, if the new LPT for an O is above that amount, the reward call is triggered, the O receives that amount and the delegators share the rest.

  • the trust issue would be solved (no risk that an O “forgets” to call reward/update its cut)
  • the O operator is protected from calls that are not profitable
  • a well located and high performing O would still be favored due to the additional fees it receives
  • if an O sees its delegated stake double, he will keep the same LPT reward but will get more fees from the additional work he will receive

Depends on your definition of successful, but if you include decentralization I’d argue that currently no dPoS system is really successful.
As you already pointed out, the only thing that happens if you include such a saturation factor: Larger nodes will split their Transcoders to multiple Orchestraters (even you already have 2 different O’s). More nodes != more decentralization if all the nodes are in the hand of a few players.

Also, Livepeer has a totally different system. It doesn’t need a lot of independent nodes for security, instead the amount of LPT staked will give the broadcasters security.

The 100 O limit is also not fixed and can be adjusted if desired - as far as I know it does increase the daily reward call (that does the accounting) since more Os = more accounting. That’s why there even is a limit.

@galmiza : I did some on-chain analysis once and came to the conclusion that the top O (0x9c1) and also 0xe0a are institutional and belong to the same group. They move their stake around from one O to the other and the staking addresses have no activities on weekends etc.
But I don’t doubt that there are also a number of smaller stakers that bond to the top O simply because they have no idea how the reward distribution works and just assume that #1 = good. Maybe something simple as an explanation of the most important factors right within the staking UI could help with that.
But you also have to consider that most stakers are lazy - they stake once and then do a check in every 6 months or so

1 Like

I’m still fairly new to running a node on the network, but it’s my understanding that the Price/Pixel that an O is willing to do work isn’t a large (or possibly not even considered) factor in the selection process for receiving jobs. Is there a reason for that decision?

Being new to the network I would be willing to do work for a substantially lower fee to win jobs as my GPUs are just sitting doing nothing most of the day. If I am able to get more work and earn fees, I would be able to justify calling rewards daily which and have a record of earning fees which would give confidence to delegators to stake with newer Os. As an added bonus it would make Livepeer an even more cost effective solution than it is already for broadcasters and potentially bring in more customers/work benefiting the entire network.

Can Chinese miners get LPT rewards?

It is very interesting to read this thread in the context of Performance DAO.

The DAO is forming, and may require an LIP in order to come into existence.

tl;dr: divert n% of LPT inflation into a treasury, controlled by a DAO

Current discussions are around:

  • How to measure which Orchestrators are “Top Performing Nodes”.
  • How often to measure Orchestrators, how often to reward
  • Who should be responsible for measurements - i.e. members of the DAO / human Oracles

Join in on the Performance DAO channel on Livepeer’s Discord

Very cool idea. I found the Discord thread hard to find since it’s just a nested thread inside another channel that isn’t easily visible. Want to start a forum thread on Performance DAO here so that people can join in the convo leading up to a potential LIP?