游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    400-123-4567

    电子邮件

    1691000615@qq.com
  • 星点互联APP

    随时掌握企业动态

  • 扫描二维码

    关注星点微信公众号

推荐阅读
admin 管理员
山东省威海市 | 网站主编
  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 关注1
  • 粉丝2
  • 帖子32
精选帖子
开启左侧

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

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

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

[color=rgba(0, 0, 0, 0.88)]以下是李冠男的分享,由巴比特整理。

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

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

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

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

本帖子中包含更多资源

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

x
每逢毕业季,是否选择Gap都要在互联网上引起一番讨论。只不过,以往大家都在讨论是否要过Gap Year,如今已经在讨论Gap Day了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Neoconex(星点互联)是一家以原创内容、高端活动与全产业渠道为核心的垂直类硬科技产业媒体。我们关注新兴创新的硬科技领域,提供有价值的报道和服务,连接硬科技创业者和各种渠道资源,助力硬科技产业化。
400-123-4567
关注我们
  • 访问移动手机版
  • 官方微信公众号

Powered by Discuz! X3.5 星点互联设计 ( 鲁ICP(43635764) )