一种基于Tendermint的区块链分层分片共识方法
- 国知局
- 2024-09-14 14:37:55
本发明涉及区块链系统,尤其涉及一种基于tendermint的区块链分层分片共识方法。
背景技术:
1、tendermint区块链网络是一个基于共识算法的分布式账本平台,旨在提供安全、可扩展和高性能的区块链解决方案。
2、该区块链系统采用了一种称为实用拜占庭容错共识协议的机制,该算法能够在节点之间达成一致,即使有部分节点存在故障或恶意行为。这确保了在tendermint区块链网络中的交易和状态转换得到正确验证和确认。同时这种共识算法具有高吞吐量和快速确认的特点,能够处理大量交易并实现几乎实时的最终性。
3、该区块链系统通过使用一组验证节点(validators)来管理和维护网络。这些验证节点负责提案和确认区块,确保所有节点在共识过程中达成一致。系统中,应用程序以独立的方式运行,通过abci(application blockchain interface)与tendermint核心引擎进行交互。
4、tendermint还提供了安全的p2p网络层,用于节点之间的通信和数据传输。该网络层支持加密连接和防止拜占庭故障的机制,确保数据的机密性和完整性。
5、总体而言,tendermint区块链网络系统以其强大的共识算法、高性能的交易处理能力和灵活的应用程序接口,为开发人员和企业提供了构建安全、可扩展的分布式应用程序的解决方案。它在金融、供应链、数字资产等领域具有广泛的应用前景。
6、传统的区块链网络,例如早期的区块链,如比特币和以太坊,每个节点都需要存储完整的区块链数据并对所有的交易进行验证。全节点共识意味着网络中的每一个全节点都根据同样的共识规则参与到新区块的生成和确认过程中。这种模式也带来了扩容瓶颈,因为每个节点都要处理网络上的所有交易,这限制了区块链处理交易的能力。导致了交易吞吐量(tps)低和确认时间长的问题,限制了区块链技术的大规模应用。
7、区块链分片技术借鉴传统数据库分片的概念,将区块链网络分割成多个并行处理的分片,每个分片负责处理自己的一部分交易和状态,从而实现并行处理,提高整体的处理能力。现有区块链分片技术可以分为网络分片,交易分片和状态分片三种类型。
8、网络分片是将区块链网络的节点划分到不同的分片中,每个分片作为一个相对独立的处理单元,能够并行处理网络中的交易。这种分片方式增加了网络的并行处理能力,从而提高了交易处理速度。网络分片主要涉及节点的分配问题,即确定哪些节点属于哪个分片,通常通过随机算法确保分片的分布公平性和安全性。
9、交易分片则是指将交易分配到不同的分片中进行处理,每个分片负责验证和记录自己分片内的交易。这样做可以让多个交易同时进行处理,减少了单个节点或分片的负担,提升了系统的吞吐量。交易分片的关键在于确保交易的正确路由以及处理跨分片交易的能力,即当一笔交易影响到多个分片的状态时,如何有效且高效地协调这些分片之间的交互。
10、状态分片是最复杂也是最彻底的一种分片形式,它不仅仅是将交易处理过程分片,而是将整个区块链的状态(即所有账户余额、智能合约的状态等)也进行分片。这意味着每个分片维护自己独有的状态信息,大大减少了单个节点需要存储的数据量,提高了系统的可扩展性。状态分片的挑战在于如何处理跨分片状态的访问和更新,确保数据的一致性和完整性,以及设计高效的跨分片通信协议。
11、为了最大限度的提升区块链的性能与可扩展性,现有区块链分片多采用状态分片。其减少了数据存储量,共识消息只需要在分片内进行传播,减轻了网络传输压力。同时,通过并行处理不同分片上的交易,状态分片能够显著提高交易处理速度和网络吞吐量。
12、然而,实际应用中,大部分交易涉及多个分片,必须通过跨分片本共识协议在多个分片中同步执行交易操作,常见的做法包括跨分片锁和两阶段提交,这些做法需要多轮共识,且交易提交前相关数据将变得不可用,导致区块链系统吞吐量低,延迟高的问题。如何高效解决跨分片交易成为了重点。
13、现有分片技术可以增加系统可扩展性、提升系统吞吐量,每个分片间不共享数据,并发地处理打包区块和执行交易;然而,实际应用中,大部分交易涉及多个分片,必须通过跨分片本共识协议在多个分片中同步执行交易操作,常见的做法包括跨分片锁和两阶段提交,这些做法需要多轮共识,且交易提交前相关数据将变得不可用,导致区块链系统吞吐量低,延迟高的问题。
技术实现思路
1、针对现有技术的不足,本发明提供一种基于tendermint区块链网络的区块链分层分片共识方法,在保证区块链安全的前提下提高区块链跨分片交易处理效率,从而提高区块链整体吞吐量,降低区块链延迟,实现了高效跨分片,同时保证了数据更新时多个相关分片数据的一致性,保证了交易处理的原子性。
2、一种基于tendermint的区块链分层分片共识方法,包括以下步骤:
3、步骤1:建立tendermint区块链网络分层分片结构,其中分层分片共识中存在分片及其下属节点;
4、所述分片分为下层分片和上层分片,分片采用二部图拓扑结构,设上层分片称为b分片,下层分片称为i分片,b分片仅与i分片间存在相邻边;
5、所述下属节点为:将受到信任且核心数大于设定阈值的节点加入参与b分片共识,其余节点参与i分片共识;i分片间存储的数据相互不重叠,b分片节点不单独存储数据,而是存储其桥接的所有下层分片的数据;对所有b分片与i分片进行随机十进制编号;
6、步骤2:将tendermint区块链网络划分为若干个纪元;
7、具体为:将整个tendermint区块链网络划分为若干个纪元,每当经过特定数量的共识轮次后,区块链进入下一个纪元,每个纪元拥有唯一标识的纪元号,在每个纪元开始时,会重新选择tendermint区块链网络的领导者,负责接下来设定时间内区块的提案、交易收集工作;
8、对于每个节点,在加入一个纪元的共识之前,根据其纪元号,公钥,ip地址信息随机性生成一个新的工作量证明难题;为了参与共识,一个节点需要解决其在该纪元产生的工作量证明难题;在成功解决该谜题后,获得一个有效的身份来参与共识;所述工作量证明难题在每个历元的难度根据上一个历元的身份数进行调整,以保持节点数的稳定;
9、步骤3:tendermint区块链网络中的节点加入分片;
10、对tendermint区块链网络设置一个区块链节点性能阈值,对于大于该阈值的节点使其优先加入b分片,同时,tendermint区块链网络对于分片进行认为设定,设计任意数量的i分片节点和b分片节点;整个tendermint区块链网络内有b个b分片和i个i分片;每个节点标识是由sha–256算法计算得到的十六进制字符串;
11、首先将节点身份转换为十进制整数,取值范围为[0,2256-1],之后将节点身份整数进行取模运算,将分片划分到i+b个分片内,之后性能阈值之上的节点如果被分配到i分片内,则与b分片内节点进行互换,最终完成节点分片;
12、步骤4:分片内节点角色划分;
13、每个分片内的节点分为两种类型,分别是领导者节点和验证节点,其中i分片的领导者节点负责打包片内交易,b分片的领导者节点负责打包跨分片交易和跨分片交易所需的数据;b分片的验证节点为领导者节点所打包的跨分片数据进行背书;
14、在分片的二部图拓扑结构中,若若干b分片之间具有相同的i分片邻居,将这些b分片称为二阶近邻的b分片;若b分片与i分片相邻,意味着该b分片具有保存相邻i分片数据的职责,并且通过跨分片交易修改相邻i分片数据数据;因此,这两个分片的所提交的区块可能存在偏序依赖关系;若两个b分片二阶近邻,表明它们之间存在重叠数据,它们可能同时通过跨分片交易操作相同的数据,因此,这两个分片所提交的区块可能存在间接的偏序依赖关系;
15、步骤5:不同分片产生未共识区块;
16、i分片领导者节点根据存储在b分片链上的跨分片数据直接完成区块链交易提交,而不需要与其它i分片进行跨分片通信;若某一轮中,某分片没有任何交易可以提交,则该分片将产生空块,以参与与相邻分片的跨分片共识。
17、i分片领导者节点搜集本分片本轮所提交分片内交易并生成区块,最终通过分片内交易共识广播到所有相关分片。每个i分片区块中,存在区块头和区块体,其中区块头存储链接到上一轮本i分片内区块的哈希指针,此外还存储上一轮所有相邻b分片区块的哈希指针,这些哈希指针根据字典序进行排序;
18、b分片领导者节点搜集本分片本轮所提交跨分片交易并生成区块,最终通过跨分片提交阶段广播到所有相关分片;由于跨分片交易的提交状况不可能通过任意分片的数据状态确定性地推导,i分片与b分片区块中总是存储上一轮相关跨分片区块的提交状态,用以确保跨分片交易执行结果的不可篡改性。最终生成区块结构;其中每个区块结构由区块头和区块体组成;区块体包含有所有经过验证的交易的列表,除此之外还包含一个关系结构relation,它存储了与当前区块相关联的其他分片上一个区块的哈希值,以及上一轮提交的交易成功证明;此外,在区块头中添加了一个表示分片位置的标签,同时引入了关系树根relationroot,通过基于关系字段生成默克尔哈希根来表示与当前区块存在偏序依赖关系的区块;
19、步骤6:通过分层分片共识算法进行分层分片共识;
20、步骤6.1:进行分片内共识;
21、步骤6.1.1:交易的收集;
22、i分片的领导者节点收集用户提交到本分片节点的该分片的分片内交易,属于本分片并经过用户自定义格式认定的有效交易添加到交易池中。并使用实用拜占庭容错共识协议在分片内向其他节点广播;b分片领导者节点收集相邻i分片之间的跨分片交易,并在区块中包含跨分片数据;
23、步骤6.1.2:b分片交易预执行;
24、b分片领导者节点对收集的交易,其他验证节点验证并认可领导者节点提供的跨分片数据,然后通过实用拜占庭容错共识协议同步区块和认可结果;b分片内跨分片交易的预执行由分片内的领导者节点完成;领导者节点根据本地存储的数据,将收集到的跨分片交易预执行到内存中,并在区块中的区块体内的交易列表中包含执行跨分片交易所需的数据;
25、步骤6.1.3:分片内交易共识;
26、分层分片共识机制中的每个i分片持续接收用户提交的交易,并将有效交易添加到交易池中,其中有效交易指属于本分片并经过用户自定义格式认定的;i分片在每个纪元中继续执行分片内的共识过程;在每一轮共识中,i分片的领导者节点从交易池中按照时间先后顺序选择部分交易,打包成分片内区块,通过实用拜占庭容错共识协议完成分片内共识;
27、b分片验证节点通过实用拜占庭容错共识协议为跨分片数据背书:b分片中的验证节点在收到领导者节点的提议消息后,也会在内存中模拟跨分片交易和共识,验证预执行的跨分片数据是否与区块中提供的数据一致;
28、步骤6.2:分片内处理完成后,进行跨分片共识;
29、首先,基于区块链网络节点分层分片结构,节点首先将数据块广播给邻近分片;在区块广播完成后,下层i分片节点进入i分片跨分片接收阶段,而上层b分片节点进入b分片跨分片提议阶段;
30、所述i分片跨分片接收阶段具体为:下层i分片节点在搜集到所有相邻b分片产生的区块后,首先对搜集到的b分片区块根据对应b分片编号进行排序,然后根据排序结果顺序预执行这些区块,并通过跨分片接收消息回复至相应b分片。i分片节点完成对所有相邻b分片的跨分片接收消息广播后,执行跨分片提交阶段;
31、所述b分片跨分片提议阶段具体为:b分片节点等待所有相邻i分片的跨分片接收消息。每当收集到某个i分片超过三分之二节点的相同的跨分片接收投票,b分片节点将之聚合为该i分片的跨分片接收投票集。b分片节点在收集到所有相邻i分片的跨分片接收投票集后记录在跨分片提交消息中,并发送至所有相邻的i分片,然后执行跨分片提交阶段。
32、所述跨分片提交阶段具体包含i分片跨分片提交和b分片跨分片提交两种类型;
33、所述i分片跨分片提交过程中,i分片内所有领导者节点与验证节点会收集到以下数据:
34、(1)本分片本轮提交的区块;
35、(2)所有相邻b分片本轮提交的区块以及相应的跨分片提交消息;
36、满足上述条件后,i分片节点执行区块执行阶段;
37、所述b分片跨分片提交阶段中处于跨分片提交阶段的b分片节点会收集到以下数据:
38、(1)本分片本轮提交的区块及其跨分片提交消息;
39、(2)所有相邻i分片本轮提交的区块;
40、(3)所有二阶近邻的b分片本轮提交的区块以及相应的跨分片提交消息;
41、满足以上条件后,b分片节点执行区块执行阶段;
42、所述区块执行阶段分为跨分片区块执行和分片内区块执行;
43、所述分片内区块执行中,为了加快处理速度,不同i分片的数据块分配给多个处理器同时执行;
44、所述跨分片区块执行中,当两个上层b分片处于二阶邻近且各自数据集中存在数据重叠时,要同步邻近i分片的最新数据状态,b分片不仅要执行自己的块和邻近i分片,还要执行所有二阶邻近b分片的块;上层b分片根据分片十进制号按照确定的顺序执行;为了最小化交易终止率,i分片区块应该在b分片区块之后执行。
45、采用上述技术方案所产生的有益效果在于:
46、本发明提供一种基于tendermint的区块链分层分片共识方法,本方法在tendermint系统底层框架下实现了区块链网络中节点的分层分片并设计了相对应的分层分片共识技术,实现了高效跨分片,同时保证了数据更新时多个相关分片数据的一致性,保证了交易处理的原子性。与现有技术相比,本发明提出的技术方案利用分层分片节点结构将跨分片交易转化为分片内交易,加快了跨分片交易处理代价,提高了区块链整体吞吐率、可扩展性,降低了交易处理延迟。提出了对应的共识方法保证了区块链数据的一致性、原子性、隔离性。同时设计新区块组织结构保证了区块链的不可抵赖性与可恢复性。综上所述本发明在安全性的前提下,提高了区块链整体的吞吐量,降低了区块链延迟,增加了区块链的可扩展性。
本文地址:https://www.jishuxx.com/zhuanli/20240914/295185.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表