EOS入门(7)--EOS的存储系统:IPFS
根据EOS白皮书上的内容我们可以了解EOS存储部分的设计理念。
- EOS存储基于IPFS(星际文件系统)之上设计的;
- 不同与一些去中心化的存储方案需要特殊的工具或特殊的浏览器,EOS存储可以提供任意浏览器访问的能力;
EOS存储使用基于EOS发现的token TOK激励区块生产这保证存储的可访问性和带宽。
下面我们相信说一下EOS具体的设计细节
IPFS
IPFS是一种去中心化的文件系统,它将文件名和文件内容强关联起来(文件名是文件内容的hash)。也就是说在任意终端上,相同文件内容的文件其名称也一定相同。当你下载一个文件的时候可以通过文件名来校验文件的完整性。IPFS提供了一个p2p的网络传输层用于终端之间基于文件名称发现和分享文件。但是IPFS并不提供和保证文件的存储、托管和带宽。也就是说即使能有文件名,但是有可能找不到对应的文件内容。IPFS团队为了解决这个问题,发布了FileCoin区块链,使用区块链的支付系统来激励拥有剩余存储空间的人帮助提供稳定可靠文件的存储、托管和带宽(具体规则我没有深入研究,按照白皮书上讲的,FileCoin 应该跟 Maidsafe, Siacoin, 和 Storj类似)。
EOS对存储的需求
作为一个可以任意运行智能合约的平台,EOS设计性能需要达到百万级。这个这样的设计如果每秒进行100w次交易,每次交易产生100字节的数据,那么每秒钟就有100M的数据记录。如果每个区块生产节点都要存储一份这样的数据,那时间稍久数据量就是一个天文数字。另外,对于一些智能合约他们天然就有存储数据的需要,比如需要存储文字、图片、声音、视频等等数据。这些数据更不可能存储在区块链上了。
EOS存储的设计
按照EOS的需求,那IPFS+FileCoin是不是就解决了呢?理论上是的,但是有一个问题,FileCoin的经济激励系统是不符合EOS的设计哲学的,它需要终端用户为使用存储和带宽付费。基于这样的考虑,EOS没有选择IPFS+FileCoin的方案。而是基于IPFS自己设计了一套机制。
首先设计了一套文件系统智能合约,发行了一种 token 叫TOK。它允许每个用户定义一个目录结构,这个目录结构下面的所有文件都链接了一个IPFS文件。也就是说TOK只存储IPFS的文件链接和一个人类可读的文件名。
那如何上传一个文件?
用户通过签名一个交易创建一个指向IPFS文件的链接,并将该交易广播的区块链。这个交易包含了用户的home目录和相应的IPFS文件名以及文件大小。同时用户也可以指定文件被存储在哪个TOK 区块生产者上。然后用户将通过标准的restfull api(API由EOS.io定义)上传文件到指定的区块生产者。一旦区块生产者验证文件和文件名匹配,则其会广播交易到整个区块链系统,其他的区块生产会通过IPFS网络复制那个文件。这样用户就成功的上传了一个文件,同时在的home目录下保存了该文件的链接。
我们上面提到了,IPFS是不保证文件的可用性的,那么EOS怎么保证呢?另外每一个人能存储多大体积的文件?如何分配有限的资源呢?这要说一下TOK的作用了。
EOS存储里定义TOK,若用户需要存储空间那必须锁定一部分TOK(这个概念跟我们之前讲的使用EOS资源需要锁定EOS是相同的道理),不同的是其价格里面出现了一个参数叫CRR(Constant Reserve Ratio我翻译成准备金率常数)并且定义了一个公式:价格=余额/(供给*CRR)。
为什么要有这个CRR我一开始也不太理解,想了很长时间才想明白,TOK跟EOS token有一个非常大的区别EOS token只有一个服务商(区块链系统)但是存储系统设计的就不是这样,它可以有很多服务商不同的服务商在均衡服务质量和服务价格方面如何体现自己的竞争力呢?就是靠调整CRR。就是说有些服务商可能提供的服务质量比较高那他们可以将CRR调高一些,而有些服务商可能质量相对一般,那他们为了提高自己的竞争力就会将CRR调低一些。
不良信息的管控
这里就不多讲了,大致上说EOS存储可以任意删除不符合法律规定的内容,由于EOS是国际化的那可能出现内容符合某个法律但是不符合另外一个法律的情况,这就需要社区来进行维护,对于不守规矩的区块生产者就将它票出去。
隐私
EOS存储是一个存储公共信息的平台,如果你想存储私有信息,那需要你在上传之前就自行加密。
去中心化和复制(副本)
区块生产者们代表的是至少20个独立的个人或组织,每一个生产者可以复制和托管全球不同辖区的数据。只要这20个区块生产者有一个在线并提供文件,那么这个文件就可以被提供给所有人。
该方法提供了比其他存储方案更好的可用性,因为区块生产者需要随时更新他们的服务已获得投票并且获得区块生产的报酬。
得票排在25名以后的区块生产者是没有义务存储数据提供服务的,但是他们要展示自己的能力以便能被投票到排名前25。
EOS存储的经济系统
天下没有免费的午餐,那到底是谁在为存储空间和带宽付费呢?
存储的经济系统
存储的经济系统相对简单一些,持有TOK的的人将有每年5%的EOS通胀来支付。其供需逻辑跟我们之前分析EOS token的逻辑是一致的。也就是说最终支付存储费用的是TOK的时间价值。
带宽的经济系统
相对存储,带宽的分配相对复杂一些,因为内容的生产者和内容的消费者是完全不对等的,如果由内容生产者来支付所有消费者的带宽这可能不现实,比如说有个用户上传了一个视频到Youtube上,结果被点击播放了几百万次,这个带宽的费用其实是惊人的。那么怎么处理带宽的激励经济呢?EOS想的办法按照我的理解是对于在EOS系统内的用户不管是上传还是下载数据占用的带宽,都将锁定一小部分TOK(仅在使用时锁定,使用完成后释放),由TOK的时间价值来支付带宽成本。另外区块生产者还需要免费提供一部分带宽给没有在EOS系统注册的用户使用。
另外内容上传者可以提供TOK来补贴带宽,比如部分广告或电影宣传片。
总结
EOS存储的设计理念处处体现着EOS的设计哲学,特别是其经济激励系统,无处不在。在去中心化的世界里提供类似中心化的服务,也许这才是区块链的正确发展方向。