livepeer / livepeer/protocol

Orchestrator designated signers

Open
#266 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

streamflow
Dominant language
JavaScript
Stars
155
Forks
50
PR merge metrics
No merged PRs in 30d

Description

Orchestrators should be able to designate different signer addresses for a few reasons:
- Multi node setups
- Improved key security since the master key controlling stake can be held in cold storage
- Different keys for different responsibilities i.e. one for signing transcoded results, one for calling reward, etc.

For previous discussion on this topic:
- Orchestrator specific: https://github.com/livepeer/LIPs/issues/7
- Focused on broadcasters, but the point about why we can't allow users to bring their own contracts for signature verification holds here as well https://github.com/livepeer/LIPs/issues/13#issuecomment-436807948 This was not as relevant in the V1 protocol because O/T signatures did not need to be verified, however, in Streamflow O's signatures will likely need to be verified as a part of on-chain verification (B would submit O's signatures with challenged segments).

Broadcaster designated signers is already being implemented as a part of PM (#262 #265). We can follow the same approach for enabling orchestrator designated signers.

There are a few options here to avoid logic duplication:
- Extract the signer approval/revocation logic into a SignerRegistry contract that can be inherited from any contract that needs to support this type of logic. Both TicketBroker and the staking contract could inherit from this contract
- Extract the signer approval/revocation logic into a SignerRegistry contract that serves as a global registry that TicketBroker and the staking contract would use to check signatures

I'm currently inclined to use the first approach to avoid additional external contract calls and the requirement for TicketBroker and the staking contract to know about an additional contract address.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No implementation files or tests are named. Start by reviewing the broadcaster designated-signer work in PM issues #262 and #265, then read LIPs #7 and #13 for the protocol context and compare the proposed registry approaches. Done requires an agreed design and implemented orchestrator signer approval and revocation behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
solidity
Domain
blockchain
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.