CN115660836A - 双重流水线安全高吞吐量分片区块链实现方法与装置 - Google Patents

双重流水线安全高吞吐量分片区块链实现方法与装置 Download PDF

Info

Publication number
CN115660836A
CN115660836A CN202211071332.XA CN202211071332A CN115660836A CN 115660836 A CN115660836 A CN 115660836A CN 202211071332 A CN202211071332 A CN 202211071332A CN 115660836 A CN115660836 A CN 115660836A
Authority
CN
China
Prior art keywords
transaction
input
committee
signature
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211071332.XA
Other languages
English (en)
Inventor
刘懿中
刘安迪
刘建伟
李东禹
李大伟
关振宇
孙钰
杨林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202211071332.XA priority Critical patent/CN115660836A/zh
Publication of CN115660836A publication Critical patent/CN115660836A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及一种双重流水线安全高吞吐量分片区块链实现方法与装置,方法包括:生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;将用户的目标交易提交至输入委员会,输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,满足第一预设合法要求时,输入委员会生成相应的可用性证明;通过目标交易的输出分片收集多签名证明,将多签名证明聚合生成目标交易的可用性证明,将目标交易的可用性证明发送给目标交易对应的输出分片,通过输出分片根据目标交易的可用性证明判断目标交易是否满足预设要求,将目标交易写入目标区块,完成交易承诺。解决了链上交易处理的安全性和性能的问题。

Description

双重流水线安全高吞吐量分片区块链实现方法与装置
技术领域
本申请涉及信息安全和电子商务技术领域,特别涉及一种双重流水线安全高吞吐量分片区块链实现方法与装置。
背景技术
区块链具有交易去中心化、数据透明公开和历史记录不可篡改等优点,在通信、金融、物联网和供应链管理等各个领域都有着巨大的应用潜力。但是,目前存在一些限制区块链开发和应用的问题,其中很关键的即链上交易处理的安全性和性能问题。
当前的区块链系统存在各种安全问题,例如双重花费攻击、女巫攻击和日蚀攻击等,这些攻击在不同程度上影响整个区块链系统的安全性和稳定性。与此同时,比特币骨干协议提出链质量、链增长和共同前缀三个区块链应当满足的基本特性。在这三个特性的基础上,提出公共账本应当满足的一致性和活性。这些基础的安全性能研究为区块链系统的设计和安全性分析奠定了良好的基础。设计安全的区块链协议并证明其安全性是当前研究的关键和热点。
区块链的交易处理性能表现是其能够得到广泛应用的另外一个关键因素。而在性能指标中,最重要的指标是交易吞吐量和交易确认时延。传统的第三方支付,如信用卡VISA、银联,能够实现每秒钟几千甚至上万级别的交易吞吐量,而目前大多数区块链交易处理方案的吞吐量较低,处于每秒几十或者几百的量级。为实现区块链交易处理吞吐量提升,分片区块链是实现可扩展性最有前途的链上技术之一。分片区块链的基本思路是将网络中所有节点分为多个分片,每个分片负责处理并维护该分片对应的区块链,网络中的交易也根据一定的规则被分配到不同的分片。分片内节点只需对该分片掌管的交易进行验证、计算和存储。这样一来,分片区块链便能实现交易处理能力的可扩展性,即随着网络中节点数量的增加,全网处理交易的能力随之增加。可扩展性使得分片区块链通常拥有更高的交易吞吐量。
通常,分片区块链具有以下三个特征。第一个是通信分片。参与节点被分为不同的分片,其中每个分片中的节点大部分时间仅需要内部通信。第二个是计算分片,这意味着每个分片仅负责处理其相应的交易,因此交易由不同的分片并行处理。当网络中的节点数量增加时,可以添加更多分片以实现可扩展性。第三个是存储分片,即不同分片的节点仅需要存储其相应分片的区块链历史数据。
分片区块链有几个重要组成部分:节点选择,节点分配,片内共识,跨片交易处理和分片重配置。其中,片内共识和跨片交易处理是分片区块链交易处理的核心部分。片内共识的主要目的是处理片内交易和跨片信息,根据交易确认机制不同,主要分为强一致性算法和弱一致性算法。采用弱一致性算法,区块生产者是单个节点,使用工作量证明算法(Proof of Work,PoW)、股权证明算法(Proof of Stake,PoS)或其他的弱一致性方法在分片中生成区块,交易确认需要等待区块到达一定深度,分片中不存在委员会。采用强一致性算法,每个分片存在委员会运行分布式强一致性算法处理交易,区块和交易通常能够被立即确认。根据网络模型不同,委员会运行算法主要包括同步拜占庭容错(Byzantine FaultTolerance,BFT)算法及其变种、实用拜占庭容错(Practical Byzantine FaultTolerance,PBFT)算法及其改进、异步BFT算法等。
在跨片交易处理阶段,未消费交易输出(Unspent Transaction Outputs,UTXO)模型下分片区块链系统通常采用基于两阶段承诺(Two-Phase Commit,2PC)的处理方式,主要包括准备和承诺阶段。在准备阶段,交易相关分片运行BFT生成交易输入可用性证明,同时锁定输入。负责分片间消息转发的协调者收集可用性证明。在承诺阶段,协调者将可用性证明发送到所有相关分片,并在所有相关分片完成承诺花费或解锁操作。根据协调者角色不同,基于2PC的跨片交易处理方式分为用户驱动的2PC协议和分片驱动的2PC协议。
现有分片区块链仍需要解决许多问题,以使其得到更广泛应用。分片内共识依赖于拜占庭容错协议,一次跨片交易处理片内多次调用BFT,片内片间多次广播通信,处理效率低而通信复杂度高,交易响应时延长,吞吐量低。因此,我们旨在通过设计一种高效片内共识算法和跨片交易处理方案,提出一种安全高吞吐量的分片区块链实现方法。
发明内容
本申请提供一种双重流水线安全高吞吐量分片区块链实现方法与装置,具有交易处理可扩展、交易安全、交易快速响应、系统开销低的特点。本发明的主要目的如下:第一,本发明克服现有区块链系统交易吞吐量低下、交易处理能力固定的缺点,实现了交易处理的高吞吐量,交易处理能力具有可扩展性。本发明提出的安全高吞吐量分片区块链交易处理方案,改进了传统拜占庭容错算法,引入签名成员视图固定与转换机制,提出低开销拜占庭容错算法,将多签名方案、拜占庭容错算法和分片区块链技术充分结合,使得整个区块链系统的交易吞吐量大幅提升,交易吞吐量能够随着网络节点数量的增加而不断增加。第二,本发明确保交易系统具有一致性和活性,通过具有鲁棒性的多签名方案,和安全的拜占庭容错方案,使得系统的安全性、稳定性得到进一步提升,系统中的交易能够被安全处理,防止可能出现的双花攻击,交易输入锁死等问题。第三,本发明确保交易的快速响应,每个交易被提交到系统之后,能够迅速得到处理,掌管交易不同输入的分片同时并行处理交易,经过特殊设计的片间协同流水线式两阶段承诺方案,交易确认时间仅仅与网络真实时延相关,不需要进行固定时间的等待。第四,本发明采取的多签名方案能够进一步聚合,使其与分片区块链跨片交易处理的场景完美结合,每个分片通过拜占庭容错算法产生对交易的一个多签名,而该交易对应的多个分片产生的多个多签名通过聚合生成一个总的签名,作为交易的可用性证明,这大大降低了分片间节点的通信复杂度和交易可用性证明的消息复杂度,同时,结合该方案进一步设计签名成员视图固定与转换机制,领导者根据节点表现确定当前签名视图成员并广播至其他分片,在该视图有效期内均采用视图内成员签名作为有效签名并进行聚合,避免在片间通信过程中多次发送片内签名成员信息,降低了系统开销,提升了系统效率。
本申请第一方面实施例提供一种双重流水线安全高吞吐量分片区块链实现方法,包括以下步骤:生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;基于所述公共参数、所述委员会节点密钥和所述委员会节点认证与所述密钥列表,将用户的目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足所述第一预设合法要求时,通过所述输入委员会生成相应的可用性证明;以通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,并将所述目标交易的可用性证明发送给所述目标交易对应的输出分片,以通过所述输出分片根据所述目标交易的可用性证明判断所述目标交易是否满足预设要求,并在满足所述预设要求时,将所述目标交易写入目标区块,完成交易承诺。
可选地,在一些实施例中,所述生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,包括:授权目标网络中,参加预设协议的节点在本地完成初始化,生成所述公共参数;针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据所述私钥生成公钥,根据所述公钥和所述私钥生成所述公钥证明,所述每个节点将自身的公钥和证明发送给数字证书认证机构;验证所述每个节点发送的自身的公钥和证明,并判断所述每个节点发送的自身的公钥是否符合预设要求,并在所述每个节点发送的自身的公钥符合所述预设要求时,将符合所述预设要求的所述每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到所述委员会节点认证与密钥列表。
可选地,在一些实施例中,所述将用户目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足合法要求,包括:根据所述目标交易输入地址的序列号信息确认所述目标交易输入所在的分片,并将所述目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将所述目标交易提交给所述所有输入分片委员会中其他多个节点,直至接收到所述交易确认信息;对于每一个节点发送的签名,根据所述每一个节点的发送地址判断所述每一个节点是否属于当前签名成员视图,并在属于所述当前签名成员视图时,根据所述每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足所述第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足所述第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;在每个输入分片委员会领导者在收到所述目标交易后,确认所述每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,所述委员会领导者判断所述多签名证明是否满足第三预设合法要求,并在满足所述第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、所述当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;委员会成员接收到所述当前提议证明后,判断所述多签名证明是否满足第五预设合法要求,并在满足所述第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和所述已承诺提议多签名证明;并确认所述当前提议证明是否满足第六预设合法要求,并在满足所述第六预设合法要求时,利用节点私钥对提议消息签名,并将所述签名发送给所述委员会领导者;委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将所述目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
可选地,在一些实施例中,所述通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,包括:输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将所述多签名证明进行二次聚合,将将聚合后的总签名和所述所有输入可用性状态发送给其他所有输入分片。
本申请第二方面实施例提供一种双重流水线安全高吞吐量分片区块链实现装置,包括:生成模块,用于生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;输入模块,用于基于所述公共参数、所述委员会节点密钥和所述委员会节点认证与所述密钥列表,将用户的目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足所述第一预设合法要求时,通过所述输入委员会生成相应的可用性证明;写入模块,用于通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,并将所述目标交易的可用性证明发送给所述目标交易对应的输出分片,以通过所述输出分片根据所述目标交易的可用性证明判断所述目标交易是否满足预设要求,并在满足所述预设要求时,将所述目标交易写入目标区块,完成交易承诺。
可选地,在一些实施例中,所述生成模块,具体用于:授权目标网络中,参加预设协议的节点在本地完成初始化,生成所述公共参数;针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据所述私钥生成公钥,根据所述公钥和所述私钥生成所述公钥证明,所述每个节点将自身的公钥和证明发送给数字证书认证机构;验证所述每个节点发送的自身的公钥和证明,并判断所述每个节点发送的自身的公钥是否符合预设要求,并在所述每个节点发送的自身的公钥符合所述预设要求时,将符合所述预设要求的所述每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到所述委员会节点认证与密钥列表。
可选地,在一些实施例中,所述输入模块,具体用于:根据所述目标交易输入地址的序列号信息确认所述目标交易输入所在的分片,并将所述目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将所述目标交易提交给所述所有输入分片委员会中其他多个节点,直至接收到所述交易确认信息;对于每一个节点发送的签名,根据所述每一个节点的发送地址判断所述每一个节点是否属于当前签名成员视图,并在属于所述当前签名成员视图时,根据所述每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足所述第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足所述第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;在每个输入分片委员会领导者在收到所述目标交易后,确认所述每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,所述委员会领导者判断所述多签名证明是否满足第三预设合法要求,并在满足所述第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、所述当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;委员会成员接收到所述当前提议证明后,判断所述多签名证明是否满足第五预设合法要求,并在满足所述第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和所述已承诺提议多签名证明;并确认所述当前提议证明是否满足第六预设合法要求,并在满足所述第六预设合法要求时,利用节点私钥对提议消息签名,并将所述签名发送给所述委员会领导者;委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将所述目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
可选地,在一些实施例中,所述写入模块,具体用于:输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将所述多签名证明进行二次聚合,将将聚合后的总签名和所述所有输入可用性状态发送给其他所有输入分片。
本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的双重流水线安全高吞吐量分片区块链实现方法。
本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的双重流水线安全高吞吐量分片区块链实现方法。
由此,通过生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,输入委员会生成相应的可用性证明,通过目标交易的输出分片收集多签名证明,将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,根据目标交易的可用性证明判断目标交易是否满足预设要求,在满足预设要求时,将目标交易写入目标区块,完成交易承诺。解决了链上交易处理的安全性和性能问题等问题,实现了高交易吞吐量,确保系统交易能够安全实现,降低了系统开销,提升了系统效率。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请实施例提供的一种双重流水线安全高吞吐量分片区块链实现方法的流程图;
图2为本申请一个实施例的委员会内快速拜占庭容错算法示意图;
图3为本申请一个实施例的双重流水线安全高吞吐量分片区块链实现方法的流程图;
图4为本申请一个实施例的双重流水线安全高吞吐量分片区块链实现方法的关键步骤流程图;
图5为本申请一个实施例的变量名及含义说明的示意图;
图6为根据本申请实施例的双重流水线安全高吞吐量分片区块链实现装置的方框示意图;
图7为根据本申请实施例的电子设备结构的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的双重流水线安全高吞吐量分片区块链实现方法与装置。针对上述背景技术中心提到的解决链上交易处理的安全性和性能问题等问题,本申请提供了一种双重流水线安全高吞吐量分片区块链实现方法,在该方法中,通过生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,输入委员会生成相应的可用性证明,通过目标交易的输出分片收集多签名证明,将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,根据目标交易的可用性证明判断目标交易是否满足预设要求,在满足预设要求时,将目标交易写入目标区块,完成交易承诺。由此,解决链上交易处理的安全性和性能问题等问题,实现了高交易吞吐量,确保系统交易能够安全实现,降低了系统开销,提升了系统效率。
为了达到上述目的,本发明结合了多签名聚合、低开销拜占庭容错算法和分片区块链技术。本发明包含四种实体:(1)用户(User):用户产生相应的交易,根据交易序列号信息将其上传至相关分片,并等待交易确认信息,来判断交易是否被确认。(2)分片委员会成员(Committee Members):全网共有个分片,每个分片包含个委员会成员,运行低开销拜占庭容错算法对交易输入可用性、交易完成确认,输出分片将合法交易写入到对应的区块中。(3)委员会领导者(Committee Leader):每个分片都存在一个委员会领导者,领导者在分片内作为低开销拜占庭容错算法的主导,提议消息、收集投票、生成多签名证明,在分片间收集、发送和广播关键信息,完成对交易的流水线式确认。(4)数字证书认证机构(Certificate Authority):验证用户公钥,颁发可信的委员会公钥列表。
具体而言,图1为本申请实施例所提供的一种双重流水线安全高吞吐量分片区块链实现方法的流程图。
如图1所示,该双重流水线安全高吞吐量分片区块链实现方法包括以下步骤:
在步骤S101中,生成公共参数、委员会节点密钥和委员会节点认证与密钥列表。
具体地,初始化包括公共参数生成、委员会节点密钥生成和委员会节点认证与密钥列表生成。
可选地,在一些实施例中,生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,包括:授权目标网络中,参加预设协议的节点在本地完成初始化,生成公共参数;针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据私钥生成公钥,根据公钥和私钥生成公钥证明,每个节点将自身的公钥和证明发送给数字证书认证机构;验证每个节点发送的自身的公钥和证明,并判断每个节点发送的自身的公钥是否符合预设要求,并在每个节点发送的自身的公钥符合预设要求时,将符合预设要求的每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到委员会节点认证与密钥列表。
其中,公共参数生成:授权网络中,计划参加协议的节点在本地完成初始化,生成公共参数,公共参数用来进一步生成节点的公私钥对,以及签名的验证;委员会节点密钥生成:每个委员会的每个节点运行密钥生成算法,首先随机选择私钥,然后根据私钥生成公钥,再根据生成的公私钥对产生对公钥的证明,该证明用来防止公钥伪造攻击(Public KeyRogue Attack)。每个节点将自身的公钥和证明发送给数字证书认证机构;委员会节点认证与公钥列表生成:CA对每个分片每个节点发送的公钥和证明进行验证,判断公钥的合法性,将合法的公钥添加到对应分片的委员会公钥列表中。CA最终公布个分片对应的个委员会公钥列表。公钥列表被用于分片内和分片间的签名验证。
在步骤S102中,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会后,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,通过输入委员会生成相应的可用性证明,其中,委员会内快速拜占庭容错算法示意图如图2所示。
具体地,用户提交交易至相应输入委员会,委员会内运行低开销拜占庭容错算法对本轮交易输入可用性和上轮待确认跨片交易合法性进行判断,低开销拜占庭容错算法包括领导者提议、委员会成员投票、领导者构建多签名证明、签名成员视图转换等步骤,输入委员会生成相应的可用性证明。
可选地,在一些实施例中,将用户目标交易提交至输入委员会后,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足合法要求,包括:根据目标交易输入地址的序列号信息确认目标交易输入所在的分片,并将目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将目标交易提交给所有输入分片委员会中其他多个节点,直至接收到交易确认信息;对于每一个节点发送的签名,根据每一个节点的发送地址判断每一个节点是否属于当前签名成员视图,并在属于当前签名成员视图时,根据每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;在每个输入分片委员会领导者在收到目标交易后,确认每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,委员会领导者判断多签名证明是否满足第三预设合法要求,并在满足第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;委员会成员接收到当前提议证明后,判断多签名证明是否满足第五预设合法要求,并在满足第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和已承诺提议多签名证明;并确认当前提议证明是否满足第六预设合法要求,并在满足第六预设合法要求时,利用节点私钥对提议消息签名,并将签名发送给委员会领导者;委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
具体地,首先,用户产生新的交易tx,根据交易输入地址的序列号信息确认交易输入所在的分片,将交易提交给所有输入分片委员会的领导者,进入等待状态。若在等待一定时间之后仍未收到返回的交易确认信息,则重新将交易提交给委员会中其他多个节点,再次进入等待状态,直到交易确认信息被返回。
然后,委员会领导者收集上一轮2f+1个片内节点投票。对于片内节点,领导者在一段时间内固定包含2f+1个诚实节点的签名成员视图,对于每一个节点发送的签名,首先根据其发送地址判断该节点是否属于当前签名成员视图,若不是则继续等待视图内节点投票,若属于,则根据节点身份在当前分片公钥列表中查询其公钥,验证签名份额的合法性,若视图内成员签名不合法、规定时间内未收到所有视图内成员投票或当前签名成员视图到期,则立即发起签名成员视图转换,根据节点表现选择新视图成员。当收到视图内所有成员合法投票后,领导者利用BLS签名聚合算法将该个签名聚合为有效的多签名,作为本轮提议的证明。
然后,每个输入分片委员会领导者在收到交易后,确认该分片管理的输入,在当前分片的未花费交易输出(Unspent Transaction Outputs,UTXO)池查询该输入是否可用。领导者根据收到的上轮待确认交易输出分片聚合的聚合多签名证明,验证该聚合多签名合法性,若合法,则根据每个交易输入可用性标志位判断上轮交易合法性,并将本轮交易输入、其可用性状态、上轮待确认跨片交易以及其合法性状态作为新的提议在委员会内广播,附加本轮提议证明,对其发起低开销拜占庭共识。对于上轮待确认跨片交易输出分片聚合的输入可用性证明,在委员会内广播。
最后,由于低开销拜占庭容错算法采用流水线技术处理提议,委员会领导者继续接受新的交易。在新的一轮中,领导者用上一轮的投票生成多签名,将新的请求和多签名证明组成新的提议。重复之前的构建多签名证明、提议和投票过程,直到最初的提议被承诺。此时委员会内所有节点将当前交易的输入设置为锁定状态。所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,同时根据上轮交易合法性对相应输入操作,若上轮交易合法,则将交易对应的输入从本分片的UTXO池中移除,花费该输入,否则将之前锁定的交易输入解锁。
在步骤S103中,通过目标交易的输出分片收集多签名证明,并将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,以通过输出分片根据目标交易的可用性证明判断目标交易是否满足预设要求,并在满足预设要求时,将目标交易写入目标区块,完成交易承诺。
可以理解的是,交易的输出分片收集多签名证明,实现多签名聚合,生成交易可用性证明,并发送给对应分片。输出分片根据交易可用性证明,判断交易合法性,将合法交易写入到区块,完成交易承诺。
可选地,在一些实施例中,通过目标交易的输出分片收集多签名证明,并将多签名证明聚合后生成目标交易的可用性证明,包括:输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将多签名证明进行二次聚合,将将聚合后的总签名和所有输入可用性状态发送给其他所有输入分片。
具体地,输出分片的委员会领导者收集当前交易的所有输入可用性和多签名证明,验证多签名的合法性,将所有的多签名证明,即多签名,进行二次聚合,将聚合后的总签名和所有输入可用性状态发送给其他所有输入分片。然后,输出分片委员会领导者验证交易所有输入是否可花费,如果是,则在委员会内广播当前交易和所有交易可花费凭证,发起低开销拜占庭共识算法,即提议、投票和构建凭证,完成对交易的承诺。输出分片委员会领导者将承诺后的交易和对应的多签名证明发送给用户。用户验证交易出现在输出分片维护的区块链上,完成交易确认。
综上所述,本方案将整个过程分为三个阶段,二三阶段以流水线模式并行。第一阶段为初始化阶段,包括公共参数生成、委员会内节点密钥生成与认证,每个委员会内节点首先在本地生成公共参数,然后生成用于委员会内投票的聚合签名公私钥对,由认证机构完成认证;第二阶段为输入分片确认阶段,用户提交本轮交易至相应输入分片委员会,委员会运行低开销拜占庭容错算法,对本轮交易输入可用性和上轮交易合法性信息同时承诺,将承诺后的本轮交易输入可用性证明发送至担任协调者的输出分片领导者,并进行两轮交易相应输入的锁定、解锁或花费操作。第三阶段为输出分片确认阶段,担任协调者的输出分片领导者对本轮待承诺交易所有相关输入分片的多签名进行进一步聚合,将生成的二次聚合多签名发送给用户和其他所有相关分片,调用低开销拜占庭容错算法将交易写入本分片区块,同时对本地未花费交易池信息进行更新,完成一次跨片交易确认。
以下将结合附图3、附图4、附图5详细阐述双重流水线安全高吞吐量分片区块链实现方法,其中,图3为本申请一个实施例的双重流水线安全高吞吐量分片区块链实现方法的流程图,图4为双重流水线安全高吞吐量分片区块链实现方法的关键步骤流程图,图5为本申请一个实施例的变量名及含义说明的示意图。
1.初始化阶段
步骤301:公共参数生成
节点参与协议之前必须首先生成公共参数。公共参数用来产生节点的公私钥对,和签名的验证。本方案采取BLS多签名算法,节点按照如下方式生成公共参数。
BLS多签名算法公共参数:par:=(p,G1,G2,GT,e,g1,g2),其中G1,G2,GT是素数阶p的乘法群,G1,G2生成元分别为g1,g2,e是非退化的双线性映射,满足e(gx,gy)=e(g,g)xy,且在群G中,计算性Diffie-Hellman问题是困难的,判定性Diffie-Hellman问题是简单的,H0:{0,1}*→G2和H1:{0,1}*→G1是安全哈希函数。
步骤302:委员会节点密钥生成
节点根据BLS多签名算法的密钥生成算法生成自己对应的公私钥对。
BLS多签名密钥生成算法(pki,ski)←KeyGen(par):
(1)节点Pi随机选取群Zp中的整数,作为私钥ski
(2)计算节点公钥:
Figure BDA0003827735780000111
(3)计算公钥证明:
Figure BDA0003827735780000112
节点Pi将公钥和其证明(pkii)发送给CA。
步骤303:委员会节点认证与公钥列表生成
(1)CA对每个节点Pi发送的公钥和其证明(pkii),验证是否满足e(πi,g2)=e(H1(pki),pki)。如果是,将该公钥添加到公钥列表:PKlist←PKlist∪{pki}。
(2)若收到足够数量合法节点认证信息,CA公布公钥列表PKlist={pk1,pk2,…,pku}。BLS多签名份额生成算法si←ShareSig(par,ski,m):
(1)输入公共参数par,节点私钥ski,消息m;
(2)计算签名份额:
Figure BDA0003827735780000121
BLS多签名份额验证算法0/1←ShareVer(par,PKlist,m,{si,pki}):
(1)输入公共参数par,公钥列表Pklist,消息m,签名份额和公钥{si,pki},当前签名成员视图T;
(2)对于签名份额和公钥对{si,pki},若满足(pki∈PKlist)∧(e(si,g2)=e(H0(m),pki)),输出1,否则,输出0。
BLS多签名密钥聚合算法agpk←AggreKey(par,PKlist,T):
(1)输入公共参数par,当前分片公钥列表PKlist,签名成员视图T,其中签名成员视图T由当前分片领导者根据节点表现短期固定,T←[b1,b2,…bu],T中u个元素与公钥列表PKlist中u个公钥对应,对于每个i=1到u,如果bi←1,则该节点属于当前视图,其签名份额用于本轮多签名生成;
(2)初始化聚合公钥:agpk←1;
(3)对于每个节点Pi,若T[i]=1,即该节点属于当前签名成员视图,则聚合该节点公钥:agpk←agpk·pki
(4)输出agpk。
BLS多签名生成算法(,m)←AggreSig(m,{si,pki}|t|):
(1)输入消息m,t个签名份额和公钥{si,pki}|t|
(2)计算多签名
Figure BDA0003827735780000122
BLS多签名验证算法0/1←AggreVer(par,PKlist,,agpk,m):
(1)如果满足e(σ,g2)=(H0(m),agpk),输出1;否则,输出0。
BLS多签名聚合算法
Figure BDA0003827735780000123
(1)对于每个{PKlistii,agpki,mi},验证是否皆有AggreVer(par,PKlistii,agpki,mi)=1;
(2)如果是,计算二次聚合多签名:
Figure BDA0003827735780000124
BLS聚合的多签名验证算法
Figure BDA0003827735780000125
(1)如果满足
Figure BDA0003827735780000126
输出1;否则,输出0。
2.输入分片交易确认
步骤304:用户提交交易
用户提交交易至网络的过程如下:
(1)用户User产生跨片交易
Figure BDA0003827735780000131
每个交易平均k个输入,k′个输出,适用于大部分区块链系统;
(2)用户User确认每个输入
Figure BDA0003827735780000132
对应的输入分片,将交易txj发送给所有输入分片委员会的领导者,并开始等待计时器Timeouttx。网络中一共包含m个分片S1,…,Sm
(3)如果用户User在等待计时器Timeouttx结束后,仍然未收到领导者返回的交易确认信息或交易拒绝信息,则用户User将交易发送给共识委员会中的其他节点,并重新开始等待计时,直到收到交易确认信息或拒绝信息。
步骤305:领导者构建多签名证明与签名成员视图转换
每个输入分片委员会构建多签名证明与签名成员视图转换的过程如下:
(1)在第l轮,领导者收集第l-1轮的投票消息。收集到2f+1个合法的投票消息mv={("VOTE",l-1,H(pl-1),si)}|2f+1|
(2)初始化,令有效签名集合
Figure BDA0003827735780000133
签名成员视图转换标志位fsig←0;
(3)若对于每个投票
Figure BDA0003827735780000134
满足
Figure BDA0003827735780000135
则运行多签名份额验证算法ShareVer(par,PKlist,pl-1,{si,pki}|2f+1|),若算法输出为1,则将该签名份额加入有效签名集合SIGlistl-1←SIGlistl-1∪{si},否则,设置签名成员视图转变标志位fsig←1,需要进行签名成员视图转换,若存在某个投票
Figure BDA0003827735780000136
Figure BDA0003827735780000137
则继续等待视图内成员消息;
(4)若领导者等待计时器Timeoutl结束、当前视图vs到期或视图转换标志位fsig=1,则发起签名成员视图转换。对于最早收到的2f+1个合法投票消息
Figure BDA0003827735780000138
Figure BDA0003827735780000139
消息内签名皆视为有效签名SIGlistl-1←SIGlistl-1∪{si},计算聚合公钥
Figure BDA00038277357800001310
Figure BDA00038277357800001311
构造签名成员视图转换消息
Figure BDA00038277357800001312
Figure BDA00038277357800001313
向当前分片及其他分片委员会领导者广播该消息,同时对新视图有效期开始计时。
(5)若分片领导者收到其他分片签名成员视图转换消息
Figure BDA00038277357800001314
则向当前分片委员会广播该消息。委员会节点收到签名成员视图转换消息后,更新本地存储的该分片视图和聚合公钥值,即
Figure BDA00038277357800001315
Figure BDA00038277357800001316
(6)委员会领导者收集到有效签名数量|SIGlistl-1|=2f+1,则进行多签名生成(σ,pl-1)←AggreSig(pl-1,{si,pki}|2f+1|),构建多签名证明PCCl-1←(σ,H(pl-1))。
步骤306:领导者并行提议
每个输入分片委员会构建提议消息的过程如下:
(1)领导者初始化当前第l轮提议pl←⊥;
(2)领导者收到用户User提交的本轮交易txj,确定该交易属于当前分片的输入Ii。在当前分片未花费交易池utxoin中查询Ii是否可用。如果可用,令bj=1,如果不可用,即处于锁定状态或已花费,令bj=0。
(3)领导者收到输出分片聚合的上轮待确认交易txj-1的聚合多签名证明(∑,VI),在当前分片广播(∑,VI)。
(4)确定聚合多签名的合法性,即运行聚合多签名验证算法判断
Figure BDA0003827735780000141
是否成立。若成立,则对于每个i=1至k,判断
Figure BDA0003827735780000142
是否成立,即交易txj-1对应的所有输入Ii均处于可用状态,则该交易合法,令新提议中bj-1=1,否则交易非法,令新提议中bj-1=0。构建本轮l的请求
Figure BDA0003827735780000143
其中H(txj.id)计算本轮交易序列号的哈希值,防止重放攻击;
(5)结合多签名证明,构造本轮提议mp←(Proposal,pl,PCCl-1),在委员会内广播,并开始等待计时器Timeoutl
步骤307:委员会成员投票
每个输入分片委员会内成员对提议投票的过程如下:
(1)在第l轮,收到本轮提议消息mp,将其解析得到PCCl-1=(σ,h)。确认上一轮收到的pr-1
(2)判断多签名证明的合法性,即验证是否满足
Figure BDA0003827735780000144
如果是,那么将pr-1的状态设置为已准备,即pr-1.state←prepared,且将pr-2的状态设置为已承诺,即pr-2.state←committed。输出已承诺的消息和其多签名证明(pl-2,PCCl-2);
(3)收到(∑,VI),将VI解析为{pj-1}|k|,每个pj-1解析为
Figure BDA0003827735780000145
(4)解析新提议pl
Figure BDA0003827735780000146
在本地utxoin池中查询Ii的可用性状态。判断聚合多签名的合法性,即运行聚合多签名验证算法判断
Figure BDA0003827735780000147
是否成立,若成立,则根据pj-1中所有
Figure BDA0003827735780000148
值判断该交易合法性。若Ii的本地可用性状态与bj的值相同,上轮交易合法性状态与pl中bj-1的值相同,且在本轮还未投票,则投票:计算签名份额si←ShareSig(par,ski,pl),构建投票消息mv←(VOTE,l,H(pl),si),发送至当前委员会领导者。
步骤308:流水线重复构建凭证、提议和投票与UTXO更新
(1)第l+1轮,领导者收集第l轮的投票,构建多签名证明PCCl。收到本轮请求pl+1,创建本轮提议消息mp←(Proposal,pl+1,PCCl)。委员会成员收到mp,验证PCCl合法性,输出(pl-1,PCCl-1),构建投票消息mv←(VOTE,l+1,H(pl+1),si)并投票;
(2)第l+2轮,领导者收集第l+1轮的投票,构建多签名证明PCCl+1。收到本轮请求pl+2,创建本轮提议消息mp←(Proposal,Pl+2,PCCl+1)。委员会成员收到mp,验证PCCl+1合法性,输出(pl,PCCl),构建投票消息mv←(VOTE,l+2,H(pl+2),si)并投票;
(3)输入分片委员会内所有节点将pl提议交易txj的输入设置为锁定状态,即
Figure BDA0003827735780000151
领导者将输入Ii的可用性及其证明(pl,PCCl)发送给输出分片委员会领导者。
(4)若pl提议待确认交易txj-1合法,则输入分片委员会将其对应输入从utxoin中移除,花费该输入,否则将之前锁定的交易输入解锁,即
Figure BDA0003827735780000152
3.输出分片交易承诺
步骤309:输出分片收集多签名证明,实现多签名聚合
输出分片收集交易txj所有输入的可用性状态及其多签名证明,并且实现多签名聚合的具体步骤如下:
(1)输出分片委员会领导者从分片Sin收到对同一个交易txj.id的输入可用性及证明
Figure BDA0003827735780000153
Figure BDA0003827735780000154
解析为
Figure BDA0003827735780000155
Figure BDA0003827735780000156
解析为
Figure BDA0003827735780000157
(2)判断多签名合法性,即如果
Figure BDA0003827735780000158
成立,那么令交易证明集合
Figure BDA0003827735780000159
(3)如果VI中元素个数等于k个,即|VI|=k,查询txj所有输入分片的公钥列表{PKlistin}|k|,计算多签名的进一步聚合:
Figure BDA00038277357800001510
(4)将总签名和交易证明集合(∑,VI)发送给交易txj所有输入输出分片委员会的领导者。
步骤310:输出分片交易承诺与用户确认
输出分片承诺交易的具体过程如下:
(1)输出分片委员会领导者判断
Figure BDA00038277357800001511
中的每个输入对应的bi是否均等于1。如果是,则在低开销拜占庭容错算法中将txj作为请求发起提议,并在当前分片内广播(∑,VI)。
(2)输出分片成员在投票时,首先判断总签名的合法性,即
Figure BDA00038277357800001512
是否成立。如果是,判断对于每个i=1到k,是否每个
Figure BDA00038277357800001513
都等于1,即每个输入是否都是可用的。如果都是可用的,则txj为合法交易,对txj进行投票;
(3)领导者收集投票,构建多签名证明,发起新提议。委员会成员验证多签名证明合法性,投票。重复构建多签名证明、提议和投票的过程两轮,交易txj被承诺,每个委员会成员输出承诺证明(txj,PCC);
(4)输出分片委员会领导者将交易承诺信息(txj,PCC)发送给用户,完成交易确认。
根据本申请实施例提出的双重流水线安全高吞吐量分片区块链实现方法,通过生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,输入委员会生成相应的可用性证明,通过目标交易的输出分片收集多签名证明,将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,根据目标交易的可用性证明判断目标交易是否满足预设要求,在满足预设要求时,将目标交易写入目标区块,完成交易承诺。由此,解决了链上交易处理的安全性和性能问题等问题,实现了高交易吞吐量,确保系统交易能够安全实现,降低了系统开销,提升了系统效率。
其次参照附图描述根据本申请实施例提出的双重流水线安全高吞吐量分片区块链实现装置。
图6是本申请实施例的双重流水线安全高吞吐量分片区块链实现装置的方框示意图。
如图6所示,该双重流水线安全高吞吐量分片区块链实现装置10包括:生成模块100、输入模块、和写入模块200。
其中,生成模块100,用于生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;输入模块200,用于基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会后,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,通过输入委员会生成相应的可用性证明;写入模块300,用于通过目标交易的输出分片收集多签名证明,并将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,以通过输出分片根据目标交易的可用性证明判断目标交易是否满足预设要求,并在满足预设要求时,将目标交易写入目标区块,完成交易承诺。
可选地,在一些实施例中,生成模块100,具体用于:授权目标网络中,参加预设协议的节点在本地完成初始化,生成公共参数;针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据私钥生成公钥,根据公钥和私钥生成公钥证明,每个节点将自身的公钥和证明发送给数字证书认证机构;验证每个节点发送的自身的公钥和证明,并判断每个节点发送的自身的公钥是否符合预设要求,并在每个节点发送的自身的公钥符合预设要求时,将符合预设要求的每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到委员会节点认证与密钥列表。
可选地,在一些实施例中,输入模块200,具体用于:根据目标交易输入地址的序列号信息确认目标交易输入所在的分片,并将目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将目标交易提交给所有输入分片委员会中其他多个节点,直至接收到交易确认信息;对于每一个节点发送的签名,根据每一个节点的发送地址判断每一个节点是否属于当前签名成员视图,并在属于当前签名成员视图时,根据每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;在每个输入分片委员会领导者在收到目标交易后,确认每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,委员会领导者判断多签名证明是否满足第三预设合法要求,并在满足第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;委员会成员接收到当前提议证明后,判断多签名证明是否满足第五预设合法要求,并在满足第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和已承诺提议多签名证明;并确认当前提议证明是否满足第六预设合法要求,并在满足第六预设合法要求时,利用节点私钥对提议消息签名,并将签名发送给委员会领导者;委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
可选地,在一些实施例中,写入模块300,具体用于:输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将多签名证明进行二次聚合,将将聚合后的总签名和所有输入可用性状态发送给其他所有输入分片。
需要说明的是,前述对吞吐量分片区块链的实现方法实施例的解释说明也适用于该实施例的双重流水线安全高吞吐量分片区块链实现装置,此处不再赘述。
根据本申请实施例提出的双重流水线安全高吞吐量分片区块链实现装置,通过生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,输入委员会生成相应的可用性证明,通过目标交易的输出分片收集多签名证明,将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,根据目标交易的可用性证明判断目标交易是否满足预设要求,在满足预设要求时,将目标交易写入目标区块,完成交易承诺。由此,解决了链上交易处理的安全性和性能问题等问题,实现了高交易吞吐量,确保系统交易能够安全实现,降低了系统开销,提升了系统效率。
图7为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序。
处理器702执行程序时实现上述实施例中提供的双重流水线安全高吞吐量分片区块链实现方法。
进一步地,电子设备还包括:
通信接口703,用于存储器701和处理器702之间的通信。
存储器701,用于存放可在处理器702上运行的计算机程序。
存储器701可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器701、处理器702和通信接口703独立实现,则通信接口703、存储器701和处理器702可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器701、处理器702及通信接口703,集成在一块芯片上实现,则存储器701、处理器702及通信接口703可以通过内部接口完成相互间的通信。
处理器702可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的双重流水线安全高吞吐量分片区块链实现方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例””、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种双重流水线安全高吞吐量分片区块链实现方法,其特征在于,包括以下步骤:
生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;
基于所述公共参数、所述委员会节点密钥和所述委员会节点认证与所述密钥列表,将用户的目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足所述第一预设合法要求时,通过所述输入委员会生成相应的可用性证明;以及
通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,并将所述目标交易的可用性证明发送给所述目标交易对应的输出分片,以通过所述输出分片根据所述目标交易的可用性证明判断所述目标交易是否满足预设要求,并在满足所述预设要求时,将所述目标交易写入目标区块,完成交易承诺。
2.根据权利要求1所述的方法,其特征在于,所述生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,包括:
授权目标网络中,参加预设协议的节点在本地完成初始化,生成所述公共参数;
针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据所述私钥生成公钥,根据所述公钥和所述私钥生成所述公钥证明,所述每个节点将自身的公钥和证明发送给数字证书认证机构;
验证所述每个节点发送的自身的公钥和证明,并判断所述每个节点发送的自身的公钥是否符合预设要求,并在所述每个节点发送的自身的公钥符合所述预设要求时,将符合所述预设要求的所述每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到所述委员会节点认证与密钥列表。
3.根据权利要求1所述的方法,其特征在于,所述将用户目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足合法要求,包括:
根据所述目标交易输入地址的序列号信息确认所述目标交易输入所在的分片,并将所述目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将所述目标交易提交给所述所有输入分片委员会中其他多个节点,直至接收到所述交易确认信息;
对于每一个节点发送的签名,根据所述每一个节点的发送地址判断所述每一个节点是否属于当前签名成员视图,并在属于所述当前签名成员视图时,根据所述每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足所述第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足所述第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;
在每个输入分片委员会领导者在收到所述目标交易后,确认所述每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,所述委员会领导者判断所述多签名证明是否满足第三预设合法要求,并在满足所述第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、所述当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;
委员会成员接收到所述当前提议证明后,判断所述多签名证明是否满足第五预设合法要求,并在满足所述第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和所述已承诺提议多签名证明;并确认所述当前提议证明是否满足第六预设合法要求,并在满足所述第六预设合法要求时,利用节点私钥对提议消息签名,并将所述签名发送给所述委员会领导者;
委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将所述目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
4.根据权利要求1所述的方法,其特征在于,所述通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,包括:
输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将所述多签名证明进行二次聚合,将将聚合后的总签名和所述所有输入可用性状态发送给其他所有输入分片。
5.一种双重流水线安全高吞吐量分片区块链实现装置,其特征在于,包括:
生成模块,用于生成公共参数、委员会节点密钥和委员会节点认证与密钥列表;
输入模块,用于基于所述公共参数、所述委员会节点密钥和所述委员会节点认证与所述密钥列表,将用户的目标交易提交至输入委员会后,通过所述输入委员会运行低开销拜占庭容错算法判断所述目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足所述第一预设合法要求时,通过所述输入委员会生成相应的可用性证明;以及
写入模块,用于通过所述目标交易的输出分片收集多签名证明,并将所述多签名证明聚合后生成所述目标交易的可用性证明,并将所述目标交易的可用性证明发送给所述目标交易对应的输出分片,以通过所述输出分片根据所述目标交易的可用性证明判断所述目标交易是否满足预设要求,并在满足所述预设要求时,将所述目标交易写入目标区块,完成交易承诺。
6.根据权利要求5所述的装置,其特征在于,所述生成模块,具体用于:
授权目标网络中,参加预设协议的节点在本地完成初始化,生成所述公共参数;
针对每个委员会的每个节点运行密钥生成算法,随机选择私钥,并根据所述私钥生成公钥,根据所述公钥和所述私钥生成所述公钥证明,所述每个节点将自身的公钥和证明发送给数字证书认证机构;
验证所述每个节点发送的自身的公钥和证明,并判断所述每个节点发送的自身的公钥是否符合预设要求,并在所述每个节点发送的自身的公钥符合所述预设要求时,将符合所述预设要求的所述每个节点发送的自身的公钥添加到对应分片的委员会公钥列表中,以得到所述委员会节点认证与密钥列表。
7.根据权利要求5所述的装置,其特征在于,所述输入模块,具体用于:
根据所述目标交易输入地址的序列号信息确认所述目标交易输入所在的分片,并将所述目标交易提交给所有输入分片委员会的领导者,若在预设时长内未接收到返回的交易确认信息,则重新将所述目标交易提交给所述所有输入分片委员会中其他多个节点,直至接收到所述交易确认信息;
对于每一个节点发送的签名,根据所述每一个节点的发送地址判断所述每一个节点是否属于当前签名成员视图,并在属于所述当前签名成员视图时,根据所述每一个节点的身份在当前分片公钥列表中查询其公钥,验证签名份额是否满足第二预设合法要求,并在不满足所述第二预设合法要求时,立即发起签名成员视图转换,根据节点表现选择新视图成员;在满足所述第二预设合法要求时,通过委员会领导者利用预设签名聚合算法将预先获取的多个签名聚合为多签名证明;
在每个输入分片委员会领导者在收到所述目标交易后,确认所述每个输入分片管理的输入,并在当前分片的未花费交易输出池查询该输入是否可用,所述委员会领导者判断所述多签名证明是否满足第三预设合法要求,并在满足所述第三预设合法要求时,根据目标交易输入可用性标志位判断上一次目标交易是否满足第四预设合法要求,并将当前目标交易输入、所述当前目标交易可用性状态、上一次待确认跨片交易和上一次待确认跨片交易的合法性状态作为新的提议在委员会内广播,并附加当前提议证明;
委员会成员接收到所述当前提议证明后,判断所述多签名证明是否满足第五预设合法要求,并在满足所述第五预设合法要求时,更新前两次提议承诺状态,输出已承诺提议和所述已承诺提议多签名证明;并确认所述当前提议证明是否满足第六预设合法要求,并在满足所述第六预设合法要求时,利用节点私钥对提议消息签名,并将所述签名发送给所述委员会领导者;
委员会内所有节点将当前目标交易的输入设置为锁定状态,所有输入分片的领导者将输入可用性和其多签名证明发送给输出分片,并在上一次交易满足第七预设合法要求时,将所述目标交易对应的输入从本分片的交易输出池中移除,花费该输入,否则,将上一次锁定的交易输入解锁。
8.根据权利要求5所述的装置,其特征在于,所述写入模块,具体用于:
输出分片的委员会领导者收集当前目标交易的所有输入可用性和多签名证明,并将所述多签名证明进行二次聚合,将将聚合后的总签名和所述所有输入可用性状态发送给其他所有输入分片。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-4任一项所述的双重流水线安全高吞吐量分片区块链实现方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-4任一项所述的双重流水线安全高吞吐量分片区块链实现方法。
CN202211071332.XA 2022-09-01 2022-09-01 双重流水线安全高吞吐量分片区块链实现方法与装置 Pending CN115660836A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211071332.XA CN115660836A (zh) 2022-09-01 2022-09-01 双重流水线安全高吞吐量分片区块链实现方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211071332.XA CN115660836A (zh) 2022-09-01 2022-09-01 双重流水线安全高吞吐量分片区块链实现方法与装置

Publications (1)

Publication Number Publication Date
CN115660836A true CN115660836A (zh) 2023-01-31

Family

ID=84983951

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211071332.XA Pending CN115660836A (zh) 2022-09-01 2022-09-01 双重流水线安全高吞吐量分片区块链实现方法与装置

Country Status (1)

Country Link
CN (1) CN115660836A (zh)

Similar Documents

Publication Publication Date Title
Zamani et al. Rapidchain: Scaling blockchain via full sharding
CN108924092B (zh) 基于区块链的可公开仲裁分布式云存储方法及系统
TWI793696B (zh) 具有短完結時間之高吞吐量區塊鏈共識系統、電腦實施方法以及非暫時性電腦可讀媒體
Wahab et al. Survey of consensus protocols
CN110113388A (zh) 一种基于改进型聚类算法的区块链系统共识的方法和装置
US20200134578A1 (en) Blockchain consensus systems and methods involving a time parameter
CN111082943B (zh) 一种高效的区块链共识方法
CN110648139B (zh) 基于分片技术和博弈论的区块链事务验证扩容方法及装置
CN112636905B (zh) 基于多角色的可扩展共识机制的系统及方法
Zhang et al. Cycledger: A scalable and secure parallel protocol for distributed ledger via sharding
CN114391241A (zh) 具有可调整法定数量的区块链分片
CN112651830B (zh) 应用于电力资源共享网络的区块链共识方法
CN111582843A (zh) 一种基于聚合签名的区块链隐私交易方法
JP7417583B2 (ja) コンピュータネットワークの間のタスクの分配のためのアキュムレータに基づくプロトコルのためのコンピュータ実施システム及び方法
CN110610421A (zh) 分片框架下的保证金管理方法及装置
US20230017790A1 (en) Graphic-blockchain-orientated hybrid consensus implementation apparatus and implementation method thereof
WO2021016546A1 (en) Unity protocol consensus
CN113570365A (zh) 一种基于社区发现的dag网络拓扑构建方法及交易方法
CN115834579A (zh) 一种区块链共识方法、装置、系统及电子设备
Hoepman Distributed double spending prevention
CN115633035A (zh) 一种基于改进的pbft物联网区块链共识算法
CN114077637B (zh) 分片区块链实现方法
CN114140233A (zh) 分片区块链安全跨片视图转换方法及装置
CN115660836A (zh) 双重流水线安全高吞吐量分片区块链实现方法与装置
CN116032465A (zh) 一种委托工作量证明共享方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination