基于区块链的交易共识处理方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的交易共识处理方法及装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用
发明内容
本说明书提出一种基于区块链的交易共识处理方法,所述区块链包括若干节点设备;其中,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;所述方法包括:
接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,所述目标节点设备单播发送至各节点设备的数据分片不同;
将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复;以及,基于与所述压缩算法对应的解压缩算法,对恢复出的所述交易数据进行解压缩处理,得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
本说明书还提出一种基于区块链的交易共识处理装置,所述区块链包括若干节点设备;其中,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;所述装置包括:
接收模块,接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,所述目标节点设备单播发送至各节点设备的数据分片不同;
发送模块,将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
确定模块,确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
恢复模块,如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复;以及,基于与所述压缩算法对应的解压缩算法,对恢复出的所述交易数据进行解压缩处理,得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;所述目标节点设备单播发送至各节点设备的数据分片不同;
将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复;以及,基于与所述压缩算法对应的解压缩算法,对恢复出的所述交易数据进行解压缩处理,得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
通过以上技术方案,由于主节点设备在向各从节点设备提议待共识的交易数据时,基于压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法对待共识的交易数据进行分片之后再进行传播:
一方面,使得主节点设备在向各从节点设备提议交易数据时,可以不再需要将完整的交易数据向各从节点设备进行广播发送,而是向各从节点设备单播发送对上述交易数据进行压缩处理后分割得到的数据分片即可,因此可以显著的降低向参与共识的节点设备扩散传播需要共识的交易数据时所消耗的数据传输带宽,可以在短时间内将待共识的交易数据传播至各从节点设备来完成共识,从而可以提升共识处理效率;
另一方面,由于主节点设备向各从节点设备单播发送的仅仅是上述交易数据的数据分片,对于主节点设备而言,无法获知该数据分片所属的完整交易的完整内容,因此可以有效避免主节点设备向其它参与共识的节点设备有选择性的单播一些特定的交易,对一些特定的交易进行有选择性的共识,从而可以保障共识的公正性,反正主节点通过有选择性共识来进行“作恶”。
附图说明
图1是一示例性实施例提供的一种基于区块链的交易共识处理方法的流程图。
图2是一示例性实施例提供的一种电子设备的结构示意图。
图3是一示例性实施例提供的一种基于区块链的交易共识处理装置的框图。
具体实施方式
本说明书中,旨在提出一种在区块链的共识处理过程中,引入压缩算法以及纠删码算法对待共识的交易数据进行压缩处理,并对压缩后的交易数据进行分片后进行传播扩散,来降低在向参与共识的节点设备传播需要共识的交易数据时所消耗的数据传输带宽,提升共识效率的技术方案。
在实现时,首先,在区块链的每一轮共识中,发起提议的目标节点设备,可以基于预设的压缩算法,预先对提议的交易数据进行压缩处理,并基于纠删码算法对压缩处理后的交易数据,分割为指定数量的数据分片,然后将分割的数据分片分别单播发送至其它各节点设备;其中,主节点设备单播发送至各节点设备的数据分片不同;
其次,各节点设备在收到上述目标节点设备单播发送的上述交易数据的数据分片时,可以将接收到的数据分片继续广播发送至区块链中的其它各节点设备;以及,还可以收集由其它各节点设备广播发送的数据分片。
最后,对于区块链中的任意一台节点设备而言,可以确定收集到的上述交易数据的数据分片的数量,是否达到了在采用上述纠删码算法对上述交易数据进行分割时定义的纠删码恢复阈值;如果是,表明当前收集到的数据分片的数量,已经足够恢复出上述交易数据,此时可以基于纠删码重构算法对已经收集到的数据分片进行数据恢复,并进一步基于与上述压缩算法对应的解压缩算法对恢复出的交易数据进行解压缩处理,得到上述交易数据的原始内容,然后继续完成对上述交易数据的原始内容的共识处理。
通过以上技术方案,由于目标节点设备在向其它各节点设备提议待共识的交易数据时,基于压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法对待共识的交易数据进行分片之后再进行传播:
一方面,使得主节点设备在向各从节点设备提议交易数据时,可以不再需要将完整的交易数据向其它各节点设备进行广播发送,而是向各节点设备单播发送对上述交易数据进行压缩处理后分割得到的数据分片即可,因此可以显著的降低向参与共识的节点设备扩散传播需要共识的交易数据时所消耗的数据传输带宽,可以在短时间内将待共识的交易数据传播至各从节点设备来完成共识,从而可以提升共识处理效率;
另一方面,由于上述目标节点设备向其它各节点设备单播发送的仅仅是上述交易数据的数据分片,对于上述目标节点设备而言,无法获知该数据分片所属的完整交易的完整内容,因此可以有效避免上述目标节点设备向其它参与共识的节点设备有选择性的单播一些特定的交易,对一些特定的交易进行有选择性的共识,从而可以保障共识的公正性,防止上述目标节点设备通过有选择性共识来进行“作恶”。
请参考图1,图1是本说明书一实施例提供的一种基于区块链的交易共识处理方法,应用于区块链中的任一节点设备;其中,所述区块链包括若干节点设备,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片,所述方法执行以下步骤:
步骤102,接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,所述目标节点设备单播发送至各节点设备的数据分片不同;
步骤104,将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
步骤106,确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
步骤108,如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复;以及,基于与所述压缩算法对应的解压缩算法,对恢复出的所述交易数据进行解压缩处理,得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
在本说明书所描述的区块链,具体可以包括私有链、共有链以及联盟链等,在本说明书中不进行特别限定。
例如,在一个场景中,上述区块链具体可以是由第三方支付平台的服务器、境内银行服务器、境外银行服务器、以及若干用户节点设备作为成员设备组成的一个联盟链。该联盟链的运营方可以依托于该联盟链,来在线部署诸如基于联盟链的跨境转账、资产转移等在线业务。
在本说明书中所描述的交易,是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。
其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
需要说明的是,上述区块链搭载的共识算法,在本说明书中不进行特别限定;在实际应用中,具体可以采用拜占庭容错(Byzantine Fault Tolerance)系列算法作为共识算法,也可以采用非拜占庭容错系列算法作为共识算法。
其中,所谓拜占庭容错算法,是指在由若干个节点设备组成的分布式网络中,需要考虑拜占庭节点(即作恶节点)的分布式容错算法;例如,pbft算法、HoneyBadgerBFT算法等等;如果采用拜占庭容错算法在区块链网络中进行共识处理时,会认为区块链中同时存在作恶节点和故障节点。而相应的,所谓非拜占庭容错算法,是指在由若干个节点设备组成的分布式网络中,不考虑拜占庭节点的分布式容错算法;例如,raft算法等等;如果采用非拜占庭容错算法在区块链网络中进行共识处理时,会认为区块链中不存在作恶节点,而只存在故障节点。
在本说明书中所描述的上述目标节点设备,是指区块链中具有向所有参与交易共识的节点设备提议最新的待共识的区块数据的节点设备;
例如,以上述区块链支持的共识算法为pbft算法为例,由于在pbft协议下,只有选举出的主节点设备具有向其它各从节点设备提议交易数据的权限,因此在这种场景下,上述目标节点设备具体可以是指选举出的主节点设备;
又如,以上述区块链支持的共识算法为HoneyBadgerBFT算法为例,由于在HoneyBadgerBFT协议下,区块链中所有的节点设备均具有向其它各节点设备提议交易数据的权限,因此在这种场景下,上述目标节点设备具体可以是指区块链中的任一节点设备。
在本说明书中所描述的由上述目标节点设备提议的交易数据,具体是指由上述目标节点收集到的,由用户客户端通过接入的节点设备提交的待共识交易;
其中,在实际应用中,上述目标节点设备可以针对单笔交易发起共识,也可以针对构建的一个交易列表来发起共识。
例如,在一种实施方式中,节点设备可以通过将用户通过用户客户端提交的交易在区块链网络中进行广播。而主节点设备可以收集各个节点设备在本轮的共识时间段内,在区块链网络中广播发送的待共识交易,然后基于收集到的待共识交易创建交易列表,将该交易列表作为提议的交易数据向其它各节点设备传播。
以下以上述区块链为联盟链,以及该联盟链分别采用pbft算法和HoneyBadgerBFT算法作为共识算法,对上述目标节点设备提议的交易列表进行共识处理为例进行说明。
1)区块链采用HoneyBadgerBFT算法作为共识算法
HoneyBadgerBFT共识算法,由RBC子协议和BA子协议组成。其中,RBC子协议,用于将本节点设备提议的交易数据(比如交易列表)传播到其它节点设备,并接收其它节点设备提议的交易数据。RBC子协议可以保证在区块链的总节点设备数量N=3f+1时,确保至少2f+1个节点设备都能收到相同的提议。BA子协议,主要用于对单个节点设备发起的提议达成共识,该子协议的输入和输出只能是0和1两种;当输出为1时,表示该节点设备提议的交易数据会进入到最终的共识结果中。
在本说明书中,可以对HoneyBadgerBFT共识算法的RBC子协议现有的交易数据传播机制的基础上,引入压缩解压缩机制,对RBC子协议段现有的交易数据传播扩散机制进行优化改进,以降低采用HoneyBadgerBFT共识算法的区块链中的节点设备之间进行共识交互时的数据传输带宽,提升共识处理效率。
在采用HoneyBadgerBFT共识算法的联盟链中,每一台节点设备都可以收集由客户端提交的交易,并基于收集到的来创建交易列表。此时,创建的交易列表即为主节点设备提议的需要进行共识处理的交易数据。
其中,在采用HoneyBadgerBFT共识算法的联盟链中,每一台节点设备都可以向联盟链提议创建的交易列表来发起共识。
在本说明书中,联盟链中的目标节点设备在向联盟链提议创建的交易列表时:
一方面,上述目标节点设备可以基于联盟链采用的压缩算法,对需要提议的交易列表进行压缩处理;
需要说明的是,在本说明书中,对联盟链所采用的压缩算法的具体算法类型,并不进行具体限定,在实际应用中本领域技术人员可以基于实际需求灵活选择。
另一方面,上述目标节点设备还可以基于纠删码算法,对压缩处理后的交易列表进行分片处理,将上述交易列表分割为指定数量的数据分片。
需要说明的是,对上述交易列表进行分割得到的数据分片的数量,可以与联盟链中的节点设备总数一致;例如,假设联盟链中有N台节点设备,那么可以将上述交易列表也分割成为N个数据分片。
其中,基于纠删码算法对上述交易列表进行分割的具体过程,在本说明书中不再进行详细描述,本领域技术人员在将本说明书记载的技术方案付诸实现时,可以参考相关技术中的记载;
例如,基于纠删码算法,假设将上述交易列表分割为N个数据分片,在这N个数据分片将会包含K个数据块,和M个校验块。M表示上述N个数据分片中可以容忍发生错误的数据分片的个数。K表示恢复出原始的交易列表至少所需的数据分片的个数(即行数纠删码恢复阈值)。即通过上述N个数据分片中的任意K个数据分片,通过纠删码重构算法(即纠删码算法的逆向算法)都可以恢复出上述交易列表的原始内容。
在本说明书中,当上述目标节点设备基于纠删码算法对压缩处理后的上述交易列表完成分割后,基于RBC子协议现有的交易数据传播机制,可以通过向其它各节点设备单播发送VAL消息,将分割得到的数据分片分别发送至其它各节点设备;其中,VAL消息用于发起提议的节点设备通过该消息将交易列表广播至其他共识节点;上述目标节点设备发送至其它各节点设备的数据分片需要保持不同。
需要说明的是,在上述VAL消息中,除了可以携带需要同步给其它各节点设备的数据分片以外,还可以携带用于对该VAL消息中携带的数据分片进行合法性和完整性验证的校验信息。
在示出的一种实施方式中,上述目标节点设备在基于纠删码算法对压缩处理后的上述交易列表完成分割后,可以基于分割得到的N个数据分片的哈希值构造一颗默克尔树,然后将构造的默克尔树的根节点对应的哈希值,以及数据分片的哈希值在上述默克尔树上的节点,在其它各个分支上的邻居节点的哈希值作为上述校验数据,携带在VAL消息中。
例如,基于RBC子协议,VAL消息格式中,分别包含View字段、RootHash字段、Branches字段以及BlockData字段。
其中,View字段用于携带视图编号;其中,视图编号通常是一个连续编号的整数,表示联盟链已经成功完成共识的轮数。BlockData字段用于携带数据分片;RootHash字段用于携带上述默克尔树的根节点对应的哈希值;Branches字段用于携带数据分片的哈希值在上述默克尔树上的节点,在其它各个分支上的邻居节点的哈希值。
在本说明书中,收到上述VAL消息的节点设备,可以遵循RBC子协议的规定,对收到的VAL消息中携带的内容进行验证;
例如,在实现时,接收到VAL消息的节点设备,可以基于该VAL消息中携带的数据分片的hash值,以及该数据分片的hash值在上述默克尔树上的节点,在其它各个分支上的邻居节点的hash值来重构默克尔树;然后,可以比较重构后的默克尔树的根节点的hash,与VAL消息中携带的默克尔树的根节点的hash是否相同,来完成针对该数据分片进行验证;如果重构的默克尔树的树根对应的hash没有发生变化,则认为该数据分片通过有效性验证;反之,可以认为该Pre-Prepare消息中携带的为无效的数据分片,此时可以丢弃该数据分片。
在本说明书中,当接收到VAL消息中携带的数据分片通过验证后,收到该VAL消息的节点设备,可以获取并保存该VAL消息中携带的数据分片,并基于RBC子协议现有的交易数据传播机制,通过向其它各节点设备广播发送ECHO消息,将接收到的数据分片广播发送给其它各节点设备。其中,ECHO消息用于采用类似Gossip的网络传播方式,将当前节点接收到的数据分片同步至其它各节点设备。ECHO消息的数据格式,与VAL消息相同,不再赘述。
相应的,收到上述ECHO消息的节点设备,仍然可以遵循RBC子协议的规定,按照相同的方式对收到的ECHO消息中携带的内容进行验证,具体的验证过程不再赘述。
当接收到ECHO消息中携带的数据分片通过验证后,收到该ECHO消息的节点设备,可以获取并保存该ECHO消息中携带的数据分片,并进一步确定接收到的由其它各节点设备广播发送的ECHO消息的数量是否达到2f+1个(包括自身广播的ECHO消息在内);
其中,f表示HoneyBadgeBFT算法能够容错的错误节点的数量;f的具体取值,可以通过公式N=3f+1换算的得到;N表示联盟链中的节点设备的总数量。
如果收到的ECHO消息的数量达到2f+1个,此时该节点设备可以进一步确定收集到的数据分片,是否达到了纠删码算法支持的纠删码恢复阈值;如果是,该节点设备可以立即基于纠删码重构算法,对已经收集到的数据分片进行数据恢复计算,还原出上述交易列表的原始内容。
其中,基于纠删码重构算法,对已经收集到的数据分片进行数据恢复计算的具体计算过程,在本说明书中不再进行详述,本领域技术人员在将本说明书的技术方案付诸实现时,可以参考相关技术中的记载。
在示出的一种实施方式中,由于一旦上述纠删码恢复阈值的具体取值大于2f+1,会导致节点设备,没有足够的数据分片来恢复出需要共识的上述交易列表的原始内容,因此在本说明书中,上述纠删码算法支持的纠删码恢复阈值的具体取值大小,需要小于或者等于上述2f+1;例如,可以恰好等于2f+1。
通过这种方式,使得主节点设备在基于纠删码算法对上述交易列表进行分割时,可以参考HoneyBadgeBFT算法支持的错误节点的容错数量f,来控制最终分割得到的数据分片的数量,从而可以确保该节点设备有足够的数据分片恢复出需要共识的上述交易列表的原始内容的前提下,尽可能的将上述交易列表分割为足够小的数据分片。
在本说明书中,当该节点设备基于纠删码算法对已经收集到的数据分片进行数据恢复计算,还原出上述交易列表的原始内容后,由于各节点设备传播扩散的数据分片,为基于压缩处理后的交易列表进行分割得到的数据分片,因此该节点设备在基于纠删码重构算法,对收集到的数据分片进行数据恢复后,得到的也只是压缩处理后的交易列表。
在这种情况下,该节点设备在完成以上数据恢复计算后,可以基于与上述压缩算法对应的解压缩算法,对恢复出的压缩后的交易列表进行解压缩处理,来解压缩出上述交易列表的原始内容,然后再进一步对恢复出的上述交易列表进行合法性和完整性校验;
例如,在实际应用中,上述ECHO消息中也可以携带默克尔树的根节点的hash值,以及数据分片的哈希值在上述默克尔树上的节点,在其它各个分支上的邻居节点的hash值作为校验数据。该节点设备在对恢复出的上述交易列表的原始内容进行验证后,仍然基于纠删码算法重新对恢复出的交易列表进行分割,得到N个数据分片,并基于该N个数据分片重构默克尔树,然后通过比较重构的默克尔树的根节点的hash值,与上述ECHO消息中携带的默克尔树的根节点的hash值是否相同;如果相同,表示恢复出的上述交易列表通过了合法性和完整性校验,该节点设备收到了一个合法且完整的由上述目标节点设备提议的交易列表。
进一步的,当还原出的上述交易列表的原始内容通过了合法性和完整性校验后:
一方面,该节点设备可以在本地保存还原出的上述交易列表,并基于RBC子协议现有的交易数据传播机制,通过向其它各节点设备广播发送READY消息,来通知其它各节点设备,自己收到了一个来自上述目标节点设备提议的合法交易列表。
另一方面,该节点设备在收到READY消息后,可以对该READY消息进行验证,以确定其它节点设备收到的上述目标节点设备提议的交易列表,是否与本设备收到的上述目标节点设备提议的交易列表完全相同;
例如,基于RBC子协议,READY消息格式中,分别包含View字段、ProposeId字段、RootHash字段。
其中,View字段用于携带视图编号;ProposeId用于携带发起当前提议的节点设备的编号(即上述目标节点设备的编号);RootHash字段用于携带当前提议的默克尔树的根节点对应的哈希值。
而节点设备在收到READY消息后,可以基于纠删码算法对本地保存的已经验证通过的由上述目标节点设备提议的交易列表进行分割,基于分割得到的N个数据分片重新构建默克尔树,并通过比较重建的默克尔树的根节点的hash值,和READY消息中携带的hash值,来验证发送该READY消息的节点设备,收到的上述目标节点设备提议的交易列表,是否与本设备收到的上述目标节点设备提议的交易列表完全相同;如果相同,此时该READY消息通过验证。
进一步的,当收到的READY消息通过验证后,该节点设备可以确定接收到的由其它各节点设备广播发送的READY消息的数量是否达到2f+1个(包括自身广播的READY消息在内);如果收到的READY消息的数量达到2f+1个,意味着当前联盟链中的2f+1个节点均收到了由上述目标节点设备提议的相同的交易列表,此时可以进入HoneyBadgeBFT共识算法的下一个阶段,根据HoneyBadgeBFT共识算法中的BA子协议,对该目标节点设备提议的交易列表进行共识处理,并基于BA子协议的输出结果,来决策该目标节点设备提议的交易列表最终是否能够进入到最终的共识结果。
其中,基于BA子协议对该目标节点设备提议的交易列表进行共识处理的具体流程,在本说明书中不再进行详述。
2)区块链采用pbft算法作为共识算法
在本说明书中,可以在pbft算法现有的预准备(pre-prepare)、准备(prepare)、和确认(commit)等三个阶段的基础之上,引入纠删码算法,对pbft算法的pre-prepare和prepare阶段现有的交易数据传播扩散机制进行优化改进,以降低主节点设备与从节点设备之间进行共识交互时的数据传输带宽,提升共识处理效率。
在本说明书中,在联盟链的每一轮共识开始之前,首先可以在联盟链中的各节点设备中选举出一台主节点设备(即上述目标节点设备);
例如,基于Pbft算法,在联盟链的每一轮共识开始之前,可以基于以下的公式,为本轮公式计算出一个主节点设备:
P=v mod R
其中,表示计算出的本轮共识的主节点编号;v表示联盟链当前的视图编号;视图编号通常是一个连续编号的整数,表示联盟链已经成功完成共识的轮数;比如,在成功完成一轮共识,选举出的主节点设备向联盟链成功写入一个新的区块之后,可以将视图编号自动加1。R表示联盟链中的节点设备的总数量。
各个节点设备可以分别执行以上计算,并将计算出的主节点编号与本设备的编号进行匹配,来确定本设备是否被选举为主节点设备。
一方面,如果一节点设备确定本设备未被选举为主节点设备,则可以将收到的由客户端提交的交易向联盟链中的各个节点设备进行广播发送。
另一方面,如果一节点设备确定本设备被选举为主节点设备,则可以收集各个用户客户端在本轮的共识时间段内广播发送的交易,并基于收集到的交易,来创建交易列表。
在本说明书中,上述主节点设备在向其它各子节点设备提议创建的交易列表时:
一方面,上述主节点设备可以基于联盟链采用的压缩算法,对需要提议的交易列表进行压缩处理;
另一方面,主节点设备可以基于纠删码算法,对提议的交易列表进行分片处理,将上述交易列表分割为指定数量的数据分片。
当主节点设备基于纠删码算法对上述交易列表完成分割,可以通过向各从节点设备发送Pre-Prepare消息,将分割得到的数据分片分别发送至其它各节点设备;其中,在本说明书中,主节点设备发送至各从节点设备的数据分片需要保持不同。
基于现有的pbft协议,主节点设备通过可以将完整的交易列表携带在Pre-Prepare消息中,然后将该Pre-Prepare消息在联盟链中的各个节点设备中进行广播发送,将完整的交易列表传播至联盟链中需要参与交易共识的从节点设备。
然而,基于pbft协议现有的交易数据传播机制,由于Pre-Prepare消息中需要携带完整的交易列表,广播发送Pre-Prepare消息就会产生大量的数据副本;比如,需要基于联盟链中节点设备的总数量N,将Pre-Prepare消息复制N份,然后进行广播发送;因此,pbft协议在交易数据的传播阶段,会大量占用联盟链的网络带宽,对联盟链网络的带宽性能上具有较高的要求;一旦联盟链网络的带宽性能不足,会导致无法在短时间内将需要共识的交易列表扩散传播至其它参与共识的从节点设备。
基于此,在本说明书中,可以对pbft算法的pre-prepare和prepare阶段现有的交易数据传播机制进行优化改进:
一方面,主节点设备向各从节点设备发送Pre-Prepare消息中,可以不再携带完整的交易列表,而是仅携带上述交易列表的一个数据分片。
另一方面,主节点设备向其它各从节点设备扩散Pre-Prepare消息的方式,可以由广播发送Pre-Prepare消息的方式,修改为向各从节点设备单播发送Pre-Prepare消息;例如,可以针对各个从节点设备分别构建Pre-Prepare消息,在Pre-Prepare消息中携带彼此互不相同的数据分片,然后逐一将构建的Pre-Prepare消息依次发送至各从节点设备,以确保各从节点设备能够收到不同的数据分片。
收到上述Pre-Prepare消息的从节点设备,首先可以遵循pbft算法的规定,对收到的Pre-Prepare消息进行验证,以确定是否接受收到的Pre-Prepare消息。
其中,在本说明书中,对收到的Pre-Prepare消息进行验证,即为对收到的Pre-Prepare消息中携带的内容进行验证的过程,具体的验证过程,在本说明书中不再进行详述;
例如,遵循pbft算法的规定,在Pre-Prepare消息中,可以携带待共识的交易数据(本说明书中为数据分片)、视图编号v、待共识的交易数据的摘要(在本说明书中为数据分片的摘要)、数字签名等信息。相应的,在本说明书中,在对Pre-Prepare消息进行验证时,具体可以执行以下的验证过程:
(1)验证视图编号V与本地记录的视图编号是否一致;
(2)对Pre-Prepare消息中的数字签名进行验证;
(3)对Pre-Prepare消息中携带的数据分片进行有效性验证;
例如,在实现时,主节点设备可以基于所有数据分片构建一颗默克尔树,并在Pre-Prepare消息中携带默克尔树的各分支节点的hash值。而节点设备在对接收到的Pre-Prepare消息中携带的数据分片进行验证时,可以重新计算该Pre-Prepare消息中携带的数据分片的hash值,基于该hash值以及Pre-Prepare消息中携带的上述默克尔树的各分支节点的hash值,来重构默克尔树;然后,可以通过比较重构的默克尔树的树根对应的hash,来对该数据分片进行验证;如果重构的默克尔树的树根对应的hash没有发生变化,则认为该数据分片通过有效性验证;反之,可以认为该Pre-Prepare消息中携带的为无效的数据分片,此时可以丢弃该数据分片。
当然,在实际应用中,上述Pre-Prepare消息中所携带的内容,也可以基于实际需求进行扩展;例如,在一个例子中,上述Pre-Prepare消息中还可以携带共识高度h。上述共识高度h与视图编号v在功能上类似,通常是一个连续编号的整数,表示联盟链已经共识过的轮数(并非指示成功共识的轮数)。比如,在一轮共识的过程中,如果主节点设备发生故障,通常会触发试图切换,重新选举主节点设备,在这种情况下,可以立即将共识高度h加一,而由于本轮尚未共识成功,对于视图编号V而言,则并不加一,仍然保留原来的视图编号V。
在这种情况下,在对Pre-Prepare消息进行验证时,在以上列举出的验证过程的基础上,还可以进一步执行以下示出的验证:
(4)验证共识高度h与本地记录的共识高度h是否一致。
当收到上述Pre-Prepare消息的节点设备,在执行以上列举出的验证过程后,如果验证通过,表示该节点设备接受上述Pre-Prepare消息,此时该节点设备可以获取并保存该Pre-Prepare消息中携带的数据分片,并进入pbft协议的Prepare阶段,向联盟链中的其它各个节点设备广播发送一条用于对上述Pre-Prepare消息进行确认的Prepare消息;其中,上述Prepare消息中携带的内容格式,可以与上述Pre-Prepare消息保持一致。
基于现有的pbft协议,节点设备向联盟链的其它各个节点设备广播的Prepare消息中,通常仅携带诸如视图编号v、待共识的交易数据的摘要等数据,在本说明书中,可以对Prepare消息的格式进行进一步扩展,各节点设备也可以将主节点设备通过Pre-Prepare消息单播发送的数据分片,也携带在上述Prepare消息中。
一方面,各节点设备可以将携带数据分片的Prepare消息,在联盟链中的其它各个节点设备中进行广播发送,以将接收到的由主节点设备单播发送的数据分片,进一步扩散传播至联盟链中的其它各节点设备。
另一方面,各节点设备也可以接收由其它各从节点设备广播发送的Prepare消息,对收到Prepare消息进行验证,以确定是否接受收到的Prepare消息。其中,对收到Prepare消息进行验证的具体过程,可以参考对Pre-Prepare消息进行验证的具体过程,在本说明书中不再进行赘述。
如果验证通过,表示该节点设备接受收到的Prepare消息:
一方面,该节点设备可以获取并保存该Prepare消息中携带的数据分片;
另一方面,该节点设备还可以进一步确定接收到的由其它各节点设备广播发送的Prepare消息的数量,是否达到2f+1个(包括自身广播的Prepare消息在内)。
其中,f表示pbft算法能够容错的错误节点的数量;f的具体取值,可以通过公式N=3f+1换算的得到;N表示联盟链中的节点设备的总数量。
如果收到的Prepare消息的数量达到2f+1个,此时该节点设备可以进入pbft协议的commit阶段,该节点设备可以向联盟链中的其它各个节点设备广播发送一条commit消息,继续完成对上述交易列表的原始内容的共识处理过程。
在本说明书中,联盟链中的节点设备在向联盟链中的其它各个节点设备广播发送commit消息之后,也可以接收由其它各节点设备广播发送的commit消息消息,对收到commit消息进行验证,以确定是否接受收到的commit消息。
其中,上述commit消息中携带的内容格式,可以与Pre-Prepare消息和Prepare消息保持一致。但需要强调的是,在Pre-Prepare消息和Prepare消息中,携带的待共识的交易数据的摘要,为上述交易列表的数据摘要,而在commit阶段,由于节点设备已经恢复出完整的交易列表,因此在commit消息中可以携带恢复出的完整的交易列表的摘要。
其中,对收到commit消息进行验证的具体过程,可以参考对Pre-Prepare消息进行验证的具体过程,在本说明书中不再进行赘述。
如果验证通过,表示该节点设备接受收到的commit消息,该节点设备还可以进一步确定接收到的由其它各节点设备广播发送的commit消息的数量,是否达到2f+1个(包括自身广播的commit消息在内)。
如果收到的commit消息的数量达到2f+1个,此时该节点设备可以进一步确定收集到的数据分片,是否达到了纠删码算法支持的纠删码恢复阈值;如果是,该节点设备可以立即基于纠删码重构算法,对已经收集到的数据分片进行数据恢复计算,还原出上述交易列表的原始内容。
其中,基于纠删码重构算法,对已经收集到的数据分片进行数据恢复计算的具体计算过程,在本说明书中不再进行详述,本领域技术人员在将本说明书的技术方案付诸实现时,可以参考相关技术中的记载。
在示出的一种实施方式中,由于一旦上述纠删码恢复阈值的具体取值大于2f+1,会导致从节点设备在commit阶段,没有足够的数据分片来恢复出需要共识的上述交易列表的原始内容,因此在本说明书中,上述纠删码算法支持的纠删码恢复阈值的具体取值大小,需要小于或者等于上述2f+1;例如,可以恰好等于2f+1。
通过这种方式,使得主节点设备在基于纠删码算法对上述交易列表进行分割时,可以参考pbft算法支持的错误节点的容错数量f,来控制最终分割得到的数据分片的数量,从而可以在确保在commit阶段,有足够的数据分片恢复出需要共识的上述交易列表的原始内容的前提下,尽可能的将上述交易列表分割为足够小的数据分片。
在本说明书中,当上述节点设备于纠删码算法对已经收集到的数据分片进行数据恢复计算,还原出上述交易列表的原始内容后,由于各节点设备传播扩散的数据分片,为基于压缩处理后的交易列表进行分割得到的数据分片,因此该节点设备在基于纠删码重构算法,对收集到的数据分片进行数据恢复后,得到的也只是压缩处理后的交易列表。
在这种情况下,该节点设备在完成以上数据恢复计算后,可以基于与上述压缩算法对应的解压缩算法,对恢复出的压缩后的交易列表进行解压缩处理,来解压缩出上述交易列表的原始内容。
在以上实施例中,以联盟链采用pbft算法和HoneyBadgerBFT算法作为共识算法,对上述目标节点设备提议的交易列表进行共识处理为例进行了说明。
需要补充说明的是,在本说明书中,无论是HoneyBadgerBFT共识算法中的上述目标节点设备,还是pbft算法中的主节点设备,在对上述交易列表进行分割之前,还可以基于支持的相关算法对上述交易列表进行预处理。
在示出的另一种实施方式中,在对上述交易列表进行分割之前,还可以对上述交易列表进行加密预处理,基于预设的加密算法以及加密密钥对对上述交易列表进行加密处理。
其中,所采用的加密算法,在本说明书中不进行特别限定;例如,在实际应用中,可以是对称加密算法,也可以是非对称加密算法。
当完成针对上述交易列表的加密处理之后,此时再基于上述纠删码算法对加密处理后的上述交易列表进行分割,将加密处理后的上述交易列表分割成为指定数量的数据分片。
相应的,当基于收集到的数据分片,还原出原始的交易列表中,由于各节点设备传播扩散的数据分片,为基于加密处理后的交易列表进行分割得到的数据分片,因此节点设备在基于纠删码重构算法,对收集到的数据分片进行数据恢复后,得到的也只是加密处理后的交易列表。
在这种情况下,节点设备在完成以上数据恢复计算后,可以基于与上述加密算法对应的解密算法,以及与上述加密密钥对应的解密密钥,对恢复出的压缩后的交易列表进行解密处理,来解密出上述交易列表的原始内容,以完成对该交易列表的原始内容的共识处理,具体的实施细节不再赘述。
其中,在示出的一种实施方式中,上述加密算法具体可以是门限加密算法。而上述解密算法具体可以是与门限加密算法对应的门限解密算法。
在这种场景下,解密密钥具体可以被分割为指定数量的子密钥,并将各子密钥由各节点设备分别持有。
需要说明的是,对上述解密密钥进行分割得到的子密钥的数量,可以与联盟链中的节点设备总数一致;例如,假设联盟链中有N台节点设备,那么可以将上述解密密钥也分割成为N个子密钥,由联盟链中的N台节点设备分别持有。
在这种情况下,节点设备还可以收集其它各节点设备持有的子密钥,并确定收集到的子密钥的数量是否达到预设的解密门限阈值;比如,密钥门限阈值为N时,表明需要N个节点设备基于持有的子密钥(也即上述解密密钥的部分片段),来共同对加密后的数据进行解密。
其中,节点设备收集其它各节点设备持有的子密钥的具体方式,在本说明书中不进行特别限定;
例如,仍以联盟链采用的共识算法为pbft算法为例,节点设备可以在与其它节点设备交互的commit消息中,携带自身持有的子密钥。
又如,仍以联盟链采用的共识算法为HoneyBadgerBFT为例,节点设备可以在与其它节点设备交互的ECHO消息中,携带自身持有的子密钥。
当然,在实际应用中,各节点设备也可以通过单独定义一个用于传播持有的子密钥的交互消息,利用该交互消息将自身持有的子密钥同步到其它节点设备
如果节点设备设备收集到的子密钥的数量达到预设的解密门限阈值,表明该节点设备已经具有足够的分片来重构解密密钥,此时该节点设备可以基于收集到的子密钥对解密密钥进行重构处理,以恢复出原始的解密密钥,然后基于门限解密算法以及恢复出的原始的解密密钥,对恢复出的加密处理后的交易列表进行解密处理,来解密出上述交易列表的原始内容。
其中,基于收集到的子密钥对解密密钥进行重构的具体过程,在本说明书中不再进行详细描述,本领域技术人员在将本说明书的技术方案付诸实现时,可以参考相关技术中的记载;
例如,在对解密密钥进行分割、以及基于收集到的子密钥对解密密钥进行恢复,仍然可以采用纠删码技术来实现,具体过程不再赘述。
通过这种方式,由于主节点设备在对上述交易列表进行分割之前,预先对主节点设备进行了加密处理,因此可以有效的向各节点设备发送数据分片时的数据安全,使得一些非法的节点设备即便收集到足够的数据分片恢复出上述交易列表,也无法查看到交易列表的原始内容,从而可以提升节点设备之间进行共识交互时的数据安全。
需要补充说明的是,在以上实施例中,以利用pbft算法和HoneyBadgeBFT算法段现有的交易数据传播扩散机制,将待共识的交易列表传播扩散至各个参与共识的节点设备为例进行了详细说明。
需要强调的是,在实际应用中,在需要将待共识的交易列表传播扩散至各个参与共识的节点设备时,除了利用联盟链搭载的共识算法中已有的传播扩散机制来完成交易列表传播扩散以外,也可以通过定义单独的传播扩散协议来完成相同的功能。
另外,以上实施例中,仅以联盟链采用pbft算法和HoneyBadgeBFT作为共识算法为例进行了说明,显然在实际应用中,本说明书中的技术方案也可以等同应用在联盟链采用的其它形式的共识算法之中。
也即,以上步骤102-106示出的传播扩散逻辑,除了可以应用在pbft算法和HoneyBadgeBFT的共识交互过程之中,也可以应用在诸如raft等其它类似的共识算法之中,其具体的实施细节,在本说明书中不再进行详述,本领域技术人员在将本说明书的技术方案付诸实现时,可以参考以上实施例中的记载。
与上述方法实施例相对应,本说明书还提供了一种基于区块链的交易共识处理装置的实施例。本说明书的基于区块链的交易共识处理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本说明书的基于区块链的交易共识处理装置所在电子设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图3是本说明书一示例性实施例示出的一种基于区块链的交易共识处理装置的框图。
请参考图3,所述基于区块链的交易共识处理装置30可以应用在前述图2所示的电子设备中,包括有:接收模块301、发送模块302、确定模块303和恢复模块304。
接收模块301,接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;所述目标节点设备单播发送至各节点设备的数据分片不同;
发送模块302,将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
确定模块303,确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
恢复模块304,如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
在本实施例中,所述装置30还包括:
分割模块305(图3中未示出),生成本节点设备提议的交易数据;基于预设的压缩算法对本节点设备提议的交易数据进行压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;
所述发送模块302进一步:
将所述指定数量的数据分片分别单播发送至其它各节点设备。
在本实施例中,所述区块链搭载的共识算法为HoneyBadgeBFT算法;
所述接收模块301:
接收所述目标节点设备单播发送的VAL消息;其中,所述VAL消息中包括所述交易数据的数据分片;
获取并保存所述VAL消息中的数据分片。
在本实施例中,所述区块链搭载的共识算法为HoneyBadgeBFT算法,所述发送302模块:
向所述区块链中的其它各节点设备广播发送ECHO消息;其中,所述ECHO消息包括接收到的所述数据分片,以使所述其它各节点设备在接收到所述ECHO消息时,获取并保存所述ECHO消息中的数据分片。
在本实施例中,所述区块链搭载的共识算法为pbft算法;
所述接收模块301:
接收所述目标节点设备单播发送的Pre-Prepare消息;其中,所述
Pre-Prepare消息中包括所述交易数据的数据分片;
获取并保存所述Pre-Prepare消息中的数据分片。
在本实施例中,所述区块链搭载的共识算法为pbft算法,所述发送模块302:
向所述区块链中的其它各节点设备广播发送Prepare消息;其中,所述Prepare消息包括接收到的所述数据分片,以使所述其它各节点设备在接收到所述Prepare消息时,获取并保存所述Prepare消息中的数据分片。
在本实施例中,所述分割模块305:
基于预设的加密算法以及加密密钥对提议的交易数据进行加密处理;
基于所述纠删码算法将加密处理后的所述交易数据分割为指定数量的数据分片。
所述恢复模块304:
基于基于纠删码重构算法对接收到的数据分片进行数据恢复;
基于与所述加密算法对应的解密算法,以及与所述加密密钥对应的解密密钥,对恢复出的所述交易数据进行解密处理,以得到所述交易数据的原始内容。
在本实施例中,所述加密算法为门限加密算法;所述解密算法为与门限加密算法对应的门限解密算法;所述解密密钥被分割为指定数量的子密钥;其中,各子密钥由各节点设备分别持有;
所述恢复模块304进一步:
收集所述其它各节点设备持有的子密钥;
确定收集到的子密钥的数量是否达到预设的解密门限阈值;
如果是,基于收集到的子密钥重构所述解密密钥,并基于与所述门限加密算法对应的门限解密算法,以及所述解密密钥,对恢复出的所述交易数据进行解密处理。
在本实施例中,所述目标节点提议的交易数据为交易列表;所述指定数量为所述区块链中的节点设备的总数量。
在本实施例中,所述区块链为联盟链。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收所述目标节点设备单播发送的所述交易数据的数据分片;其中,发起提议的目标节点设备基于预设的压缩算法对提议的交易数据进行了压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;所述目标节点设备单播发送至各节点设备的数据分片不同;
将接收到的数据分片广播发送至所述区块链中的其它各节点设备;以及,接收所述其它各节点设备广播发送的所述交易数据的数据分片;
确定接收到的所述交易数据的数据分片的数量是否达到纠删码恢复阈值;
如果是,基于纠删码重构算法对接收到的数据分片进行数据恢复;以及,基于与所述压缩算法对应的解压缩算法,对恢复出的所述交易数据进行解压缩处理,得到所述交易数据的原始内容,以完成对所述交易数据的原始内容的共识处理。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
生成本节点设备提议的交易数据;
基于预设的压缩算法对本节点设备提议的交易数据进行压缩处理,并基于纠删码算法将压缩处理后的所述交易数据分割为指定数量的数据分片;以及,
将所述指定数量的数据分片分别单播发送至其它各节点设备。
在本实施例中,所述区块链搭载的共识算法为HoneyBadgeBFT算法;
通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收所述目标节点设备单播发送的VAL消息;其中,所述VAL消息中包括所述交易数据的数据分片;
获取并保存所述VAL消息中的数据分片。
在本实施例中,所述区块链搭载的共识算法为HoneyBadgeBFT算法;
通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
向所述区块链中的其它各节点设备广播发送ECHO消息;其中,所述ECHO消息包括接收到的所述数据分片,以使所述其它各节点设备在接收到所述ECHO消息时,获取并保存所述ECHO消息中的数据分片。
在本实施例中,所述区块链搭载的共识算法为pbft算法;
通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收所述目标节点设备单播发送的Pre-Prepare消息;其中,所述
Pre-Prepare消息中包括所述交易数据的数据分片;
获取并保存所述Pre-Prepare消息中的数据分片。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
向所述区块链中的其它各节点设备广播发送Prepare消息;其中,所述Prepare消息包括接收到的所述数据分片,以使所述其它各节点设备在接收到所述Prepare消息时,获取并保存所述Prepare消息中的数据分片。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
基于预设的加密算法以及加密密钥对提议的交易数据进行加密处理;
基于所述纠删码算法将加密处理后的所述交易数据分割为指定数量的数据分片。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
基于基于纠删码重构算法对接收到的数据分片进行数据恢复;
基于与所述加密算法对应的解密算法,以及与所述加密密钥对应的解密密钥,对恢复出的所述交易数据进行解密处理,以得到所述交易数据的原始内容。
在本实施例中,所述加密算法为门限加密算法;所述解密算法为与门限加密算法对应的门限解密算法;所述解密密钥被分割为指定数量的子密钥;其中,各子密钥由各节点设备分别持有;
通过读取并执行所述存储器存储的与基于区块链的交易共识处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
收集所述其它各节点设备持有的子密钥;
确定收集到的子密钥的数量是否达到预设的解密门限阈值;
如果是,基于收集到的子密钥重构所述解密密钥,并基于与所述门限加密算法对应的门限解密算法,以及所述解密密钥,对恢复出的所述交易数据进行解密处理。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。