首页> 中国专利> 适用于电子签约的区块链共识方法、装置、设备及介质

适用于电子签约的区块链共识方法、装置、设备及介质

摘要

本申请提供了一种适用于电子签约的区块链共识方法、装置、设备及介质,该方案应用于区块链系统,区块链系统为应用于电子签约的区块链系统,该方案包括:记账节点获得电子合同签署人的区块链节点向区块链系统发送的电子合同签名,记账节点为基于区块链系统中各区块链节点的对应的电子合同签名次数,确定的具有记账权的区块链节点;记账节点在验证电子合同签名合法后,将电子合同签名广播给其他区块链节点;区块链系统确认各区块链节点均对电子合同签名验证通过后,将电子合同签名存储到区块链系统,并增加电子合同签署人的区块链节点对应的电子合同签名次数。该方案可以降低适用于电子签约的区块链系统确定记账节点所耗费的资源。

著录项

  • 公开/公告号CN112910661A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 恒生电子股份有限公司;

    申请/专利号CN202110504436.4

  • 发明设计人 胡慧潘;王锋;

    申请日2021-05-10

  • 分类号H04L9/32(20060101);H04L29/08(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人刘翠香

  • 地址 310053 浙江省杭州市滨江区江南大道3588号恒生大厦11楼

  • 入库时间 2023-06-19 11:14:36

说明书

技术领域

本申请涉及区块链技术领域,更具体地说,涉及一种适用于电子签约的区块链共识方法、装置、设备及存储介质。

背景技术

电子签约是近年来被广泛推广和普及的签约模式,与过去在纸质文件上签字或盖章相比较,电子签约模式是借助数字签名、信息加密等技术实现的能直接在电子文档上加盖签名或印章的技术。

由于基于第三方的电子签约平台完成电子合同签约的过程中,可能会存在密钥泄漏、合同隐私安全性差以及数据可篡改等安全性问题,结合区块链的电子签约得到了广泛应用。在基于区块链的电子签约过程中,需要利用区块链的共识算法确定出记账节点,并通过记账节点获得用户利用电子签约平台签署的电子合同签名并将电子合同签名打包成区块,以最终保存到区块链。

目前,在基于区块链的电子签约过程中,较为常用的共识算法为工作量证明(proof of work,POW)算法,然而基于POW算法确定记账节点存在计算量大,资源消耗过多的问题,从使得电子签约过程的资源耗费过多。

发明内容

本申请提供一种适用于电子签约的区块链共识方法、装置、设备及介质,以提高适用于电子签约的区块链系统确定记账节点所需耗费的资源。

一方面,本申请提供了一种适用于电子签约的区块链共识方法,应用于所述区块链系统,所述区块链系统为应用于电子签约的区块链系统,所述区块链系统包括多个区块链节点,所述方法包括:

记账节点获得电子合同签署人的区块链节点向所述区块链系统发送的电子合同签名,所述电子合同签名为所述电子合同签署人通过电子签约系统并利用所述电子合同签署人的私钥对电子合同的摘要进行加密得到的,所述记账节点为基于区块链系统中各区块链节点的对应的电子合同签名次数,确定出的具有记账权的区块链节点,所述区块链节点对应的电子合同签名次数为依据区块链节点向所述区块链系统中存储的电子合同签名的数量确定的;

所述记账节点在利用区块链系统中所述电子合同签署人的公钥验证所述电子合同签名合法后,将所述电子合同签名广播给所述区块链系统中所述记账节点之外的其他区块链节点;

所述区块链系统确认各区块链节点均对所述电子合同签名验证通过后,将所述电子合同签名存储到区块链系统,并增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数。

优选的,还包括:

在满足记账权确定条件的情况下,基于所述区块链系统中各区块链节点对应的电子合同签名次数,从所述多个区块链节点中选取出当前具有记账权的记账节点。

优选的,在所述增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数之后,还包括:

如所述电子合同签署人的区块链节点对应的电子合同签名次数超过设定阈值,将所述电子合同签署人的区块链节点确定为记账备选节点;

所述在满足记账权确定条件的情况下,基于所述区块链系统中各区块链节点对应的电子合同签名次数,从所述多个区块链节点中选取出当前具有记账权的记账节点,包括:

在满足记账权确定条件的情况下,从所述区块链系统的记账备选节点中,确定出具有记账权的记账节点。

优选的,从所述多个区块链节点中选取出当前具有记账权的记账节点之后,还包括:

将选取出的记账节点对应的电子合同签名次数减少设定次数,以更新选取出的记账节点对应的电子合同签名次数。

优选的,在所述将所述电子合同签署人的区块链节点确定记账备选节点之后,还包括:

如所述区块链系统中当前存在的记账备选节点的总个数超过设定个数,增加所述设定阈值的取值。

优选的,所述从所述区块链系统的记账备选节点中,确定出具有记账权的记账节点,包括:

从所述区块链系统的记账备选节点中,随机选择记账备选节点为具有记账权的记账节点;

或者,生成随机数,分别计算各记账备选节点所属用户的公钥与所述随机数的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点;

或者,分别计算各记账备选节点所属的用户的公钥与区块链中最近一个生成的区块的哈希值的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点。

又一方面,本申请还提供了一种适用于电子签约的区块链共识装置,应用于所述区块链系统,所述区块链系统为应用于电子签约的区块链系统,所述区块链系统包括多个区块链节点,所述装置包括:

签名获得单元,用于通过记账节点获得电子合同签署人的区块链节点向所述区块链系统发送的电子合同签名,所述电子合同签名为所述电子合同签署人通过电子签约系统并利用所述电子合同签署人的私钥对电子合同的摘要进行加密得到的,所述记账节点为基于区块链系统中各区块链节点的对应的电子合同签名次数,确定出的具有记账权的区块链节点,所述区块链节点对应的电子合同签名次数为依据区块链节点向所述区块链系统中存储的电子合同签名的数量确定的;

签名广播单元,用于通过所述记账节点在利用区块链系统中所述电子合同签署人的公钥验证所述电子合同签名合法后,将所述电子合同签名广播给所述区块链系统中所述记账节点之外的其他区块链节点;

共识管理单元,用于在确认各区块链节点均对所述电子合同签名验证通过后,将所述电子合同签名存储到区块链系统,并增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数。

优选的,还包括:

记账权确定单元,用于在满足记账权确定条件的情况下,基于所述区块链系统中各区块链节点对应的电子合同签名次数,从所述多个区块链节点中选取出当前具有记账权的记账节点。

优选的,还包括:

备选确定单元,用于共识管理单元增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数之后,如所述电子合同签署人的区块链节点对应的电子合同签名次数超过设定阈值,将所述电子合同签署人的区块链节点确定为记账备选节点;

所述记账权确定单元,具体为,用于在满足记账权确定条件的情况下,从所述区块链系统的记账备选节点中,确定出具有记账权的记账节点。

优选的,还包括:

次数更改单元,用于在记账权确定单元从所述多个区块链节点中选取出当前具有记账权的记账节点之后,将选取出的记账节点对应的电子合同签名次数减少设定次数,以更新选取出的记账节点对应的电子合同签名次数。

又一方面,本申请还提供了一种电子设备,包括存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如上任意一项所述的一种适用于电子签约的区块链共识方法。

又一方面,本申请还提供了一种计算机可读存储介质,用于存储程序,所述程序被执行时,用于实现如上任意一项所述的一种适用于电子签约的区块链共识方法。

通过以上方案可知,区块链系统中的记账节点是根据区块链系统中区块链节点对应的电子合同签名次数确定的,区块链节点对应的电子合同签名次数为依据该区块链节点向区块链系统中存储电子合同的数量确定的。由于区块链系统每次成功存储了区块链节点发送的电子合同签名之后,都会同步更新该区块链节点对应的电子合同签名次数,因此,将区块链节点的电子合同签名次数作为竞争记账节点的工作量证明,可以避免再额外不断计算作为工作量证明的哈希值,从而有利于减少确定记账节点所需消耗的计算资源。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的基于区块链的电子合同签约系统的一种组成架构示意图;

图2为本申请实施例提供的适用于电子签约的区块链共识方法的一种流程示意图;

图3为本申请实施例提供的适用于电子签约的区块链共识方法的又一种流程示意图;

图4为本申请实施例提供的电子合同签约的一种流程示意图;

图5为本申请实施例提供的适用于电子签约的区块链共识装置的一种组成结构示意图。

说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示的以外的顺序实施。

具体实施方式

本申请的方案适用于区块链系统,该区块链系统为应用与电子签约的区块链系统。通过本申请的方案提出了一种适用于电子签约场景下的区块链共识方法,以使得本申请的方案确定区块链系统的记账节点能够减少资源耗费,并更为适用于电子签约场景下的区块链系统。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,其示出了本申请一种基于区块链的电子合同签约系统的一种组成结构示意图。

由图1可以看出,该基于区块链的电子合同签约系统包括:电子签约系统110和区块链系统120。

其中,该电子签约系统110包括:电子签约客户端111和电子签约服务器112。

其中,电子签约客户端为运行有电子签约应用的终端,该终端为可能存在电子合同签名需求的用户所具有的终端。

该电子签约服务器112可以有一台或者多台,如,电子签约系统可以包括由多台电子签约服务器构成的电子签约平台。

在区块链系统120可以包括多个区块链节点121。其中,签约客户端所在的终端可以作为一个区块链节点,或者是,签约客户端对应的用户具有的其他终端可以为一个区块链节点。

在本申请中,合同签署发起用户可以通过电子签约客户端向电子签约服务器发起合同签署任务,该合同签署任务包括:待签署的电子合同。在一种可选方式中,该合同签署任务还可以包括待签署该电子合同的签署人列表,该待签署人列表包括多个需要对该电子合同签名的签署人信息。

合同签署发起人还可以通过其区块链节点向区块链系统发送该待签署合同的处理任务指示,该处理任务指示可以指示有该待签署的电子合同的编号或者其他唯一标识。当然,该处理任务指示还可以携带该签署人列表,以在区块链系统中存储该电子合同对应的签署人列表,如存储与电子合同的编号等标识对应的签署人列表。

在以上基础上,作为签署人的用户在确认电子签约系统存在需要该用户签名(或者称为签署)的电子合同之后,可以通过电子签约系统获得电子合同,并在确认电子合同的内容无误后,由电子签约系统利用该用户的私钥对该电子合同的摘要进行签名,得到电子合同签名。然后,电子签约系统可以通过该签署人的区块链节点将该电子合同签名发送给区块链系统。

如,在一种可能的情况中,作为签署人的用户通过其电子签约客户端向电子签约服务器请求待签约的电子合同。在电子签约服务器向该电子签约服务端返回该电子合同之后,该用户可以在电子签约客户端上审核电子合同的内容。在签署人确认该电子合同的内容之后,可以通过电子签约客户端向电子签约服务器发送针对该电子合同的签名指令,该签名指令用于指示电子签约服务器完成该用户对该电子合同的签名。而电子签约服务器响应于该签名指令,获得存储的该签署人的私钥,并利用该用户的私钥对电子合同的摘要加密,得到电子合同签名。

当然,作为签署人的用户通过电子签约系统并利用其私钥完成电子合同签署的过程还可以有其他可能,本申请对此不加限制。

其中,作为签署人的用户确认存在待其签署的电子合同的方式可以有多种可能,如,电子签约服务器在基于发起人发起的电子合同签署任务确认存在需要该签署人签署的电子合同(如依据电子合同签署任务中的签署人列表确定存在需要该签署人签署的电子合同等)时,可以向该签署人的签约客户端发送的电子合同签署提醒,该电子合同签署提醒用于提醒用户存在待签名的电子合同。

又如,作为签署人的用户还可以通过邮件或者短消息等方式获得发起人发起的电子合同的签署任务等,对此不加限制。

在一种可选方式,基于区块链的电子合同签约系统还可以包括分布式存储系统130,如分布式文件系统可以为星际文件系统(InterPlanetary File System,IPFS)网络等,对此不加限制。在此基础上,待签署的电子合同以及已签署的电子合同可以通过电子签约系统存储到该分布式文件系统。同时,在签署人签署电子合同的过程中,如果需要查看电子合同,均可以通过电子签约系统从该分布式文件系统获取该电子合同。

在本申请中,区块链系统可以结合本申请的共识方法确定记账节点,并通过确定出的记账节点处理电子签约系统发送的电子合同签名。同时为签署人的区块链节点累计电子合同签名次数,以实现基于区块链的电子合同签名次数来选取记账节点。

可以理解的是,图1仅仅是基于区块链的电子合同签约系统的一种组成架构示意图,在实际应用中,基于区块链的电子合同签约系统还可以有其他可能,对此不加限制。

下面基于以上内容,并结合流程图从区块链系统侧对本申请的区块链共识方法进行介绍。

如图2所示,其示出了本申请一种适用于电子签约的区块链共识方法一个实施例的流程示意图,本实施例的方法应用于区块链系统,该区块链系统为应用于电子签约的区块链系统,该区块链系统包括多个区块链节点。

本实施例的方法可以包括如下步骤:

S201,区块链系统的记账节点获得电子合同签署人的区块链节点向区块链系统发送的电子合同签名。

其中,电子合同签署人为已通过电子签约系统签署电子合同的签署人,也就是前面提到的作为签署人的用户。

如前面的介绍,该电子合同签名为该区块链节点所属的用户通过电子签约系统并利用该用户的私钥对电子合同的摘要进行加密得到的。如,电子合同签名为区块链节点所属的用户在通过电子签约系统确认电子合同无误后,由电子签约系统利用该用户的私钥对电子合同的摘要进行加密得到的。

其中,电子合同的摘要为电子合同的哈希,如,通过对电子合同原文进行哈希运算得到该电子合同的摘要。

在本申请中,记账节点为基于区块链系统中各区块链节点的对应的电子合同签名次数,确定出的具有记账权的区块链节点。其中,区块链节点对应的电子合同签名次数为依据区块链节点向区块链系统存储的电子合同签名的数量确定的。其中,区跨链节点向区块链系统存储的电子合同签名是由该区块链节点所属的用户通过电子签约系统生成的。

其中,区块链节点向区块链系统存储电子设备的数量越多,该区块链节点被选取被记账节点的概率就越大。

如,在一种可能的情况中,区块链节点的电子合同签名次数可以为区块链节点向区块链系统存储电子合同签名的数量。

在又一种可能的情况中,为了进一步提升确定记账节点的公平性,区块链节点的电子合同签名次数可以依据区块链节点向区块链系统存储电子合同签名的数量以及该区块链节点作为记账节点的次数确定。例如,区块链节点的电子合同签名次数为:区块链节点向区块链系统存储电子合同签名的数量,减去区块链节点被选为记账节点的次数与设定次数值的乘积,其中,该设定次数值可以根据需要设定。后续会结合该种情况进行详细说明,在此不再赘述。

可见,本申请中是将区块链节点对应的电子合同签名次数作为区块链节点竞争记账权的工作量证明。其中,区块链节点成功向区块链系统存储电子合同签名的次数越多,该区块链节点对应的电子合同签名次数也相对越多。由于电子合同签名是电子签约必不可少的工作,通过统计区块链节点完成电子合同签名的次数作为竞争记账权的工作量证明,既无需单独计算其他工作量证明,也更为适合应用于电子合同签约这一应用场景的区块链系统。

S202,该记账节点在利用区块链系统中该电子合同签署人的公钥验证该电子合同签名合法后,将该电子合同签名广播给该区块链系统中该记账节点之外的其他区块链节点。

其中,区块链系统的账本中可以预先存储有各区块链节点所属的用户对应的公钥。如,区块链系统中存储的各个用户的公钥可以是由数字证书认证中心(RegistrationAuthority,RA)等认证机构对用户实名认证后存储到区块链上的。

相应的,基于该区块链节点所属的合同签署人,可以从区块链系统中查询出该合同签署人的公钥。

可以理解的是,利用合同签署人的公钥验证该电子合同签名的方式也可以有多种,本申请对此不加限制。

为了便于理解,以一种实现方式为例说明,记账节点利用该合同签署人的公钥解密该电子合同签名,如果能够解密出该电子合同签名则确认该电子合同合法。

在一种可选方式中,记账节点还可以先验证该合同签署人的公钥是否有效,如合同签署人的公钥未过期且未处于吊销列表,则确认该合同签署人的公钥有效。

在又一种可选方式中,记账节点在验证该电子合同签名是否合法之前,还会获得区块链系统存储的该电子合同签名对应的电子合同的签署人列表,如,合同签署发起人的区块链节点可以向区块链系统存储电子合同对应的签署人列表。相应的,记账节点基于该合同签署人的公钥,检测该电子合同签署人是否属于签署人列表中的签署人。

如,签署人列表中可以存储各个签署人的标识,而签署人的标识可以是签署人的公钥或者是基于签署人的公钥生成的唯一标识,因此,基于签署人的公钥可以验证签署人是否为签署人列表中的签署人。

可以理解的是,如果该电子合同签署人属于电子合同的签署人列表,则说明该电子合同签署人为具备电子合同签名权的人,在此基础上,利用该电子合同签署人的公钥对电子合同签名进行验证才能保证验证结果的可靠性。

可以理解的是,在实际应用中,记账节点还可以结合以上两种可选方式对公钥进行验证合法后,在利用该公钥对该电子合同签名进行解密,以验证合法性。

S203,区块链系统确认各区块链节点均对电子合同签名验证通过后,将该电子合同签名存储到区块链系统,并增加该区块链系统中存储的该电子合同签署人的区块链节点对应的电子合同签名次数。

其中,记账节点将电子合同签名发送给各区块链节点之后,每个区块链节点同样会验证该电子合同签名是否合法,验证过程可以与记账节点验证电子合同签名是否合同的方式相同,具体可以参见步骤S202的相关介绍,在此不再赘述。

区块链系统中的区块链节点在确认所有区块链节点均对该电子合同签名验证合法后,区块链节点会将该电子合同签名存储到该区块链节点本地的区块链账本中,从而使得区块链系统完成将该电子合同签名上链存储到区块链。

可以理解的是,在该电子合同签名被成功存储到区块链系统,则说明该电子合同签署人成功完成该电子合同签名,也即该电子合同签署人的区块链节点完成一次电子合同签名,在此基础上,本申请会区块链系统中各个区块链节点均会更新本地账本中该区块链节点对应的用于竞争记账权的电子合同签名次数,如将该电子合同签名次数加一。

由以上内容可知,区块链系统中的记账节点是根据区块链系统中区块链节点对应的电子合同签名次数确定的,区块链节点对应的电子合同签名次数为该区块链节点所属的用户在电子签约系统生成并保存到区块链系统中的电子合同的总数量。由于区块链系统每次成功存储了区块链节点发送的电子合同签名之后,都会同步更新该区块链节点对应的电子合同签名次数,因此,将区块链节点的电子合同签名次数作为竞争记账节点的工作量证明,可以避免再额外不断计算作为工作量证明的哈希值,从而有利于减少确定记账节点所需消耗的计算资源。

同时,由于电子合同签名是电子签约必不可少的工作,通过统计区块链节点完成电子合同签名的次数作为竞争记账权的工作量证明,有利于应用于电子签约的区块链系统能够更为公平竞争记账权。

而且,由于区块链系统中各区块链节点的电子合同签名次数只能是真实参与并完成电子合同签名才可以增加,而无法从交易所购买,因此不会像区块链的股权证明POS机制一样出现囤积代币,甚至导致区块链系统走向中心化的情况,有利于保证区块链系统中各区块链节点可以更为公平的竞争记账权。

可以理解的是,在本申请实施例中,在区块链系统中可以在满足记账权确定条件的情况下,可以重新确定记账节点。在本申请中,可以基于区块链系统中各区块链节点对应的电子合同签名次数,从多个区块链节点中选取出当前具有记账权的记账节点。

其中,满足记账权确定条件可以根据需要设定,如区块链系统中当前记账节点完成的交易的数量到达设定值,则认为需要重新确定记账节点,从而可以判断出当前满足记账权确定条件。当然,还可以有该条件还可以有其他可能,对此不加限制。

基于区块链节点的电子合同签名次数选取记账节点的方式也可以有多种可能。

如,可以选取电子合同签名次数最高的区块链节点为记账节点。当然,在该区块链节点被确定为记账节点之后,可以清空该区块链节点对应的电子合同签名次数,以使得其他区块链节点也能够在后续具备成功记账节点的可能。

又如,可以确定出电子合同签名次数超过阈值的至少一个区块链节点,并从该至少一个区块链节点中随机选取出区块链节点作为记账节点。下面以各区块链节点对应的电子合同签名次数确定记账节点的一种方式对本申请的方案进行介绍,如图3所示,其示出了本申请一种用于电子签约的区块链共识方法的又一种流程示意图,本实施例的方法应用于区块链系统,本实施例可以包括:

S301,区块链系统的记账节点获得电子合同签署人的区块链节点向区块链系统发送的电子合同签名。

S302,该记账节点在利用区块链系统中该电子合同签署人的公钥验证该电子合同签名合法后,将该电子合同签名广播给该区块链系统中该记账节点之外的其他区块链节点。

S303,区块链系统确认各区块链节点均对电子合同签名验证通过后,将该电子合同签名存储到区块链系统,并增加该区块链系统中存储的该电子合同签署人的区块链节点对应的电子合同签名次数。

以上步骤S301到S303可以参见前面实施例的相关介绍,在此不再赘述。

可以理解的是,在区块链系统存储电子合同签名之后,还可以从发送电子合同签名的区块链节点中扣除一定数量(具体数值可以根据需要设定)的数字资产。区块链节点被扣除的数字资产就相对于比特币网络中的手续费。

S304,如区块链系统确认该电子合同签署人的区块链节点对应的电子合同签名次数超过设定阈值,将电子合同签署人的区块链节点确定为记账备选节点。

如,对于区块链系统中任意一个区块链节点,在区块链节点在区块链系统的账本中增加了该电子合同签署人的区块链节点对应的电子合同签名次数之后,均可以检测当前该电子合同签署人的区块链节点对应的电子合同签名次数是否大于设定阈值,如果是,则将该电子合同签名人的区块链节点标记为记账备选节点。

其中,该设定阈值可以根据实际需要设定,如该设定阈值可以为10等。

可以理解的是,如果区块链系统中各个区块链节点完成电子合同签约的次数均较多,则可能会导致作为记账备选节点的区块链节点的个数较多,不利于更为合理的选取出记账节点。如区块链系统中当前存在的记账备选节点的总个数超过设定个数,增加该设定阈值的取值。

如,假设设定阈值的最近一次设定的值为10,则随着各个区块链节点对应的电子合同签名次数均普遍增加,则可以将该设定阈值调整为15。

调整该设定阈值的取值的时机可以是在增加了该电子合同签署人的区块链节点对应的电子合同签名次数之后,也可以是每次设定时长,检测一次记账备选节点的个数是否超过设定个数,并在记账备选节点的个数超过设定个数的情况下,提高该设定阈值的取值。

S305,在满足记账权确定条件的情况下,区块链系统从该区块链系统的记账备选节点中,确定出具有记账权的记账节点。

如,区块链系统中各个区块链节点分别根据其本地账本中记录的记账备选节点,并采用设定的记账权确定规则,确定出记账节点。在此基础上,如果超过设定比例或者全部区块链节点确定出的记账节点相同,则将该记账节点确定出区块链系统的记账节点。

可以理解的是,为了提高公平性,本申请中从记账备选节点中确定记账节点可以采用随机方式确定。如,可以从区块链系统的记账备选节点中,随机选择记账备选节点为具有记账权的记账节点。

在一种可能的实现方式中,可以先生成一生成随机数,然后,分别计算各记账备选节点所属用户的公钥与该随机数的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点。其中,生成该随机数的方式也可以有多种,如,区块链系统中的区块链节点可以采用可验证延迟函数(Verifiable Delay Function,VDF)来生成一随机数,以使得区块链系统中各个区块链节点获得同一随机数。

在又一种可能的实现方式中,可以分别计算各记账备选节点所属的用户的公钥与区块链中最近一个生成的区块的哈希值之间的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点。

当然,以上是以几种情况为例,从记账备选节点中选取具有记账权的记账节点还可以有其他可能,对此不加限制。

可以理解的是,在本申请中以上步骤S301到S302中的记账节点可以是通过S304和S305步骤中提到的方式确定出的,相应的,在该步骤S305确定出记账节点之后,记账节点也会执行如上步骤S301和S302的操作,相应的区块链系统也会执行S303的操作。

可以理解的是,在区块链系统中各区块链节点均未参与过电子合同签名,或者是各区块链节点对应的电子合同签名次数的取值均低于设定阈值的情况下,本实施例还可以是随机从多个区块链节点中选取一个区块链节点为记账节点,或者是,将电子合同签名次数最多的区块链节点确定为记账节点等。

S306,区块链系统将选取出的记账节点对应的电子合同签名次数减去设定次数,以更新选取出的该记账节点的电子合同签名次数。

其中,该设定次数可以根据需要设定。

在一种可选方式中,该设定次数的取值可以为前面步骤S304的设定阈值。

可以理解的是,该步骤S305为一可选步骤,其目的是为了避免区块链节点的电子合同签名次数一直较多,而被经常性选取为记账节点,而使得其他区块链节点无法被选取为记账节点,从而影响公平性。

如,区块链节点的电子合同签名次数为25,假设设定次数为20,则在该区块链节点被选举为记账节点之后,会将该区块链节点的电子合同签名次数减去20,使得该区块链节点的电子合同签名次数变为5。

可以理解的是,在实际应用中,在区块链节点被选取为记账节点之后,还可以为记账节点分配设定数量(可以根据需要设定具体数量)的数字资产,类似于比特币网络中的挖矿。

可见,在本申请中,只要区块链节点累计的电子合同签名次数超过设定阈值,区块链节点都有可能被选取出块节点,使得整个共识算法更加公平,也更加去中心化。

相对目前BFT-拜占庭容错、RAFT等联盟链共识算法只适合共识节点较少的场景,有一定的中心化,本申请并不受区块链系统中节点数量的限制,且可以去中心化。

为了便于理解本申请的方案,下面结合电子合同签署人利用电子签约系统完成电子合同的签署过程对本申请的方案进行介绍。如图4所示,其示出了本申请电子合同签约的一种流程示意图,本实施例的方法可以包括:

S401,电子合同签署人的电子签约客户端通过电子签约服务器从分布式文件系统获得待签署的电子合同的内容。

可以理解的是,电子合同签署人获知存在需要其签署的电子合同的签署任务之后,可以执行步骤S401,其中,电子合同签署人可以通过多种方式获得存在待其处理的电子合同签署任务,如前面所述,对此不加限制。

S402,电子合同签署人的区块链节点从区块链系统获得该电子合同签署人对应的电子合同信息。

该电子合同信息可以包括包含该电子合同签署人的签署人列表和电子合同的摘要。该电子合同摘要为区块链系统利用该电子合同签署人的公钥对该电子合同进行哈希计算得到的。

如,合同签署发起人通过其区块链节点向区块链系统发送出该电子合同的处理任务指示,该处理任务指示可以携带有待签署的电子合同的标识以及签署人列表。

在此基础上,电子合同签署人通过其区块链节点可以向区块链系统请求与该电子合同的标识对应的电子合同信息,因此,区块链系统基于电子合同的标识,可以从分布式文件系统获得该电子合同的内容,并利用该电子合同签署人的公钥对该电子合同进行哈希计算,得到该电子合同的摘要。相应的,区块链系统会将该电子合同的摘要以及签署人列表返回给该电子合同签署人的区块链节点。

区块链系统可以基于电子合同的标识从分布式文件系统获得该电子合同,并计算该电子合同的哈希值,得到电子合同的摘要并存储。

S403,在电子合同签署人对电子合同的内容确认后,电子合同签署人的电子签约客户端请求电子签约服务器利用该电子合同签署人的公钥计算该电子合同的哈希值,得到计算出的该电子合同的验证哈希值。

如,电子合同签署人可以人工核对电子合同的内容,在确认电子合同的内容后,可以通过电子签约客户端向电子签约服务器发起摘要计算请求,该摘要计算请求携带有电子合同的标识,且该摘要计算请求用于请求计算该电子合同的哈希值。相应的,电子签约服务器可以从分布式系统获得该电子合同的内容,并利用该电子合同签署人的公钥对该电子合同的内容进行哈希计算,得到电子合同的哈希值。

为了便于与区块链系统确定出的电子合同的摘要相区分,将电子签约系统计算出的电子合同的哈希值称为电子合同的验证摘要。

S404,在电子合同签署人通过电子签约客户端确认验证摘要与电子合同信息中电子合同的摘要一致时,电子签约客户端请求电子签约服务器生成该电子合同签署人签名的电子合同签名。

如,电子签约客户端向电子签约服务器发送签名请求,该签名请求用于请求利用该电子合同签署人的私钥完成对电子合同的签名。相应的,对利用电子合同签署人的私钥对该电子合同的摘要进行加密,得到该电子合同签署人对该电子合同的电子合同签名。

可以理解的是,S404中验证摘要与区块链系统生成的电子合同的摘要可以是电子合同签署人通过人工方式确认,也可以是由电子签约客户端或者电子签约服务器来完成,并通知给该电子合同签署人,本申请对此具体实现不加限制。

类似的,步骤S404是以通过电子签约系统为该电子合同签署人生成针对该电子合同的电子合同签名的一种实现为例说明,在实际应用中,基于电子签约系统生成电子合同签名的过程还可以有其他可能,对此不加限制。

S405,电子签约服务器通过该电子合同签署人的区块链节点向区块链系统发送该电子合同签名。

如,电子签约服务器向该电子合同签署人的区块链节点发送该电子合同签名,并由该区块链节点请求上传该电子合同签名到区块链系统。

S406,区块链系统的记账节点在利用区块链系统中该电子合同签署人的公钥验证该电子合同签名合法后,将该电子合同签名广播给该区块链系统中该记账节点之外的其他区块链节点。

S407,区块链系统确认各区块链节点均对电子合同签名验证通过后,将该电子合同签名存储到区块链系统,并增加该区块链系统中存储的该电子合同签署人的区块链节点对应的电子合同签名次数。

S408,如区块链系统确认该电子合同签署人的区块链节点对应的电子合同签名次数超过设定阈值,将电子合同签署人的区块链节点确定为记账备选节点。

S409,在满足记账权确定条件的情况下,如区块链系统确定该区块链节点为记账节点,则区块链系统将该区块链节点对应的电子合同签名次数减去设定次数。

对应本申请的一种适用于电子签约的区块链共识方法,本申请还提供了一种适用于电子签约的区块链共识装置。

如图5所示,其示出了本申请一种适用于电子签约的区块链共识装置的一种组成结构示意图,该装置应用于所述区块链系统,所述区块链系统为应用于电子签约的区块链系统,所述区块链系统包括多个区块链节点,所述装置包括:

签名获得单元501,用于通过记账节点获得电子合同签署人的区块链节点向所述区块链系统发送的电子合同签名,所述电子合同签名为所述电子合同签署人通过电子签约系统并利用所述电子合同签署人的私钥对电子合同的摘要进行加密得到的,所述记账节点为基于区块链系统中各区块链节点对应的电子合同签名次数,确定出的具有记账权的区块链节点,所述区块链节点对应的电子合同签名次数依据区块链节点向所述区块链系统中存储的电子合同签名的数量确定的;

签名广播单元502,用于通过所述记账节点在利用区块链系统中所述电子合同签署人的公钥验证所述电子合同签名合法后,将所述电子合同签名广播给所述区块链系统中所述记账节点之外的其他区块链节点;

共识管理单元503,用于在确认各区块链节点均对所述电子合同签名验证通过后,将所述电子合同签名存储到区块链系统,并增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数。

在一种可能的实现方式中,该装置还可以包括:

记账权确定单元,用于在满足记账权确定条件的情况下,基于所述区块链系统中各区块链节点对应的电子合同签名次数,从所述多个区块链节点中选取出当前具有记账权的记账节点。

在又一种可能的实现方式中,该装置还包括:

备选确定单元,用于共识管理单元增加所述区块链系统中存储的所述电子合同签署人的区块链节点对应的电子合同签名次数之后,如所述电子合同签署人的区块链节点对应的电子合同签名次数超过设定阈值,将所述电子合同签署人的区块链节点确定为记账备选节点;

所述记账权确定单元,具体为,用于在满足记账权确定条件的情况下,从所述区块链系统的记账备选节点中,确定出具有记账权的记账节点。

在一种可选方式中,该装置还包括:

阈值更改单元,用于在备选确定单元将所述电子合同签署人的区块链节点确定记账备选节点之后,如所述区块链系统中当前存在的记账备选节点的总个数超过设定个数,增加所述设定阈值的取值。

在一种可能的实现方式中,该装置还包括:

次数更改单元,用于在记账权确定单元从所述多个区块链节点中选取出当前具有记账权的记账节点之后,将选取出的记账节点对应的电子合同签名次数减少设定次数,以更新选取出的记账节点对应的电子合同签名次数。

在又一种可选方式中,记账权确定单元,包括:

第一记账权确定子单元,用于在满足记账权确定条件的情况下,从所述区块链系统的记账备选节点中,随机选择记账备选节点为具有记账权的记账节点;

或者,第二记账权确定子单元,用于在满足记账权确定条件的情况下,生成随机数,分别计算各记账备选节点所属用户的公钥与所述随机数的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点;

或者,第三记账权确定子单元,用于在满足记账权确定条件的情况下,分别计算各记账备选节点所属的用户的公钥与区块链中最近一个生成的区块的哈希值的异或结果,并将对应的异或结果最小的记账备选节点确定为具有记账权的记账节点。

又一方面,本申请还提供了一种电子设备,包括存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如上任意一个实施例所提供的一种适用于电子签约的区块链共识方法。

又一方面,本申请还提供了一种计算机可读存储介质,用于存储程序,所述程序被执行时,用于实现如上任意一个实施例所提供的一种适用于电子签约的区块链共识方法。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。同时,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号