今天和大家要聊的话题:关于IPFS存储的思考。此篇文章和区块链关系不大,因为IPFS本身不属于区块链技术,但是它和区块链进行耦合是目前一种极佳的场景,今天的1000字,我会从IPFS耦合区块链方案和IPFS文件存储引发的思考两个维度讲解。篇幅有限,以下不再普及概念相关问题。
IPFS耦合区块链
IPFS耦合区块链最能解决大文件上链存储的问题。大家知道,区块链存的是交易,而每个区块是有大小限制的,比如BTC是1M左右,中间还引发了闪电网络和BCH的故事,所以区块的大小直接限制了交易的大小。比如甲给已转了1个比特币,就是一笔交易记录到区块链上,这几个字段可能就几字节而已。而实际落地场景中,远不是存转账这么简单,对于一个业务稍微复杂的联盟链来讲,我们所谓的“交易”可能是一个物流信息、一个合同摘要或者一份操作记录等等,但是绕不开的话题是:这个“交易”大小的限制。这里给大家一个参考,目前行业认可的一笔交易控制在100K以内是个极佳状态,若再大,或者把交易拆分或者选择部分核心数据上链,剔除掉不重要的数据。
讲完存储方式,那IPFS是如何耦合的呢?其实对于90%以上的场景,IPFS仅仅用来解决了非结构化数据上链的问题。什么是非结构化数据?比如一部电影、一张照片就是非结构化数据,大家可想而知,一部高清电影的起步都是G级别的,这东西上链是不可能的,所以就要用到IPFS技术:大文件分片后文件会得到一个几K大小的hash值,当基于这个hash提取文件的时候,IPFS首选会有一个分布式hash对照表,然后再去相应的节点拉取所有分片,组合成一部完整的电影,而这个几K的hash值是可以上链的。这样,区块链存操作指纹和非结构化数据的hash值,就能解决区块链大文件存储的问题了。
以上就是常用的策略,总结一下:第一:区块链存储的都是交易,而交易的大小是有限制的;第二,区块链不可能存大的非结构化数据,IPFS的加入,使这个问题成为可能。一般讲到这里,客户是能接受这个方案的,但也不要忘记IPFS自身的各种缺陷(尤其是网络穿透问题),就如区块链缺陷一样,这不打算讲,大家可以自行百度,接下来讲一下IPFS文件存储引发的思考。
IPFS文件存储引发的思考
既然《爆击区块链3.0》,我们就要落实更多维度的思考,下面说重点。
IPFS还可以纵向切分结构化数据。什么是结构化数据?简单来说:比如一张表记录了“谁、什么时间、干了什么”等等,这就是结构化数据。我们可以用IPFS玩什么呢?纵向分片切分!继续打比方,比如我记录一个结构化数据,其中有七个字段,分别是:1(姓名)、2(年龄)、3(性别)、4(身高)、5(转账金额)、6(转账状态)、7(接收者)。为了保障数据的安全,我们惯用的做法是把这7个字段统一打包后,打散分片到不同的服务器上,这是最简单的思路。其实,还可以这样玩:我可以把字段1/3/5字段打一个包、2/4/6字段打一个包、7字段单独打一个包,再把三个包分片到不同的服务器上,就会分别形成三个子hash,这样能看1/3/5或者2/4/6或者7字段的用户得到对应的子hash就可以了;再延伸一下,为了安全,还可以进一步设定子三个子hash必须拼凑到一起才可以看到7个字段的数据。所以,一个单纯的IPFS(非区块链技术)就可以玩出很多类似“授权”和“数据更安全”的花样出来!