Background
Livepeer旨在構建帶有激勵機制的視頻直播分佈式網絡node
Blockchain

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)ide
- 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懲罰this
直播視頻分發
請求視頻片斷須要花錢,提供視頻片斷能夠獲利。
- 消費者願意用上行帶寬爲其餘消費者提供本身擁有的視頻片斷來獲取利潤
- 廣播者可能想要支付廣播該視頻的小號,或者想補償用戶(消費者)的帶寬消耗,以讓更多用戶看到這個視頻
- 轉碼者和傳播者願意提供帶寬,由於能夠獲利
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
- http://vinci7.github.io/artic...
- https://github.com/livepeer/w...
- https://truebit.io