New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modify Orchestrator selection curve #2949
base: master
Are you sure you want to change the base?
Conversation
I think these changes are very important if we want to allow B nodes to use price as a factor in selection. I will simulate both alternative curves to see how that works out for the current selection algo Alternatively, price could be taken out (back to stake weighted selection only) with LP Inc setting their max price to somewhere the mainnet is competitive. |
Thanks for sending the PR and starting the discussion. I'd be interested in thoughts from @hthillman and @ecmulli I think that in general, it should be B who decides about their pricing strategy. Some may favor more price, some other stake/security. Saying that, currently we're in a situation in which Livepeer Inc is the main B, so we can think what's the best strategy for Livepeer Inc. We have the following options on the table:
I think that Option 3 would be the closest to the real open market, but would require some changes in how B internally blacklists Os with high stream drops. |
That's exactly the approach which this PR promotes: it allows the B to actually set a https://pricing.stronk.rocks/ provides a nice way to quickly see how changing the weights affects selection with the current or alternative methods. Not saying that this is the best solution, but IMO it's a big step in the right direction. Curious to hear about alternative solutions which could be considered |
|
Haven't brought it up yet, but will attend the next water cooler to do so. I'm totally on board with heavy price optimisation (and with a 0% fee cut I'm not benefitting from a higher/lower PPP), but just trying to restore the 'integrity' of the protocol. For Orchestrators the path to least resistance is simply to run more nodes (IE Vires added a third node: |
Thanks for the initiative and the awesome pricing dashboard @stronk-dev ! Re third node: It's to collect data points, not planning on setting up more or promoting them - although it looks like I could easily make an extra $200-300 per month and node with the current selection algo... So you're suggesting the "Harmonic mean" here, right? It's a bit hard to comment on this without knowing how the parameters like price weight and stake weight will be chosen since it affects the selection algo drastically. From a fairness, sybil-resistance and also simplicity point of view, I'd be strongly in favor of making the selection mainly stake weight again but with a rather low max PPP so that the Livepeer B is competitive. I really believe that the only solution that makes everyone happy is more demand. |
Nodes who are uncompetitive on stake would indeed have trouble getting streams, as was the case before there was random selection. It's tough, but at the moment small staked nodes can even get a majority of streams in a less competitive region like Sin, so moving to a more strict curve would be a big step in the right direction. It's not a good situation if simply spinning up a new low-staked orch can get you lots more work
This method would only punish being uncompetitive on either stake or price. It makes your stake a whole lot more significant than it is currently. Your node would have a much greater chance of a stream than another node at the same price with less stake. It would indeed require setting a much higher
From my POV rolling back to the old selection algo or setting a very high |
What does this pull request do? Explain your changes. (required)
Currently, stake-weighted selection is independent from price-weighted selection. This means that you can never have a situation where:
It allows Orchestrators to 'optimise' their utilisation by running a single high-staked orch (to maximise gains from the stake-weighted curve) and run one or more side-orchs to compete on pricing without cannibalising streams from their main orchestrator.
It also reduces network security, as any node who just barely makes the top 100 can capture a large chunk of streams based on their price alone.
The current curve can be compare with two alternative solutions here
Where
x1
is the bias (closer to 0 favors price, closer to 1 favors stake).s
is thestakeProb
andp
is thepriceProb
There's also this pricing dashboard, where you can switch between the current and two alternative selection curves and it then simulates the selection algorithm.
Specific updates (required)
This PR proposes three changes to the selection algorithm:
Firstly it fixes random selection (unless that was some special golang voodoo to generate a random number?)
Secondly it normalizes the values slightly different, so that the highest probability starts at 1.0 and drops of to 0.0
(
priceProb
was already normalised and thestakeProb
can be normalised by using the highest stake found in the set)This change can be omitted.
Most importantly the percentages for price-weighted selection and stake-weighted selection are compounded, preventing:
How did you test each of these updates (required)
TBA
Checklist:
make
runs successfully./test.sh
pass