Swarm不只是存储系统,更确切的说其实是流量分发系统,相当于现有互联网系统中的CDN系统。在SWARM协议中,用户上传的文件按照4KB大小的片段切割形成一个金字塔结构,按照算法将每个片段不断推向不同的位置。在推送的过程中,所有的中间节点都会缓存一份数据。
当用户需要读取该文件时,首先从某个位置读取到这个文件的根。再从根文件中读取不同的文件片段信息,然后根据不同的片段从网络中不同的地方读取出相应的内容再重新组合成原始文件。
从上述原理可以明显看到,数据一旦被提交到swarm网络,会被自动切分并且分散推送到全网的不同节点。通过自动扩散,数据内容自动传播到网络中的不同节点以备读取,所以我们称其为内容或流量分发系统,即CDN。由于流量难以用作证明,所以理论上Swarm不是基于流量的区块链系统,不是依靠爆块获得挖矿奖励。所谓的“挖矿”其实是流量费,即数据的请求节点向服务节点支付流量费,所以节点的收益来源于其他节点付出的流量费。
Swarm流量费通过以太坊智能合约上的代币BZZ实现记账和支付,另外考虑到以太坊网络的性能,目前引入了支票概念。也就数据请求方向服务节点先开支票,服务节点在收集了一定量的支票后统一兑换成BZZ,实现“挖矿”收益。
所以Swarm节点能够收到的流量费最核心的因素是带宽上限,带宽上限越高,流量费上限也就越高。Swarm挖矿客户端会将服务器配置成swarm蜂窝(跑N个节点),来获得更多的流量费(支票)。
其次假设SWARM节点配置为每个片段大小为4KB,数据存储于磁盘上。因此数据的访问能力受限于磁盘IO,我们可以根据磁盘的IOPS(每秒读写IO次数)性能计算出每一种磁盘的SWARM读写性能:
HDD硬盘(7200转):硬盘的IOPS最高约为在75~210 IOPS之间,因此读写性能在(75~210)x4KB=300~840KB/s。如果折算成带宽,就是一个3~8Mbps。也就是说,如果在一块机械硬盘上部署多个节点,即使对这个节点开通再高的带宽,也只有最高3-8Mbps带宽的收益上限。在硬盘上部署再多的节点,其实跟部署一个节点没太多区别,即其实相当于一个节点的收益。