“许可IPFS存储网络”主要对IPFS进行了以下改进:
- 合理拆分轻重节点,改进网络结构,提供合理易用的接口;
- 与区块链深度结合,支持文件权限管理、版本管理等功能;
- 引入合理激励措施,鼓励许可存储节点主动保存用户文件分片的同时避免浪费过多的存储空间。
一、许可IPFS存储网络
海峡链的“许可IPFS存储网络”由区块链、重节点网络和接入端轻节点组成,整体架构如下图所示:

1.1 区块链
传统的IPFS网络中没有区块链。这会导致IPFS网络处于一种自发运行的状态,无法对一些数据和逻辑达成共识,这在应用层面造成了困难。因此在海峡链中,我们引入了区块链,让IPFS与链打通,需要共识的数据和逻辑可通过链完成。每个IPFS节点都连接到链上,在链上对平台层面,各个节点间需要配合和沟通的内容进行共识。这些内容包括:合法IPFS重节点地址、链上有效文件元数据、存储服务商业化、重节点参与激励。
1.2 重节点网络
“许可IPFS存储网络”对节点进行了区分,重节点提供存储服务,轻节点提供终端访问服务。重节点的职责是长期存储文件片,保证足量的冗余文件片备份,且在有其它节点申请文件片时,按规则发送文件片。“许可IPFS存储网络”通过激励方案保证长期和足量的文件片备份,重节点存储的有效文件片越多,获取存储激励的几率越大。“许可IPFS存储网络”提供基础数量的重节点,能保证用户文件获得基础的可信的存储服务。重节点之间互相传输和备份文件片时,不做权限检查;轻节点向重节点申请文件片时,重节点从区块链上查询请求者是否有读文件权限,通过检查后才会发送文件片。
多个重节点构建而成的文件服务网络称为重节点网络,其提供文件的存储和下载服务以及安全检查,重节点通过提供存储服务获取激励。
重节点网络与IPFS公共网络是打通的,可以从IPFS公共网络读取资源,同时可以对IPFS公共网络提供重节点网络中没有权限限制的文件片。另一方面,重节点网络优先响应来自“许可IPFS存储网络”节点的请求,服务质量不会受到来自IPFS公共网络的影响。
存储服务提供商可提交申请加入重节点网络,但需经过管理委员会投票同意后方可加入。链上记录着重节点白名单,所有重节点、轻节点都会同步该白名单,并只访问该白名单上的重节点。
1.3 轻节点
轻节点是海峡链独创的技术实现方案。开发者可以使用海峡链部署的公共轻节点或自己运行的轻节点来访问“许可IPFS存储网络”,推荐开发者自己运行轻节点。开发者可以通过轻节点完成文件上传、下载以及维护本地重节点列表,相应的功能可通过调用轻节点的独立接口实现。
- 上传文件:
- 对文件按DAG方式切片,生成CID;
- 将CID提交到区块链,并完成付款;
- 如果该文件需设置权限,可在链上合约中设置拥有查看权限的用户列表;
- 分发文件片至重节点网络。
- 文件下载:
- 从重节点网络收集下载文件片到本地;
- 如果文件头有加密,从链上获取密钥并解密;
- 恢复原始文件,返回给调用者。
- 维持本地重节点列表
- 重节点列表是公开在区块链上的白名单。轻节点会适时拉取该名单,并维持在本地,以便在文件上传、下载时连接到重节点。
二、文件权限管理
真实使用场景中,文件一般都有权限设置需求。该需求在开放共识链和开放许可链中有所不同。在开放共识链场景中,通常只需要将文件设置为开放或受限,对受限的文件,设置白名单确认哪些账户可读取即可。而在开放许可链场景中,文件安全要求更高。不仅要进行权限设置,还需要对文件流转过程做全流程管理和追溯。例如文件分享给第二人后,第二人希望分享给更多人时,是否需要文件所有者同意;有人查看了文件时,是否需要通知文件所有者;还包括文件的分享历史和查看历史追溯等问题。