技术连载二——存储层

波场一号作为竞选节点之一,我们在技术上也进行了充分的准备工作。目前我们的节点测试网络已经搭建完备,能够为波场上线后提供强大的节点支撑。目前官方节点排名中测试节点、硬件扩容计划、服务器配置等技术维度都名列第一。

在上一篇技术分析文章中,我们已经分析波场与ETH在共识算法上的差异。接着在本篇文章中,将讨论波场在存储层、智能合约、网络协议上的设计。

存储层

谈及到区块链,大家就会想到它的去信任,不可篡改的特性。而这些特性都源自于它的数据结构和存储方式,即:以链条的形式来存储区块结构。

从上图中可以看出,其数据结构式每个块都依赖于上一个块的数字指纹,一环套一环,一块接一块;最终将形成,时间流逝,区块成链的一个状态。如果需要修改中间某个区块上的一笔交易结果,则会导致该数字指纹的改变,从而影响后面的所有块。结果为,制造了一个谎话,将会用成千上万个谎话来弥补它。

我们回到具体的底层技术成面,来看看各个平台的实现机制。这次还是拿波场与区块链2.0中 最有代表性eth做个对比,来介绍下波场的存储上的思想与演进。

在以太坊的设计中,所有合约与账户皆账户地址。通过调用方式来区分,合约则调用合约中的不同方法;账户地址,则只可进行账户的转账与查询等基础功能。在ETH中,区块结构的定义为:

在block的结构中,可以清晰的看出其三块内容:1、区块头;2、叔块;3、打包的交易队列。其中区块头中包含父块的hash、矿工地址、梅克尔树的根地址、打包交易的hash等相关重要信息。结合设计与代码实现来阅读发现,在区块中,存储了智能合约的二进制编码(在ETH中,合约地址也是类似交易的账户地址),交易的队列以及账户在该区块中的当前状态即余额。 最终ETH将所有的信息打包在一块、未解耦,然后使用leveldb来进行存储。这是为了保证系统存储在形态上一致,而将不同类型的数据进行耦合,无法进行资源的分类存储,降低了交易的效率、提升了验证的复杂度(每一个区块的同步都需要对遍历运行该区块上打包的所有交易,每个节点亦是如此)。

Eth现只支持leveldb 这种单机文件存储数据库,节点的存储与本地硬盘容量强相关,后续迁移、扩容成本大。

在波场的设计中,它按照信息本身的特性,将其分为了三类:1、区块信息数据,2、状态信息数据,3、临时信息数据。下图为不同的数据存储操作类。

将数据按类型进行解耦存储,即将数据按类型存储,可以按需扩容,在这种情况中,存储量要求最大的为区块信息,这样可以使用大容量的SSD进行物理存放,状态信息需要高频读取,则可用内存进行全量cache,用于支持高频率读写计算,然后通过持久化来保证数据的不丢,这样再满足数据完整的前提,提升了效率。可以达到有的放矢的扩容、成本管理与资源分离;同时可以通过加快交易的验证与确认来提升效率。

波场在存储层采用模块化设计,即可根据业务特性选择对应的存储组件,现支持KhaosDB与LevelDB。后续可继续添加主流的关系型数据库和KV数据库模型。

同时波场引入了图数据库的思想,来更便捷的满足现实世界多样性数据存储的需求,用于支撑后续生态圈中不同业务形态的功能。

综上所述,可得出下表格内容。

后续我们将继续介绍波波场的智能合约、协议层、网络通讯层等核心功能模块。同时我们将同步输出一些波场的节点搭建、Dapp开发、平台搭建的指引文档。敬请期待,谢谢!

附一

ETH的区块链大小已经超过1TB,存储将面临重大问题,参考文章如下。

《以太坊区块链大小已经超过1TB了,这是个严重的问题》

http://www.8btc.com/eth-1tb?from=groupmessage&isappinstalled=0

附二

下图为波场的区块格式定义:

附三

点击文末左下角深入了解波场节点技术架构

关于“波场一号”

“波场一号”作为来自波场社区的超级代表,秉承“人人共建、人人共享”的理念,正在招募“波场一号”全球108将,在未来2个月的世界里,共建社区,拿下波场TRON全球超级代表,与100万菠菜共同见证时代的力量,参与到这场与财富密切相关的革新中,成为被社区、被世界需要的人。

扫码加入「波场一号」社区

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180531G1ZCKK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券