This post contains an idea for enabling Livepeer Broadcaster (or Mist Server) to present an interface to allow a front end to authenticate a user who has “Signed In With Ethereum” (SIWE).
The approach can enable publishing and consuming of livestream content via Livepeer software, end-to-end encrypted via a user’s self-sovereign private/public keypair (used to transact on Ethereum).
Allowing a user (Publisher or Consumer) to “sign in with Ethereum” can provide numerous benefits to builders and users alike.
Primarily, it enables the builder to compose video applications involving other interoperable web3 building blocks, to allow a user to coherently port their profile across multiple different services.
Such components include:
- Payment rails (e.g. transfer, Superfluid, other)
- Naming / Discovery (e.g. via Ethereum Name Service)
- NFT marketplaces for publishing / consuming content
- Distributed governance mechanisms (multisigs, DAOs)
- Onchain gating (e.g. Token, Permissioning)
Such an integration can pave the way for experimentation in concepts such as Community-Driven Moderation, Pay-to-Play / Livestream-to-Earn, Content Discovery, Democratised Scheduling, and Reputation-based Access.
It involves the following components of the web3 video stack:
- user (i.e. with their keypair)
- app UI (e.g. a web app / mobile app - front end interface)
- back end interface (e.g. Livepeer Broadcaster / Mist Server)
- Blockchain / EVM (smart contract platform)
Below is a diagram describing a high level approach to authenticating a user to be able to interact with a Livepeer Broadcaster / Mist, using their Ethereum account to .
The above example refers to a “User Permission Contract”. This can be thought of essentially as an onchain permissioning database, and may, for example, consist of 2 tables
canConsume. The Livepeer B / Mist could query whether an authenticated user has appropriate privileges to publish or consume.
A rudimentary implementation of such a contract can be found here.
It is envisaged that by default, a B would reference a non-permissive instance of such a contract, effectively denying any user the ability to publish or consume. A Broadcaster can then choose to deploy another instance of the permissioning database, and configure the B to reference this new instance.