Weekly Development Update - August 28th 2019

And here are this week’s dev updates (with slight delay)! Another big one, with progress in Probabilistic Micropayments, (external) GPU integration and parallel mining/transcoding.

Last week’s progress:

  • Added a local cache that is updated as new round events are emitted. This information is used to create PM tickets and fetching from a local cache allows the node to avoid introducing additional network requests into the transcoding workflow
  • Completed most of the implementation of a local cache that is updated as a PM ticket sender’s deposit/reserve is updated on-chain. This information is used to monitor broadcaster funds without requiring additional network requests during the transcoding workflow
  • Integrated new pixel counting features in the transcoder library (LPMS) with go-livepeer. Orchestrators can now report the number of pixels transcoded and broadcasters can verify the reported pixels locally
  • Completed the build-out of tooling for getting GPU outside the Livepeer network to work with our test harness. Currently pending review / testing.
  • Integrate a second provider of external GPUs into the test harness. Currently, this has to be set up manually for each provider, and usually presents special challenges with respect to access/security policies, driver compatibility, networking idiosyncracies, etc. But this is exactly why we want to go through this process with a variety of providers: to better understand the potential range of operating environments for Livepeer GPUs.
  • Confirmed our ability to transcode alongside Ethereum mining. Early, rough numbers are showing a 1.5% impact on the mining side. Developed a preliminary test plan and settled on the mining algorithms to test with ; for now we will look at Ethereum/ ethash only. (Also briefly evaluated Ethereum Classic but there was not enough of a performance difference for a separate round of testing there.) We’re now locking down the metrics to be used for evaluation and will start gathering numbers soon. The entire process is being meticulously documented for reproductibility, including installation and environment set-up.
  • Livepeer API infrastructure now supports RTMP

This week’s priorities:

  • Finish the local cache implementation for PM ticket sender information and update orchestrator logic to use the cache when deciding whether to work with a broadcaster
  • Take a first pass at implementing updated rewardCut/feeShare setting logic in the BondingManager contract that is not dependent on round initialization
  • Plan for transcoding verification work in the coming weeks with a focus on defining what the necessary on-chain components are
  • Continue work on resolving the bottleneck we have in GPU transcoding. One issue we have encountered is that flushing the decoder of pipelined frames incurs a significant performance penalty (it consists of destroying then re-opening the decode session), we are looking at ways to flush the decoder without also decoding.
  • Continue scalability testing towards our goal of 1000 concurrent streams at 99.99 % reliability. There is a bit of tooling work that is required here in order to be able to effectively manage a larger number of streams across more Livepeer nodes than we have previously tested with.
  • Proceeding with lots of LivepeerWowza testing and benchmarking, as well as automated testing of production Livepeer video infrastructure
  • Working to merge all necessary HTTP ingest features into go-livepeer
  • Investigating deploying infrastructure into multiple regions for European clients

As always, please let us know if you have feedback about the content and/or format of the update - we would love to hear from you. You can comment here or find us on Discord, thank you!