Skip to content

Verify() and proof of transcoding #24

@dob

Description

@dob

The verify() transaction is what a transcoder calls when he provides proof that he transcoded a particular segment. The inputs are:

  • streamID (or jobID)
  • segmentSequenceNumber
  • hash of transcoded output for that segment
  • signed transcode claim (which includes signed segment data from original broadcaster)
  • merkle proof that this transcoded segment is included in the merkle root from the preceeding endJob() call.

The function should then:

  1. Verify that this segment for this job id is in fact eligible for verification (can be deterministically known based upon the endJob() call).
  2. Verify that the original segment was signed by the broadcaster.
  3. Verify that the merkle proof is valid and this segment was claimed in endJob() before the transcoder knew this would be challenged.
  4. Invoke the verification process. To do so it will also need a swarm hashes of the location of the original and transcoded segments. This should be able to be determined from the signed transcode claim from the broadcaster.

This is non trivial and requires some on chain merkle proof verification and signature verification. We can track those as separate issues, and they would be good opportunities to contribute back to a common library like OpenZeppelin.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions