由于大数据的迅猛发展,数据正在呈指数级增长。随着越来越多的个人数据被泄露,数据存储和获取的方式也受到了质疑。全面数字化时代的个人信息应该如何被管理以发挥效能并降低滥用的风险,不仅是各类企业,更是各国政府必须解决的监管难题。
就数据管理方式的技术变革而言,区块链技术正在获得动力。全球研究公司 Gartner 预测,到 2025 年,区块链的商业价值将达到近 2000 亿美元,其中很大一部分将用于数据存储。与云存储不同的是,区块链是去中心化的计算和存储技术,提供存储能力的节点可以分布在不同位置。
现在,大多区块链公链受到了扩展性的限制。区块链技术最大的特征就是去中心化,这就要求网络中的所有账本都需要处理记账流程。分布式记账的安全性高,误操作率低,还具有政治中立性和正确性。但是区块链技术在拥抱了这些特性的同时,牺牲掉了扩展性,无法满足个性化监管,在保护数据隐私方面略显不足。而且,随着的账本数量的增长,交互延迟会呈指数式增长,也就是说区块链网络中的账本越多延迟就会越高。
令人头疼的问题越来也多,以下内容可能有你想要的答案。2018 年 11 月 24 日,在上海的迅雷链技术沙龙现场,来自:
迅雷链开放平台研发负责人 张慧勇
迅雷链底层研发工程师 张小刚
复旦大学计算机学院教授、博士生导师 赵运磊
迅雷链开放平台产品负责人 马双阳
分别就区块链底层架构、数据存储、加密技术、DApp 现状进行深入浅出的主题分享。我们从具体案例的角度,聊聊区块链如何改变数据的存储和管理。
迅雷链的架构设计特点
区块链的通用的技术架构:包括应用层连接服务,核心层的共识算法、密码学、块链式数据结构,基础层的 P2P 网络、存储、计算。其中,共识机制是区块链技术的核心,不同类型的共识算法应用于不同类型的场景;而存储模型更是决定了区块链项目管理数据的能力,优质的数据模型会使数据库更简单易用,并且方便扩展和查询。
区块链的特性天生可以降低信任成本,即利用区块链的技术的可回溯、不可篡改、共识算法、P2P 节点以及智能合约可以达成低成本信任。但同时,需要保证链上的高并发性和商业化高可用性,还需要隐私保护。那么,能满足低成本、高可用、高并发的迅雷链,在架构设计方面有哪些特点?
1、「采用同构多链架构」可以动态扩链,达到按需供应降成本的目的;
2、「支持平行扩展」对未来需求有扩展能力,同时保证损耗较小;
3、「合约上链审核机制」保护整个链生态的安全,保证 DApp 为实体企业或实名开发者所做,方便事后追查和管控;也可以通过限制外界对有安全漏洞的合约进行访问,降低安全漏洞的影响。
4、「接口级的安全管控」避免不良信息上链,保护开发者免受不良信息产生的影响。
5、「DPoA+PBFT 共识算法」使用 DPoA 选择性地利用迅雷百万级的共享节点,保障 PBFT 算法的稳定性;使用 PBFT 可以达成秒级确认,同时提供区块的确定性,有效避免回滚和分叉,进而提供商业级的服务。
6、「丰富的外围系统」降低企业开发成本与难度,让企业更容易将业务上链;其中包含订单系统、事件订阅系统、合约标准、模板库等都可以帮助合作伙伴更好的使用智能合约;还提供迅雷链文件系统(TCFS),将不适合放在区块链系统上的超大数据统一存储,只将摘要信息上链,同样可以达到不可篡改和可回溯的目的,同时可以通过分区存储保证数据的安全性。
在这种架构上,区块链的数据存储怎么做?
传统数据库的安全,靠的是企业信任、数据管理员和其他安全策略,但这些在很多场景下并不可靠。如果你担心数据丢失、篡改等数据安全问题,就可以使用区块链来进行存储。
区块链是分布式的存储,用户可以随时随地建立节点,加入区块链网络同步数据。甚至可以贡献自己的存储和算力获得奖励。共识机制能够防止作恶,使数据都公开透明。同时由于分布式存储,它的链式结构配合哈希算法的应用,使得区块数据几乎无法篡改。如果要篡改需要改掉足够多的数据才能使篡改生效,这样的高成本使得篡改几乎不可能。另外,数据可回溯。
数据层是最底层的技术,主要实现了两个功能:数据存储、账户和交易的实现与安全。
数据层的一大功能是存储,存储模型的选择原则是性能和易用性。一个网络系统的整体性能,主要取决于网络或本地数据存储系统的 I/O 性能,比如比特币用的是谷歌的 LevelDB,这个数据库写性能非常好,但是当数据量大时的读性能会明显下降,而且其只是单机单盘存储,当数据量大时不具备扩展性。迅雷链的同构多链框架在设计上支持任何 KV 存储,在框架的使用时可以针对不同场景采用不同的数据库模型,解决海量数据下的数据库性能和扩展能力的同时也保证了极大的灵活性。
这里简单对比了比特币、以太坊、Ripple、Fabric、迅雷链的存储类型,如下图所示:
区块链底层大致存储三种类型的数据,分别是区块与交易数据、状态数据、索引数据。区块与交易数据是区块链系统总最核心的数据。状态数据可以用来快速验证新块的交易是否合法。而索引数据则用来提高查询的效率。由于共识算法的不同,可能有些区块链还会单独存储共识数据,用于节点之间进行共识。
随着时间的推移、交易量的增大,占用的存储依旧会越来越大。迅雷链采用同构多链架构,将整个系统划分为多个分区,对于账户按账户地址做分区,每个账户属于一个分区。同构多链结构既可以有效提高并发交易性能,又可以分散存储数据,就相当于提升存储空间。当某个分区需要更高的性能或者更大的存储空间,可以执行平滑扩链方案,将这个分区平滑的切分为更多分区,来达到提升性能和提升存储空间的目的。
此外,还可以将大数据大文件存储在迅雷链文件系统 TCFS 中,将对应的 Hash 存储上链,这样能既能保证大数据大文件的安全与高可用,又能有效减少区块链的存储空间压力。迅雷链文件系统将文件经过冗余编码分成若干片,分别保存在不同节点上,读取时只要把部分切片组合到一起,就能还原出整个原文件,所以任何一个单一节点无法还原整个文件,保证了安全和可靠性。可能你知道 IPFS,2017 年,这个项目在区块链资本市场上创造了史上最强募资记录,募到了 2.52 亿美元。但迅雷链文件系统比 IPFS 更适合区块链应用作为存储平台
据了解,除此之外迅雷链还在持续优化链上的存储方案,以更好的支持区块链大数据存储。
数据隐私如何保护
在当今的加密技术中,隐私是一个很重要的话题。无论是公司还是个人都不希望将自己的所有信息发布到公共区块链上,不受任何限制,被本国政府、外国政府、家庭成员、同事或商业竞争对手随意读取。密码学在区块链中的应用很多,这里着重探讨零知识证明和聚合签名。
零知识证明
用区块链实现隐私保护逐渐成为各类应用的重要卖点之一。虽然我们知道链上的每一笔交易,但却不知道是谁来操作的这笔交易。这种匿名特性在一定程度上保护了个人的隐私,它是如何实现的呢?这要从零知识证明说起。
零知识证明是保护证明者隐私的一种证明,其中证明者知道问题的答案,他需要向验证者证明“他知道答案”这一事实,但是要求验证者不能获得答案的任何信息,而验证者的验证拥有随机性。
一个典型的零知识证明示例是阿里巴巴和强盗的故事:
阿里巴巴知道打开藏着财宝的山洞的咒语。强盗抓住他,让他说出咒语。如果阿里巴巴说出咒语,就会因为没有利用价值而被杀死。如果阿里巴巴坚持不说,强盗不会相信他真的掌握咒语,也会杀死他。但阿里巴巴想了一个好办法,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。”
也就是说无论是个人还是机构,不想让第三方看到的“东西”景可以用是零知识证来解决点。零知识证明,如何用,怎么用,怎么最贴近实际的应用场,些就需要具体的分析和策划。例如下图所示,是一个这是关于离散对数的验证,根据 h 求 w 是很难的。以下验证 w 的过程,用到的就是 Schnorr 数字签名算法:
后来,美国国家安全局基于 Schnorr 重做了一种新的签名方案 DSA,这也是目前比特币、以太坊等绝大多数密码货币里用到的数据证明。
区块链扩容与聚合签名
区块链经过了 10 年的高速发展,一直在不断完善来尝试适应工业产品化需求。但是仍然存在许多亟待解决的困难,例如:吞吐量过低、区块链体积庞重、可扩展性差、交易费过高、延展攻击等。
目前,比特币的交易吞吐量是每秒大约 7 笔。这无疑加剧了:过长时间的交易确认延迟、过高的手续费,且很容易受到垃圾数据攻击 (spam attacks )。也为交易延展攻击创造了条件。
聚合签名 (Aggregate signature) 是一种减少“数据传输所需带宽、数据存储所需容量” 的有效手段,对于区块链这种“通信与存储比计算更加昂贵” 的技术,尤其有吸引力。但是通常算法的聚合签名或是实现复杂,或是安全性弱。
基于此,图灵奖得主姚期智院士与赵运磊教授提出的 Gamma 签名,能更好地构造一般群模型下的聚合签名。实践发现,将基于 Gamma 签名的聚合签名应用到比特币后:签名的存储体积将减少一半;签名的验证时间提升 4-5 倍。
聚合 Gamma- 签名的优点是:通过将一个区块内的多个签名,压缩到一个签名,来达到区块链容量扩展的目的。因此,会有更多的体积来存储交易;签名者可以离线预处理,并且可以存储一些列中间过程,来加速签名与验证的过程;减少了验证交易的压力,通过每个区块仅需要验证一个签名,从而得到了一个更快的确认速度。
存储技术创新可以更好地提升 DApp 的开发效率。与传统 App 不同,DApp 运行在去中心化的网络上,网络中不存在中心化的节点可以完整的控制 DApp,所以基本不会出现数据丢失、被盗、篡改的情况出现。DApp 上所有的数据进行加密后存储在去中心化的区块链应用平台上,数据的安全性能更高,能够有效防止信息篡改和伪造,同时很大程度上提高了项目的稳定性,降低了宕机风险和运营成本。
但是,我们也遇到了棘手问题:区块链典型用户是非常少,在产品设计过程中可参考的用户画像比较稀缺;性能方面有很大瓶颈;行业分布比较鸡肋;企业信息公开正在经历阵痛期;区块链的专业人才非常稀缺。