基于以太坊的视频直播平台Livepeer白皮书中文概览
Background
Livepeer旨在构建带有激励机制的视频直播分布式网络
Blockchain
- 以太坊
- 智能合约和交易基于Ethereum以太坊网络
- DPOS
- 转码者选举基于DPOS委托权益证明
Livepeer Protocol
网络中的每个节点可以发起直播,每个节点都可以接受直播,直播出去的视频文件由节点进行转码和转发,以太坊智能合约结算
视频片段(video segment)
- 长度为t的时间切片,包含视频和音频,很像hls协议中的.ts文件;包含签名,防止篡改
- stream视频流,由segment按照正确顺序组成
- segment是转码,分布和支付的单位
代币(Livepeer Token)
使用以太坊进行交易结算,但也有自己的token(LPT),用于DPOS
角色(Protocal Role)
- broadcaster 广播者
- transcoder 转码者
- relay node 转播者
- customer 消费者
转码工作量验证(verification of work)
(方便起见,Broadcaster缩写为B;Transcoder为T;Truebit为TB;Livepeer Smart Contract为TSC)
- B向链请求解码任务片段,获得任务接受者T
- B把任务发给T
- T解码后本地存储,宣布工作得出的merkle root
- LSC发布挑战,对工作量进行检查,制定一个视频片段,T把片段给swarm
- T向TSC提供片段证明,调用TB进行验证
- TB链下验证swarm中T提供的片段
- TB将工作证明写入LSC
该过程中TSC发起挑战部分可能比较难懂,简言之,就是合约对转码后的片段按照一定概率进行抽查,TSC也转码一次,对比是否以此监督
DPOS共识
有转码需求的用户需要将stake委托给某个转码器
绑定(bond)和委托(delegate)
- 用户可以用bond()绑定函数声明自己拥有的stake数量,反之也有unbond()解绑函数
- 任何节点可以通过transcoder()函数申请成为解码器
- 协议选择N个stake最多的(解码器自己的+被委托的)和一个随机的node
- 新产生的token分发给绑定stake的node,违反规则的node扣减stake
转码者参数
- PricePerSegment 处理一个片段的价格
- BlockRewardCut 委托费,按照bonded node收入扣点
- FeeShare 分红,转码者得到广播者的收益与bonded node们分红比例
广播+转码 工作
TranscodeAvailability() 参与转码者竞选,参数是机器性能 … …
工作验证
基于Truebit,随机选一个segment,对拍;根据是否诚信决定奖励or惩罚
直播视频分发
请求视频片段需要花钱,提供视频片段可以获利。
- 消费者愿意用上行带宽为其他消费者提供自己拥有的视频片段来获取利润
- 广播者可能想要支付广播该视频的小号,或者想补偿用户(消费者)的带宽消耗,以让更多用户看到这个视频
- 转码者和传播者愿意提供带宽,因为可以获利
livepeer输出的视频片段可以加入传统CDN网络分发,或者例如IPFS和Swarm的分布式CDN
作者还说了一句话:
Development of this peer-to-peer protocol for video segment distribution itself will be an ongoing opportunity for optimization and improvement in performance.
(优化分发视频片段的p2p协议是持续存在的机会。)
说明Livepeer的视频片段分发现在没做出什么成果
作者还提了一句,PPSPP(Peer-to-Peer Streaming Peer Protocol)协议有望成为直播内容的传播协议。(仿佛也没能掩饰住不知道怎么分发视频片段的尴尬)
说了这么多,看了代码发现视频片段还是通过IPFS分发…
总结
Livepeer最终将建立一个可扩展的,即用即付的直播网络
Referrence
- https://github.com/livepeer/wiki/blob/master/WHITEPAPER.md
- https://truebit.io
Newest Posts