-
Notifications
You must be signed in to change notification settings - Fork 47
Closed
Labels
Milestone
Description
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:
- Verify that this segment for this job id is in fact eligible for verification (can be deterministically known based upon the endJob() call).
- Verify that the original segment was signed by the broadcaster.
- Verify that the merkle proof is valid and this segment was claimed in endJob() before the transcoder knew this would be challenged.
- 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.