The VideoCoin protocol is implemented by two smart contracts: StreamManager and Stream . The StreamManager is unique, i.e. deployed once, while one Stream contract is deployed for each streaming job.
In the system we have different roles which have different purposes.
Manager : an account owning the StreamManager contract. It is responsible for approving stream creation requests, providing ids for input chunks and for maintaining the validator list.
Client : regular account; can request and create streams.
Miner/Transcoder : responsible for video transcoding work; register proofs and transcoded video chunks ids.
Validator : validates the proofs submitted by miners.
StreamManager smart contract is responsible for managing validator list, manages Stream approval and creation and manages refund permissions.
Stream smart contract represents a video transcode job which is created by a client.The video is split in chunks; miners submit proofs for each chunk for each profile and validators approve miner proofs.