livepeer / research

Organization of the current open research tracks within the Livepeer Project
MIT License
7 stars 2 forks source link

Offchain Job Negotiation #10

Open ericxtang opened 6 years ago

ericxtang commented 6 years ago

Currently, transcoding jobs are created by broadcasters and assigned to the transcoders by the protocol based on the stake of the transcoders and the price of the job. While this is a nice mechanism to help transcoders calculate estimated revenue from transcoding fees, it takes away the ability for the broadcaster to pick their own transcoder, and therefore, goes against open competition.

An alternative way to do job assignment is to allow the broadcaster to negotiate with the transcoder offchain, similar to how 0x works for token transactions. This, however, potential changes the economics of the protocol because the transcoder stake now no longer guarantee a proportional amount of jobs (and fees).

A deeper analysis is needed to decide whether offchain job negotiation is good for the protocol, and how to make it cryptoeconomically secure.

Follow the discord discussion here.

j0sh commented 6 years ago

One way to preserve the economics of the protocol would be for the broadcaster to include a signed attestation from the transcoder in the job tx (along with the other information like configuration, price, etc). That way, the transcoder is immediately assigned to the job. That'd also solve the issue of claiming within 256 blocks.

If the broadcaster wants another transcoder, they can submit another transaction, either a new job or updating the parameters for the current job. Or the job could even take a list of authorized transcoders. Perhaps the new transcoder itself could update the parameters of a job, given a signed attestation from the broadcaster, as an incentive to take work from expensive/unreliable transcoders, and to ease the eth gas burden on broadcasters.

One big question would be whether we should also allow broadcasters to select transcoders that are outside the active pool. While those transcoders outside the pool would keep all the fees, they don't get any token. If the economics work out, bonded transcoders would generally offer lower prices anyway, because the cost of doing the work can be offset by the value of the token. Also, being bonded is a strong reputation signal.

I can see broadcast nodes doing the negotiation with bonded transcoders by default (since that's all the protocol knows about), while offering the option to manually enumerate additional transcoders, eg via a CLI param.