<aside> đź’ˇ
See the Weir doc for more context surrounding remote signers
</aside>
This document describes the background and design points around the remote signer implementations of GitHub PR#3791 and PR#3822
Remote signing is a new mode for go-livepeer, alongside the existing modes of the gateway, orchestrator, and redeemer. There are a few goals for remote signers:
The Livepeer gateway is currently a monolith: it has deep Ethereum integration to handle payments and the other logistics of operating on an blockchain, and a media processing protocol for AI and transcoding workloads.
Currently, writing an implementation of a Livepeer gateway requires deep familiarity with the Livepeer probabilistic micropayments (PM) mechanism. Very few developers actually understand PM in enough detail to implement correctly, which is one reason that go-livepeer is the only extant gateway implementation.
Beyond implementing PM, operating with PM at scale is also a challenge. One recent example: Ethereum price volatility has caused Daydream service reliability issues due to different nodes having a different view of the ETH-USD price. Debugging these types of issues is painful, and is one reason why there are very few gateway operators on the network.
Remote signing allows for separating the gateway’s Ethereum integration from its media responsibilities. This has two main implications:
Currently, the gateway must hold the Ethereum payment signing key in the same process that handles untrusted media coming from users. This is a security risk, as an exploit stemming from malicious input could result in the compromise of the payment signing key and lost gateway funds.
Moreover, the design of PM leads gateway providers to share a common key for all gateway instances, which increases the blast radius of any compromise.
Remote signing, by virtue of separating the Ethereum parts from the media parts, avoids this problem.
Remote signing will initially be implemented for Live AI (live-video-to-video) only. There are a few reasons for this: