• 售前

  • 售后

热门帖子
区块课堂 2020-04-23
区块课堂 2020-04-23
据外媒报道,近日日本消息应用公司Line宣布将通过可转换债券融资13.3亿美元,从而支
区块综合 2018-09-06
小暖医生成立于2015年,是国内最早一批布局宠物医院SaaS的公司,目前已有CRM系统、电
图文列表 2018-10-02
区块课堂 2020-04-23

[技术] 京东金融李冠男:区块链存储扩展的三个方案

[复制链接]
admin 显示全部楼层 发表于 2018-9-6 14:13:56 |阅读模式 打印 上一主题 下一主题

本文源于京东金融区块链实验室技术专家李冠男分享的《基于Fabric的存储扩展实践》的主题演讲,他表示传统的中心化“云存储”存在很多问题,运用“分布式存储网络IPFS+区块链” 或许可以解决区块链天然不易存储大文件的问题。在实践的过程中,他提出了三个设计方案,希望能给大家一点启发。

以下是李冠男的分享,由巴比特整理。

大家都知道,区块链的故事开始于2008年中本聪发表《一种点对点的电子现金系统》,之后比特币横空出世。后来又出现了以太坊,随着市场热度的高涨,人们发现了区块链技术本身的应用价值,各种项目层出不穷,但是这其中的很多场景需要区块链具备文件存储能力。
一般来讲,大家的第一反应是,我能不能把数据都存储在链上?但是现有的主流区块链,比特币就不用说了,以太坊上面存数据是非常昂贵的,按照Gas数据是5Gwei计算,存储1MB数据需要花费3.76ETH。Hyperledger Fabric因为是联盟链,把数据硬要存在上面也是可以的,但现在有个写死的限制,默认数据小于99M,如果大于的话,需要重新编译它的代码。
所以可以看到,数据全部上链并不明智,也没有必要像存储交易数据一样,让千百兆的数据文件存储在每一个节点上。所以通常的做法是: 将文件存储在链外,在链上存储文件的hash ,这样文件其实依然是中心化存储,比如传统的“云存储“。

当前多采用的中心化“云存储”
什么是“云存储”?
传统云存储是让用户上传自己的数据到云端,用户上传完毕后,由服务提供商将数据保存在他们的数据中心。这样用户无论何时何地想要访问这些信息的时候,只需要向数据中心发送一条请求,数据中心将数据发给用户。
中心化的“云存储”存在以下问题:
典型的问题是数据中心都是大型服务器,它需要温控,并且严格维护,成本高昂,而且会有延迟,因为通常数据中心与用户不会距离很近。有人说,可以使用CDN,但问题是它的隐私策略是由服务提供商设计的,他们依然有办法访问和分享用户的个人数据,毕竟是不透明的。而且除了作恶的可能,只要有人工牵扯进去,就很可能会有意外的错误。比如员工误删数据库的事件并不罕见,GitLab事件让人记忆犹新...
采用“分布式存储网络”优点众多
所以我们需要采用分布式存储网络。这个技术并不新鲜,它有很多优点,存储的文件大小不受限制,可以无限扩展存储容量,而且成本低,不受地域限制,还是去中心化的,如果应用特点的技术,也可以保证它的内容不被篡改。
如果将“分布式存储网络”和“区块链”技术结合起来,是不是就可以解决区块链天然不易存储大文件的这种问题?
我选用的就是IPFS技术,中文叫做星际文件系统。

分布式存储IPFS——What?How?
IPFS是什么?
 IPFS是分布式存储网络;  IPFS是一个点对点的超媒体协议,目的是让现有的网络更快、更安全、更开放;  IPFS有一个很疯狂的目标:致力于替代HTTP协议,为所有人建造一 个更好的网络 ;
那么它有什么特点呢?
首先,存储在IPFS上的文件,是被打散存储的。就是说每个文件以及所有的文件块都有独一无二的指纹,这个指纹就是一个加密哈希值。其次,IPFS网络可以自动去除重复文件,也可以跟踪每个文件的版本历史 。而且每个网络节点只需要存储自己感兴趣的内容以及一些索引信息,这些索引信息的作用就是用来找到谁存储了什么 。当查找文件的时候,你可以使用Hash询问IPFS网络哪些节点存储了什么内容。最后,每个文件可以通过去中心化的命名系统IPNS获得对人友好的名字 而不是一串看花眼的hash。
IPFS技术栈分为这么几层:
最底层当然是网络、然后是路由、交换层、特定的结构层、Merkledag、命名系统,最上面是应用。IPFS和区块链一样,是技术集大成者,它借鉴了很多相关的技术。最下面三层的作用是转移数据,往上的两层是定义数据,最上面当然就是使用数据了。
在介绍完基础工具后,正式讲解我的尝试。

基于Fabric的存储扩展实践
首先,我明确了三个目标:
1.我希望Fabric能够暴露出 一组接口,使得外部可以通过Fabric使用IPFS;
2.我希望接下来Chaincode可以在有需要时也可以直接使用IPFS这个功能;
3.我希望这个过程中尽量少的修改现有Fabric代码。换句话说,我希望这是一种系统的能力,而不是一种特定的应用层手段。
目标摆在这儿了,最直接的方式是以现有的go-sdk作为粘合剂,将Fabric和IPFS联合起来。
最开始的想法是:对go-sdk进行二次开发,把与IPFS交互的逻辑封装其中,实际上在使用过程中,由sdk先请求 IPFS得到返回,再将返回结果作为交易内容写入Fabric ,和大部分现在的用法是一样的。
另外IPFS有的几个特点需要注意:一是它有自己的垃圾回收机制,当你写入某个节点的数据,只有经过称为“pin”的操作才能保证不被回收掉。二是不同节点之间不会自动备份同步数据,除非主动发起请求 。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
人们通常会因为公司而加入,因为老板而离开一家公司
回复

使用道具 举报

推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

星点区块网定位于全球区块链资讯情报站,集区块链行业新闻、资讯、行情、数据、百科、社区等一站式区块链产业信息服务平台,我们追求及时、全面、专业、准确的资讯与数据,致力于为区块链创业者以及数字货币投资者提供最好的产品和服务。
  • 官方手机版

  • 微信公众号

  • 商务合作