Inspiration

I'm a member of the Livepeer core team. Livepeer is a protocol that enables an open, decentralized marketplace for video transcoding (live video in particular). To learn more see https://livepeer.org/primer

Part of the Livepeer story is that it unlocks new revenue sources for GPU miners as PoS becomes a thing. Modern GPUs are shipped with video encoding and decoding chips. Transcoding can thus be done in parallel with mining for a very minor penalty (~10-15% increase in power consumption, ~5-10% hashrate drop). It also offers more potential revenue than mining ever can.

The Livepeer protocol requires to stake livepeer tokens in order to be eligible to receive work. Only the top 100 providers with most stake are eligible. On top of that, from our discussions with miners we noticed that most don't want to deal with LPT or managing an "orchestrator" (running the livepeer node in orchestrator mode allows one to be a provider). They want a set and forget system where payments are automatically pushed to their wallet, similar to a mining pool.

While the livepeer software already allows a seperation of a protocol-aware node to attach GPU rigs to, this setup is trusted and does not contain the necessary features to pay transcoders.

Orchestrator and Transcoders

What it does

Livepool allows GPU miners (transcoders) to connect their rigs to our protocol-aware node. Livepool does bookkeeping internally to pay out transcoders according to the work they have performed. This accounting is done based on amount of encoded and decoded pixels and the price charged for the job by the orchestrator.

How I built it

  • Extended the go-livepeer protocol client to be able to do pixel based accounting
  • Added a payout service that substracts a comission and transaction overhead for push payments
  • Created a dashboard on which transcoders can check pool stats and transcoder stats

Challenges I ran into

The main backend challenges are out of scope for an MVP:

  • Verification of work + penalizing bad behavour because byzantine environment. The Livepeer verifier is currently experimental but since payouts happen in a rolling window we can deduct penalties for poorly/malicious transcoded segments

  • Selection - In order to retain work the pool needs to be able to transcode in realtime (that means a piece of video needs to be transcoded before the NEXT piece is already inserted into the playlist), therefore we would have to incorporate latency based selection in addition to load based selection

Front-end is always a challenge when not used to it. Had some trouble getting torus to work using web3connect

Accomplishments that I'm proud of

Getting enough sleep

What I learned

Refreshed front-end skills

Got to dive deep into a split setup of orchestrators and transcoders. In my day-to-day I'm usually not concerned with transcoder nodes as they are not protocol aware and I'm work on the protocol.

What's next for Livepool

Productizing the dashboard and launching on mainnet , reach out to some prominent "garagebox" miners.

livepool in action

stream to livepool* You can stream to Livepool using this RTMP Endpoint in OBS : rtmp://40.117.94.38:1935

Built With

  • ethereum
  • go
  • go-ethereum
  • livepeer
  • metamask
  • portis
  • torus
  • vue.js
Share this project:

Updates