Filecoin 更加去中心化,但在云存储机制上落后于 Storj。
原文标题:《谁是更好的去中心化云存储?Filecoin vs Storj 设计要点和实测 PK》
撰文:头等仓
目前市场上对 Filecoin 这一存储天王(鸽王)存在两种主要长线观点:看空和看多,但是很多都只是在简单说说多空,更有甚者,毫无逻辑,狂吹 FIL 长期价值——可惜,至今没见到一个完整的逻辑。
今天头等仓就对 Filecoin 的机制设计深入探讨,深度解析业务模型,并对系统进行简单实测,尽可能详尽展示我们对 Filecoin 长线调研的全部依据和逻辑。
是时候有理有据的对存储天王 Filecoin 泼个冷水了。
去中心化云存储赛道,目前能存东西的项目头等仓只看到四个:Filecoin、Storj、Arweave、SiaCoin。
SiaCoin 过分中心化(一共就俩矿池,而且其中一个和项目方关系千丝万缕,详见头等仓财富代码第 13 期),并且激励机制存在严重问题,已经不值得关注。其余三个,Arweave 实际上另立门户,做的是永久储存的「亚历山大图书馆」,这条道路和天花板都要另外考量,估值也要另外算,严格来说,Arweave 和 Filecoin 不适合做横向对比。
而真正能算得上在去中心化云存储赛道主战场上正面 PK 的重量级选手,其实只有 Filecoin 和 Storj。
毫无疑问,它们在去中心化云存储这件事情上,选择了两个完全不同的方向:
Filecoin 不惜一切代价也要先实现区块链极客心目中完美的去中心化,存储性能和体验先不论;而 Storj 在节点去中心化实现的基础上,重点精力在于提供高 SLA 服务标准、高稳定性的性能,以满足企业级存储的高要求,并且降低了高昂的费用,以面对长尾企业市场挑剔的实用需求。
或者简单说,它们一个追求更好的去中心化,一个追求更好的云存储,那么是真的做到了么?
两个都实打实「认真做事」了数年的项目,头等仓在内部进行了多次的头脑风暴,以下我们就抛砖引玉,从去中心化程度和核心存储业务方面,对 Filecoin 和 Storj 做一个全方位的对比,本文核心分成了两个部分,前半部分通过去中心化程度、代币模型、激励机制、矿机门槛、产品定位……等十多个方面尽可能全方位的做一个对比。后半部分则是通过对存储业务的能力水平做横向对比。
由于本文较长,总共 17000+字,我们辛苦的把每一个字码出来,当然是希望大家能全文通读,但是我们理解大家可能不一定会有耐心看完,因此我们在每个标题都直接列出我们认为的结论,方便大家浏览,其中,第 1-9、14、15、16 是强烈推荐大家一定要仔细看的内容。
(头等仓在持续数日的实测中发现,Filecoin 由于激励机制存在的重大缺陷,导致矿工有比较高的中心化风险,这一点在第 2 点和第 16 点中有详细展开)
Filecoin 的主要定位是作为 IPFS 的激励层,解决 IPFS 目前的效率问题,核心点是去中心化,主要的目标群体应该是那些追求数据所有权自由的去中心化极客以及 DAPP 们。我们不认为传统的存储需求会在目前这个阶段转到 Filecoin 网络上来,因为目前对 Filecoin 存储能力实测的结果实在是大跌眼镜。
Storj 的主要定位是对标亚马逊 S3 的去中心化云存储平台,类似于 Uber 的角色,整合利用闲置资源输出为标准统一的产品,其主要的用户群体为所有使用亚马逊 S3 存储服务的用户,Storj 提供同样的 SLA 服务标准,更快的上传下载速度,更好的隐私性,去中心化,而且价格仅为亚马逊同类产品的一半。
综合来说,Filecoin 的愿景更为宏大,但目前刚上线,存储服务能力比较差。而 Storj 规划之初就是把亚马逊 S3 的服务标准作为里程碑,达到里程碑之后才正式上的线,所以在商用云存储这部分显然是 Storj 做的更好,整个存取体验更能贴近现实用户的存储需求,能存能删,速度快,弹性供应,用多少服务交多少钱。
Storj 是非常明确的「三角关系」:用户端、卫星、节点,Storj 的卫星不是天上飞的卫星,而是一个服务器集群,Storj 的存储节点网络目前是 8000+个节点,地理上主要在欧美,亚州节点较少,目前注册用户是 11000+,活跃用户是 3000+,而卫星目前是 4 个集群,其中三个是商用中,一个是做为测试卫星。
Storj 的三个角色之间的关系如下:用户端发出需求,并上传下载数据,节点负责存储和给用户端下载数据,卫星则承担了一系列重要的角色:在上传下载时为用户端选择最快的节点,给用户端和节点两边记录支出和收入,记录用户储存文件的「位置」,以及存储节点的「信誉数据」——你可以认为卫星给节点建立了一套类似于支付宝信用分的信用系统用于管理存储节点。不可否认,卫星的存在,让 Storj 在网络结构上相对偏中心化一些,同时卫星也存在单点故障风险,也就是说如果卫星被攻击,爆炸了,那所有通过该卫星存储的内容都会丢失。不过 Storj 官方对此的解释是:卫星不是单一服务器,是服务器集群,不会轻易故障,且未来会有计划开放卫星,让任何人都可以建卫星。
图 1:用户端、卫星和节点的三角结构
Filecoin 在存储这件事情上,角色有包含存储用户、存储矿工、检索矿工,检索矿工的角色就有点类似于「卫星」,不过不同的是检索矿工是完全去中心化的,任何人都可以成为检索矿工。检索矿工也不像「卫星」一样审核存储节点,检索矿工不审核 Filecoin 的存储节点。从这个网络结构层面来说,我们认为 Filecoin 会更去中心化一些。
图 2:Filecoin 白皮书里的架构图,表现了矿工市场和检索市场结构
图 3:图 2 的简明示意图
Filecoin 的存储过程是这样的:用户可以从一群存储矿工里面选择自己想要的矿工下单,同时支付订单费用,然后矿工接单储存,封装扇区;检索的时候自动分配检索矿工,检索矿工检索到数据后就发送给用户,在发送数据的同时,用户支付检索费用。
虽然我们认为从架构设计上来看,Filecoin 会更去中心化一些,但是,在去中心化程度方面,Filecoin 是妥妥的赢了吗?
事情并没有这么简单,虽然 Filecoin 并不需要卫星这个角色,但是由于它对矿机要求很高,普通电脑是不可能达标的,所以 Filecoin 注定不可能实现 Storj 那样,随便买个 1T 硬盘(200 块上下)加个 250 块钱的树莓派就可以在家开挖——符合 Filecoin 要求的矿机价格都在 10 万人民币以上。Storj 的硬件低门槛,让当时 V2 版本一出来的时候一度达到 10 万个节点的数量,目前 V3 版本有近万的节点,而且,我们认为未来可能会有很长一段时间 Filecoin 的节点规模会一直处于比 Storj 少一个甚至两个数量级的规模。比如现在,Filecoin 节点:600+,Storj 节点:8000+。从节点数量的情况来看,Storj 会更胜一筹。
另外,从节点分布上看如下图所示,Filecoin 节点分布在全世界,比较均衡,亚洲也有不少;而 Storj 遍布欧洲、北美、南美、澳洲,但在亚洲相对较少,特别是中国,只有不到 100 个节点,这直接导致了中国区上传下载速度明显低于欧美的速度,以此来说,在节点的分布范围上,我们认为 Filecoin 要更胜一筹。
图 4:Storj 的节点分布图,可以看到亚洲稀少的节点分布,节点数 8000+
图 5:Filecoin 的矿工节点分布图,截至 2020/10/27,矿工数 685
因此,网络架构是否去中心化这一轮,算是各有胜负,从网络结构的角度看,显然 Filecoin 赢了,而从节点数量上看,却是 Storj 赢了,而从节点分布上看,Filecoin 又赢了。
但在这里需要补充一个我们认为的 Filecoin 机制设计的重大隐患:
由于封装扇区需要较大运算,所以 Filecoin 的矿机门槛极高,这决定了 Filecoin 的矿工节点数量一定会受限,而且大多数集中在数据中心机房。假设有个用户存了 100 部电影,每部电影 10GB,总量 1TB 的数据在一个矿工硬盘里,当有 1000 个用户同时要看这些电影的时候,产生的流量就有可能达到 1000MB/S,矿工的带宽将成为瓶颈,因为高带宽同时意味着高成本,而下载环节,作为存储矿工角色提供下载带宽和流量这一环节收入为零,只有检索矿工会收取零星的一点检索费,而实测得到的数据来看,这检索费远远远远低于(成千上万分之一)带宽支出,Filecoin 虽然有设计未来会提供一部分的区块奖励来给检索矿工,但目前仍然是纸上谈兵,我们认为,带宽瓶颈有可能将会成为 Filecoin 存储的死穴。未来由于小矿工设备封装能力低(详情见第 4-7 点),大矿工对文件的封装速度更快,所以用户文件存储大部分都会流向大矿工,这也将加剧这个瓶颈问题的爆发。我们将持续重点观察。
Filecoin 的代币模型,结合存储业务来说,我们认为是一种业务补贴模型,由系统发行代币,补贴矿工高昂的矿机成本,让矿工可以通过系统发行的代币(俗称挖矿奖励)来快速收回硬件成本。最后,由二级市场的投资者接盘维持高币价,来对成本买单,这是典型的羊毛出在猪身上的策略。当矿工通过补贴(挖矿)的代币收入来收回硬件成本,就不再需要担心硬件成本问题,所以矿工就可以对外提供不计成本的云存储服务,这就是头等仓思考的 Filecoin 经济模型的本质。这样的经济模型,在于存储价格上,是非常有优势的,这就像之前广州的一位网红牛杂店老板一样,牛杂一大碗就收你五块,因为人家拆迁家里有 10 栋楼在收租,人家不靠牛杂店赚钱。这样的经济模型,我们认为在提供远低于市场价格的云存储产品方面,是有很大优势的。另外,在于激励矿工,扩大网络规模上,也有不错的成效,不过在挖矿机制设计上,显然对矿工们是太狠了,这个另说(第 4 点有详解)。整体来说,我们认为 Filecoin 的代币机制设计,应该要优于 Storj。
Storj 的代币机制设计,并没有多少设计,就是单纯的把 Storj 当成公司的证券+货币来流通。Storj 的经济模型设计还是基于偏传统的做生意的概念来设计的经济模型,就是有用户存入 1TB 数据,通过纠删码冗余后,会分散到 80 个矿工上进行存储,总共占用大家 2.7 TB 的空间,然后跟用户收 10 美元,给到矿工 1.5 美元 /TB*2.7 TB=4.05 美元,然后剩下的 4 美元里面 1 美元给合作伙伴,3 美元团队自己留下。还剩下 2 美元是做一些营销活动或者杂费支出之类的。这是一个很传统的经济模型设计。业务的增长和代币的价格增加之间,关系比较弱。可以说 Storj 的代币模型设计跟业务结合不紧密。
作为和以太坊同时期成立的项目,Storj 项目代币模型和经济模型都设计于区块链 2.0 发展的早期,现在看已经比较 Old School (步入中年)了,尽管具备诚意,却不性感。头等仓也曾经给团队提过建议,但团队目前显然并没有更改模型的计划。
这一轮,无论 Filecoin 代币模型有多少问题,都是 Filecoin 胜。
Storj 的矿工(节点)对应 Filecoin 里的存储矿工。
矿工激励机制这件事情,我们对它的目标理解为:为了促使矿工长期、稳定的保持在线,以提供稳定的存储服务。基于这个目标,Filecoin 和 Storj 同样采用了质押的方式来保障,只是 Filecoin 使用了前置质押,也就是矿工干活前,要买币先来押上,干完活再发工资。而 Storj 使用了后置质押,也就是拿矿工的工资收入一部分进行质押。前者对矿工比较狠,后者对矿工比较温柔。以下是细节展开。
Storj 对矿工的激励包括几个部分:
通过这么一套机制,Storj 显然在激励矿工尽力运营至少 15 个月以上,大大降低了矿工的流失率,而节点的流失率越低,客户文件的耐用性越高(越不容易丢)。当然,如果某些节点突然掉了也没关系,每个文件都有 80 个碎片分布在全世界,就算某地发生战争海啸,丢失一批节点,那剩下的节点也会自动修其它碎片,保持文件可用,目前 Storj 网络存储了 1.7 亿个文件,而文件丢失数量是 0。
Filecoin 的存储矿工激励机制部分和 Storj 没有特别大差别,虽然使用的技术路径不一样:
Filecoin 通过这种方式激励矿工保持在线,这点和 Storj 初衷相同,惩罚也不轻。能够在一定水平上激励矿工在线。
矿工激励的不同部分主要在于质押、收入规则和矿机补贴:目前 Filecoin 全网有效算力是 660PiB,FIL 质押量是 1360 万,平均算下来,每 1TiB 的算力,平均要抵押 20.1 个 FIL,以目前最新的数据统计,目前实际每增加 1TiB 的算力,平均要抵押 11.18 个 FIL, 而奖励的发放机制则是区块奖励+存储费用,区块奖励是简单铸造 30%+基准铸造 70%,区块奖励会随着网络有效采用率的提升而提升,目前区块奖励是 11.37FIL/ 块,但需要在 180 天内线性发放给矿工(每天的收入都平均到后面 180 天发放),以此激励矿工长期运营。目前,根据 FIP-004 提案更新,为了减少矿工质押的压力,挖矿奖励改为先释放 25% 区块奖励,剩余 75% 仍然需要在 180 天内线性发放给矿工。
同时,由于系统暂时分不清矿工自己刷的数据和实际的用户真实数据,Filecoin 设计了已验证用户、承诺容量等几个规则,来激励矿工尽量存储真实数据。
已验证用户指的是已经被验证具有真实数据需求的用户,存储这类用户数据会给存储矿工带来其他数据 10 倍的收入。验证用户的相关细节在本文的「第 9 点:存储数据量真实性」这一章节中有详细介绍。
在矿工激励这件事上,Storj 的激励机制可谓简单明了,这套规则能够很好的服务于其系统高性能高可靠性的目标;而 Filecoin 的规则尽管尽了很大努力为去中心化服务,架构上也实现了去中心化,但是没有规则能够很好的防止矿工进行刷数据、拒绝存储订单等消极或者作恶行为,也没有能够激励矿工提供足够好的云存储服务,矿工都是逐利的,机制的设计让矿工偏向于提供存储空间(扇区封装),而不是偏向于提供存储服务(矿工可以拒单,矿工无需保证带宽,传输快慢矿工不负责),从这点看,虽然两者都一定程度上达到了机制设计的目的,但 Storj 所提供的存储服务会更稳定,文章后面的第 16 点的上传下载测试也验证了这个问题。但是,虽然 Filecoin 对矿工比较狠,有严苛的惩罚机制,但架不住 FIL 比较挣钱,规模效应让矿工可以大量投入,以及大量产出,而 Storj 追求网络的分散,所以官方限制了矿工的发展规模,以贴合于存储需求的增长速度,所以 Storj 的矿工没法规模化投入,只能是个人分散投入,比如一个人家里放个 NAS,顶多就存个 30TB 的数据,如果你加一台 NAS,在 Storj 网络就会被识别成同一个节点,因而只会按一个节点给你分配数据,这就注定了矿工无法规模化投入,同时也就没法有规模化收益。所以从矿工收入的角度来说,Filecoin 虽狠,但能赚钱 ; Storj 虽然温柔,但只能挣个小小钱,发不了财。
Storj 的矿机门槛较低,最低要求是:一个处理器核心专用于一个节点,一个 500G 硬盘,每月 2TB 的宽带流量,上行至少 5MB/S,下行至少 25MB/S。这样的门槛,低到几乎家家户户都可以把自己的电脑装成一个 Storj 节点。最低成本可以 800 元组一台 NAS,目前本人就装了几台节点用于测试。
Filecoin 的矿机门槛相比之下就高多了:官方对矿工节点的基础设备要求:AMD 的 8+核心 CPU、至少 128GB 的 RAM (内存)、拥有功能强大的 GPU (取平均核心数为 3000,目前一般使用 2080Ti/3080/3090 显卡)、大于 512GB 的固态硬盘(选择 1TB SSD NMVe 接口)。目前单台 Filecoin 矿机的成都在 10 万+。
显然,Filecoin 矿机门槛远远高出 Storj,这一点从经济学的角度,显然将造成能够买矿机做矿工的人数较少,直接的结果就是节点数量必然会很少,我们预计 Filecoin 的节点数量将比 Storj 少 1-2 个数量级。目前的数据是 Filecoin 节点数 600+,Storj 是 8000+。较少的节点,会让 Filecoin 在流量分流与提供 CDN 服务的能力上,远远弱于 Storj,而且一旦 Filecoin 存储应用铺开的话,也会让 Filecoin 大矿工有较大的流量压力。
Storj 对上传到网络中的文件都会生成一个「元数据」,也就是寻找文件存储位置的地址,这个地址存储在卫星中,依靠这个地址,卫星对文件可以进行检索,这一过程非常快速简单,同时,还可以进行删除、转移、复制等操作,据头等仓实测,从 Storj 上删除一个文件仅需要 3 秒钟。Storj 的检索费用是一个非常小的数字($0.0000022/ 次),除非天量检索,否则可以忽略。
Filecoin 的文件检索主要依靠网络中的检索矿工,检索矿工根据用户提供的文件信息在 gossipsub 上发布检索要求,随后在存储矿工处获得文件并向用户发送部分文件以及定价要求,最后用户确定订单后支付费用,对于用户而言相对便捷。
而 Filecoin 由于对文件进行打包封装,每个扇区都被层层折叠成了一个巨大的数据晶体,从中删除数据,等于要把深度折叠的仓库层层拆开,从中找到一个物件扔出来,非常困难——扇区打包需要 40-50 分钟。因此,Filecoin 里的文件目前无法由用户进行删除,若是要删除文件只能通过用户与存储矿工自行协商完成,头等仓咨询了官方,对于文件删除,官方的答复是,要等到该文件的订单到期后,文件才可删除。同时,Filecoin 存储时间 180 天起,因为扇区的最少生命周期就是 180 天,也就是只要你往 Filecoin 存了数据,它就必须至少存 180 天,而且 180 天的存储费用用户要一次性交清。
另外,Filecoin 在文件上传后,需要等到矿工成功把文件封装到扇区后,才能检索下载。这个封装时长主要看矿工的硬件能力,小矿工慢的话要几天,大矿工快的话就个把小时,目前头仓测试过,最快的是晚上上传,第二天早上封装进扇区。而且 Filecoin 在检索(下载)文件的时候,延迟比较厉害,网络也不稳定,通常要等个至少十几秒,多的要等三分钟,才会开始下载。而 Storj 在下载文件时,是直接就开始下载,对延迟无感。
另外,因为 Filecoin 是公链,每次上传下载的时候都要提交订单给矿工,提交订单的同时会支付费用,因此,要支付成功,则必须要保证区块同步到最新区块,所以目前的情况下,要上传下载东西到 Filecoin 网络上,要先同步几十 GB 的区块数据,并且区块数据现在还在以每天 400M 速度增长,这是目前很影响 Filecoin 应用普及的一个致命伤,所以 Filecoin 官方也有提计划准备开发不需要同步完整区块链的轻节点,相信应该能解决这个问题。而作为 ERC20 代币的 Storj 就没有类似问题。
从以上的这些规则与实际测试结果来看,显然 Storj 会比 Filecoin 在对象存储服务上更贴近实际的存储用户需求,随存随取,快速检索,费用结算灵活,用多少空间流量,就扣多少费用。而 Filecoin 相对来说就是能否存取,要看区块同步是否完成,费用结算霸王条款,二话不说先收 180 天的费用,存上去的东西还不能删。综合来说,我们认为在这个环节,Storj 胜出。
Storj 采用的是客户端加密,所有需要存储到网络中的数据都由客户端加密后再上传,加密后的数据需要用密钥解密后才能查看,而密钥保存在客户端所在的本地计算机中,无法从网络中获得。也就是说,即便通过卫星能找到用户的数据,也无法知道里面是什么,而且文件还是分散成 80 份,分散到 80 个矿工的主机里的,要同时获得至少 29 个矿工的数据 ,才能拿到完整文件,拿到完整文件后,还得使用密钥才能解密,这基本上杜绝了数据泄露的可能。
Filecoin 需要上传的数据默认不加密,也就是是否加密靠用户自己。用户有上传未加密数据的可能性。另外,Filecoin 是单矿工对单用户,或者多矿工多份复制对单用户,用户的数据是直接暴露在矿工手上的,而且文件的 CID 只要被人知道,就能任意获取该文件,隐私性相对就差了很多,可以说 Filecoin 的机制设计并没有考虑太多隐私性方面的需求,只让用户自行对文件进行加密。
因此,我们认为在隐私性上,Storj 无悬念胜出。
Storj 的数据维护亮点是采用了纠删码技术。每个文件上传时数据都会在冗余 2.7 倍后,生成 80 个碎片存在 80 个节点中,其中任意 29 个矿片就可以生成完整文件,卫星会时常检查以确定这 80 个碎片是否还在,以及随时间推移,它们损坏丢失的数量,一旦现存的碎片数量下降到 50 以下,卫星将启动数据修复,从现存节点中获取 29 个碎片重新生成文件,再切片形成丢失的碎片并重新储存到其它节点中,以确保网络有足够的碎片数量。整个过程用户是无感的。
Filecoin 的数据由矿工进行维护,维修矿工的角色也是由其它的存储矿工扮演,用户将文件存储到多个矿工上,其中一个矿工的数据损坏了由其他拥有相同数据的矿工进行文件传输修复。(如果用户只存一份,那就没有维护矿工了,丢了就丢了)
数据维护上,毫无疑问 Storj 以周密完善的设计胜出,Filecoin 这种机制是完全靠用户自己选择数据冗余倍数,以及靠极严苛的条件惩罚矿工来保障文件耐久性。由于严苛的惩罚机制,矿工确实是会积极主动的维护文件的安全,但是免不了天灾人祸的情况,支付宝都能让叉车给挖了,更何况这些集中在数据中心的矿工们呢?目前 Storj 文件丢失数量为 0,而 Filecoin 刚上线不久,实际效果还需要时间来检验,但单从用户体验与机制设计来说,我们认为还是 Storj 将更胜一筹。
从结果来看这个问题的话,多少会有一些不公平,因为 Storj 比 Filecoin 早推出半年,目前已经有 8PB 的真实业务数据存在上面,Filecoin 才刚上线半个月,它还没满月。所以我们探讨这个问题,不从结果上看,主要是从机制上来探讨。
从机制上来说,Storj 是分散式存储,用户上传文件时不知道这文件会存到哪些节点上(而且大概率给你分布到全世界去),所以没办法自己存给自己,而且上传文件的直接成本与收入关系悬殊,用户上传 1TB 要支付 10 美元 / 月,而矿工存储 1TB 只有 1.5 美元 / 月的收入,因此矿工也就没有上传虚假文件的动机。
但 Filecoin 并非如此,存储用户是可以直接指定矿工来存储自己的文件,而且存储 1TB 的文件,支出的成本是每个月不到 3 美元,而如果矿工把这 1TB 的文件封装成扇区,那一个月能挖到 6.6 个 FIL,目前价格为 21.7 美元。而且官方为了鼓励矿工存储「有效」数据,提出了「验证用户」的概念,说白一点就是由社区投票认证的存储用户,由已验证用户存储的数据 ,被网络认定为「有效」数据 ,而矿工封装这些「有效」数据,能得到 10 倍的算力加成,这样算来,封装 1TB 的数据 ,就能得到 210 刀每月。这样的机制,一定会让矿工们努力争取,扮成一个需要大量存储的「验证用户」,只要通过社区认证,就能拿到大量额度,再指定矿工给自己存,这样就完美了。
以下简单介绍一下社区治理的「验证用户」的社区认证「开光」过程:
整个治理分三个角色:根密钥持有人、公证人、客户群。这几个角色都可以是任何人。根密钥持有人是由社区选出,主要的任务就是持有根密钥,无条件执行社区决议。公证人也是由社区选出,主要职责就是把容量额度分配给申请额度的客户,以及向社区申请更多额度。社区投票通过后,就由根密钥持有人执行额度开通。额度开通后就可以分配给客户们去做「有效」存储了。
Filecoin 的矿工是容易被攻击的,矿工容易遭到 DDOS 攻击导致带宽占满,若是矿工因受到攻击而无法及时向网络提交存储证明,在超过 14 天后矿工将会被处罚扣除 90 天的区块奖励,同时扣除质押的代币,该存储扇区视为无效扇区,该扇区被分配的算力清零,此时矿工可以选择将文件丢弃,对用户而言意味着数据丢失的风险很大。在测试网阶段,就曾经有矿工因为攻击,而导致算力清 0 的情况。
这种攻击对 Storj 的矿工来说不是问题,Storj 客户端对节点的任何操作都需要通过卫星进行,并且,即使个别节点受到攻击,也不影响用户数据的取回,除非存储该用户数据的 80 个节点里面,有超过 51 个节点同时受到攻击,导致数据无法取回,而且也无法修得,这样的难度,显然比单独攻击一个 Filecoin 矿工来的难多了。Storj 的最大风险不在于节点,而是在于卫星,但是,卫星也不是单台服务器,而是一个服务器集群,集群的抗攻击能力显然会比单台服务器更强一些。
而且由于 Filecoin 的用户存储数据是单个矿工存储,所以一旦这矿工网络延迟或者出现被流量攻击的话,用户数据就很难取回。所以对于有用数据,用户还是要选择多个矿工存储。
而 Storj 的数据是以碎片分散存储,只要 80 个节点中的 29 个节点能正常在线,就能完整取回文件。相对来说,可靠性会比 Filecoin 高很多。
这是我很不想提起的一个点,只是 Filecoin 在这方面做的实在是在太差了,所以想借着这么一个机会,希望能引起官方重视。
Filecoin 的主要社区是 Slack,在 Slack 中咨询关于目前机制问题以及系统 bug、更新问题或者是矿工挖矿疑问的信息,得到回复的速度较慢,基本集中在一个时间点,而且很多时候甚至是没人回复,根据回复情况,目前看来只有一个社区负责人主要回复社区中的疑问,大多时候是在聊天室的同韭出来回答问题,但是有些问题不经过官方确认,我们也不敢随便信啊!我想说 Filecoin 也募了不少钱了,听说光开发团队就有上百人。怎么也不多招几个人来好好回复社区的问题?这无形中劝退了很多想了解 Filecoin 的人。自己看也看不懂,去社区问也问不着。
Storj 除了每季度定期市政会议之外,有推特,有论坛,有 Support 平台提交问题,头等仓在测试 Storj 网络的过程中,碰到了一些问题,在这些平台上咨询官方,几乎所有问题都会在隔天有人回复,从回复的情况来看,有好几个人员分别在回复各种不同领域的问题,基本能够做到有问必答,并且对各种细节提问表现得比较友好,也愿意公开大部分数据。
Storj 会按季度对代币支出和锁定情况进行公布,链上也可以查询到其代币锁定情况,但没有公布其法币募资资金的去向。它属于比较透明的项目。按目前官方公布的季度财务报告,团队手上的币,还够他花十几年。
Filecoin 博客没有公布资金使用情况,ICO 总额为 2.57 亿美元。我们并不清楚目前团队手上还有多少资金,如果有人有相关数据,欢迎提供。
这部分,其实我们不想做过多的解读,但是简单的说个结果又有给人喊单的嫌疑,所以我们稍做说明。
Storj 目前价格为 0.35 刀左右,今年 312「特价」0.08 刀,短期高点 0.73 刀,目前总量 4.25 亿,官方手上还有 2.62 亿持币,市场流通的有 1.62 亿,未来随着业务量增长,官方手上的代币会逐步释放到矿工手中。只有当官方手上代币释放完后,才有可能改成向市场买币来支付矿工存储费用,而释放的速度是和业务量成正比的,业务量越多,释放越快,流通量就越多,官方持币是目前影响 Storj 价格比较突出的问题了。未来如果这部分有较大变动(比如销毁),则以目前 Storj 业务量的增长速度来说,未来机会还是有的。
Filecoin 的话,那暂时就只能是一路下跌了,目前 FIL 还能维持一个高价格是因为质押的机制设计,强迫矿工去市场接盘来增加算力。但这肯定是不健康的,没有充分的,自由的市场博弈,没有充分的筹码交换,光靠质押,锁仓,来锁定流通性,以锁定高价格高市值,这是不科学的,这样的机制,如果让 FIL 一路维持数百亿美元的整体市值,那就没有投资机会,同韭们看戏就好。只是随着挖矿的币不断释放,整个流通量不断增加,我们认为价格还是会慢慢往下走的,它最终还是要达到一个平衡,那就是矿工买币质押的意愿,以及持币者卖出套现之间的平衡,重点可以关注代币释放速度和质押速度的对比,借贷市场上线后需要关注借贷市场的利率和借贷量。长线来说,我们还是看好 Filecoin 会有机会解决现有的存储领域的一些问题,但如果今天的 Filecoin 市值 600 亿刀,5 年后的 Filecoin 市值 1200 亿刀,那于你我而言,又有何意义。买大饼不香吗?
要回答谁能提供更好的云存储这个问题,首先我们需要先理解云存储的服务标准 SLA,它是目前全球商用云存储的黄金标准。我们以目前亚马逊 S3 云存储的 SLA 服务标准为标准线,以此来衡量双方在云存储核心业务上的表现(不过具体的亚马逊 SLA 的内容,我们就不罗列了。大家有兴趣可以去亚马逊官方查看)。亚马逊 S3 SLA 主要包含几个维度:
Storj 主要采用了纠删码技术来解决耐用性与可用性方面的问题,纠删码技术主要是会把文件以 2.67 倍的冗余,切分成 80 等份 , 分散到网络上的 80 个节点上,只需要其中 29 个节点在线,便可恢复完整文件。通过这样的机制,Storj 实现了 99.99999% 的文件耐用性,目前存储了 1.7 亿个文件,丢失文件数为 0。因为 Storj V3 网络设计之初就对标亚马逊 S3 云存储的 SLA 服务标准而设计,因此在这部分的能力,Storj 相对会更胜一筹。
Filecoin 目前在文件耐用性与可用性方面,主要依赖对矿工有严厉的惩罚机制来实现,矿工每封装一个扇区,要质押大量的 FIL 代币在扇区上,如果扇区损坏,丢失,则矿工的质押的代币将被罚没,以此来激励矿工提供高耐用性、高可用性的存储服务,但目前来看,仍然避免不了矿工存储的扇区损坏,数据丢失。除此之外,Filecoin 设计的机制里面,只要用户把文件分多个矿工,分别存储一份,那只要数据产生丢失,那这些矿工之间就能够互相修复文件,但前提仍然要用户多倍冗余存储,因此我们认为 Filecoin 目前在文件耐用性与可用性方面是没有保障的。用户存储高价值数据量,需要由用户自行进行多倍冗余,而这直接造成存储成本成倍上升。而且多倍冗余的效果也不如 Storj 这种分散 80 个碎片分别存储来的更安全。
Storj 的定价是对标亚马逊 S3 存储的服务价格,再结合其网络主要组成为闲置的硬件资源,以及由于纠删码的原因,Storj 对存储的内容自动会有 2.7 倍的冗余,综上来说,Storj 的存储服务定价为亚马逊的一半,存储 1TB 的数据价格为 10 美元 / 月,数据流量费为 45 美元 /TB ,而 Storj 支付给矿工的价格为 1TB 的数据为 1.5 美元 / 月 , 流量费为 20 美元 /TB. 由于 Storj 的主要目标是 To B 的用户,所以采用中心化的定价方式,以法币定价,避免代币价格波动,提供一个统一的市场价格。
Filecoin 的定价是由市场因素决定的,由矿工和存储服务分别提供报价,最终由 gossip 对双方进行交易撮合,撮合后的存储用户和矿工则自动对接,用户上传数据,矿工进行存储。计价方式用 FIL 来定价,这样的方式优点是以市场供需来决定最终存储服务的价格,从目前来看,价格是存储 1TB 数据为 0.67 美元 / 月,价格是亚马逊价格的 30 分之一,在价格是上极具竞争力的。但是缺点是由于使用了 FIL 定价,而且定价规则是由市场供需关系决定,因此,在目前 Filecoin 上线还不够久的情况下,代币价格波动大,而且存储供需市场博弈不充份,所以存储服务的价格波动较大,暂时只适合做一些存储测试,还不太适合 B 端用户进行实际大规模存储。而且笔者实测,每个矿工的定价天差地别,多的甚至差了一百倍,这样的机制,只是理论可行,现实情况不禁让人打了一排问号!
另外,从二者的模式来对比,Storj 主打的是使用闲置资源,化废为宝的方式,通过纠删码及存储节点的管理规则来提供高 SLA 标准的云存储产品,Storj 还是以一个比较传统的做生意的逻辑来提供云存储服务,生意逻辑就是:假设 Storj 向存储矿工以 1.5 美元 /TB 的成本每月采购了 2700TB 的容量,提供给有存储需求的用户,以 10 美元 /TB 的价格卖出 1000 TB (纠删码生成 2.7 倍冗余),中间的利差就是团队挣到的钱。我们认为,低价批发,加价卖出,赚利差的方式,让 Storj 看起来很传统。
而 Filecoin 通过系统发行代币,由代币来支付给矿工费用,最终由代币交易市场为代币价格买单的方式,让羊毛出在猪身上,由二级市场投资者花钱购买代币,来支付矿工高昂的挖矿设备成本,因而矿工即可提供不计设备成本的云存储服务报价,我们称之为补贴,由系统发行代币补贴矿工以提供低成本的存储,最终由市场投资者买单。这样的代币经济模型设计的很巧妙,有效的转移了成本,提高了存储服务产品的价格竞争力。但是我们认为 FIL 还是有风险点的,一是目前 Filecoin 的存储节点硬件门槛高,导致硬件成本极高,同单位的存储容量的硬件成本是亚马逊的十倍以上,其主要成本是用于「挖矿」这件事情,而不是用于更好的提供存储,这明显是不合理的,这部分最终是由投资者来买单,但是我们认为不可持续。协议实验室最终应该要找到平衡硬件成本与挖矿安全性的方法,否则 Filecoin 的价格优势很难持续。
从机制上来说,Storj 使用了纠删码技术,文件的下载过程,是从 80 个存储节点中选择 35 个速度最快的节点进行竞争传输,最终客户端从 29 个最快的节点取回数据碎片。Storj 快,首先是多点传输比单点传输要快,中心化云存储的一个问题,就是下载时从单个点往客户端传文件,传输速度非常受限于带宽,而 Storj 采用多点传输分散带宽需求的方式解决了单点带宽受限的问题——由 29 个节点的带宽去分担传输流量。而 Filecoin 的机制允许用户选择单个或者多个节点储存,但实际下载时还是从单个节点下载,因此其速度会受限于单个节点的带宽。
第二则是节点竞争,由于节点竞争的存在,Storj 的节点都「被迫」保持高带宽来保证自己的高上传下载速度。每次用户上传数据,都有 130 个节点竞争存储数据碎片,其中 80 个较快完成存储的节点能够获得这部分数据和后续收入,另外 50 个什么都得不到。用户下载数据时也一样会有部分较慢节点一无所获。因此,节点的上传下载速度越快,越能够保证自己获得存储数据碎片 / 传输数据碎片的机会,获得收入。这就保证了网络整体的上传下载速度。
以下是头等仓为了取得 Filecoin 和 Storj 的真实上传下载速度,我们对其网络进行实测,首先必须强调我们只需要了解双方的速度大概量级,对于实验的数据精准程度,我们是不做要求的。测试过程分两部分,一部分是在国内,以家庭带宽为主进行的测试,第二部分是租用国外的服务器,以国外网络条件为主进行的测试,为了让大家更好的感受两个网络在存储能力上的差异,所以我们尽可能还原测试过程的每一个细节,同时也留下的测试文件 CID 等信息,大家可以在区块浏览器去查证,整个测试过程如下:
笔者坐标中国厦门(因为头等仓就在厦门), 使用家庭 200Mb 电信宽带,测试文件大小为 1006MB。
Filecoin 测试
导入 Lotus 后生成文件指纹 CID:
bafykbzaceb7jcjsnozpv45wpqyqrzilmehqgzin5ozhfwfvfbu7rn7oon3iu2
从 Slate.host 随机选取了几个条件合适的矿工 f08157、f03488、f09675
第一次选取矿工 f09675 提交存储订单(Deal)
30 秒后生成订单 CID:
bafyreiheedhw7veoryrux6pznhrpagl32v5sb26gelhcpozwqwgits3dwq
但是大概 6 分钟后,发现 Deal 消失 , 可能的说法是矿工 f09675 拒绝交易。
所以第一次提交失败。
第二次选取矿工 f08157 提交存储订单(Deal)
从提交存储订单(Deal) 到最终 StorageDealTransferring (文件传输完成给矿工)总共用时 17 分 19 秒,具体步骤如下:
第一步:提交存储订单(Deal) ,到生成 Deal CID 的用时为 1 分 14 秒,生成的订单 CID (DEAL CID):
bafyreidk5lzgtagrromd3qs4rk7akd57keaz7jlj5bibu7jhiy3wguf6sm
第二步:订单状态转为 StorageDealClientFunding,这个意思貌似是矿工在核对余额,核对订单之类的。用时 4 分 48 秒
第三步:文件传输,用时 11 分 14 秒
第四步:生成了 Deal id:961927, Deal 状态显示为 StorageDealSealing (正在封装中)
单独只取第三步文件传输的时间来计算文件上传速度的话,平均速度应该是 1.49MB/S
如果取从 Deal 提交到文件传输完成的时间的话,平均速度是 0.97MB/S
觉得哪个速度更能代表本次测试的上传速度,就看大家自己选择。不得不提醒一点,Filecoin 单点 (用户) 对单点 (矿工) 传输的机制决定了影响速度的不是 Filecoin 网络牛叉不牛叉,而是存储用户跟其选择的矿工的网络连接是否通畅、高速,因此本测试只能代表笔者自身的网络情况与本人随机选择的矿工的网络连通程度,无法代表 Filecoin 网络牛叉不牛叉,每个人测试的速度都有可能不一样,从官方 Slack 论坛了解到的信息,有的人速度快到十几 MB,也有人速度慢到 250KB。大家理性看待。
剩下就是等待矿工封装到扇区,预期时间为几个小时到几天,这段时间就不统计了。
(等了两天了,仍然没有被封装到扇区。)
等了两天了,矿工 f08157 仍然未把文件封装成功,因此无法直接测试该矿工节点的下载速度,所以不得不从其它已封装成功的矿工那里来下载同一个文件进行测试。目前选择矿工 f01782 已经完成封装,如下测试从该矿工的节点取回(下载)文件。
第一次运行取回命令,只成功取回 1.05MB 数据,然后卡了 10 分钟,取回失败
第二次运行取回命令,显示 Recv: 0 B,卡了十多分钟,取回失败
第三次运行取回命令,结果同上,卡住了,取回失败,了解了一下原因,原来是我本机 Lotus 的区块同步卡住了,没有同步到最新区块
折腾了一整个晚上,区块高度始终同步不上去,区块同步速度明显低于新块的产生速度,从这看来,测试网的区块同步问题还是没能很好的解决。明明昨天还同步的好好的,明明国内节点也不少,怎么今天就是同步速度这么慢,怎么搞都不行。而只要区块不同步,文件就下载不了。上官方论坛查找解决办法,得到的结果是,换电脑,改用 AMD 的 CPU+NVMe 固态硬盘(我这么穷,没办法)。最后,逼不得已,全部重装一遍,几个小时后,终于顺利的同步到了最新区块,并成功进行了第四次的下载测试。
第四次运行取回命令,在 DealStatusCreatingChannel 这个环节卡了 3 分 13 秒,我以为可能是墙挡住了,所以试着开了 VPN 20 秒,然后又关闭 VPN, 然后就顺利进入下一步,开始传输文件,传输文件这个环节总共用时 3 分 28 秒,平均速度为 4.83MB/S,为了让我自己看起来更严谨一点,所以我又重新下载测试了一遍,结果下载环节用时 9 分 11 秒,平均速度 1.82MB/S, 为了给 Filecoin 留点面子,我还是取 4.83MB/S 作为本次下载测试的结果吧,到此,经历三次失败,第四次成功,本次下载测试总算是完成了。
Storj 速度测试(同等硬件与网络条件下)
Storj 的上传测试相对简单,我选用了 https://asia-east-1.tardigrade.io/ 亚洲的卫星。在上面注册完后,获取到了 API,然后下载 Filezilla,使用 Filezilla 可以直接连接 Storj 的 Tardigrade 网络,操作也比较简单。
上传过程就是配置好 Filezilla ,选择要上传的文件,直接点击上传,上传的是跟 Filecoin 测试同样 1006MB 大小的文件,上传时间是 14 分 27 秒,平均速度 1.16MB/S,不过在上传过程中,文件每上传 64MB 会停顿大概 1 分钟,主要原因是 Storj 需要对文件切成 64MB 的段,然后再进行纠删码冗余并分割成 80 小份。这些时间拖慢了 Storj 的上传速度。所以用时 14 分钟多。
另外,可能由于亚洲节点太少的原因,在国内上传大文件时,Storj 的上传并不稳定,本人上传了 5 次才成功一次。大部分是上传到 60%-80% 的时候卡住,然后反馈超时失败。
下载过程比较简单,直接选择文件,点击下载,下载用时 2 分 21 秒,平均速度为 7.13MB/S,而且下载也比较稳定,试了几次都直接下载成功。
国外服务器使用的是 Vultr 的最高配的 Bare Metal ,地理位置在新加坡,4 核 8 线 CPU,32GB 内存。文件还是同样的文件,大小 1006MB,文件 CID 不变。
Filecoin 测试
第一次从 Slate.host 随机选取了一名合适的矿工 f020904 提交存储订单(Deal)
大概 30 秒后生成 Deal CID:
bafyreicnzkb7csxxqwaqsbzxieoktlsk7ro42ad6slgncfoqmkmsmwg2ui
大概 4 分 30 秒后,订单状态转为 StorageDealFundsEnsured 后,订单莫名消失。事实证明,订单提交失败!
第二次随机选取矿工 f09569
第一步:大概 28 秒生成了 Deal CID
第二步:一闪即过,太快了没看清楚,姑且认为它只有一秒
第三步:Deal 进入 StorageDealTransferring 状态,开始传输数据,但是这个环节使用了 32 分 15 秒(震惊)
第四步:文件传输完成后,生成了 Deal id:962551 Deal 状态显示为 StorageDealSealing (正在封装中)
按本次测试文件传输 32 分钟的时间来计算,文件上传速度为 0.52MB/S,我感觉我可能碰到了一个辣鸡矿工,或者我跟这矿工缘分不够,为了不冤枉 Filecoin,所以我决定重新选一个矿工再测一遍。
第三次我实在受不了了,我决定选个有头有脸的大矿工,我用 query-ask 命令询价了算力排名前五的矿工,只有 f01782 能询到价,其它的几个矿工不管是用国内客户端,还是用国外的客户端,询价时都没反应,难道是大家都不开门迎接用户数据吗?身为 Filecoin 矿工,如果你的硬盘只是为了挖矿而服务,那你和 BHD 有什么区别?先鄙视一遍!
第一步:提交存储订单(Deal)
27 秒后生成订单 CID:
bafyreiczimrrwlhv2v2csn7bqmnq7yivtq4st4i3eyybkpiun3esxejnhy
第二步:一闪即过,太快了没看清楚,姑且认为它只有一秒
第三步:Deal 进入 StorageDealTransferring (数据传输中) 状态,开始传输数据,整个环节使用了 2 分 31 秒
第四步:文件传输完成后,生成了 Deal id:962675 订单状态显示为 StorageDealSealing (封装中)
(隔天起床后,Deal 状态已经是 StorageDealActive,封装成功)
从第三次的测试结果来计算,上传时长如果以 2 分 31 秒来计算,平均上传速度为 6.66MB/S,如果上传时长从提交 Deal 时开始计算,时长是 2 分 59 秒,平均上传速度为 5.62MB/S。
下载文件是运行 retrieve 命令,从矿工 f01782 取回文件
第一次文件取回只取回了 10MB 的文件后,报错超时,取回失败
第二次文件取回用时 3 分 53 秒。平均速度 4.32MB/S
笔者从矿工 f020904 的节点上下载了另一个 1.03GB 的文件,是先前传上去做测试的,下载文件用时 1 分 34 秒,平均速度 11.21MB/S, 我想这应该也是 Filecoin 的问题之一,就是不同矿工之间提供的存储性能、带宽不一致。有较大的差别。
Storj 速度测试(同等硬件与网络条件下)
采用国外的服务器来上传文件到 Storj,这上传速度就明显快多了,我仍然选用了 https://asia-east-1.tardigrade.io/ 亚洲的卫星,直接配置 uplink 到服务器上。开始速度测试:
最后归纳测试结果如下:
国内环境:
Filecoin 上传速度:1.49MB/S,下载速度:4.83MB/S
Storj 上传速度:1.16MB/S,下载速度:7.13MB/S
国外环境:
Filecoin 上传速度:6.66MB/S,下载速度:4.32MB/S
Storj 上传速度:17.34MB/S, 下载速度:9.58MB/S
从以上的测试过程来看,Filecoin 的性能明显不稳定,时好时坏,上传下载速度取决于你选了个什么矿工,Storj 相对来说,整体较为稳定。但是 Storj 在国内的稳定性也较差,特别是大文件国内上传容易失败,不过除了国内上传速度较慢之外,其它三项均胜过 Filecoin。Filecoin 从整个操作的体验来说,让我感觉它对标的应该不是亚马逊云存储,它是比亚马逊云存储更低一层的存储层,专注的就是「去中心化」这件事情,因为亚马逊云存储重点不只考虑存储,还要考虑用户体验。而 Filecoin 是专注去做更好的去中心化,不关心存储体验这件事情,在我们理解,Filecoin** 应该是寄希望于生态参与者通过链下的方式去搭建面向用户更友好的存储服务体验平台,比如官方推出的 Slate, Fleek Space 等应用,但是具体成效如何,以及开发者是否买单,就看后续的业务发展情况了。以目前 Filecoin 的存储特性,我们想象不到开发者能如何采用 Filecoin 网络作为存储层**,比如文件存储要选择矿工;提交存储订单限制至少要存储 180 天;内容上传后无法删除;任何人可以获取文件等等。
全篇深度 PK 完成之后,我们回过头来思考主题,谁是更好的去中心化云存储平台?
我们认为这个问题应该分成两部分来看是比较合适的,第一部分是谁能更去中心化,第二部分是谁是更好的云存储平台。
对于谁更去中心化这个问题,头等仓的观点是认为,在机制设计上,网络的架构上,Filecoin 是更去中心化的,而在节点数量上,文件碎片化、分散化存储的纠删码规则设计上,Storj 是更去中心化的,如果二者非要选其一,那我们认为 Filecoin 会更胜一筹。
而对于谁是更好的云存储平台,我们认为 Storj 在云存储这件事情上面做的远超目前的 Filecoin。对于提供高速,稳定的存储服务这件事情来说,我认为 Filecoin 和 Storj 的优劣是很明显的,Storj 由于有较高的 SLA 服务标准,由纠删码机制保障下的全网性能统一以及高耐用性与高可用性,上传下载速度只受用户当地网络条件的影响,这点是比较有利于存储有用数据(我自己都敢存)。而 Filecoin 目前在矿工性能与服务标准统一,这件事情上面是有缺陷的,对 B 端用户来说,如果有重要数据需要存在 Filecoin 上的话,那真得好好挑一个中国好矿工了,一个还不够,可能得三个。
最后,如上文第 2 点和第 16 点所述,由于 Filecoin 的经济模型和矿工激励机制设计缺陷,在未来,矿工存在很大的中心化可能:未来数据存储和下载流量都很有可能汇集到大矿工的矿机上,矿工的出口带宽会成为整个网络的瓶颈,我们很难想象这样的 Filecoin 能够作为存储层承载未来 ZB 数量级(10 亿 TB)的去中心化存储。Filecoin 需要像以太坊一样经历颠覆性的重大机制改革,甚至多次蜕变,才可能真正承载它的使命,我们会重点关注 Filecoin 的发展方向,在机制有重大变更时,会再推送给头等仓的会员们。如果 Filecoin 机制不做重大革新,那我们就祝你幸福!
来源链接:mp.weixin.qq.com