双重流水线安全高吞吐量分片区块链实现方法与装置
文献发布时间:2023-06-19 18:27:32
技术领域
本申请涉及信息安全和电子商务技术领域,特别涉及一种双重流水线安全高吞吐量分片区块链实现方法与装置。
背景技术
区块链具有交易去中心化、数据透明公开和历史记录不可篡改等优点,在通信、金融、物联网和供应链管理等各个领域都有着巨大的应用潜力。但是,目前存在一些限制区块链开发和应用的问题,其中很关键的即链上交易处理的安全性和性能问题。
当前的区块链系统存在各种安全问题,例如双重花费攻击、女巫攻击和日蚀攻击等,这些攻击在不同程度上影响整个区块链系统的安全性和稳定性。与此同时,比特币骨干协议提出链质量、链增长和共同前缀三个区块链应当满足的基本特性。在这三个特性的基础上,提出公共账本应当满足的一致性和活性。这些基础的安全性能研究为区块链系统的设计和安全性分析奠定了良好的基础。设计安全的区块链协议并证明其安全性是当前研究的关键和热点。
区块链的交易处理性能表现是其能够得到广泛应用的另外一个关键因素。而在性能指标中,最重要的指标是交易吞吐量和交易确认时延。传统的第三方支付,如信用卡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,G
步骤302:委员会节点密钥生成
节点根据BLS多签名算法的密钥生成算法生成自己对应的公私钥对。
BLS多签名密钥生成算法(pk
(1)节点P
(2)计算节点公钥:
(3)计算公钥证明:
节点P
步骤303:委员会节点认证与公钥列表生成
(1)CA对每个节点P
(2)若收到足够数量合法节点认证信息,CA公布公钥列表PKlist={pk
(1)输入公共参数par,节点私钥sk
(2)计算签名份额:
BLS多签名份额验证算法0/1←ShareVer(par,PKlist,m,{s
(1)输入公共参数par,公钥列表Pklist,消息m,签名份额和公钥{s
(2)对于签名份额和公钥对{s
BLS多签名密钥聚合算法agpk←AggreKey(par,PKlist,T):
(1)输入公共参数par,当前分片公钥列表PKlist,签名成员视图T,其中签名成员视图T由当前分片领导者根据节点表现短期固定,T←[b
(2)初始化聚合公钥:agpk←1;
(3)对于每个节点P
(4)输出agpk。
BLS多签名生成算法(,m)←AggreSig(m,{s
(1)输入消息m,t个签名份额和公钥{s
(2)计算多签名
BLS多签名验证算法0/1←AggreVer(par,PKlist,,agpk,m):
(1)如果满足e(σ,g
BLS多签名聚合算法
(1)对于每个{PKlist
(2)如果是,计算二次聚合多签名:
BLS聚合的多签名验证算法
(1)如果满足
2.输入分片交易确认
步骤304:用户提交交易
用户提交交易至网络的过程如下:
(1)用户User产生跨片交易
(2)用户User确认每个输入
(3)如果用户User在等待计时器Timeout
步骤305:领导者构建多签名证明与签名成员视图转换
每个输入分片委员会构建多签名证明与签名成员视图转换的过程如下:
(1)在第l轮,领导者收集第l-1轮的投票消息。收集到2f+1个合法的投票消息m
(2)初始化,令有效签名集合
(3)若对于每个投票
(4)若领导者等待计时器Timeout
(5)若分片领导者收到其他分片签名成员视图转换消息
(6)委员会领导者收集到有效签名数量|SIGlist
步骤306:领导者并行提议
每个输入分片委员会构建提议消息的过程如下:
(1)领导者初始化当前第l轮提议p
(2)领导者收到用户User提交的本轮交易tx
(3)领导者收到输出分片聚合的上轮待确认交易tx
(4)确定聚合多签名的合法性,即运行聚合多签名验证算法判断
(5)结合多签名证明,构造本轮提议m
步骤307:委员会成员投票
每个输入分片委员会内成员对提议投票的过程如下:
(1)在第l轮,收到本轮提议消息m
(2)判断多签名证明的合法性,即验证是否满足
(3)收到(∑,VI),将VI解析为{p
(4)解析新提议p
步骤308:流水线重复构建凭证、提议和投票与UTXO更新
(1)第l+1轮,领导者收集第l轮的投票,构建多签名证明PCC
(2)第l+2轮,领导者收集第l+1轮的投票,构建多签名证明PCC
(3)输入分片委员会内所有节点将p
(4)若p
3.输出分片交易承诺
步骤309:输出分片收集多签名证明,实现多签名聚合
输出分片收集交易tx
(1)输出分片委员会领导者从分片S
(2)判断多签名合法性,即如果
(3)如果VI中元素个数等于k个,即|VI|=k,查询tx
(4)将总签名和交易证明集合(∑,VI)发送给交易tx
步骤310:输出分片交易承诺与用户确认
输出分片承诺交易的具体过程如下:
(1)输出分片委员会领导者判断
(2)输出分片成员在投票时,首先判断总签名的合法性,即
(3)领导者收集投票,构建多签名证明,发起新提议。委员会成员验证多签名证明合法性,投票。重复构建多签名证明、提议和投票的过程两轮,交易tx
(4)输出分片委员会领导者将交易承诺信息(tx
根据本申请实施例提出的双重流水线安全高吞吐量分片区块链实现方法,通过生成公共参数、委员会节点密钥和委员会节点认证与密钥列表,基于公共参数、委员会节点密钥和委员会节点认证与密钥列表,将用户的目标交易提交至输入委员会,通过输入委员会运行低开销拜占庭容错算法判断目标交易输入可用性和上一次待确认跨片交易是否满足第一预设合法要求,并在满足第一预设合法要求时,输入委员会生成相应的可用性证明,通过目标交易的输出分片收集多签名证明,将多签名证明聚合后生成目标交易的可用性证明,并将目标交易的可用性证明发送给目标交易对应的输出分片,根据目标交易的可用性证明判断目标交易是否满足预设要求,在满足预设要求时,将目标交易写入目标区块,完成交易承诺。由此,解决了链上交易处理的安全性和性能问题等问题,实现了高交易吞吐量,确保系统交易能够安全实现,降低了系统开销,提升了系统效率。
其次参照附图描述根据本申请实施例提出的双重流水线安全高吞吐量分片区块链实现装置。
图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)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
- 用于在区块链中实现网页访问的方法、装置和存储介质
- 一种基于区块链存储的数据安全隔离方法及装置
- 全局一致分片式OLTP系统的高吞吐量分布式事务管理及其实现方法
- 分片区块链安全跨片视图转换方法及装置