原文标题:《三分钟读懂 Web3Torrent:当微支付遇到 Torrent 点对点文件下载》
原文作者:LeftOfCenter
文章来源:链闻
相信今天的互联网用户没人不知道 BT 下载,BT 发明的点对点文件共享技术是一项伟大的技术,它采用高效的软件分发系统和 P2P 技术共享大体积文件,令无数互联网用户受益,一度有着极高的用户活跃度和网络流量,但却一直无法将技术转变成赚钱业务,最终被波场创始人孙宇晨收购,纳入波场生态,希望利用代币经济释放其商业价值,但是依然处于摸索状态。
而最近新出现的一个名为 Web3Torrent 的文件共享客户端,则有望通过为点对点文件传输协议引入「微支付」功能,从而为 torrent 网络引入有效的激励机制:下载者每进行一次文件下载操作,需向做种者支付以太坊代币作为酬劳,希望以此构建一种有机可持续的业务模式。
Web3Torrent,顾名思义,是一个 Web3 应用,目前所有代码已 开源。Web3Torrent 基于 WebTorrent 和状态通道创建——这里需要做一些基础知识的普及:「Web3Torrent」是一个 Web 端的 torrent 库,可通过 WebRTC 执行 BitTorrent 协议,从而让网络浏览器成为点对点共享网络中的节点;「状态通道」则是一种颇有潜力的扩容方案,不仅限于以太坊,比特币的闪电网络也是状态通道的一种,除此之外,作为 Layer 2 解决方案的一种,状态通道同样也是公链项目 Nervos 主打支持的技术方案之一,除了状态通道外,专为 Layer 2 设计的 Layer 1 底层公链解决方案 Nervos 还支持支付通道和侧链等技术解决方案。
作为一种扩容的有效实现,目前状态通道的实际用例并不多,基于状态通道构建的产品主要有 Celer(曾经采用状态通道技术成功实施过游戏开发)和目前已生死不明的成人娱乐平台 SpankChain。
而此次由开源组织 State Channels 实现的 Web3Torrent 声称是一个「天然适合状态通道技术的用例」。为什么这么说?
今天链闻 3 分钟系列将回答这个问题:为什么说状态通道技术天然契合点对点文件传输协议?
为什么说状态通道适用于点对点文件传输协议?
作为一种热门的点对点(P2P)共享文件的方法,Torrenting 天然契合状态通道技术的用例,主要原因可以归纳为 3 点,分别是:
Torrent 文件传输本质上是基于点对点的结构
文件共享需要高频通信
目前尚缺乏激励机制来推进发挥系统中的关键作用
具体来说,点对点文件传输网络是基于点对点的结构,该网络主要由两种角色组成,即文件数据块的提供者和请求者。这样一种网络架构天然契合同样以点对点为特性的状态通道技术,后者可在其之上延展出微支付的功能。
第二,文件共享需要高频通信。当用户彼此共享一个文件片段时,会不断进行通信。目前已存在一系列的点对点传输协议供多个不同的 torrent 客户端使用,包括 uTorrent、BitTorrent 等。
第三,点对点文件传输网络缺乏经济激励,这就导致有时候节点缺少文件上传做种的动力,尤其是对于那些冷僻的文件,本来就很少有人拥有文件,如果没有经济激励,基本上很难发现做种者了。
状态通道作为以太坊二层扩容技术,可在固定用户组群之间实现无需信任、即时和零费用的交易。
目前为止,使用现有工具构建基于支付通道实现的简单应用是可能的,比如在 Rock-Paper-Scissors 中,每一次状态转换对应用户一次单击(比如点击选取武器的操作),这展示了状态通道的潜在用例,即用户无需等待链上交易只需点对点状态更新即可。
为点对点文件传输协议引入基于加密货币的微支付激励层将是一次有趣的实践,不仅可提高点对点网络的质量,还可提升网络的去中心化程度。想象一下,当一名用户通过支付以太坊下载文件的同时,还可通过保持客户端持续运行,将之前支付的费用赚回来,甚至可能超过之前的收益,即允许其他人通过付费的方式获取自己下载的文件,这样一来,很容易产生网络效应。
起底点对点文件传输技术
Torrent 网络是专门为解决点对点文件共享问题而设计的,用户可从各种网站上下载 torrent 文件(.torrent),这些 torrent 文件包含电影、游戏、应用程序等在内的各种媒体文件。
在 Torrent 网络中,有两个重要的角色,分别是做种者(Seeders)和下载者(Leechers)。做种者提供可供下载的整个文件,而下载者则是在点对点网络中寻找该文件的组成片段 (Piece)。做种者通过网络广播告知自己拥有可供其他节点下载的整个文件,而下载者则会不断在网络中搜寻所有拥有该文件的其他节点(无论是做种者还是下载者)进行下载。
文件被分割成几块(称为片段),并在各个节点之间交换
当下载者正在下载某个文件的片段时,有可能同时也在为其他有需求的节点上传刚刚下载好的片段。如下图所示,如果两个用户分别拥有同一个文件中的不同片段,则可同时进行上传和下载的操作。
随着越来越多的用户加入文件共享网络,会开始互相从对方获取文件。
如何整合小额支付?
状态通道解决方案适用于点对点文件共享协议,这让设计基于状态通道的应用也非常简单。由于节点本身就在进行高速通信传输,在该过程中,节点将文件数据进行编码发送给彼此。为了增加激励层,可对状态更新进行编码,以实现在通信的过程中同时传输少量的加密货币,即同时进行微支付。
下载者每从一个节点中下载一个内容片段就会发送少量的 ETH 作为付款
在此需要扩展 torrent 文件共享的功能,实现彼此通信以确认谁打开了谁的通道,然后将加密货币附加在每一个内容片段中发送给对方,包括一个签名的状态通道更新,该更新可构造加密支付。
Web3Torrent 客户端基于 WebTorrent 创建,WebTorrent 是由 Feross Aboukhadije(Feross Aboukhadije 是 Standard 和 Funding 库的开发者,还开发了由 WebRTC 支持的下一代 PeerCDN,后被雅虎收购。)开发的一个 web 端的 torrent 库,允许通过 WebRTC 执行 BitTorrent 协议,从而让网络浏览器成为点对点共享网络中的节点。WebTorrent 提供了方便的 API 实现,可以以上述方式扩展该协议,即扩展该协议支持对分享的文件分批进行微支付。
因此,一般来说,集成状态通道后发生在做种者和下载者之间的点对点文件传输将有如下步骤:
做种者广播文件做种并愿意以此获得收入的意愿
对该文件感兴趣的下载者将与做种者建立 WebRTC 连接
下载者从做种者请求该文件的第一条数据
做种者为自己的钱包创建一个通道,并提示文件下载者加入该通道(此时支付通道开通)
下载者使用钱包加入该通道,并发送确认签名(支付通道开始运行)
下载者向自己的钱包发送状态更新命令,以将少量 ETH 发送给做种者做种者
收到这笔付款后,将数据发送到交易对手并签署状态更新
重复此流程,直到下载者文件下载完成。完成之后,还将有一系列流程发生:
下载者将关闭钱包中的支付通道(该支付通道将关闭)
做种者响应并关闭该通道(通道此时已完成)
做种者和下载者关闭 WebRTC 连接实际操作中,以上所有步骤只需几秒中即可完成,如下图所示:
Web3Torrent 由开源项目 State Channels 完成,并获得了以太坊基金会和 Consensys 的捐款资助,接下来团队将开发服务器钱包和 hub 基础结构软件,目前正在积极寻求主网集成。目前 Web3Torrent 已经在 Goërli 测试上运行,请来 这里 试用。