CN110380847B - 一种区块链共识方法和装置 - Google Patents

一种区块链共识方法和装置 Download PDF

Info

Publication number
CN110380847B
CN110380847B CN201910584667.3A CN201910584667A CN110380847B CN 110380847 B CN110380847 B CN 110380847B CN 201910584667 A CN201910584667 A CN 201910584667A CN 110380847 B CN110380847 B CN 110380847B
Authority
CN
China
Prior art keywords
block
node
signature
confirmed
production
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.)
Active
Application number
CN201910584667.3A
Other languages
English (en)
Other versions
CN110380847A (zh
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910584667.3A priority Critical patent/CN110380847B/zh
Publication of CN110380847A publication Critical patent/CN110380847A/zh
Application granted granted Critical
Publication of CN110380847B publication Critical patent/CN110380847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种区块链共识方法,包括:区块链网络中的生产节点根据交易数据生成待确认区块;生产节点将待确认区块广播到签名节点;签名节点基于一次投票原则用私钥对待确认区块进行数字签名,一次投票原则是当签名节点接收到多个处于同一区块高度的待确认区块时,只对接收到的第一个待确认区块进行数字签名;签名节点将数字签名发送给生产节点;生产节点根据数字签名生成待生效区块,添加到自身保存的区块链上,并广播所述待生效区块以上链。本发明的区块链共识方法采用一节点一票,无需进行无意义的hash,也杜绝了大算力、大股权的垄断式统治,解决了新节点的冷启动问题,同时控制各个节点的区块生产频率,从而防止部分节点长期“独裁”。

Description

一种区块链共识方法和装置
技术领域
本说明书的一个或多个实施例涉及互联网信息处理,尤其涉及一种基于议会制的联盟区块链共识方法和装置。
背景技术
目前,常见的区块链共识算法一般有如下几种:BTC使用的工作量证明法(proofof work),其使用节点的算力大小来决定生产新区块的权利,同时加大攻击的代价;PPC使用的股权证明法(proof of stake),其以币龄来衡量生成新区块的权利;BitShares使用的委托股权证明法(delegated proof of stake),其在股权证明法的基础上,将生产的股权委托给指定的代理者,从而减少了生产区块的节点数量。
区块链根据参与者的公开程度分为三种类型,即公有链、联盟链、私有链,其中:公有链对公众开放,其共识算法主要以工作量证明法为主,典型的平台有以太坊;联盟链限定参与者的数量和权限,其共识算法一般不使用工作量证明法,而是采用更加环保节能的股权证明法或实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT),从而使得生成区块更加快速,典型的平台有fabric;而对于私有链来说,其更多的用途类似作为增强的、不可篡改的分布式数据库。
基于工作量证明法的共识算法虽然可以在无需权限控制、去中心化的场景下,根据算力大小来决定生产新区块的权利以确保攻击者无法轻易篡改,但是其耗能却一直为大众诟病。工作量证明法涉及大量的、无意义的hash计算,同时非生产节点的算力无效。股权证明法,依然依赖于发币过程,各节点的生产权限受已拥有的币龄控制,新增节点无法快速参与其中,并且容易出现恶意节点大量囤积币龄去攻击长链的情况。
因此,需要一种克服上述缺陷的新的区块链共识方法。
发明内容
本说明书的一个或多个实施例描述了一种基于议会制的联盟区块链共识方法和装置。
根据第一方面,本发明提供了一种区块链共识方法,包括:所述区块链网络中的生产节点根据交易数据生成待确认区块;所述生产节点将所述待确认区块广播到签名节点,所述签名节点是所述区块链网络中所有其他节点;所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名,其中,所述一次投票原则是,当所述签名节点接收到多个处于同一区块高度的待确认区块时,只对接收到的第一个待确认区块进行所述数字签名;所述签名节点将所述数字签名发送给所述生产节点;所述生产节点根据所述数字签名生成待生效区块,添加到自身保存的区块链上,并广播所述待生效区块以上链。
在一个实施例中,所述方法还包括:所述签名节点对所述待确认区块进行规则验证,在所述规则验证通过的情况下才进行所述数字签名。
在一个实施例中,所述签名节点对所述待确认区块进行规则验证的步骤包括:所述签名节点基于预定的生产周期来验证所述待确认区块是否有效,其中,所述生产节点在所述生产周期内只能生产固定数量的区块。
根据一个实施例,基于预定的生产周期来验证所述待确认区块是否有效的步骤包括:在所述生产节点生产上一个待确认区块之后,如果在所述区块链中已经产生了预定数量的待确认区块,则所述签名节点将所述待确认区块判断为有效;或在所述生产节点生产上一个待确认区块之后,如果已经经过了预定的时间,则所述签名节点将所述待确认区块判断为有效。
在一种实施方式中,所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名的步骤包括:所述签名节点基于一次投票原则用私钥对所述待确认区块、所述签名节点的身份信息和签名时间进行加密,生成所述数字签名。
根据一种实施方式,所述生产节点根据所述数字签名生成待生效区块包括:所述生产节点用所述签名节点的公钥对所述待确认区块的数据、所述签名节点的身份信息和所述签名时间进行验证,以确认所述数字签名是有效签名;如果所述有效签名的数量超过预定阈值,则所述生产节点将所述有效签名添加到所述待确认区块中,以生成待生效区块。
根据一个实施例,所述方法还包括:所述生产节点将所述待生效区块发送给所述签名节点;和所述签名节点对处于同一区块高度的多个所述待生效区块进行所述一次投票原则的验证。
根据一个实施例,所述签名节点对处于同一区块高度的多个所述待生效区块进行所述一次投票原则的验证的步骤包括:所述签名节点对处于同一区块高度的多个待生效区块中的多个所述身份信息进行比对;如果发现存在两个或多个相同的身份信息,则所述签名节点对所述两个或多个相同的身份信息所对应的两个或多个签名时间进行比对;和所述签名节点将包含最早签名时间的待生效区块判断为有效区块,并且将包含较晚签名时间的待生效区块判断为无效区块。
根据第二方面,本发明提供了一种区块链共识装置,包括:区块生成模块,被配置为,使所述区块链网络中的生产节点根据交易数据生成待确认区块;通信模块,被配置为,使所述生产节点将所述待确认区块广播到签名节点,所述签名节点是所述区块链网络中所有其他节点;数字签名模块,被配置为,使所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名,其中,所述一次投票原则是,当所述签名节点接收到多个处于同一区块高度的待确认区块时,只对接收到的第一个待确认区块进行所述数字签名;其中,所述通信模块还被配置为,使所述签名节点将所述数字签名发送给所述生产节点;并且其中,所述区块生成模块还被配置为,使所述生产节点根据所述数字签名生成待生效区块,添加到自身保存的区块链上,并广播所述待生效区块以上链。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
本发明的区块链共识方法采用一节点一票,无需进行无意义的hash,也杜绝了恶意节点大算力、大股权的垄断式统治,解决了新节点的冷启动问题,同时针对各个节点采取了区块的生产频率控制,从而防止部分节点长期“独裁”。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是根据本发明实施例的基于议会制的联盟区块链共识方法的流程图;
图2是根据本发明实施例的基于议会制的联盟区块链共识系统的框图;
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
为了更加透彻地理解本发明,现在先对本发明的技术方案中可能涉及的概念进行适当的解释。
议会制是一种由多数人投票选举出对应执行首长的政治制度;当得不到大多数议员支持时,议会将会重新选举执行首长;同时部分国家规定执行首长的任期不得长期连任。
联盟链不同于区块链的公链,联盟链的参与者仅限于联盟成员,因其只针对联盟成员开放全部或部分功能,因此联盟链上的读写权限、记账规则等都按联盟规则来定制。联盟链由参与成员机构共同维护,并提供了对参与成员的管理、认证、授权、监控、审计等全套安全管理功能。
在更广泛的意义上,共识算法一般来说解决的是大家对某个提案达成一致意见的过程。特定地,在区块链中共识算法指在某节点生成区块的情况下,由各个节点进行协商,在达成共识后将新区块添加到最长链。
图1是根据本发明实施例的基于议会制的联盟区块链共识方法的流程图。
除非另有说明,在以下描述中,单独出现的“生产节点”指的是将交易进行打包以形成待确认区块的节点,“签名节点”指的是接收到“生产节点”所分发的待确认区块的在区块链网络中的所有其他的节点,“投票”指的是“签名节点”对待确认区块进行数字签名。应当指出,在大部分区块链框架中,某一节点可以同时具备一种或多种角色,其既可以充当生产节点,也可以充当签名节点;因此,上文中的签名节点既可以是生产节点,也可以是非生产节点。
在步骤101中,生产节点根据交易数据生成待确认区块。
在交易发生后,生产节点可以至少根据交易数据来生成待确认区块。例如,将诸如时间戳、上一区块地址、打包者信息、交易列表(默克尔树)、节点总数n之类的信息打包到待确认区块中。在同一时刻,可能出现一个或多个生产节点对同一交易进行打包,但是应当理解,同一笔交易在同一区块中只会出现一次。换言之,在生产同一区块高度的区块的情况下,如果同一笔交易同时例如被A、B两个生产节点打包到各自的区块中,则当生产节点将打包后的待确认区块分发/广播出去之后,最终只有一个区块会获得大多数签名。也就是说,最终只有一个区块会被添加到区块链中。具体而言,对于同一笔交易同时出现在同一高度的两个或多个区块中的情况,基于下文所述的一节点一票的投票原则,最终只会有一个超过半数签名的区块才会被接受并且添加到账本中,这将在下面的步骤中详细描述。另外,对于同一笔交易出现在不同高度的两个或多个区块中的情况,每个节点在对当前高度的区块进行签名时,会保证该区块中每一个交易都是第一次出现的。进一步解释,区块链上的所有节点会在本地维护链上所有交易的索引,通过该索引对交易进行哈希处理就可以快速确定该交易是否在区块链上曾经出现过。当然,如果交易曾经在区块链上出现过,则不会对其进行投票。在步骤102中,生产节点将待确认区块广播到签名节点。
进行交易数据打包的生产节点将待确认区块通过网络广播/分发到联盟链的联盟成员中的签名节点,在此,所述签名节点是所述区块链网络中除进行交易数据打包之外的所有其他的生产节点。
在步骤103中,签名节点在接收到待确认区块之后进行规则验证。
在接收到待确认区块之后,签名节点需要进行规则验证。规则验证所针对的对象可以是进行交易打包的生产节点、待确认区块中的部分或全部信息。
一方面,基于生产周期来验证生产节点的生产权是否有效,即判断该生产节点所生成的待确认区块是否有效。例如,在(n/2+1)个区块内,该生产节点所生产的区块无效,n是生产节点的总数。举例来说,联盟链中共存在100个生产节点,在交易发生后的某一时刻,生产节点A生成了一个待确认区块A'并广播到签名节点,以待达成共识后将区块A'上链。如前所述,区块A'中有打包的各种各样的信息,包括打包时间、打包者信息等等。如此,所有生产节点根据这一次生成区块的过程中得到的信息,在此后接收到的(100/2+1)=51个新的待确认区块时,会验证是否是生产节点A所生成的。如果这些区块中的任何一个区块的生产者是生产节点A,那么说明生产节点A的生产权无效,不予进行数字签名。
这样,就防止了出现个别生产节点独裁的情况,因为其在一个时间周期内只能生产一次新的区块。当然,也可以用其他方法来实现防止独裁,比如直接通过时间,在一段时间内,一个生产节点只能进行一次新区块的生产。换句话说,一个生产节点在一段时间内生产的第二个新区块是无效的。另外,视具体情况,也可以将规则设定为一个生产节点在一段时间周期内,只能生产固定数量的新区块,该固定数量可以是2个、3个或其他值。本领域技术人应当理解,在防独裁的规则验证中,对生产周期进行限制的可以通过生产的区块数量来实现,也可以通过真实时间来实现。
另一方面,对待确认区块中的交易列表进行有效性验证,此过程与比特币中的有效性验证相类似,例如确认交易数据格式、确认交易是否已经存在在之前的区块中,诸如此类。由于对交易列表进行有效性验证不是本发明的共识方法的重点,因此不再赘述,以免模糊本发明。
在步骤104中,签名节点基于一次投票原则用私钥对待确认区块进行数字签名。
当上一步骤中的验证全部通过之后,签名节点针对该待确认区块、它自己/签名者的身份信息和当前时间/签名时间,基于一次投票的原则用私钥生成数字签名。在理想情况下,签名节点对于处于同一区块高度的新的待确认区块只能有一次投票权。所谓一次投票原则意味着,当签名节点接收到多个处于同一区块高度的待确认区块时,按照先到先得的方式,用私钥只对第一个待确认区块进行如上所述的数字签名。藉由此原则,从而实现一节点一票的制度。
在步骤105中,签名节点将生成的数字签名发送给其他节点,所述其他节点也包括进行交易打包的生产节点。
应当指出,在网络中由于延迟之类的原因,A、B两个生产节点各自产生的待确认区块传播到多个签名节点,例如签名节点c、d、e、f、g、h。有可能出现这种情况,例如,一部分签名节点c、d、e认为先接收到的待确认区块是生产节点A产生的,而另一部分签名节点f、g、h认为先接收到的待确认区块是生产节点B产生的。因此,由于签名节点对待确认区块的到达的先后顺序的看法不一致,有可能会导致一个或多个待确认的区块具有相同票数的情况出现。
如果A、B两个节点发现彼此的票数相同,则可以根据一些额外的权重判断规则来进行操作。例如,该规则可以是这样,即待确认区块获得同票的若干节点在区块链上往前追溯,找到链上前一个它自己生成的区块;然后,比较各节点的前一个它自己生成的区块与当前区块高度的距离,距离越小,则权重越小。通过这类判断规则,权重较小的节点放弃生产,由权重较大的节点重新发送待确认区块,让其他节点对该区块重新签名。这样,就解决了由签名节点对待确认区块的先后到达顺序看法不一致而可能导致的同票问题。当然,示例中的生产节点和签名节点的数量只是为了举例,而这种解决思路也可以扩展应用到其他数量的生产节点和签名节点的情况。
在步骤106中,生产节点根据接收到的数字签名生成待生效区块。
在生产节点收到签名节点的数字签名之后,首先要使用签名节点的公钥对待确认区块、签名节点的身份信息和签名时间等进行签名验证,从而判断该签名是否有效。如果被判断为有效的数字签名已经占区块链网络中所有生产节点的大多数,例如超过半数,则将所有被判断为有效的签名添加到待确认区块中,从而生成待生效区块。在此,所谓的大多数节点代表一个阈值,其可以有更加准确的定义。举例来说,该阈值可以至少是超出联盟链中所有生产节点数量的一半(n/2+1),其中,n是联盟链中所有生产节点的总数。
在步骤107,生产节点将待生效区块添加到自身保存的区块链上,并广播待生效区块以上链。
首先强调一点,即区块链中一般会有两种错误,一种是作恶,一种式故障。在只考虑到故障容错的情况下,也可以将步骤107中的区块添加对象,即应用场景限制为联盟区块链。
如前所述,一个生产节点只能对处于同一区块高度中的一个区块进行签名,但是也不排除存在恶意节点对同一区块高度中的多个区块进行签名。因此,在各生产节点得到待生效区块之后,还需要进行是否有某签名区块对多个待确认区块进行了多次签名的验证。如果出现这种情况,则向区块链网络的系统报警,由系统进行相应的处理。
在多次签名的验证中,各签名节点利用待生效区块中的所有签名得到对应的签名者的身份信息和签名时间。通过验证在多个待生效区块中是否存在两个相同的身份信息,来判断是否有签名节点进行了多次签名,然后通过签名时间的比较,将拥有较晚的签名时间的待生效区块报警到系统,该待生效区块可以被系统视为候选区块,多数情况下会失效,从而不会被添加到区块链中。
另外,在各节点接收到具备超过2/n+1个签名的待生效区块后,还会对该区块的签名进行有效性验证和区块中交易列表的有效性验证(包括但不限于是否首次出现在链中)。只有通过上述的验证,才会将待生效区块添加到区块链上。图2是根据本发明实施例的基于议会制的联盟区块链共识系统的框图。
如图2所示,根据本发明实施例的基于议会制的联盟区块链共识系统可以包括区块生成模块、通信模块、数字签名模块、验证模块,下面结合图1的方法流程来详述这些模块的功能。应当指出,虽然在图2中为了清楚起见只示出了一个生产节点和一个签名节点,但是应当理解生产节点和签名节点都可能存在一个或多个。另外可以看到,根据本发明实施例的基于议会制的联盟区块链共识装置存在于所有节点中,以供其角色为区块生产者和投票者时实现相应的功能。
区块生成模块被配置为使区块链网络中的生产节点根据交易数据生成待确认区块。
在交易发生后,生产节点可以至少根据交易数据来生成待确认区块。例如,将诸如时间戳、上一区块地址、打包者信息、交易列表(默克尔树)、节点总数n之类的信息打包到待确认区块中。在同一时刻,可能出现一个或多个生产节点对同一交易进行打包,但是应当理解,同一笔交易在同一区块中只会出现一次。换言之,在生产同一区块高度的区块的情况下,如果同一笔交易同时例如被A、B两个生产节点打包到各自的区块中,则当生产节点将打包后的待确认区块分发/广播出去之后,最终只有一个区块会获得大多数签名。也就是说,最终只有一个区块会被添加到区块链中。具体而言,对于同一笔交易同时出现在同一高度的两个或多个区块中的情况,基于下文所述的一节点一票的投票原则,最终只会有一个超过半数签名的区块才会被接受并且添加到账本中,这将在下面的步骤中详细描述。另外,对于同一笔交易出现在不同高度的两个或多个区块中的情况,每个节点在对当前高度的区块进行签名时,会保证该区块中每一个交易都是第一次出现的。进一步解释,区块链上的所有节点会在本地维护链上所有交易的索引,通过该索引对交易进行哈希处理就可以快速确定该交易是否在区块链上曾经出现过。当然,如果交易曾经在区块链上出现过,则不会对其进行投票。
通信模块被配置为使生产节点将待确认区块广播到签名节点,在通过验证后将其添加到区块链上。
通信模块还被配置为使签名节点将生成的数字签名发送给其他节点,所述其他节点也包括进行交易打包的生产节点。
应当指出,在网络中由于延迟之类的原因,A、B两个生产节点各自产生的待确认区块传播到多个签名节点,例如签名节点c、d、e、f、g、h。有可能出现这种情况,例如,一部分签名节点c、d、e认为先接收到的待确认区块是生产节点A产生的,而另一部分签名节点f、g、h认为先接收到的待确认区块是生产节点B产生的。因此,由于签名节点对待确认区块的到达的先后顺序的看法不一致,有可能会导致一个或多个待确认的区块具有相同票数的情况出现。如果A、B两个节点发现彼此的票数相同,则可以根据一些额外的权重判断规则来进行操作。例如,该规则可以是这样,即待确认区块获得同票的若干节点在区块链上往前追溯,找到链上前一个它自己生成的区块;然后,比较各节点的前一个它自己生成的区块与当前区块高度的距离,距离越小,则权重越小。通过这类判断规则,权重较小的节点放弃生产,由权重较大的节点重新发送待确认区块,让其他节点对该区块重新签名。这样,就解决了由签名节点对待确认区块的先后到达顺序看法不一致而可能导致的同票问题。当然,示例中的生产节点和签名节点的数量只是为了举例,而这种解决思路也可以扩展应用到其他数量的生产节点和签名节点的情况。
进行交易数据打包的生产节点将待确认区块通过网络广播/分发到联盟链的联盟成员中的签名节点,在此,所述签名节点是所述区块链网络中除进行交易数据打包之外的所有其他节点。
验证模块被配置为使签名节点在接收到待确认区块之后进行规则验证。
验证模块被配置为,在接收到待确认区块之后,使签名节点对该待确认区块进行规则验证。规则验证所针对的对象可以是进行交易打包的生产节点、待确认区块中的部分或全部信息。
验证模块还被配置为,在各节点接收到具备超过2/n+1个签名的待生效区块后,还会对该区块的签名进行有效性验证和区块中交易列表的有效性验证(包括但不限于是否首次出现在链中)。只有通过上述的验证,才会将待生效区块添加到区块链上。
一方面,基于生产周期来验证生产节点的生产权是否有效,即判断该生产节点所生成的待确认区块是否有效。例如,在(n/2+1)个区块内,该生产节点所生产的区块无效,n是生产节点的总数。举例来说,联盟链中共存在100个生产节点,在交易发生后的某一时刻,生产节点A生成了一个待确认区块A'并广播到签名节点,以待达成共识后将区块A'上链。如前所述,区块A'中有打包的各种各样的信息,包括打包时间、打包者信息等等。如此,所有生产节点根据这一次生成区块的过程中得到的信息,在此后接收到的(100/2+1)=51个新的待确认区块时,会验证是否是生产节点A所生成的。如果这些区块中的任何一个区块的生产者是生产节点A,那么说明生产节点A的生产权无效,不予进行数字签名。
这样,就防止了出现个别生产节点独裁的情况,因为其在一个时间周期内只能生产一次新的区块。当然,也可以用其他方法来实现防止独裁,比如直接通过时间,在一段时间内,一个生产节点只能进行一次新区块的生产。换句话说,一个生产节点在一段时间内生产的第二个新区块是无效的。另外,视具体情况,也可以将规则设定为一个生产节点在一段时间周期内,只能生产固定数量的新区块,该固定数量可以是2个、3个或其他值。本领域技术人应当理解,在防独裁的规则验证中,对生产周期进行限制的可以通过生产的区块数量来实现,也可以通过真实时间来实现。
另一方面,对待确认区块中的交易列表进行有效性验证,此过程与比特币中的有效性验证相类似,例如确认交易数据格式、确认交易是否已经存在在之前的区块中,诸如此类。由于对交易列表进行有效性验证不是本发明的共识方法的重点,因此不再赘述,以免模糊本发明。
数字签名模块被配置为,使签名节点用私钥对待确认区块进行数字签名。
当上一步骤中的验证全部通过之后,签名节点针对该待确认区块、它自己/签名者的身份信息和当前时间/签名时间,基于一次投票的原则用私钥生成数字签名。在理想情况下,签名节点对于处于同一区块高度的新的待确认区块只能有一次投票权。所谓一次投票原则意味着,当签名节点接收到多个处于同一区块高度的待确认区块时,按照先到先得的方式,用私钥只对第一个待确认区块进行如上所述的数字签名。藉由此原则,从而实现一节点一票的制度。
另外,所述通信模块还被配置为使签名节点将生成的数字签名发送给进行交易打包的生产节点。
另外,所述区块生成模块还使生产节点根据接收到数字签名生成待生效区块。
在生产节点收到签名节点中的签名之后,首先要使用签名节点的公钥,对待确认区块、签名节点的身份信息和签名时间进行签名验证,从而判断该签名是否有效。如果被判断为有效的数字签名已经占区块链网络中所有生产节点的大多数,例如超过半数,则将所有被判断为有效的签名添加到待确认区块中,从而生成待生效区块。在此,所谓的大多数节点代表一个阈值,其可以有更加准确的定义。举例来说,该阈值可以至少是超出联盟链中所有生产节点数量的一半(n/2+1),其中,n是联盟链中所有生产节点的总数。
另外,所述通信模块还被配置为使生产节点将待生效区块广播到其他所有节点。然后,所述待生效模块将被添加到联盟区块链中。
如前所述,一个生产节点只能对处于同一区块高度中的一个区块进行签名,但是也不排除存在恶意节点对同一区块高度中的多个区块进行签名。因此,在各生产节点得到待生效区块之后,还需要进行是否有某签名区块对多个待确认区块进行了多次签名的验证。如果出现这种情况,则向区块链网络的系统报警,由系统进行相应的处理。
在多次签名的验证中,各签名节点利用待生效区块中的所有签名得到对应的签名者的身份信息和签名时间。通过验证在多个待生效区块中是否存在两个相同的身份信息,来判断是否有签名节点进行了多次签名,然后通过签名时间的比较,将拥有较晚的签名时间的待生效区块报警到系统,该待生效区块可以被系统视为候选区块,多数情况下会失效,从而不会被添加到区块链中。
根据又一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图1所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图1所述的方法。
如上所述,本发明的共识方法在无需工作量证明的情况下下,以各节点使用私钥对区块进行签名的方式进行投票,以确认区块的有效性。这种机制还可防止股权证明法中存在的“富人更富,穷人更穷”的情况,并解决新节点的冷启动。另外,本共识方法通过控制同一生产者的区块生产频率,可以避免“独裁”。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (16)

1.一种区块链共识方法,包括:
区块链网络中的生产节点根据交易数据生成待确认区块;
所述生产节点将所述待确认区块广播到签名节点,所述签名节点是所述区块链网络中所有其他节点;
所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名,其中,所述一次投票原则是,当所述签名节点接收到多个处于同一区块高度的待确认区块时,只对接收到的第一个待确认区块进行所述数字签名;
所述签名节点将所述数字签名发送给所述生产节点;
所述生产节点根据所述数字签名生成待生效区块,添加到自身保存的区块链上,并广播所述待生效区块以上链,其中,所述生产节点根据所述数字签名生成待生效区块包括:所述生产节点用所述签名节点的公钥对所述待确认区块的数据、所述签名节点的身份信息和所述签名时间进行验证,以确认所述数字签名是有效签名;如果所述有效签名的数量超过预定阈值,则所述生产节点将所述有效签名添加到所述待确认区块中,以生成待生效区块。
2.根据权利要求1所述的区块链共识方法,还包括:
所述签名节点对所述待确认区块进行规则验证,在所述规则验证通过的情况下才进行所述数字签名。
3.根据权利要求2所述的区块链共识方法,其中,所述签名节点对所述待确认区块进行规则验证的步骤包括:
所述签名节点基于预定的生产周期来验证所述待确认区块是否有效,其中,所述生产节点在所述生产周期内只能生产固定数量的区块。
4.根据权利要求3所述的区块链共识方法,其中,基于预定的生产周期来验证所述待确认区块是否有效的步骤包括:
在所述生产节点生产上一个待确认区块之后,如果在所述区块链中已经产生了预定数量的待确认区块,则所述签名节点将所述待确认区块判断为有效;或
在所述生产节点生产上一个待确认区块之后,如果已经经过了预定的时间,则所述签名节点将所述待确认区块判断为有效。
5.根据权利要求1所述的区块链共识方法,其中,所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名的步骤包括:
所述签名节点基于一次投票原则用私钥对所述待确认区块、所述签名节点的身份信息和签名时间进行加密,生成所述数字签名。
6.根据权利要求1所述的区块链共识方法,还包括:
所述生产节点将所述待生效区块发送给所述签名节点;和
所述签名节点对处于同一区块高度的多个所述待生效区块进行所述一次投票原则的验证。
7.根据权利要求6所述的区块链共识方法,其中,所述签名节点对处于同一区块高度的多个所述待生效区块进行所述一次投票原则的验证的步骤包括:
所述签名节点对处于同一区块高度的多个待生效区块中的多个身份信息进行比对;
如果发现存在两个或多个相同的身份信息,则所述签名节点对所述两个或多个相同的身份信息所对应的两个或多个签名时间进行比对;和
所述签名节点将包含最早签名时间的待生效区块判断为有效区块,并且将包含较晚签名时间的待生效区块判断为无效区块。
8.一种区块链共识装置,包括:
区块生成模块,被配置为,使区块链网络中的生产节点根据交易数据生成待确认区块;
通信模块,被配置为,使所述生产节点将所述待确认区块广播到签名节点,所述签名节点是所述区块链网络中所有其他节点;
数字签名模块,被配置为,使所述签名节点基于一次投票原则用私钥对所述待确认区块进行数字签名,其中,所述一次投票原则是,当所述签名节点接收到多个处于同一区块高度的待确认区块时,只对接收到的第一个待确认区块进行所述数字签名;
其中,所述通信模块还被配置为,使所述签名节点将所述数字签名发送给所述生产节点;
并且其中,所述区块生成模块还被配置为,使所述生产节点根据所述数字签名生成待生效区块,添加到自身保存的区块链上,并广播所述待生效区块以上链;
其中,所述区块生成模块被配置为:使所述生产节点用所述签名节点的公钥对所述待确认区块的数据、所述签名节点的身份信息和所述签名时间进行验证,以确认所述数字签名是有效签名;如果所述有效签名的数量超过预定阈值,则使所述生产节点将所述有效签名添加到所述待确认区块中,以生成待生效区块。
9.根据权利要求8所述的区块链共识装置,还包括:
验证模块,被配置为,使所述签名节点对所述待确认区块进行规则验证,在所述规则验证通过的情况下才进行所述数字签名。
10.根据权利要求9所述的区块链共识装置,其中,所述验证模块被配置为:
基于预定的生产周期来验证所述待确认区块是否有效,其中,所述生产节点在所述生产周期内只能生产固定数量的区块。
11.根据权利要求10所述的区块链共识装置,其中,所述验证模块被配置为:
在所述生产节点生产上一个待确认区块之后,如果在所述区块链中已经产生了预定数量的待确认区块,则使所述签名节点将所述待确认区块判断为有效;或
在所述生产节点生产上一个待确认区块之后,如果已经经过了预定的时间,则使所述签名节点将所述待确认区块判断为有效。
12.根据权利要求8所述的区块链共识装置,其中,所述数字签名模块被配置为:
使所述签名节点基于一次投票原则用私钥对所述待确认区块、所述签名节点的身份信息和签名时间进行加密,生成所述数字签名。
13.根据权利要求9所述的区块链共识装置,其中:
所述通信模块还被配置为,使所述生产节点将所述待生效区块发送给所述签名节点;
所述验证模块还被配置为,使所述签名节点对处于同一区块高度的多个所述待生效区块进行所述一次投票原则的验证。
14.根据权利要求13所述的区块链共识装置,其中,所述验证模块还被配置为:
使所述签名节点对处于同一区块高度的多个待生效区块中的多个身份信息进行比对;
如果发现存在两个或多个相同的身份信息,则所述签名节点对所述两个或多个相同的身份信息所对应的两个或多个签名时间进行比对;
所述签名节点将包含最早签名时间的待生效区块判断为有效区块,并且将包含较晚签名时间的待生效区块判断为无效区块。
15.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行权利要求1-7中任一项的所述的方法。
16.一种计算系统,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-7中任一项所述的方法。
CN201910584667.3A 2019-07-01 2019-07-01 一种区块链共识方法和装置 Active CN110380847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910584667.3A CN110380847B (zh) 2019-07-01 2019-07-01 一种区块链共识方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910584667.3A CN110380847B (zh) 2019-07-01 2019-07-01 一种区块链共识方法和装置

Publications (2)

Publication Number Publication Date
CN110380847A CN110380847A (zh) 2019-10-25
CN110380847B true CN110380847B (zh) 2021-11-19

Family

ID=68251420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910584667.3A Active CN110380847B (zh) 2019-07-01 2019-07-01 一种区块链共识方法和装置

Country Status (1)

Country Link
CN (1) CN110380847B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112910648B (zh) * 2019-12-03 2023-04-07 北京百度网讯科技有限公司 区块链隐私状态的共识方法和装置
CN111159764A (zh) * 2019-12-26 2020-05-15 杭州趣链科技有限公司 基于投票选举的链上与链下相结合实现联盟链自治的方法
CN111031076B (zh) * 2020-03-06 2020-07-10 南京畅洋科技有限公司 一种基于定时机制的物联网区块链共识方法
CN111464315B (zh) * 2020-04-03 2021-06-15 腾讯科技(深圳)有限公司 数字签名处理方法、装置、计算机设备以及存储介质
CN112261145B (zh) * 2020-10-22 2022-07-12 中国联合网络通信集团有限公司 一种新区块链生成方法及装置
CN112788106B (zh) * 2020-12-28 2022-12-27 深圳前海益链网络科技有限公司 一种应用于区块链的区块生成控制方法及相关装置
CN112669156A (zh) * 2020-12-31 2021-04-16 北京知帆科技有限公司 一种区块链待确认交易确定方法、装置及电子设备
CN112883106B (zh) * 2020-12-31 2024-02-13 北京百度网讯科技有限公司 一种区块链的出块节点确定方法、装置、设备和介质
CN112988470B (zh) * 2021-04-27 2021-09-07 支付宝(杭州)信息技术有限公司 联盟链中的共识方法、共识节点和系统
CN113612761B (zh) * 2021-07-30 2022-03-22 立信(重庆)数据科技股份有限公司 一种基于区块链的调研数据上链方法及系统
CN114070617B (zh) * 2021-11-16 2022-11-08 上海柯林布瑞信息技术有限公司 基于区块链的医疗数据共享方法和装置
CN114090693B (zh) * 2022-01-18 2022-05-17 安徽中科晶格技术有限公司 基于拜占庭容错的区块链见证共识方法、系统、设备及存储介质
CN115118436B (zh) * 2022-08-23 2022-11-22 北京优品三悦科技发展有限公司 区块链共识方法及装置、存储介质及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
CN106411503A (zh) * 2016-11-28 2017-02-15 中国银行股份有限公司 区块链投票记账模式的记账方法及系统、投票及记账节点
CN108881253A (zh) * 2018-06-29 2018-11-23 全链通有限公司 区块链实名参与方法和系统
CN108933656A (zh) * 2018-07-18 2018-12-04 京东方科技集团股份有限公司 在线作品投票方法及装置、计算机设备、可读存储介质
CN109034813A (zh) * 2018-09-07 2018-12-18 腾讯科技(深圳)有限公司 代表节点设备选举方法、装置、计算机设备及存储介质
CN109165945A (zh) * 2018-09-07 2019-01-08 腾讯科技(深圳)有限公司 代表节点设备选举方法、装置、计算机设备及存储介质
CN109831509A (zh) * 2019-02-18 2019-05-31 深圳市优学链科技有限公司 一种用于实现相同权重随机出块的共识算法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8061589B2 (en) * 2006-10-20 2011-11-22 Barry Cohen Electronic voting system
US20160203477A1 (en) * 2015-01-14 2016-07-14 Modernity Financial Holdings, Ltd. Cryptographic security for electronic transactions
US9871775B2 (en) * 2015-08-10 2018-01-16 Cisco Technology, Inc. Group membership block chain

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
CN106411503A (zh) * 2016-11-28 2017-02-15 中国银行股份有限公司 区块链投票记账模式的记账方法及系统、投票及记账节点
CN108881253A (zh) * 2018-06-29 2018-11-23 全链通有限公司 区块链实名参与方法和系统
CN108933656A (zh) * 2018-07-18 2018-12-04 京东方科技集团股份有限公司 在线作品投票方法及装置、计算机设备、可读存储介质
CN109034813A (zh) * 2018-09-07 2018-12-18 腾讯科技(深圳)有限公司 代表节点设备选举方法、装置、计算机设备及存储介质
CN109165945A (zh) * 2018-09-07 2019-01-08 腾讯科技(深圳)有限公司 代表节点设备选举方法、装置、计算机设备及存储介质
CN109831509A (zh) * 2019-02-18 2019-05-31 深圳市优学链科技有限公司 一种用于实现相同权重随机出块的共识算法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Blocks and Chains: Introduction to Bitcoin, Cryptocurrencies, and Their Consensus Mechanisms;Aljosha Judmayer;《IEEE》;20171231;全文 *
区块链共识算法的发展现状与展望;袁勇;《自动化学报》;20180927;全文 *

Also Published As

Publication number Publication date
CN110380847A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN110380847B (zh) 一种区块链共识方法和装置
Bera et al. Designing blockchain-based access control protocol in IoT-enabled smart-grid system
TWI831760B (zh) 用以基於證明驗證認證鏈外資料之系統及方法
CN110110555B (zh) 一种区块链中的投票方法及装置
CN106972931B (zh) 一种pki中证书透明化的方法
CN112311735B (zh) 可信认证方法,网络设备、系统及存储介质
CN110288480B (zh) 一种区块链的私密交易方法及装置
EP3563553A1 (en) Method for signing a new block in a decentralized blockchain consensus network
Delaune et al. Automatic verification of privacy properties in the applied pi calculus
CN112583596B (zh) 一种基于区块链技术的完全跨域身份认证方法
CA2554368A1 (en) Group signature system, method, device, and program
CN109687965A (zh) 一种保护网络中用户身份信息的实名认证方法
JP7417583B2 (ja) コンピュータネットワークの間のタスクの分配のためのアキュムレータに基づくプロトコルのためのコンピュータ実施システム及び方法
CN112291062B (zh) 一种基于区块链的投票方法及装置
KR20210054146A (ko) 발행인 익명성 인증서 시스템을 위한 분산화된 그룹 서명 방법
Miao et al. Blockchain assisted multi-copy provable data possession with faults localization in multi-cloud storage
CN114760071B (zh) 基于零知识证明的跨域数字证书管理方法、系统和介质
Hermans et al. Private yoking proofs: attacks, models and new provable constructions
CN113783700A (zh) 一种分片区块链下安全可监管的权益证明方法及系统
CN111787034B (zh) 区块生成方法、同步方法、装置、区块链系统和存储介质
CN114866259A (zh) 一种基于秘密分享的区块链受控可追溯身份隐私方法
Liu et al. A blockchain-based cross-domain authentication management system for IoT devices
CN113541960A (zh) 一种基于联邦学习的网络认证方法及装置
Boontaetae et al. RDI: Real digital identity based on decentralized PKI
CN112583598A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40016311

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201010

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201010

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

GR01 Patent grant
GR01 Patent grant