互联网上的流媒体服务所占到的流量,已经占到了整个互联网流量的2/3,Facebook、Netflix、YouTube、HBO、Live.ly,中国的优酷、抖音等,都是其中的大玩家。
CDN在流媒体服务里面占了很重要的一笔。CDN将需要分发的数据同步在离观众最近的节点上,让用户有最好的网络体验。然而,由于CDN节点数量的限制,最终通向观众的节点并不一定能带给观众最好的网络体验,尤其在千发达地区或者人数众多的地区更是如此。另外,CDN的成本是很高的,这个对于提供流媒体服务的平台的来说,往往是整个成本体系中最大的之一。
视频内容的精度在越来越高,4k,8k,16k,到360° VR视频,需要的带宽越来越高,如果保持原有的采用CDN服务的方式,流媒体服务能达到的质量是有瓶颈的。
在介绍THETA前,前介绍一下THETA项目方Theta Labs的母公司Silver.tv。
Silver.tv从2015年开始一直致力于下一代流媒体视频技术,包括VR和360°全景流媒体的开发,截止2018年年底已经融资1700万美金,投资方包括DCM,Sierra,Creative Artists,以及包括Sony Innovation、Samsung Next等在内的战略投资方。Silver.tv是一个专注于体育/电子竞技的流媒体平台,增加转播过CS:GO、LoL等游戏决赛。
Silver.tv有一个专有技术,叫做可变分辨率流传输(foveated streaming)。相对于一直传输完整的高分辨路的流媒体信号,这项技术当在传输非焦点区域之外的视频内容时,会采用较小的分辨率。当观众头部运动调整视觉方向是,系统会自动调整高低分辨率的内容区域。这项技术对于视频传输和接受两方之间的网络回路的时间要求非常高,这样才能做到实时调整视频不同区域内的精度。
THETA系统通过使用区块链技术,创建一个区中心化的视频流媒体分发平台,通过激励视频观众,让观众共享自己的设备的算力和带宽,成为一个缓冲节点,充当CDN的作用,也解决CDN遇到的问题,主要从三点上找到解决方案:
- 一个限定地区(比如一个街道、一个小区)的观众和观众之间点对点的网络状况,往往是好于CDN节点与单个用户之间的网络状况的(更近);
- 当大量观众共享带宽使得用户与用户之间的视频流分享成为可能时,使用CDN的资源就少了,自然也就减少了CDN的使用成本;
- 缓冲节点的视频流分享,减少了网络的来回通讯的成本,使得对于Silve
r.tv专有的可变分辨率传输技术来说,更利于实施。
用已知的知识来形容Theta,其实就是一个面向流媒体服务的P2P平台,在这个平台里植入了通证的奖励机制。P2P的好处是,当有大量的用户在看同一个视频的时候,系统服务是稳定的,并减少了成本。P2P的缺点(恰恰是CDN的有点)在于,客户端的在线和链接质量是不稳定的,而CDN可以保障一直在线且稳定。Theta的设计理念,不是要完全消灭CDN的服务,而是在保障视频流质量的基础上,最大限度的削弱对于CDN的依赖。为此,需要让节点可以高效的识别可用的邻居节点。系统架构上,Theta安排了Tracker Server,帮助节点识别可用的邻居节点,而在节点的实现上,通过力度化更细的基于多变量的识别机制,在Tracker Server给出的可用邻居节点的基础上识别最佳的邻居节点。其架构图如下所示:
应用区块链,就必然涉及到交易的共识和记录。这个在流媒体上是个极大的考验。主要体现在几个方面:
- 基于P2P的流媒体是一段一段从各个节点通过网络传输过来的,为了进行公平的激励,Theta需要对每一段都进行一定通证的奖励,那么一段长的视频的话每一分钟就有可能产生十几甚至几十端需要激励的“片段”,更不用说在直播的时候,可能有几百万人同时在观看,这个涉及到的需要达成共识的激励是非常巨大的,可以达到每秒几百万个。不要说区块链,即使是中心化的服务集群也无法做到这么高的TPS。
- 每个微小的奖励的共识后,需要的就是记录。每秒几百万的这种激励后面,涉及到的是非常巨量的存储空间,采用传统意义上的区块链技术是无法解决这个问题的。
- 流媒体需要及其快速的达成共识。因为客户端是共享自己的带宽的,所以最理想的情况下,在发送下一段视频内容前,有关本段已经发送的内容可以达成共识,从而获得奖励,避免被白白占用带宽的情况。传统的BT技术上,这个问题造成实际上很多文件无法被下载,就是因为很多人只下载,不共享,从而是整个生态不够健康。
- 从安全性考虑,区块链里,参与共识的节点越多,整个网络就更安全。如何让尽量多的客户端可以参与共识,也是Theta需要解决的问题。
从技术角度说,Theta主要应用以下机制解决上面的问题:
- 多层的BFT作为共识机制;
- 通过聚合签名的Gossip协议(Aggregated Signature Gossip Scheme)在节点间广播需要处理的交易并保持消息的最小化;
- 用一个“链下”的面向资源的微支付池减小了链上的开销,使得整个链可以处理的交易有巨大的可扩展性。
多层BTF共识机制*
其核心思路,是有一小批节点(10-20个),组成了验证委员会(validator committee),保证尽量快的出块(并在验证委员会节点间达成共识)。而其他的成千上万的节点,我们成为维护者节点(guardian),则“验证”验证委员会提交的区块。这里的验证,指的是确保另外有2/3以上的维护者节点和自己看到的区块是一样的。
在BTF算法里面,由于设计点节点间的两两通讯,其实最消耗时间的就是验证区块。且其复杂程度是O(n2),当节点数很大时,其时间是很长的。为了让大量的维护者节点验证区块的速度和验证委员会出块的速度保持一致,其实并不需要节点验证每一个区块,而是有选择性的挑选区块验证即可,比如,验证区块号可以被100整除的区块(我们把这样的区块叫做验证点区块[checkpoint block])。这里的前提是,由于每一个区块的hash值是和上一个区块的hash值相关的,那么如果两个验证点区块的内容一致,那么很大的可能他们前面的所有区块都是一致的。另外就是,因为Theta本身记录的就是在分享视频的时候产生的极其小额的交易,因此即使出现不一致的情况,其造成的损失也是非常的小。
聚合签名的Gossip协议
在传统的BTF算法里,如果针对每共识,每个节点都需要发送自己签名的话,那最终的数据签名的的相关度就是O(n),这个对于节点多且对时间要求极高的Theta来说,太过庞大了。Theta使用了聚合签名的方式,即采用了一个叫做签名数位(bitmap)的方式,将签名数据大小从O(n)降低到了O(log(n))。签名数位是指:通过一个数字B[i],记录第i个节点是否签名。签名的话,B[i]=1,不然为0。这个和我们在以前文章中介绍Zilliqa是同一种方法。
“链下”的面向资源的微支付池
微支付池的概念,是用户为了看一个视频,先创建一个能完整覆盖下载该视频所需要token的池子,该池子允许其他用户通过链下的方式从池子中提取token,并可以防止“双花”问题的产生。其流程示意如图:
相应的步骤如下:
- Alice创建了一个链上的交易,该交易创建一个带有时间限定的以及带有质押的一个微支付池 CreatePool(resourceId, deposit, collateral, duration)。在这里,resourceId指需要访问的媒体资源,deposit表示要下载媒体资源所需要付出的token数量,而collateral表示的是为了防止Alice“双花”所需要质押的Token,且collateral表示的数量会大与deposit的数量。duration则指定了时间段,所有从这个支付池中提现的操作必须在规定的时间段内进行。
- Alice想要从从Bob、Carol等节点获取资源的时候,需要将在第一步创建微支付池获得的默克尔树的hash值给Bob和Carol,Bob、Carol通过这个值验证Alice的支付池中有足够的通证以及质押,从而可以获得资源。
- Alice发送一个验证了的服务支付声明给Bob和Carol,在这个声明里面指定了支付的数量等信息。在验证这个服务支付声明无误后,Bob和Carol可以将资源发给Alice。
- Bob和Carol可以在收到Alice发送的服务支付说明后,在过期前的任何时间点,将Alice签名的服务支付发布到链上以获取通证的支付。由于gas费用是有Bob和Carol支付的,因此,他们有动力在必要的时候才在链上发布。
奖惩
区块中会包含代币的奖励。每个验证委员会节点都会获得奖励,维护者节点由于数量众多,每个区块给每个维护者节点奖励是不可能的,而是采用了一个随机的方式在众多的维护者节点中选择一部分分发激励。
需要说明的是,要参与节点,是需要锁定一部分Token并维持一段时间的。如果节点作恶被发现,那么锁定的Token是会被扣除的,而发现作恶行为的节点会被奖励这些扣除的Token。如果超过1/3的验证委员会节点作恶(超过1/3的维护者节点作恶是不太可能的),那么维护者节点会发现这种行为,从而导致整个验证委员会被重新选举,整个区块链从最近被确认的节点开始。
通证
Theta体系内有两种通证:
- TFUEL,就是Theta里面gas的通证,用来支付gas费用;
- Theta,是用来进行整个网络的管理(投票、质押Theta成为节点等)
网友评论