支持多种共识协议与跨分片机制的区块链协议验证平台

未命名 08-14 阅读:107 评论:0


1.本发明属于区块链技术领域,尤其是涉及支持多种共识协议与跨分片机制的区块链协议验证平台。


背景技术:

2.区块链技术是一种去中心化的分布式账本数据库,具有数据隐私保护、防篡改、可追溯等优点。共识协议作为区块链的核心技术,能够让区块链的多个节点共同决策并最终达成统一的共识。区块链分片技术是一种区块链扩容技术,它将整个区块链分成多个分片,每个分片可以独立地处理一部分的交易和状态转换,可以提高区块链的处理能力和吞吐量,同时保持分布式和去中心化的特点,是重要的区块链扩容手段之一。
3.当区块链研究者提出新的共识协议或者新的分片扩容机制时,通常需要进行充足的实验以验证新的共识协议或者新的分片机制是否可行。然而,从零开始打造一个符合实验要求的区块链需要耗费较大的时间和精力;一些商用的区块链的系统十分庞大,对其进行使用、改造以及部署的难度较大、成本较高。


技术实现要素:

4.本发明的目的是提供支持多种共识协议与跨分片机制的区块链协议验证平台,以解决现有技术中验证新的共识协议或分片机制时难度大、耗时长的技术问题。
5.本发明的目的,可以通过如下技术方案实现:
6.支持多种共识协议与跨分片机制的区块链协议验证平台,所述平台采用模块化的分层系统架构,包括:
7.通信连接的客户端和区块链仿真模块;
8.其中,客户端设置所述区块链仿真模块进行仿真的实验参数,获取交易数据并将所述交易数据注入所述区块链仿真模块中,获取并显示所述区块链仿真模块对所述交易数据的实验结果,所述实验参数至少包括共识协议和分片参数;
9.所述区块链仿真模块根据所述实验参数构建若干个仿真区块链分片网络,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识,将达成共识的所述交易数据打包成区块并上链;
10.其中,所述共识协议至少包括片内共识协议,所述片内共识协议对所述仿真区块链分片网络内部的所述交易数据进行共识。
11.可选地,所述分层系统架构包括:
12.依次通信连接的存储层、数据层、网络层、共识层和系统层;
13.其中,所述存储层存储数据,所述数据层定义各类数据的数据结构并提供数据操作功能,所述网络层对网络传输进行控制,所述共识层对交易数据进行共识,所述系统层保证实验系统的正常运行。
14.可选地,所述共识层的共识协议还包括:片间共识协议,用于对所述仿真区块链分
片网络之间的所述交易数据进行共识。
15.可选地,所述分片参数至少包括分片数量、各分片中的区块链节点数量。
16.可选地,所述片内共识协议为拜占庭容错协议。
17.可选地,所述片间共识协议包括预设的第一片间共识协议和所述客户端自定义的第二片间共识协议。
18.可选地,所述第一片间共识协议为monoxide中的relay机制。
19.可选地,还包括:
20.代码接口模块,用于所述客户端来自定义所述第二片间共识协议。
21.可选地,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识包括:
22.为各所述仿真区块链分片网络设置主节点,所述主节点根据出块时间从所在分片的交易池中打包预设数量的交易数据生成新区块并发起拜占庭共识;
23.判断所述新区块中是否存在跨分片交易数据,若存在,则将所述跨分片交易数据发送给对应的目标分片,等待所述目标分片打包所述跨分片交易数据并由所述目标分片上链。
24.可选地,获取并显示所述区块链仿真模块对所述交易数据的实验结果包括:
25.获取实验中得到的协议性能数据和观测数据,根据所述协议性能数据和观测数据生成对应的实验图表,生成协议调试的日志文件,所述观测数据至少包括各分片新生成区块的信息、交易以及吞吐量。
26.本发明提供了一种支持多种共识协议与跨分片机制的区块链协议验证平台,采用模块化的分层系统架构,包括:通信连接的客户端和区块链仿真模块;其中,客户端设置所述区块链仿真模块进行仿真的实验参数,获取交易数据并将所述交易数据注入所述区块链仿真模块中,获取并显示所述区块链仿真模块对所述交易数据的实验结果,所述实验参数至少包括共识协议和分片参数;所述区块链仿真模块根据所述实验参数构建若干个仿真区块链分片网络,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识,将达成共识的所述交易数据打包成区块并上链;其中,所述共识协议至少包括片内共识协议,所述片内共识协议对所述仿真区块链分片网络内部的所述交易数据进行共识。
27.有鉴如此,本发明带来的有益效果是:
28.本发明利用客户端设置区块链仿真模块仿真的实验参数,获取交易数据并注入区块链仿真模块以获取对交易数据的实验结果;利用区块链仿真模块根据实验参数构建一个或多个简单且实际可运行的仿真区块链分片网络,仿真区块链分片网络能根据共识协议对片内或片间的交易数据进行共识,区块链仿真模块仅提供基础且必要的区块链组件,本发明仅实现区块链的核心功能,系统设计更加轻量化,使得搭建一个区块链实验系统的成本与难度降低,能支持用户快速搭建验证区块链新协议的实验环境,能够高效地对区块链新协议进行正确性验证与性能测试,同时支持跨操作系统使用,方便快速进行本机或多机实验部署。
29.本发明提供了一个轻量化的分布式区块链架构,不仅支持传统的单分片区块链系统实验,同时支持多分片区块链实验,能对多种区块链中新的共识协议进行验证,能支持对多种区块链片内共识协议和多种跨分片交易机制的正确性验证以及性能测试,便于使用者
直接使用或进行二次开发。
附图说明
30.图1是本发明的架构示意图;
31.图2是本发明实施例的分层系统架构模块示意图;
32.图3是本发明实施例的运行过程示意图。
具体实施方式
33.术语解释:
34.区块链协议:区块链协议是一组定义区块链如何工作的底层规则。它定义了网络的许多特性,包括安全性、去中心化、可扩展性、可用性、技术成熟度、生态系统开发和治理,是区块链系统性能和安全性的核心影响因素之一。
35.共识协议:让多个节点共同决策并最终达成统一的共识。共识协议大体上可以分为两步:出块节点选举和主链共识。出块节点选举机制和主链共识共同保证了区块链数据的正确性和一致性,从而为分布式环境中的不可信主体间建立信任关系提供技术支撑。
36.区块链分片技术:区块链分片是一种区块链扩容技术,它将整个区块链分成多个部分(分片),每个分片可以独立地处理一部分的交易和状态转换。这种技术可以提高区块链的处理能力和吞吐量,同时保持分布式和去中心化的特点,是重要的区块链扩容手段之一。
37.状态树:用于存储当前区块链网络中的状态信息,在区块链中,状态树通常是一种基于merkle tree的数据结构,它是一个树形结构,由一系列节点组成,每个节点代表一个特定的状态。状态树的根节点包含当前整个区块链网络的状态信息,例如,账户余额。
38.pbft协议:一种高效的拜占庭容错协议,它已经被广泛应用于区块链等分布式系统中,以确保节点之间信息的一致性。pbft协议的主要思想是在共识过程中引入主节点和从节点,这些节点相互通信以达成共识,并且通过特定的协议确保消息的一致性和正确性。协议的核心是一个由预备(pre-prepare)、准备(prepare)和提交(commit)三个步骤组成,主节点发起预备消息,从节点接收后依次执行三个步骤,所有节点必须依次执行这些步骤,才能达成共识。relay机制:relay机制是由nsdi2019计算机网络顶级会议上论文monoxide所提出的跨分片交易机制(文中称为relay交易),当出现跨分片交易时,会将跨分片交易的前半段执行打包上链,然后将跨分片交易发送至目标分片,目标分片将跨分片交易执行打包上链,即完成一笔跨分片交易操作。
39.broker机制:broker机制是由infocom2022计算机网络顶级会议上论文brokerchain所提出的跨分片交易机制,当出现跨分片交易时,跨分片交易会借助一种特殊的账户broker(做市商)来完成。broker账户在每个分片中都存在,当一笔跨分片交易借助broker账户交易时,这笔跨分片交易会被拆解为两笔片内交易,分别为原分片中发起方与原分片中broker账户的交易以及目标分片中接收方与目标分片中broker账户的交易。
40.boltdb数据库:一个纯go语言编写的嵌入式键值存储数据库。它的设计目标是提供高性能、高可靠性、简单易用的键值存储数据库,并具有acid事务支持。boltdb以其快速的读写速度和低延迟的查询性能而闻名,并且由于其嵌入式设计,boltdb可以很容易地集
成到go语言应用程序中,而无需额外的配置和管理。
41.跨分片交易:在区块链中,为了提高吞吐量和扩展性,通常会将区块链分成多个分片(shard),每个分片处理其中一部分的交易。然而,由于分片的原因,导致一笔交易的发起方和接收方可能不存在于同一个分片中,因此出现了跨分片交易。区块链跨分片交易指的是一笔交易设计到不同分片的交易,需要跨越分片进行处理。
42.本发明实施例提供了支持多种共识协议与跨分片机制的区块链协议验证平台,以解决现有技术中验证新的共识协议或分片机制时难度大、耗时长的技术问题。
43.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
44.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
45.区块链技术是利用块链式数据结构验证与存储数据,利用分布式节点共识算法生成和更新数据,利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约,编程和操作数据的全新的分布式基础架构与计算范式,而随着区块链对网络扩展性的要求逐渐增高,逐渐发展出了分片等区块链扩容方案。
46.区块链研究者在提出新的共识协议或者新的分片扩容机制时,一般而言,需要对于原有传统的区块链系统底部的数据结构以及相关实现进行一定的修改与重写,此外,区块链研究者往往需要进行充足的实验以验证新提出的共识协议或者新的分片机制是否可行的。
47.然而,从零开始打造一个符合实验要求的区块链需要耗费较大的时间和精力;而且,一些商用的区块链的系统十分庞大,使用、改造以及部署的成本都比较昂贵。
48.现有的技术方案中,blockbench是私有区块链的性能测试框架(私有区块链仿真与性能评测框架)。其包含用于测量数据处理性能的工作负载,以及用于测试区块链系统不同层性能的工作负载,这些工作负载可用于分析、调试其区块链系统的性能。
49.simblock是一个开源的区块链网络模拟器(事件驱动的区块链仿真器),它不依赖于真实环境,可以仿真模拟各种网络延迟、不同节点的算力,使得实验成本降低。同时其还有一个可视化工具,通过它可以直观的看到块之间数据传播的转换。
50.现有技术中主要存在以下缺点:
51.(1)现有技术更加关注于对已完成的区块链系统或协议进行仿真模拟,而没有考虑到如何验证新提出的区块链协议并进行大量测试实验的问题。
52.(2)现有区块链实验系统的技术复杂度高、模块的耦合度较高,二次开发的成本大,对于区块链分片技术的支持较差。
53.为了解决区块链科研人员的做实验困难、耗费大的业内研究痛点,本发明提供了一个简单通用、可自定义、适合用于学术研究并且具备一定产业化落地可能性的区块链实验系统blockemulator。
54.请参阅图1,本发明提供了支持多种共识协议与跨分片机制的区块链协议验证平
台的实施例,所述平台采用模块化的分层系统架构,包括:
55.通信连接的客户端和区块链仿真模块;
56.其中,客户端设置所述区块链仿真模块进行仿真的实验参数,获取交易数据并将所述交易数据注入所述区块链仿真模块中,获取并显示所述区块链仿真模块对所述交易数据的实验结果,所述实验参数至少包括共识协议和分片参数;
57.所述区块链仿真模块根据所述实验参数构建若干个仿真区块链分片网络,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识,将达成共识的所述交易数据打包成区块并上链;
58.其中,所述共识协议至少包括片内共识协议,所述片内共识协议对所述仿真区块链分片网络内部的所述交易数据进行共识。
59.本实施例的主要目的是为了快速搭建验证新型区块链共识协议和分片机制性能的区块链验证平台。本实施例提供的区块链验证平台,是一个轻量化的分布式区块链架构,其简化了工业级块链系统实现,仅实现区块链核心功能,包括交易池、区块打包、区块共识、交易上链等,并且支持常见的共识协议,如拜占庭容错(practical byzantine fault tolerance,pbft),同时针对主流的区块链的分片扩容方案在系统底层提供支持,诸如经典的状态分片方案、交易分片方案等都有已经实现了的代码模块,研究者能够根据自己的实际需要直接调用。
60.此外,在系统底层,本实施例还提供了多种分片必要的代码接口工具即代码接口模块,就分片方案而言,若研究者想调整现有的分片方案或者使用自己设计的分片方案,也能够根据所提供的代码接口工具简单地实现。
61.在本发明的分片间共识协议部分,也预设了两种优秀且常见的跨分片交易方案,分别为monoxide中的relay机制以及brokerchain中的broker机制,这两种方案都是在国际顶级会议上被接受以及认可的工作与机制。同时,除了预设的跨分片交易方案,区块链仿真模块也为自定义跨分片交易提供足够多的代码接口工具。
62.需要说明的是,共识协议(比如pbft协议、pow协议等)是分布式环境中的不可信主体间最终达成统一数据的方案,是一个更加广泛的概念。具体到本发明中,当区块链为传统的非分片区块链系统(单分片区块链结构)时,所有交易数据都发生在分片内部,只存在片内共识协议,此时的共识协议就是指片内共识协议;当区块链为多分片区块链系统时,本发明的共识协议包括分片内共识协议和分片间共识协议,交易数据可能发生在分片内部或跨两个分片,能同时支持多种分片内共识协议和多种分片间共识协议。
63.优选的实施方式,本实施例的共识协议可以包括片内共识协议和片间共识协议(跨分片交易机制),片内共识协议可以为拜占庭容错协议(pbft协议)或工作量证明协议(pow协议)等传统区块链共识协议;片间共识协议可以包括预设的第一片间共识协议和客户端自定义的第二片间共识协议,第一片间共识协议可以为monoxide中的relay机制或brokerchain中的broker机制。
64.需要说明的是,在多分片区块链系统中才可能会出现跨分片的交易数据,才需要设计分片间共识机制对这些跨分片交易数据进行共识,因此,本实施例中的分片间共识协议是在特定场景下(如多分片区块链系统)中才需要设计的,其本质上就是跨分片交易机制。
65.本实施例中,客户端可以利用代码接口模块来自定义第二片间共识协议,也可以修改片内共识协议和第一片间共识协议。
66.本实施例主要应用于区块链研究人员需要对全新区块链片内共识协议或跨分片交易机制进行验证和性能测试时,能够进行快速二次搭建区块链实验系统,并对实验数据进行统计汇总,以方便区块链实验的顺利进行。
67.与现有的区块链实验系统技术复杂度高、模块的耦合度较高的缺点相比,本发明将区块链的各个部分采用了低耦合的设计方式,能够以非常简单方便地自定义区块链每一部分的功能。
68.在本实施例中,区块链实验系统由客户端(产生交易的客户端仿真器)以及区块链仿真模块组成,客户端是使用者所直接操作的平台,也是整个区块链实验系统的入口,主要负责以下工作:
69.(1)读入交易数据,以便利用这些交易数据对区块链的片内共识协议和可能存在的跨分片交易机制进行准确性验证和性能测试;
70.(2)提供使用者与区块链的交互窗口,设置区块链仿真模块进行仿真的实验参数,实验参数至少包括共识协议和分片参数。分片参数至少包括区块链的分片数量、各分片内的区块链节点数量等;设置共识协议可以包括各分片的片内共识协议和跨不同分片的片间共识协议等;
71.(3)观察区块链系统的运行情况,获取并显示区块链仿真模块对交易数据的实验结果,给使用者提供当前区块链系统的运行状况。
72.本实施例中,区块链仿真模块根据实验参数构建若干个仿真区块链分片网络(简称仿真区块链),仿真区块链分片网络中的每一部分都是根据使用者所提供的参数进行生成,更细致的调整或者说更加定制化的设计,使用者可以采用本发明系统提供的代码接口工具来进行定制化的实现,比如使用者使用自己设计的分片内共识协议等。
73.可以理解的是,仿真区块链分片网络是区块链仿真模块根据实验参数构建的仿真区块链,仿真区块链是简单但是实际可运行的区块链系统,仿真区块链具备真实区块链系统的必要功能,比如区块的生成、共识协议的达成、以及交易的执行等。
74.本实施例中的区块链仿真模块根据实验参数构建若干个仿真区块链分片网络,仿真区块链分片网络根据共识协议对交易数据进行共识,将达成共识的交易数据打包成区块并上链。
75.请参阅图2,本发明中blockemulator采用模块化的分层系统架构,包括:依次通信连接的存储层、数据层、网络层、共识层和系统层;其中,存储层存储数据,数据层定义各类数据的数据结构并提供数据操作功能,网络层对网络传输进行控制,共识层对交易数据进行共识,系统层保证实验系统的正常运行。
76.blockemulator采用分层的架构进行设计,每一层都负责独立的事务,并且尽可能地让每一层都只与其邻近层发生交互,实现系统层面的功能结构,帮助用户快速熟悉系统并进行代码复用和改造,整个架构可以划分为具体的五个层次,按照层次接近真实数据(交易数据)的远近可以划分为:存储层、数据层、网络层、共识层和系统层。
77.具体的,存储层主要负责数据的持久化存储,在此层会设计仿真区块链存储的数据内容以及相关的存储形式,即包含区块存储、区块链状态树存储、公私钥的存储等等,在
本层基于boltdb数据库来实现存储层的功能。
78.数据层主要定义系统中数据的具体形式,在此层会描述仿真区块链中各类数据的基本数据结构,包括区块链账户、交易、区块、状态树、节点等,本层的内容会积极的和存储层进行交互,随着仿真区块链分片网络的运行,每时每刻的账户信息、交易信息和区块信息等等都会不断的交给存储层进行存储,同时数据层中信息在某些情况下(如从某一时刻重放系统)也会读取来自存储层的内容,实现数据的实例化。同时数据层提供数据操作相关的功能,比如数据的编码解码等。
79.网络层主要对端到端的包传输进行定义和控制,端到端的包传输方式在本发明系统中包括网络通信方式、广播方式、网络信息编解码方式等等。对于端到端间包传输的控制,主要集中于控制实体(区块链节点)的传输带宽,系统通过控制共识节点在某个时刻消息的发送频率来达成,如每秒能发十条消息降为每秒一条消息,此外,消息的大小也是可以控制的。网络层与数据层的交互包括在网络层中传输各类的交易数据、区块信息等等。
80.共识层主要对包括片内共识和分片间共识两类协议进行定义和运行,分片内的共识主要保持分片内各个节点的数据一致,而分片间的共识机制主要来维护有跨分片交易行为出现时候,跨分片交易所涉及到的分片所在的数据的一致性。共识层主要在网络层的基础上运行的,因为共识的运行需要节点间不断的发送各类消息通讯交互来实现。
81.对于整体blockemulator构建时,本发明采用了一种系统分层设计的思想,其中设计了共识层,然后将共识协议和可能需要的跨分片交易机制放在了共识层中。当区块链为非分片区块链系统的情况(如单分片区块链系统)时,共识协议就是充当片内共识协议的角色,即此时片内共识协议等于共识协议,支持多种共识协议就是指支持多种片内共识协议。
82.系统层主要负责系统整体的运行,系统运行前,读取本地数据、读入参数设置以及准备运行环境包括区块链节点的构建等等;在系统运行时,保证交易数据按照参数设置注入、保持数据交换的稳定、确保日志以及实验数据的保存等等;系统运行结束后,能够将保存的实验数据绘制相关的图表,比如随时间变化的区块链吞吐量等。
83.本实施例中blockemulator系统的功能运行过程如下所示:
84.当需要进行区块链实验时,系统提供默认片内共识协议和分片间共识协议,用户可以直接选择系统已提供的协议,或对已提供协议进行修改、改造或添加全新的协议,即可快速的完成区块链协议实验系统的构建,系统的主要运作步骤如下:
85.(1)用户根据实验需要设置仿真区块链分片网络的配置,包括分片的规模、采用的分片内、分片间的协议、日志以及实验数据的存储等等。
86.(2)用户向客户端提交交易数据,客户端读取交易数据,根据设置的实验参数,持续不断地将交易数据注入到各个分片之中。
87.(3)仿真区块链中,各个分片内根据片内共识协议进行共识,如果存在跨分片交易,那么也会根据跨分片协议进行分片间的共识。
88.(4)当所有实验数据都执行完成后,客户端向共识节点发送终止消息,同时客户端输出实验中得到的协议性能数据以及绘制相关观察数据指标的图表。
89.本实施中,首先,利用客户端设置区块链仿真模块进行仿真的实验参数,获取交易数据并注入区块链仿真模块中,实验参数至少包括共识协议和分片参数;然后,利用区块链仿真模块根据实验参数构建若干个仿真区块链分片网络,利用仿真区块链分片网络根据共
识协议对交易数据进行共识,将达成共识的交易数据打包成区块并上链;其中,共识协议至少包括片内共识协议,片内共识协议用于对仿真区块链分片网络内部的交易数据进行共识;最后,利用客户端获取并显示区块链仿真模块对交易数据的实验结果。
90.具体的,片内共识协议为拜占庭协议时,利用仿真区块链分片网络根据共识协议对交易数据进行共识包括:
91.为各仿真区块链分片网络设置主节点,主节点根据出块时间从所在分片的交易池中打包预设数量的交易数据生成区块并发起拜占庭共识;
92.判断新生成的区块中是否存在跨分片交易数据,若存在,则将跨分片交易数据发送给对应的目标分片,等待目标分片打包跨分片交易数据并由目标分片上链。
93.请参阅图3,本发明中blockemulator的功能运作如下所示:
94.本部分以pbft片内共识,以relay分片间机制为例子,用户通过客户端设置仿真区块链的相关配置,然后导入相应的实验交易数据集,运行系统,当系统运行结束后,即可得到实验结果,过程如下:
95.(1)用户通过客户端设置仿真区块链的配置,系统根据得到的配置生成所对应规模的区块链,并且根据pbft协议(此处以pbft为例),系统为每个分片设置主节点,在读取本地数据之后,启动所有分片的节点,并且根据设置好的速率,系统持续不断的为每个分片的交易池中注入实验交易数据,直至实验交易数据为空为止;
96.(2)根据用户设置的出块时间,每个分片的主节点在对应的出块时间会从本分片的交易池中打包一定数量的交易生成区块;
97.(3)在分片的主节点打包交易生成新的区块之后,分片的主节点会发起pbft共识;
98.(4)如果新生成的区块(在共识中的区块)中存在跨分片交易,那么根据relay分片间的机制来进行处理,也就是将交易发送到对应目标分片,等待目标分片打包交易执行在目标分片中上链;
99.(5)当分片内的共识结束之后(跨分片交易被发送到对于分片后通过分片内共识上链),分片内达成共识的节点将区块上链,更新状态树,将数据在本地持久化存储;在区块上链的同时,将区块、交易等信息记录到本地文件中,方便后续研究者的分析以及相关指标的图表绘制生成;
100.(6)在整个仿真区块链运行的时候,客户端也会观察整个区块链的运行,不断的获得观测数据,这类观测数据包括了各个分片新生成区块的信息、交易以及吞吐量等;
101.(7)客户端在获得观测数据之后,会持续不断地将其存储到本地用户指定的存储路径,以待后续用户分析区块链运行的过程以及绘制相关实验数据图表;
102.(8)当所有交易都执行且上链后,客户端会告知所有分片的节点停止运行,并且整理好实验结果将其展示给用户,包括相关图表的绘制等。
103.以下为本发明的一个使用实例:
104.(1)系统初始化
105.在项目文件夹中查看日志文件夹(log)中的日志文件是否存在,可以根据用户需求选择删除或者保留,如果需要保留则需要更改日志生成位置,或者把日志文件备份。
106.系统在运行前仍然需要在配置文件夹(config)中配置许多东西,包括客户端初始化地址、节点初始化地址、出块间隔、最大区块大小、交易注入速度等等,不过这些参数都是
有默认值,可以直接采用默认值,对于默认的共识协议,比如pbft协议,也可以修改pbft协议中的默认设置,比如作恶节点的比例等。
107.打开一个新的客户端(终端),进入项目文件夹,测试系统状态,运行以下命令查看项目帮助:
108.go run main.go utils.go
–h109.(2)系统快速启动
110.go run main.go utils.go-s[shardnum]-n[nodenum]-t[path]
[0111]
在输入指令之后,系统会即刻启动。
[0112]
客户端首先输出整个系统的配置信息,根据配置信息中本地交易数据的所在位置,读入本地的交易数据,用户可以在终端界面看到读取数据获得的一些简单信息,包括交易的数量等。
[0113]
然后系统会开始构建仿真区块链分片网络,在构建的过程中,系统会不断的将相关的配置信息在客户端输出,比如分片的数量、节点数量、节点的地址等。
[0114]
在仿真区块链构建完成之后,客户端会不断地向分片注入交易信息,仿照真实用户提交交易的过程,而仿真区块链会像真实的区块链系统一般,不断地打包交易、生成区块以及发起共识。
[0115]
在所有的交易执行结束后,客户端向所有节点发送停止运行消息,仿真区块链停止运行,客户端将观测的数据输出,比如吞吐量等,并且校验执行后的交易是否正确等。
[0116]
需要说明的是,本实施例除了可以采用golang语言实现,也可以使用其他语言进行实现。
[0117]
本实施例提供的区块链实验系统,能够解决在区块链实验中,自定义共识协议或分片机制验证时实验验证平台搭建复杂和耗时的问题,自定义区块链协议与机制的验证、实验图表生成、以及数据重放难的问题,提供能够数据重放与协议调试的日志文件。
[0118]
本实施例提供的区块链实验系统,系统设计更加轻量化,提供基础且必要的区块链组件,并对系统进行模块化拆分,每个模块之间互相解耦,并提供模块对应操作的api,使用者可以快速进行使用和二次开发,可以采用golang开发,跨操作系统操作较为简单,可以快速进行本机或多机实验部署。
[0119]
本实施例不但支持单分片,即传统的单链结构的区块链系统实验,同时支持多分片区块链的实验,支持对多种区块链片内共识协议和可能存在的跨分片交易机制的正确性验证以及性能测试,便于使用者直接使用或二次开发。
[0120]
本实施例提供的区块链实验系统,是一个能对区块链新协议进行正确性验证与性能测试的实验平台,使得学习改造一个区块链实验系统的成本与难度降低,可支持用户快速搭建验证新型区块链协议的实验环境,尤其支持对新型区块链分片协议的性能验证,使用go语言编写,轻量高效,代码可读性高、可以支持跨操作系统使用。
[0121]
本发明的区块链协议验证平台采用分层的系统架构设计,不仅提供对单独分片(即传统区块链系统)和多分片区块链系统的支持,还支持多种传统区块链共识协议,如pbft、pow协议;同时支持热门分片区块链系统机制,如relay、brokerchain协议。
[0122]
本实施例提供的区块链实验系统,利用客户端设置区块链仿真模块仿真的实验参数,获取交易数据并注入区块链仿真模块以获取对交易数据的实验结果;利用区块链仿真
模块根据实验参数构建一个或多个简单且实际可运行的仿真区块链分片网络,仿真区块链分片网络能根据共识协议对片内或片间的交易数据进行共识,区块链仿真模块仅提供基础且必要的区块链组件,本发明仅实现区块链的核心功能,系统设计更加轻量化,使得搭建一个区块链实验系统的成本与难度降低,能支持用户快速搭建验证区块链新协议的实验环境,能够高效地对区块链新协议进行正确性验证与性能测试,同时支持跨操作系统使用,方便快速进行本机或多机实验部署。
[0123]
本实施例提供了一个轻量化的分布式区块链架构,不仅支持传统的单分片区块链系统实验,同时支持多分片区块链实验,能对多种区块链中新的共识协议进行验证,能支持对多种区块链片内共识协议和可能存在的多种跨分片交易机制的正确性验证以及性能测试,便于使用者直接使用或进行二次开发。
[0124]
本实施例能同时支持单分片即传统区块链系统和多分片区块链系统,支持对多种区块链片内共识协议和跨分片交易机制进行正确性验证以及性能测试,便于使用者直接使用或进行二次开发。
[0125]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0126]
在本技术所提供的实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0127]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0128]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0129]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0130]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者
替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术特征:
1.支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述平台采用模块化的分层系统架构,包括:通信连接的客户端和区块链仿真模块;其中,客户端设置所述区块链仿真模块进行仿真的实验参数,获取交易数据并将所述交易数据注入所述区块链仿真模块中,获取并显示所述区块链仿真模块对所述交易数据的实验结果,所述实验参数至少包括共识协议和分片参数;所述区块链仿真模块根据所述实验参数构建若干个仿真区块链分片网络,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识,将达成共识的所述交易数据打包成区块并上链;其中,所述共识协议至少包括片内共识协议,所述片内共识协议对所述仿真区块链分片网络内部的所述交易数据进行共识。2.根据权利要求1所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述分层系统架构包括:依次通信连接的存储层、数据层、网络层、共识层和系统层;其中,所述存储层存储数据,所述数据层定义各类数据的数据结构并提供数据操作功能,所述网络层对网络传输进行控制,所述共识层对交易数据进行共识,所述系统层保证实验系统的正常运行。3.根据权利要求2所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述共识层的共识协议还包括:片间共识协议,用于对所述仿真区块链分片网络之间的所述交易数据进行共识。4.根据权利要求1或3所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述分片参数至少包括分片数量、各分片中的区块链节点数量。5.根据权利要求1所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述片内共识协议为拜占庭容错协议。6.根据权利要求3所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述片间共识协议包括预设的第一片间共识协议和所述客户端自定义的第二片间共识协议。7.根据权利要求6所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述第一片间共识协议为monoxide中的relay机制。8.根据权利要求6所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,还包括:代码接口模块,用于所述客户端来自定义所述第二片间共识协议。9.根据权利要求3所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其特征在于,所述仿真区块链分片网络根据所述共识协议对所述交易数据进行共识包括:为各所述仿真区块链分片网络设置主节点,所述主节点根据出块时间从所在分片的交易池中打包预设数量的交易数据生成新区块并发起拜占庭共识;判断所述新区块中是否存在跨分片交易数据,若存在,则将所述跨分片交易数据发送给对应的目标分片,等待所述目标分片打包所述跨分片交易数据并由所述目标分片上链。10.根据权利要求1所述的支持多种共识协议与跨分片机制的区块链协议验证平台,其
特征在于,获取并显示所述区块链仿真模块对所述交易数据的实验结果包括:获取实验中得到的协议性能数据和观测数据,根据所述协议性能数据和观测数据生成对应的实验图表,生成协议调试的日志文件,所述观测数据至少包括各分片新生成区块的信息、交易以及吞吐量。

技术总结
本发明公开了支持多种共识协议与跨分片机制的区块链协议验证平台,采用模块化的分层架构,包括:通信连接的客户端和区块链仿真模块;客户端设置区块链仿真模块的实验参数,获取交易数据并注入区块链仿真模块中,获取并显示区块链仿真模块对交易数据的实验结果,实验参数至少包括共识协议和分片参数;区块链仿真模块根据实验参数构建若干个仿真区块链分片网络,仿真区块链分片网络根据共识协议对交易数据进行共识,将达成共识的交易数据打包成区块并上链;其中,共识协议至少包括片内共识协议,能对仿真区块链分片网络的交易数据进行共识。本发明能快速搭建用于验证区块链新协议的实验环境,能高效地对区块链新协议进行正确性验证与性能测试。验证与性能测试。验证与性能测试。


技术研发人员:黄华威 陈钦德 郑子彬
受保护的技术使用者:中山大学
技术研发日:2023.05.05
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐