前几日去北京,拜访了几位在IBM和SAP工作的大学同学,我想刺探这些国际大公司在区块链技术上的研发动向。我们聊到一个关键问题,就是区块链存储。

现在人们对区块链的最大渴望就是尽快出现落地的实际应用,或者是让更多的商业逻辑运行在区块链平台上,或者与其他主流的商业应用系统进行整合。目前区块链在技术层面面临的最大问题是存储,因为存储是商业系统稳定运行的基础,而区块链一开始着重与交易,在存储方面相对偏弱,跟数据库系统还无法抗衡。

很明显,未来越来越多的区块链应用并不与金融交易相关,这些区块链系统的目的是让任何类型的数据,包括结构化数据或文档格式,能够被分布式地收集、排序、时间序列化和归档。这些区块链的核心价值,是让所有参与者,在不依赖可信的中介机构的情况下,就能在“什么人在什么时候向区块链存储了什么信息”上,达成一致意见。例如,SAP最近发布了他们的区块链平台,就是针对广泛的供应链领域和非金融领域。

区块链存储的三种技术:

第一种区块链存储技术,也是使用区块链来存储数据最简单的办法是,将各种数据直接嵌入到交易中。

每一个区块链交易都会被一个或多个参与方进行加密签名,并且复制到各个节点,然后被区块链的共识算法排序并增加时间戳,最终以防篡改的方式永久地保存到区块链上。因此,这些嵌入到交易中的数据,也会同时被保存到区块链上,被每个节点单独存储,而且我们也知道是谁、在什么时候写到区块链的。区块链的用户可以在将来任何时候来检索这些数据。

在北斗链的代码中,提供了一种“数据流”类型的交易引擎,用来做数据的存储和检索。每一个流都有自己的“写”权限,只有授权的地址可以向流中写入数据。每个节点通过“订阅”的方式去读取这些流信息,如果一个节点订阅了某个流,它就可以实时地对流的内容进行索引,并且基于排序、时间戳、区块高度、发布者地址等参数快速检索这些流内容,类似传统的“key-value”格式的数据库系统。

隐私保护和扩展性问题

 

当我们把数据直接保存在区块链的交易上,我们将面临两个问题:隐私保护和扩展性。

隐私保护问题,在上述的流的方案中,每一个流的内容都能被区块链上任何一个节点订阅和检索到。对于很多区块链应用场景来说,我们会希望这些流信息只被一部分节点可以看到,其他节点只会帮助进行存储、排序、时间序列化或提供内容公证,但是不能读取流的内容。

隐私保护的问题相对容易解决,我们在把数据嵌入到交易之前进行加密就可以办到。每一段数据的加密的密钥可以通过链上或链外的机制,传递给授权接受流媒体的节点,其他没有获得密钥的节点,只能看到二进制乱码而不是信息本身的内容。

扩展性问题,就是一个比较难以解决的挑战了。我们假定一个区块链平台用来做数据存储,它基本的交易容量(TBS)是500笔/秒,每个交易存储一个小数据100bytes,加上交易本身的头部数据100bytes,一共是200bytes,那么区块链的整个网络吞吐量是100k/s(500 笔/秒 * 200bytes),换算成网络带宽约为1M,每个节点每年的存储量为3TB。还是可以接受的。

但是,如果我们存储一个A4大小的扫描的文档,至少是500KB,那么整个网络吞吐量将达到250m/s,换算成网络带宽要达到2G,按照大家普遍使用的阿里云的价格体系,每年的带宽费用可能需要200万左右人民币,这显然是一个节点无法承受的成本,更不要说每年还有8000T的新增数据的存储问题。

很显然,直接在区块链上进行大数据存储是不切实际的。那么我们如何利用区块链的去中心化机制,又不需要在节点之间进行数据复制呢?一个聪明的做法是“链外存储”,然后把存储地址存放到区块链上。

第二种区块链存储技术 -- 哈希(HASH)方案。这种方案对要存储的信息通过哈希函数运算,生成摘要。将这个摘要存储到区块链交易中,而信息本身则存储在区块链之外(或者叫off-chain),比如传统的中心化的数据库中,以此来解决存储扩展性问题。

区块链的参与者不能从摘要得到存储的数据,而是从链外获得数据后,通过摘要进行验证。摘要的时间戳和所有者也可以认定为链外数据的时间戳和所有者。因此链外存储跟链上存储一样,都可以获得区块链提供的数据公证。

数据传输问题。

下面我们谈另一个区块链存储面临的问题,就是数据传输问题。如果数据保存在链外,我们不通过区块链的的传输,如何把数据推送到需要它的节点呢?上面我们提出了一个解决方案,就是建立一个中心化的数据库系统。各个节点得到数据的摘要后,主动去数据库上读取数据。这种方案,要求这个数据库系统必须是可信系统,而且这种中心化的架构也违背了区块链去中心化的思想,因为如果数据库出现故障,或者网络问题,或者人为的数据删除,那么区块链节点是获取不到数据的。

另外一种更合理的解决方案是点对点通信,任何一个需求数据的节点直接从原始的发布节点获取链外数据。但是这样也会遇到问题:

1)必须有一个map,来映射每个节点上保存了哪些数据,这样才能让其他节点去请求数据;

2)如果原始的发布节点离开了区块链网络,或者临时性的不能提供服务,那么节点上的数据就不能被其他节点访问;

3)如果同时有多个节点都需要向原始发行节点请求数据,必然会造成网络堵塞和长时间的延迟。

为了解决这些问题,我们有必要引入分布式的数据传输机制。

第三种区块链存储技术:点对点(分布式)数据存储和传输。节点应该能够检索它们需要的数据,而不依赖一个单独的系统- 既不是一个数据库系统,也不是一个原始节点。任何人都不需要信任一个数据源,因为区块链的哈希函数可以保证数据没有被修改,如果有恶意的节点给我发送虚假的数据,我可以很容易识别,并把它们抛弃,然后再向其他节点请求数据。

如果你对P2P文件传输协议比较熟悉的话,比如Napster或BitTorrent,这种机制是非常接近的,只不过区块链增加了新的功能,比如去中心化排序、时间戳、信息公证,使得所有用户都能够对什么时间、什么人、发生了什么达成共识。

那么技术上如何实现这种点对点的数据存储和传输呢?我们可以选择现成的p2p文件传输平台,比如最近热门的IPFS平台,将它和区块链平台组合使用。一个节点上同时部署区块链系统和IPFS系统,可能还需要开发中间件系统来协调两者的工作。当我们需要在区块链上传输链外数据的时候,中间件把原始数据保存在IPFS系统中,然后构建一个区块链交易保存数据的哈希值。当需要检索数据时,中间件从区块链上获取哈希值,用哈希值去IPFS系统中获取内容,IPFS节点根据哈希值验证检索的内容,以确保没有被修改过。

这种解决方案理论上是可行的,但是实际上是非常笨拙的:首先,每个节点都要部署、运行、维护三套系统(区块链系统、IPFS系统和中间件系统),每个系统都有独立的存储空间。第二,将有两个独立的P2P网络(区块链是一个P2P网络,IPFS也是一个P2P网络),每个网络都有自己的配置文件、网络端口、用户系统已经身份认证。IPFS系统迟迟无法上线他们的区块链主网,也说明了将两个系统整合在一起的难度是很大的。

北斗链与IPFS的结合

为了研究区块链的存储技术,尽快达到商用价值,北斗链-IPFS实验室在今年9月份就成立了,研究的出发点,是把IPFS协议在北斗链底层代码中重新实现一下,让北斗链在传统链上存储的基础上,实现链外数据的P2P存储和传输。我们希望在今年年底,也就是赶在IPFS官方区块链主网上线之前(Filecoin可以挖币之前),新版本的北斗链将无缝整合链外数据存储方案,有可能抢先发行北斗链的文件传输币。

同时,我们也在研究区块链存储的C端产品,到时候能够给大家提供一个数据永远不会丢失、永远不会被篡改的存储平台。

张蕾:区块链存储技术发展相关推荐

  1. 区块链学习笔记:D02 区块链的技术发展历史和趋势

    对于区块链的技术发展历史,其实在我的印象中也就对比特币有所了解,也听过什么火币之类的玩意,但是具体是什么.怎么运作的就不清楚了... 这次的内容首先是讲解了区块链的技术演进,一张图一目了然,虽然里面涉 ...

  2. 全面解析“5G+区块链”的技术发展和应用落地,到底哪些问题能被解决?

    随着新基建的提出,5G.大数据.人工智能作为近几年来非常热门的技术领域,毫无疑问会成为未来新产业的代表. 新基建的战略意义在于:随着我国智能经济的快速发展,以及智慧城市与智能社会的加速建设,全产业对5 ...

  3. Yottachain泛圈芝麻云服务器专业级区块链存储技术万众瞩目

    2019年5月份,由珠海市泛圈网络科技有限公司在与YottaChain联合主办的珠海站超级节点大会上,正式发布了自主研发的专注于加密数据存储YottaChain的专业服务器"芝麻云节点&qu ...

  4. 区块链的技术发展现状,制约因素和发展方向

    转自: 作者:大圣2017 链接:https://www.jianshu.com/p/0186822510c8 区块链在3.0时代的10大发展方向 区块链1.0以比特币为代表,是可编程的数字货币: 区 ...

  5. 国内与国外区块链关键技术现状及差异

    国内外区块链发展几乎同时起步,从全球来看,全球区块链发展正从全面否定与全面推崇的感性认识趋于理性认识,国外内都更加专注于探索区块链潜在的应用价值和商业模式.然而,国内外针对区块链技术的发展重点.部署策 ...

  6. 区块链的技术简史与未来前景,从互联网进化角度分析

    前言:区块链是当前科技领域最令人关注的技术之一,如何理解这个新技术,本文从互联网的技术生态.区块链的诞生.比特币的发展,互联网大脑模型的形成多个维度,对区块链的技术发展与未来前景进行阐述,因为涉及的知 ...

  7. 《中国企业报》专访高承实:区块链的技术本质与应用 | 另:欢迎参加中国数据与存储峰会-【区块链技术与实践】分论坛...

    高承实,密码学博士,曾任解放军信息工程大学计算机应用专业副教授,研究生导师.<回归常识>.<区块链中的密码技术>作者,高博士的第三本专著也将不久上市.后面有更多高博士的详情和文 ...

  8. 区块链存储进入Gartner技术成熟度曲线 | Gartner发布2019年十大战略性技术趋势

    [编者Peter Ye按] 本篇文章讲述了两件不同的事情. 一. 2018年7月25日,Gartner发布的<Hype Cycle for Blockchain Technologies, 20 ...

  9. 视频| 什么是区块链,本质、意义和发展 8月22日(本周三)晚8点, 微信群在线讲座---区块链存储(下)...

    [编者按] 封面如下图是,早在2001年(甚至比云计算还要早6年!),就有团队开启构建跨越全球的存储池.向他们致敬. 上周三,由日知录主办,我主讲的<区块链存储 (上) - 什么是区块链,本质. ...

最新文章

  1. CISCO路由器TELNET和SSH远程登录配置实例
  2. 【ASP.NET】js动态生成的控件,在后台获取不到怎么办?
  3. 如何发现 Redis 热点 Key ,解决方案有哪些?
  4. trunc( mysql写法_使用oracle的trunc和dbms
  5. C#模拟网站登录介绍
  6. Memcached和Redis
  7. C#实现WEB服务器
  8. mypow等于1什么意思c语言,C语言基础练习题总结
  9. javascript class static
  10. 数据库之DB2数据库备份
  11. 沪江快速手机打字软件下载
  12. 史上最全编程语言列表,你掌握了哪些?
  13. 必备单品,FSearch
  14. unity mono编译
  15. go: writing stat cache:, permission denied
  16. IDEA全局查找快捷键
  17. Flink计算pv和uv的通用方法
  18. 基于vue+js的商城、购物网站 毕业设计 毕设源代码的实现和设计(1)首页
  19. 程序员美工和真正的游戏美工是两个世界的人
  20. 空间日志html,30条空间日志个性签名

热门文章

  1. 我回来了,hoho~~~~
  2. sqlite语句大全
  3. Consul Catalog
  4. 基于回归曲线拟合模型的ALS(最小二乘法)推导过程以及Python实现
  5. TensorFlow 2.0中的tf.keras和Keras有何区别?为什么以后一定要用tf.keras?
  6. 2023桂林理工大学计算机考研信息汇总
  7. 论文笔记007:[TOMM2020]Exploring Image Enhancement for Salient Object Detection in Low Light Images
  8. TM4C123GH6PM的QEI
  9. OpenCV计算指定区域的黑白像素个数
  10. 口腔科学复习重点 名词解释