Docs

Docs

  • 文档
  • github

›架构特性

概述

  • 简介
  • 术语
  • 版本发布

架构特性

  • 整体架构
  • 共识机制
  • 账本存储
  • 智能合约
  • 数据归档
  • 数据可视化
  • 消息订阅

快速入门

  • 部署安装
  • 使用示例
  • 配置说明

操作指南

  • EVM
  • HVM
  • 消息订阅
  • 数据可视化
  • 交互式命令

SDK

  • LITESDK
  • JAVASDK

账本存储

区块链本质上是一个分布式账本系统,因此区块链平台的账本体系设计至关重要。

Hyperchain的账本设计主要包含3个部分:

  1. 首先对客户的交易信息通过区块链这种链式结构进行存储,保证了客户交易的不可篡改以及可追溯性;

  2. 其次,采用账户体系模型维护区块链系统的状态,即图中的合约状态部分;

  3. 最后,为了快速判断账本信息、交易信息等关键信息是否存在,账本采用了改进版的Merkle树进行相关信息存储。

本节接下来就这些和账本相关的重要数据结构的设计进行简要分析。

hyperchain architecture

区块链

区块链是区块链账本中的重要数据结构,存储着核心交易信息。区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。所有区块被从后向前有序地链接在这个链条里,每一个区块都指向其父区块。区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在其他区块之上。用栈形象化地表示区块依次链接这一概念后,我们便可以使用一些术语,例如,“高度”表示最新区块与首区块之间的距离,“顶部”或“顶端”表示最新添加的区块。

合约状态

与比特币系统采用UTXO模型不同,Hyperchain采用了账户模型来表示系统状态。当Hyperchain节点收到一笔“待执行”的交易后,会首先交由执行模块执行。执行交易结束后,会更改相关合约账户的状态,例如某用户A发起一笔交易调用已部署的合约B,使得合约B中的变量值b由0变为1,并持久化到合约状态中存储。每一笔交易的执行,即意味着合约账户状态的一次转移,也代表着系统账本的一次状态转移。因此,Hyperchain也可以被认为是一个状态转移系统。

Merkle树

将区块中收录的交易依次处理之后,合约账户从原先的状态转移至一个新的状态,为了快速生成一个用于标识所有合约账户集新状态的哈希值,Hyperchain系统中引入了Merkle树进行哈希计算,接下来先简明扼要地介绍一下Merkle树的结构和作用。 Merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。这种二叉树包含加密哈希值,在比特币网络中,Merkle树被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径。但是传统的Merkle树性能较差,在面对高频海量数据时,计算的表现不能达到联盟链的需求。因此在Hyperchain中,设计了一种融合了Merkle树和哈希表两种数据结构各自优势的HyperMerkle树,大大提升了账本哈希计算的速率。

Filelog

Filelog是趣链自主研发的顺序性数据存储引擎,引入该存储引擎用于存储区块数据,实现区块数据与状态数据的分离,突破leveldb存储瓶颈,能够保证在数据量不断增大的情况下,读写性能不受明显的影响。

Filelog优势:

  1. 实现区块数据与状态数据的分离

  2. 针对大数据量的存储,在保证读取性能的情况下,能够大大的提升写入性能

  3. 能够保证在数据量不断增大的情况下,读写性能不受明显的影响

levelDB

LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,适合应用在查询较少,而写很多的场景。

LevelDB的特点:

  1. key和value都是任意长度的字节数组

  2. entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数

  3. 提供的基本操作接口:Put()、Delete()、Get()、Batch()

  4. 支持批量操作以原子操作进行

  5. 可以创建数据全景的snapshot(快照),并允许在快照中查找数据

← 共识机制智能合约 →
  • 区块链
  • 合约状态
  • Merkle树
  • Filelog
  • levelDB
QTechGitHub
Copyright © 2025 Hyperchain Co., Ltd.