CN112039860B - 一种在联盟链中实现联合共识分片的方法和装置 - Google Patents

一种在联盟链中实现联合共识分片的方法和装置 Download PDF

Info

Publication number
CN112039860B
CN112039860B CN202010834814.0A CN202010834814A CN112039860B CN 112039860 B CN112039860 B CN 112039860B CN 202010834814 A CN202010834814 A CN 202010834814A CN 112039860 B CN112039860 B CN 112039860B
Authority
CN
China
Prior art keywords
consensus
node
transaction
fragment
proposal
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
CN202010834814.0A
Other languages
English (en)
Other versions
CN112039860A (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.)
Shanghai Jiansu Network Technology Co ltd
Original Assignee
Shanghai Jiansu Network Technology 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 Shanghai Jiansu Network Technology Co ltd filed Critical Shanghai Jiansu Network Technology Co ltd
Priority to CN202010834814.0A priority Critical patent/CN112039860B/zh
Publication of CN112039860A publication Critical patent/CN112039860A/zh
Application granted granted Critical
Publication of CN112039860B publication Critical patent/CN112039860B/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的目的是提供一种在联盟链中实现联合共识分片的方法,联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,该共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入该共识集合的消息;该共识集合中的任一共识节点在该共识集合中广播该共识请求,该共识集合中的各个共识节点在收到该共识请求后进行缓存;当满足第一预定条件,该共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在该共识集合中发起共识;当该共识集合通过对该第一共识提案的共识,该任一节点加入该联盟链分片和/或加入该共识集合,通过联合共识来保证链和各个分片的安全性,同时保证了分片的灵活性。

Description

一种在联盟链中实现联合共识分片的方法和装置
技术领域
本申请涉及区块链技术领域,尤其涉及一种在联盟链中实现联合共识分片的技术。
背景技术
对于突破区块链的性能瓶颈,业界提出了许多解决思路,其中比较著名的当属交易并行化和分片。但交易并行化只能最大程度地开发单节点性能,而不能突破区块链处理能力受限于单节点的技术藩篱。分片技术则试图从更高维度上来解决这个问题,通过将区块链划分为更多的子网络,每个子网络处理不同的交易,以达到全网性能随分片的增加而提升的目的。相较于交易并行化技术致力于单节点性能最大化的治标之策,分片技术能使网络通过增加节点和扩展分片而创造出增量的计算和存储能力,从而打破区块链的性能天花板限制。
但分片技术的实现同样面临许多技术难题,比如,如何划分分片。如果按照账户的网络IP划分,则计算复杂度过高,实现难度太大,且容易出现分片大小差异巨大和负载不均的问题;如果按照节点数量平均划分,可能造成跨分片交易比例过高,严重拖累性能的问题。又比如,如何保证分片的安全性。对无分片的区块链来说,突破安全防护需要超过51%的算力(Pow共识)或者控制(n-1)/3的节点(PBFT共识),但如果采用分片技术,攻破某个分片显然比攻破全链容易的多,且理论上单个分片的安全性将随分片数量的增加而不断降低。
因此,如何在联盟链中实现安全高效的分片,成为本领域技术人员亟需解决的技术问题之一。
发明内容
本申请的目的是提供一种在联盟链中实现联合共识分片的方法和装置。
根据本申请的一个方面,提供了一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:
联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;
当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
根据本申请的另一个方面,还提供了一种在联盟链中实现联合共识分片的节点,其中,所述节点包括在联盟链的共识集合中的共识节点、在联盟链分片中的分片节点中至少任一项;当所述节点作为所述联盟链的共识集合中的共识节点,其包括:
获取装置,用于获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
第一广播装置,用于在所述共识集合中广播所述共识请求;
第一缓存装置,用于在收到所述共识请求后进行缓存;
第一打包装置,用于当满足第一预定条件,将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第一共识装置,用于对所述第一共识提案进行共识,共识通过后,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
根据本申请的又一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
根据本申请的再一个方面,还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
根据本申请的再一个方面,还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
与现有技术相比,在本申请中,各个分片之间是完全平等的,无层级划分,也无母子或主支划分。分片与分片之间平行出块,各个分片的区块之间是完全独立的。但所有分片的区块都是由统一的共识集合来共识,且分片之间可以跨分片交易。任何一个节点,可以选择加入任何一个或多个分片,也可以选择加入共识集合,或者同时加入共识集合和多个分片。与之对应的是,节点也可以自由退出共识集合或某一分片。原则上,节点加入的分片越多,网络越稳定安全,但要视节点的性能配置而定,否则加入太多分片,会造成超负荷运转而降低效率。
共识节点组成共识集合,负责对各个分片提交的区块提案验签、检查交易合法性和共识,然后将达成一致的提案返回给提交的分片去执行。因为所有分片的区块提案是交由链的共识集合统一共识的,如果不能攻破整个共识集合,也就无法对任何一个分片的提案作假,所以,攻击任何一个分片所付出的成本,和攻击全链是一样的。
本申请通过联合共识来保证链和各个分片的安全性不会因为分片而衰弱。通过节点申请(自由加入、退出或创建分片)与共识审核结合来管理分片,同时保证了分片的灵活性和安全性。通过对跨片交易的发送节点做阈值判定以及联合共识来保证跨片交易的安全性。理论上,链的分片上限和性能上限,取决于共识集合内的节点性能和网络带宽。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出适于用来实现本申请实施方式的示例性计算机系统/服务器12的框图;
图2示出根据本申请一个方面的一种在联盟链中实现联合共识分片的方法的流程示意图;
图3示出根据本申请一个优选实施例的在联盟链中实现联合共识分片的分片模型。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
其中,根据本申请的方法通过包含于计算机设备中的装置来实现。所述计算机设备是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC(专用集成电路)、FPGA(可编程门阵列)、DSP(数字处理器)、嵌入式设备等硬件执行预定处理过程,或是由上述二者组合来实现。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个装置,但是这些装置不应当受这些术语限制。使用这些术语仅仅是为了将一个装置与另一个装置进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一装置可以被称为第二装置,并且类似地第二装置可以被称为第一装置。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个装置被称为“连接”或“耦合”到另一装置时,其可以直接连接或耦合到所述另一装置,或者可以存在中间装置。与此相对,当一个装置被称为“直接连接”或“直接耦合”到另一装置时,则不存在中间装置。应当按照类似的方式来解释被用于描述装置之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本申请作进一步详细描述。
图1示出了适于用来实现本申请实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未示出,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图1中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理。
例如,存储器28中存储有用于执行本申请的各项功能和处理的计算机程序,处理单元16执行相应计算机程序时,本申请在联盟链中的联合共识分片被实现。
以下将详细描述本申请在联盟链中实现联合共识分片的具体装置/步骤。
图2示出根据本申请一个方面的一种在联盟链中实现联合共识分片的示意图。该方法包括以下步骤:
S201:联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
S202:所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;
S203:当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;
S204:当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
具体地,在联盟链中,各个节点可以是共识节点,也可以是分片节点,共识节点组成共识集合,分片节点位于划分出来的一个或多个联盟链分片中,此处共识节点和分片节点的称谓仅用于对节点的职能进行划分,事实上一个节点既可以是共识节点也可以是分片节点,也即,一个节点可以选择同时加入共识集合和一个或多个联盟链分片。
在步骤S201中,联盟链中的任何一个节点,其不管是已经在共识集合中的共识节点,还是已经在联盟链分片中的分片节点,或者尚未加入该共识集合或联盟链分片的节点,都可以向共识集合中的任何一个共识节点发送共识请求,来请求加入该共识集合,或者,请求加入一个或多个联盟链分片,或者,请求同时加入该共识集合和一个或多个联盟链分片。例如,该节点在该共识请求的特定字段中写入请求加入的一个或多个联盟链分片的编号和/或写入请求加入该共识集合的消息,以及该节点的签名;共识集合中的任一共识节点基于与该发送请求的节点之间的通信,获取该节点发送的共识请求。
在实际应用中,最初的共识集合和联盟链分片可以是预置的,随后,各个节点再请求加入该共识集合和/或联盟链分片,或者创建新的联盟链分片,来扩展该共识集合和联盟链分片。例如,某一联盟链节点是预置的共识集合中的共识节点,其通过预定的途径,如通过社区等,发布自身的IP地址,当该联盟链中的另外某个节点想要加入该共识集合,或者想要加入某一联盟链分片,其可以选择向该预置的共识节点发送共识请求,例如,根据该预置的共识节点所发布的IP地址,向该预置的共识节点发送共识请求。预置的联盟链分片的编号也可以通过预定的途径,例如通过社区等,进行发布。想要加入这些预置的联盟链分片的节点在获知编号后,通过向共识集合的共识节点发送共识请求,并且在共识请求中添加其想要加入的预置的联盟链分片的编号,从而申请加入对应的联盟链分片。
在此,共识集合中的共识节点也可以请求加入一个或多个联盟链分片;或者,某个节点本身已经在某一个或多个联盟链分片中,其仍可以发送共识请求来加入其他的联盟链分片和/或加入该共识集合中;又或者,某个节点本身已经在某一个或多个联盟链分片并且也同时在共识集合中,其仍可以发送共识请求来加入其他的联盟链分片中,本申请对此不做限制。
在步骤S202中,该共识集合中的任一共识节点在接收到该联盟链中任一节点发送的共识请求之后,将该共识请求在该共识集合中进行广播,同时自己也将该共识请求进行缓存,该共识集合中的其他共识节点收到该共识请求后将该共识请求进行缓存。
优选地,接收到共识请求的共识节点在该共识集合中广播该共识请求之前,还对该共识请求进行校验,校验该共识请求中所包括的该任一节点的签名是否正确,以及校验该共识请求中请求加入的一个或多个联盟链分片的编号和/或请求加入该共识集合的消息。如果校验未通过则不进行广播,只有校验通过的情况下再将该共识请求在该共识集合中进行广播。
进一步地,联盟链中任一节点向共识集合发送的共识请求可能还包括配置信息,例如该任一节点的硬件、软件信息,方便共识集合进行审核。例如,如果该节点想要加入共识集合,而共识集合对其内的节点的配置有要求,需要性能较高的节点才可以更自如地在该共识集合中处理事务。
该共识集合可以预设一判定条件,在此称为第一预定条件,该第一预定条件包括但不限于计时器期满或者缓存的共识请求的数量达到阈值。例如,在该共识集合中预置一计时器,预设一预定时间,计时器期满则可认为满足该第一预定条件,或者,对于该共识集合中缓存的共识请求的数量预设一预定阈值,如100个共识请求,当数量达到该阈值则可认为满足该第一预定条件。该计时器的时长或者该共识集合中缓存的共识请求的数量的预定阈值,可以由该共识集合中的各个共识节点投票决定,也可以协商修改。在步骤S203中,判断是否满足该第一预定条件,当满足该第一预定条件,例如计时器期满或者该共识集合中缓存的共识请求的数量已达到100个,则该共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在该共识集合中发起共识。当然,如果第一预定条件是判断计时器期满,则有可能计时器期满的时候缓存中没有共识请求,因此,共识集合中的主节点可以先检查缓存区,当缓存区不为空时,将缓存区内的共识请求打包成第一共识提案。该共识集合中的主节点可以是推选的也可以是各个共识节点轮值。
在步骤S204中,共识集合对第一共识提案进行共识,共识集合中各个共识节点在共识的时候,消息都是同步广播到联盟链分片中的各个节点的,当该共识集合通过对该第一共识提案的共识,该任一节点加入其所请求要加入的联盟链分片和/或加入其所请求要加入的共识集合,例如,该任一节点请求要加入的联盟链分片中的其他节点,例如邻居节点将该任一节点的IP地址加入其上的peer列表,这样该任一节点即可加入该联盟链分片,该任一节点的IP地址在其向共识集合的共识节点发送共识请求时即可被该共识节点获知,该任一节点例如可以通过其他途径如客户端消息等获知其已加入该联盟链分片的消息。
在一优选实施例中,所述联盟链的共识集合中的任一共识节点获取该联盟链中任一节点所发送的共识请求中包括所述任一节点请求创建新的分片的消息;当所述共识集合通过对所述第一共识提案的共识,为所述任一节点创建新的联盟链分片,并为所述新的联盟链分片分配对应编号。
在此,联盟链中的任一节点可以请求创建新的联盟链分片,其在向共识集合的共识节点发送共识请求时,在该共识请求的特定字段中加入其请求创建新的分片的消息;该共识节点或者说该共识集合接收到该共识请求之后,所执行的操作与前述在步骤S202和步骤S203中执行的操作相同或相似,即,该共识集合中的共识节点在接收到该想要创建新的分片的任一节点发送的共识请求之后,将该共识请求在该共识集合中进行广播,或者先对该共识请求进行校验,校验通过后在该共识集合中进行广播,同时自己也将该共识请求进行缓存,该共识集合中的其他共识节点收到该共识请求后将该共识请求进行缓存;随后,判断当满足第一预定条件,则该共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在该共识集合中发起共识;当该共识集合通过对该第一共识提案的共识,为该任一节点创建新的联盟链分片,并为该新的联盟链分片分配对应编号;之后该联盟链中的其他节点可以选择加入该新创建的联盟链分片。
在另一优选实施例中,所述联盟链的共识集合中的任一共识节点获取该联盟链中任一节点所发送的共识请求中包括所述任一节点请求退出的一个或多个联盟链分片的编号和/或请求退出所述共识集合的消息;当所述共识集合通过对所述第一共识提案的共识,所述任一节点退出所述联盟链分片和/或退出所述共识集合。
在此,联盟链分片中的分片节点可以选择退出该联盟链分片,共识集合中的共识节点也可以选择退出该共识集合,其同样可以选择向共识集合中的任一共识节点发送共识请求,在该共识请求的特定字段中加入其想退出的联盟链分片的编号,或者加入其想退出共识集合的消息;该共识节点或者说该共识集合接收到该共识请求之后,所执行的操作与前述在步骤S202和步骤S203中执行的操作相同或相似;随后,当该共识集合通过对第一共识提案的共识,该任一节点退出该联盟链分片和/或退出该共识集合。
在一优选实施例中,所述共识集合由多个共识节点组成,所述共识节点中记录有所述联盟链的分片的状态信息,所述分片的状态信息包括但不限于总分片个数、每个分片内所有节点的地址、每个分片的区块高度等信息。在此,每个共识节点中例如都维护了一张状态信息列表,该状态信息列表中记录有该联盟链所有分片的状态信息,例如该联盟链中总共有多少分片、每个分片的编号、每个分片内有多少分片节点、每个分片节点的地址、每个分片的区块高度等信息。当分片有变化时,例如当有新节点加入或退出其中某一个或某多个联盟链分片,共识集合中的各个共识节点更新该状态信息列表。一种实现方式例如是该共识集合中的某个共识节点定期更新其上的状态信息列表并在该共识集合中广播,该共识集合中的其他共识节点接收广播的消息后同步各自的状态信息列表。本申请对此不作限制。
同样地,在共识集合中也记录有各个共识节点的状态信息,例如,共识集合中的各个共识节点还维护有一张共识集合列表,在该共识集合列表中记录有该共识集合中各个共识节点的状态信息,例如该共识集合中总共有多少共识节点、每个共识节点的地址等信息。当该共识集合有变化时,例如当有新的节点加入或退出该共识集合,其对应的状态信息也相应进行更新,共识集合中的各个共识节点更新该共识集合列表。一种实现方式例如是该共识集合中的某个共识节点定期更新其上的共识集合列表并在该共识集合中广播,该共识集合中的其他共识节点接收广播的消息后同步各自的共识集合列表。本申请对此不作限制。
优选地,可以对该联盟链中的任一节点所申请加入的联盟链分片的数量设置一最低阈值。例如,在该任一节点申请加入该联盟链时,至少申请加入3个联盟链分片,否则不予处理。节点加入多个分片的好处是可以避免某一分片内节点太过单一,尽量增加各个分片间节点的互相耦合,从而杜绝某一分片内所有节点联合作恶的可能。
此外,为了增加分片的安全性,除了让每个节点多加入几个分片外,还可以尽量增加单个分片内节点的个数,否则,分片内节点太少,也容易被攻破。因此,优选地,还可以为联盟链分片中包含的节点个数设置一最低阈值。例如,将单个联盟链分片最小节点个数设置为40,那么当节点向共识集合申请创建新分片的时候,共识集合会创建新的分片缓存区,将该节点相关信息,比如地址、ip、物理参数等写入缓存区。如果后续有其他节点申请加入这个新分片,共识集合同样将它们写入这个缓存区,并检查缓存区内节点个数是否超过最少节点个数,如果没超过继续等待。如果超过了,则正式创建新的分片,在集合内创建分片相关记录和状态,向全网广播新分片的创建信息,放开新分片内的节点与区块链网络内其他节点的通信,开始接受新分片提交的区块提案。
在此,各个联盟链分片之间是完全平等的,无层级划分,也无母子或主支划分。分片与分片之间平行出块,各个分片的区块之间是完全独立的。但所有分片的区块都是由统一的共识集合来共识,且分片之间可以跨分片交易。任何一个节点,可以选择加入任何一个或多个分片,也可以选择加入共识集合,或者同时加入共识集合和多个分片。与之对应的是,节点也可以自由退出共识集合或某一分片。原则上,节点加入的分片越多,网络越稳定安全,但要视节点的性能配置而定,否则加入太多分片,会造成超负荷运转而降低效率。
在此,通过联合共识来保证链和各个分片的安全性不会因为分片而衰弱。通过节点申请(自由加入、退出或创建分片)与共识审核结合来管理分片,同时保证了分片的灵活性和安全性。通过对跨片交易的发送节点做阈值判定以及联合共识来保证跨片交易的安全性。理论上,链的分片上限和性能上限,取决于共识集合内的节点性能和网络带宽。
一优选实施例如图3所示,其示出了根据本申请的一种在联盟链中的分片模型。
在该图3中,该联盟链中包括一共识集合100以及三个分片001、002和003,共识集合100中包括共识节点A、B、C、D和E;分片001中包括分片节点A、B和F,分片002中包括分片节点A、G和H,分片003中包括分片节点I、J和K。从该图3中可以看出,节点A既是共识集合100中的共识节点,也是分片001和002中的分片节点,节点B既是共识集合100中的共识节点,也是分片001中的分片节点。
该联盟链中的任一节点若想要加入该共识集合100,或者加入分片001和/或002和/或003,或者想要创建一个新的分片,或者该共识集合100中的共识节点A、B、C、D中任意一个或多个想退出该共识集合,或者分片001、002、003中的任意一个或多个分片节点想退出其对应的分片,都可以向该共识集合100中的任意一个共识节点发送共识请求。
例如,作为该联盟链中的一个节点L,其还没加入该共识集合100或任何一个分片,其想加入分片001,则向共识集合100中的共识节点A发送共识请求,该共识请求中添加其想加入的分片的编号001;共识节点A接收到该共识请求后,在该共识集合100中进行广播,或者先对该共识请求进行校验,校验通过后在该共识集合100中进行广播,同时自己也将该共识请求进行缓存,该共识集合100中的其他共识节点B、C、D、E收到该共识请求后将该共识请求进行缓存;随后,判断当满足第一预定条件,假设此次是共识节点B当值为该共识集合100中的主节点,则该共识节点B将其缓存中的共识请求打包成第一共识提案,并在该共识集合100中发起共识;当该共识集合100通过对该第一共识提案的共识,该节点L加入该分片001。
又如,节点A本身作为一个共识节点在共识集合100中,其同时又作为一个分片节点在分片001和002中,若该节点A还想加入分片003,并且创建一个新的分片,其可以生成一个共识请求,在该共识请求中添加其想加入的分片的编号003,以及其想要创建一个新的分片的消息;或者,该节点A也可以分别生成两个共识请求,其中一个共识请求中添加其想加入的分片的编号003,另一个共识请求中添加其想要创建一个新的分片的消息;在生成共识请求之后,该节点A在该共识集合100中进行广播,随后的步骤与前述操作相类似,故此处不再赘述,并通过引用的方式包含于此。当该节点A想要创建一个新的分片所对应的共识提案通过,则为该节点A创建新的联盟链分片,并为该新的联盟链分片分配对应编号,此处假设为004,则该节点A即同时位于该分片004中,之后该联盟链中的其他节点可以选择加入该新创建的分片004。
本领域技术人员应能理解,还可以有各种其他的拓展该联盟链中分片或共识集合的方式,此处不一一列举,并通过引用的方式包含于此。在一优选实施例中,该方法还包括以下步骤:
S205:所述联盟链分片中的主节点将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点;
S206:所述共识集合中的任一共识节点接收到所述交易提案,在所述共识集合中广播所述交易提案,所述共识集合中的各个共识节点在收到所述交易提案后进行缓存;
S207:当满足第二预定条件,所述共识集合中的主节点将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识;
S208:当所述共识集合通过对所述第二共识提案的共识,将对应的共识消息广播给所述联盟链中所有分片中的分片节点;
S209:各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。
具体地,在步骤S205中,某个联盟链分片中的主节点将交易池中的交易打包成交易提案,并将该交易提案发送给共识集合中的任一共识节点,该任一共识节点也可以接收到其他分片的主节点发送过来的交易提案;当然,该共识集合中的其他共识节点也会收到其他分片的主节点发送的交易提案。在此,联盟链分片中的主节点可以由该分片中的各个分片节点推选,也可以由各个分片节点轮值。
优选地,该联盟链分片中的任一分片节点接收交易,该交易可以是用户发起的交易,也可以是由其他分片节点发送过来的交易,该分片节点接收到交易之后,在其所处的联盟链分片中进行广播,同时将该交易缓存至自身的交易池,该联盟链分片中的其他分片节点在收到广播的交易后也将该交易缓存至各自的交易池;随后,判断是否满足第三预定条件,该第三预定条件例如定时器期满或者交易池中的交易数量达到阈值,当满足第三预定条件,该联盟链分片中的主节点将交易池中的交易打包成交易提案,再将该交易提案发送至共识集合中的任一共识节点。在此,该第三预定条件的定时器的时长或者该交易池中的交易数量的阈值由各个分片自由配置,可以由分片内所有分片节点通过内部投票协商修改。
在此,该联盟链分片中的主节点按照策略将交易池中的交易打包成交易提案,该策略可以由每个链自由定制,例如,按照交易池中的交易的交易时间排序打包、按照交易大小排序打包、取排序之后排在前面的预定个数的交易进行打包等方式,本申请对此不作限制。
在步骤S206中,该共识集合中的任一共识节点接收到该交易提案,在该共识集合中广播该交易提案,同时自己将该交易提案进行缓存,该共识集合中的其他共识节点在收到交易提案后也将该交易提案进行缓存。
在步骤S207中,判断是否满足第二预定条件,该第二预定条件例如定时器期满或者缓存的交易提案的数量达到阈值,当满足第二预定条件,该共识集合中的主节点将缓存中的交易提案打包成第二共识提案,并在该共识集合中发起共识,共识集合中的各个共识节点对各个提案进行投票。该第二预定条件的定时器的时长或者缓存的交易提案的数量的阈值由该共识集合中的各个共识节点投票协商确定。
在此,共识集合中的主节点按照策略将缓存中的交易提案进行打包,该策略可以由每个链自由定制,例如,将10个分片区块提案打包成一个共识提案,或者,分片编号在前的提案具有优先打包权、分片的区块进度可以影响打包优先级,可以平衡各个分片的进度,本申请对此不作限制。
在步骤S208中,当该共识集合通过对该第二共识提案的共识,则将对应的共识消息广播给该联盟链中所有分片中的分片节点,告知这些分片节点该第二共识提案已通过共识。
优选地,该共识集合对该第二共识提案进行共识包括并行化地执行对交易提案的检查,检查这些交易的签名、交易是否合规,诸如交易大小、操作数、权重是否合法等信息。共识集合按照预定规则开启多个线程来并行化地对各个交易提案进行检查,该预定规则包括但不限于按照分片数量确定所开启的线程数量、按照交易数量确定所开启的线程数量等。例如,假设共有10个联盟链分片,则开启10个线程来并行化地对各个交易进行检查;或者,假设共有100个交易,则开启10个线程并行化地对该100个交易进行检查,本申请对此不作限制。随后,该共识集合中的各个共识节点根据检查结果进行投票,当该共识集合通过对该第二共识提案的共识,则将对应的共识消息广播给该联盟链中所有分片中的分片节点。
在步骤S209中,各个联盟链分片中的分片节点接收到该共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。
优选地,各个联盟链分片对应的交易提案具有其对应的哈希值,联盟链分片在将打包的交易提案发送给共识集合时,在该交易提案的特定位置,例如,消息头部,加入基于该交易提案生成的哈希值,共识集合的共识节点收到交易提案,并将该交易提案进行缓存以及广播,之后的共识通信都是以交易提案的哈希值来标识该交易提案,从而进行投票和共识。同样地,当满足第二预定条件,共识集合中的主节点将缓存中的交易提案打包成第二共识提案,同时也生成该第二共识提案的哈希值,主节点将该第二共识提案在该共识集合中进行广播,之后该共识集合的各个共识节点间的共识通信根据该第二共识提案的哈希值进行。哈希值都是固定的,例如是32位的哈希值,其大小与提案大小无关,因此,在之后的共识通信中,通信时间不受提案大小的影响。这样,当提案通过共识之后,各个联盟链分片中的分片节点接收到对应的共识消息,可以根据提案的哈希值来从中识别出与自身分片相关联的提案执行。
在此,共识节点组成共识集合,负责对各个分片提交的区块提案验签、检查交易合法性和共识,然后将达成一致的提案返回给提交的分片去执行。因为所有分片的区块提案是交由链的共识集合统一共识的,如果不能攻破整个共识集合,也就无法对任何一个分片的提案作假,所以,攻击任何一个分片所付出的成本,和攻击全链是一样的。
在一优选实施例中,该联盟链的各个分片中存在跨片交易,所谓跨片交易,即交易的源地址和目的地址分属两个分片,所以需要两个分片的协同处理。
当联盟链分片执行某一笔交易时,发现该交易的目的地址不在本分片内,则根据该目的地址查看其属于哪个分片,该联盟链分片将只执行该跨片交易在本分片内的部分交易,执行成功后,向包含目的地址的分片广播该交易,以及自己的执行结果。该包含目的地址的分片在此称为目的分片。在此,链上的账户被划分到不同的分片,在被划分到不同的分片之后,可以在该账户中添加可以用来标记不同分片的编号或标识,例如,在该账户地址的最前端加上0、1等可以用来区分不同分片的编号。
联盟链分片内的每个分片节点都会向该目的分片广播该跨片交易的剩余部分,以及自己的执行结果,并携带自己的节点地址。如果在本分片内的部分交易执行失败,则视为整笔交易执行失败,不会对目的分片广播。
目的分片的分片节点收到跨片交易的剩余部分后,将其提交到交易池,等待主节点将其打包进交易提案,因为目的分片的分片节点会收到源分片内的多个分片节点的消息,在对比消息内的跨片交易的哈希后,只会将一个跨片交易的剩余部分提交到交易池,但会将所有的消息保存在本地缓存。
如果包含跨片交易的剩余部分的交易提案被共识通过,那么目的分片内的所有分片节点都会执行该交易提案,当分片节点执行到该跨片交易的剩余部分时,还要校验源分片发送过来的执行成功的结果,例如,检查本地缓存区中包含该跨片交易的消息个数,如果消息个数超过了源分片内节点个数的2/3,那么就视该跨片交易在源分片内执行无误,继续执行分片剩余的部分交易。如果执行成功,则更新分片内的世界状态,并生成新区块,跨片交易完成。如果收到消息小于源分片内节点个数的2/3,或者执行失败,那么该跨片交易不会写入新区块,也不会再做其他处理。正常的跨片交易都是可以成功执行的,除非存在作恶企图,或者交易参数本身有错误疏漏。在此,该数值“2/3”仅为举例,而不应视为对本申请的限制,本领域技术人员应能理解,其他可有效用来校验执行结果的数值也应包含在本申请的保护范围之内,并通过引用的方式包含于此。
在此,由于分片技术面临两个重要的考验:分片安全性和跨分片交易校验。这其实本质上是一个问题,即安全问题,一旦某个分片被攻破,那么它所发出的所有跨片交易,都将面临安全校验问题。而区块链的安全性主要由三项安全检查保证:
1、交易合法性校验,即交易是否经过合法授权,比如是否为源账号所有者或源账号所有者授权人的签名;
2、交易合规性校验,比如交易类型、交易序号、交易大小等是否符合配置,交易地址是否正确等;
3、交易逻辑性校验,主要是交易数据本身的正确性和计算是否合理,比如A给B转账100块,但是A账户本身只有10块钱,那么这个交易本身是不符合逻辑的。
如果以上三个条件都能满足,则说明一笔交易没有问题,是安全的。如果所有交易都能得到以上三项条件的有效检查,就说明这个区块链是安全的。黑客或其他作恶者,无论是控制节点、还是修改程序或是用其他手段,最终都是要以破坏以上三项检查中的某一项或全部,来达到作恶目的。所以,只要能保障以上三项检查能正常发挥作用,就可以说这个链是安全的。在本申请中,所有分片联合共识可以保证前两项,即保证交易的合法性和合规性得到有效检查,但是对于第三条,交易的逻辑性则较困难。因为要检查交易的逻辑性,必须获取交易相关者的数据,但交易相关者的数据分散在各个分片中,一个个获取显然是不可能的。所以,交易的逻辑性校验可以通过以下三方面保证:
1、让每个节点参加多个分片,设置节点最少参加分片个数限制。使分片间的节点相互耦合,避免分片内节点太过单一,杜绝某一分片内所有节点联合作恶的可能。只要不出现联合作恶,分片内诚实的节点肯定会按照正常逻辑执行,就能检查出错误的逻辑来。
2、扩大单分片节点个数,设置分片最少节点限制,避免单分片节点个数太少,被黑客全部攻破或产生联合作恶可能。
3、严格检查跨分片交易。分片收到其他分片的跨片交易,需要收到对端分片内2/3以上节点执行成功的消息,才会执行剩余的跨片交易。且接收分片可以主动获取对端分片上一个区块时的账户状态(例如,采用多根默克尔-帕特里夏树),以此来校验数据的正确性和交易的逻辑性。结合第一条,如果接收分片内本身有许多节点也同时参与了对端分片,那么对跨片交易的逻辑校验就更加的容易方便了。
因此,本申请的分片方案,通过全分片联合共识、增加分片节点耦合性、保障分片最小规模、严格检查跨片交易逻辑性等手段,来保证区块链的整体安全性。
根据本申请的另一个方面,还提供了一种在联盟链中实现联合共识分片的节点,其中,所述节点包括在联盟链的共识集合中的共识节点、在联盟链分片中的分片节点中至少任一项。当所述节点作为所述联盟链的共识集合中的共识节点,其包括获取装置、第一广播装置、第一缓存装置、第一打包装置和第一共识装置。
其中,获取装置,用于获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
第一广播装置,用于在所述共识集合中广播所述共识请求;
第一缓存装置,用于在收到所述共识请求后进行缓存;
第一打包装置,用于当满足第一预定条件,将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第一共识装置,用于对所述第一共识提案进行共识,共识通过后,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
具体地,当节点作为共识集合中的共识节点,其上的获取装置获取该联盟链中任一节点发送的共识请求,例如,该发送共识请求的任一节点在该共识请求的特定字段中写入请求加入的一个或多个联盟链分片的编号和/或写入请求加入该共识集合的消息,以及该节点的签名,并基于与该共识节点之间的通信,发送该共识请求;共识节点中的获取装置获取该共识请求。
随后,该共识节点中的第一广播装置将该共识请求在该共识集合中进行广播;该共识节点中的第一缓存装置将该共识请求进行缓存,该共识集合中的其他共识节点上的第一缓存装置收到该共识请求后也将该共识请求进行缓存。
当满足第一预定条件,例如计时器期满或者缓存的共识请求的数量已达到预定阈值,则该共识集合中的主节点上的第一打包装置将缓存中的共识请求打包成第一共识提案,并在该共识集合中发起共识。该共识集合中的主节点可以是推选的也可以是各个共识节点轮值。该计时器的时长或者该共识集合中缓存的共识请求的数量的预定阈值,可以由该共识集合中的各个共识节点投票决定,也可以协商修改。
接着,该共识集合中的各个共识节点上的第一共识装置对该第一共识提案进行共识,共识的时候,消息都是同步广播到联盟链分片中的各个节点的,当该共识集合通过对该第一共识提案的共识,该任一节点加入其所请求要加入的联盟链分片和/或加入其所请求要加入的共识集合。
在一优选实施例中,作为共识节点的节点还包括第一校验装置。接收到共识请求的共识节点,在其上的第一广播装置在该共识集合中广播该共识请求之前,其上的第一校验装置还对该共识请求进行校验,校验该共识请求中所包括的该任一节点的签名是否正确,以及校验该共识请求中请求加入的一个或多个联盟链分片的编号和/或请求加入该共识集合的消息。如果校验未通过则不进行广播,只有校验通过的情况下再将该共识请求在该共识集合中进行广播。
在一优选实施例中,联盟链中的任一节点可以请求创建新的联盟链分片,其在向共识集合的共识节点发送共识请求时,在该共识请求的特定字段中加入其请求创建新的分片的消息;该共识节点的获取装置接收到该共识请求,随后,该共识节点上的第一广播装置、第一缓存装置执行与前述所描述的第一广播装置、第一缓存装置所执行的相同或相似的操作;作为共识节点的节点还包括创建装置,当该共识集合的各个共识节点上的第一共识装置通过对第一共识提案的共识,该创建装置为该任一节点创建新的联盟链分片,并为所述新的联盟链分片分配对应编号;之后该联盟链中的其他节点可以选择加入该新创建的联盟链分片。
在另一优选实施例中,联盟链分片中的分片节点可以选择退出该联盟链分片,共识集合中的共识节点也可以选择退出该共识集合,其同样可以选择向共识集合中的任一共识节点发送共识请求,在该共识请求的特定字段中加入其想退出的联盟链分片的编号,或者加入其想退出共识集合的消息;该共识节点的获取装置接收到该共识请求之后,该共识节点上的其他装置所执行的操作与前述所描述的各个装置执行的操作相同或相似;随后,当该共识集合的各个共识节点的第一共识装置通过对第一共识提案的共识,该任一节点退出该联盟链分片和/或退出该共识集合。
优选地,所述共识集合由多个共识节点组成,作为共识节点的节点还包括记录装置,用于记录所述联盟链的分片的状态信息,所述分片的状态信息包括但不限于总分片个数、每个分片内所有节点的地址、每个分片的区块高度等信息。例如,每个共识节点中都维护了一张状态信息列表,当分片有变化时,例如当有新节点加入或退出其中某一个或某多个联盟链分片,共识集合中的各个共识节点更新该状态信息列表。相类似地,共识集合中的各个共识节点还可以维护有一张共识集合列表,在该共识集合列表中记录有该共识集合中各个共识节点的状态信息,例如该共识集合中总共有多少共识节点、每个共识节点的地址等信息。当该共识集合有变化时,例如当有新的节点加入或退出该共识集合,其对应的状态信息也相应进行更新,共识集合中的各个共识节点更新该共识集合列表。
在一优选实施例中,当所述节点作为所述联盟链分片中的分片节点,特别是作为联盟链分片中的主节点时,其包括第二打包装置;其中,作为共识节点的节点还包括第二广播装置、第二缓存装置、第三打包装置和第二共识装置;其中,作为分片节点的节点还包括第一执行装置。
具体地,某个联盟链分片中的主节点上的第二打包装置将交易池中的交易打包成交易提案,并将该交易提案发送给共识集合中的任一共识节点,该任一共识节点也可以接收到其他分片的主节点发送过来的交易提案;当然,该共识集合中的其他共识节点也会收到其他分片的主节点发送的交易提案。在此,联盟链分片中的主节点可以由该分片中的各个分片节点推选,也可以由各个分片节点轮值。
该共识集合中的任一共识节点接收到该交易提案,其上的第二广播装置在该共识集合中广播该交易提案,同时其上的第二缓存装置将该交易提案进行缓存,该共识集合中的其他共识节点上的第二缓存装置在收到交易提案后也将该交易提案进行缓存。
当满足第二预定条件,该第二预定条件例如定时器期满或者缓存的交易提案的数量达到阈值,该共识集合中的主节点上的第三打包装置将缓存中的交易提案打包成第二共识提案,并在该共识集合中发起共识。该第二预定条件的定时器的时长或者缓存的交易提案的数量的阈值由该共识集合中的各个共识节点投票协商确定。
共识集合中的各个共识节点上的第二共识装置对该第二共识提案进行共识,当该共识集合通过对该第二共识提案的共识,则将对应的共识消息广播给该联盟链中所有分片中的分片节点,告知这些分片节点该第二共识提案已通过共识。
各个联盟链分片中的分片节点接收到该共识消息,其上的第一执行装置从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。
优选地,各个联盟链分片对应的交易提案具有其对应的哈希值,联盟链分片在将打包的交易提案发送给共识集合时,在该交易提案的特定位置,例如,消息头部,加入基于该交易提案生成的哈希值,共识集合的共识节点收到交易提案,并将该交易提案进行缓存以及广播,之后的共识通信都是以交易提案的哈希值来标识该交易提案,从而进行投票和共识。同样地,当满足第二预定条件,共识集合中的主节点上的第三打包装置将缓存中的交易提案打包成第二共识提案,同时也生成该第二共识提案的哈希值,主节点将该第二共识提案在该共识集合中进行广播,之后该共识集合的各个共识节点间的共识通信根据该第二共识提案的哈希值进行。哈希值都是固定的,例如是32位的哈希值,其大小与提案大小无关,因此,在之后的共识通信中,通信时间不受提案大小的影响。这样,当提案通过共识之后,各个联盟链分片中的分片节点上的第一执行装置接收到对应的共识消息,可以根据提案的哈希值来从中识别出与自身分片相关联的提案执行。
在一优选实施例中,作为分片节点的节点还包括第三广播装置和第三缓存装置。具体地,该联盟链分片中的任一分片节点接收交易,该交易可以是用户发起的交易,也可以是由其他分片节点发送过来的交易,该分片节点接收到交易之后,其上的第三广播装置在其所处的联盟链分片中进行广播,同时第三缓存装置将该交易缓存至自身的交易池,该联盟链分片中的其他分片节点上的第三缓存装置在收到广播的交易后也将该交易缓存至各自的交易池;随后,当满足第三预定条件,该第三预定条件例如定时器期满或者交易池中的交易数量达到阈值,该联盟链分片中的主节点上的第二打包装置将交易池中的交易打包成交易提案,再将该交易提案发送至共识集合中的任一共识节点。在此,该第三预定条件的定时器的时长或者该交易池中的交易数量的阈值由各个分片自由配置,可以由分片内所有分片节点通过内部投票协商修改。
优选地,作为共识节点的节点还包括并行化装置,用于并行化地执行对所述交易提案的检查,检查这些交易的签名、交易是否合规,诸如交易大小、操作数、权重是否合法等信息。共识集合按照预定规则开启多个线程来并行化地对各个交易提案进行检查,该预定规则包括但不限于按照分片数量确定所开启的线程数量、按照交易数量确定所开启的线程数量等。例如,假设共有10个联盟链分片,则开启10个线程来并行化地对各个交易进行检查;或者,假设共有100个交易,则开启10个线程并行化地对该100个交易进行检查,本申请对此不作限制。随后,该共识集合中的各个共识节点上的第二共识装置根据检查结果对该第二共识提案进行共识,共识通过后,将对应的共识消息广播给该联盟链中所有分片中的分片节点。
在一优选实施例中,分片节点的第三广播装置接收到的交易包括跨片交易,所谓跨片交易,即交易的源地址和目的地址分属两个分片,所以需要两个分片的协同处理。则该分片节点的第一执行装置执行所述跨片交易在本分片内的部分交易;其中,作为分片节点的节点还包括:
检查装置,用于检查所述跨片交易的目的地址;
第四广播装置,用于将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述节点还作为所述目的分片中的分片节点,其上的第三广播装置接收到所述跨片交易的剩余部分,并调用所述第三缓存装置、第二打包装置执行对应的缓存、打包提案的操作并发送给所述共识集合进行共识;
所述目的分片中的分片节点还包括第二校验装置,用于校验所述执行成功的结果;
所述目的分片中的分片节点的第一执行装置,用于在校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
具体地,该联盟链的各个分片中存在跨片交易,当联盟链分片执行某一笔交易时,发现该交易的目的地址不在本分片内,则其上的检查装置根据该目的地址查看其属于哪个分片,该联盟链分片的分片节点上的第一执行装置将只执行该跨片交易在本分片内的部分交易,执行成功后,其上的第四广播装置向包含目的地址的分片广播该交易,以及自己的执行结果。该包含目的地址的分片在此称为目的分片。在此,链上的账户被划分到不同的分片,在被划分到不同的分片之后,可以在该账户中添加可以用来标记不同分片的编号或标识,例如,在该账户地址的最前端加上0、1等可以用来区分不同分片的编号。
联盟链分片内的每个分片节点,其上的第四广播装置都会向该目的分片广播该跨片交易的剩余部分,以及自己的执行结果,并携带自己的节点地址。如果在本分片内的部分交易执行失败,则视为整笔交易执行失败,不会对目的分片广播。
目的分片的分片节点,其上的第三广播装置收到跨片交易的剩余部分后,将其提交到交易池,等待主节点将其打包进交易提案,例如调用该分片节点上的第三缓存装置、第二打包装置执行对应的缓存、打包提案的操作并发送给该共识集合进行共识。因为目的分片的分片节点会收到源分片内的多个分片节点的消息,在对比消息内的跨片交易的哈希后,只会将一个跨片交易的剩余部分提交到交易池,但会将所有的消息保存在本地缓存。
如果包含跨片交易的剩余部分的交易提案被共识通过,那么目的分片内的所有分片节点都会执行该交易提案,当分片节点执行到该跨片交易的剩余部分时,还要校验源分片发送过来的执行成功的结果,例如,目的分片中的分片节点上的第二校验装置,检查本地缓存区中包含该跨片交易的消息个数,如果消息个数超过了源分片内节点个数的2/3,那么就视该跨片交易在源分片内执行无误,目的分片中的分片节点的第一执行装置继续执行该跨片交易的剩余部分。如果执行成功,则更新分片内的世界状态,并生成新区块,跨片交易完成。如果收到消息小于源分片内节点个数的2/3,或者执行失败,那么该跨片交易不会写入新区块,也不会再做其他处理。正常的跨片交易都是可以成功执行的,除非存在作恶企图,或者交易参数本身有错误疏漏。在此,该数值“2/3”仅为举例,而不应视为对本申请的限制,本领域技术人员应能理解,其他可有效用来校验执行结果的数值也应包含在本申请的保护范围之内,并通过引用的方式包含于此。
虽然前面特别示出并且描述了示例性实施例,但是本领域技术人员将会理解的是,在不背离条款书的精神和范围的情况下,在其形式和细节方面本发明可以有所变化。这里所寻求的保护在所附条款书中做了阐述。在下列编号条款中规定了各个实施例的这些和其他方面:
1.一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:
联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;
当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
2.根据条款1所述的方法,其中,所述任一共识节点在所述共识集合中广播所述共识请求之前,还包括:
对所述共识请求进行校验,校验所述共识请求中所包括的所述任一节点的签名以及请求加入所述一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息。
3.根据条款1或2所述的方法,其中,所述共识集合由多个共识节点组成,所述共识节点中记录有所述联盟链的分片的状态信息,所述分片的状态信息至少包括总分片个数、每个分片内所有节点的地址、每个分片的区块高度中至少任一项。
4.根据条款1至3中任一项所述的方法,其中,该方法还包括:
所述联盟链分片中的主节点将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点;
所述共识集合中的任一共识节点接收到所述交易提案,在所述共识集合中广播所述交易提案,所述共识集合中的各个共识节点在收到所述交易提案后进行缓存;
当满足第二预定条件,所述共识集合中的主节点将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第二共识提案的共识,将对应的共识消息广播给所述联盟链中所有分片中的分片节点;
各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。
5.根据条款4所述的方法,其中,所述联盟链分片中的主节点将交易池中的交易打包成交易提案之前还包括:
所述联盟链分片中的任一分片节点接收交易,在其所处的联盟链分片中进行广播,所述联盟链分片的各个分片节点在收到所述交易后缓存至各自的交易池;
当满足第三预定条件,所述联盟链分片中的主节点将交易池中的交易打包成交易提案。
6.根据条款4或5所述的方法,其中,各个联盟链分片对应的交易提案具有其对应的哈希值,所述各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
所述各个联盟链分片中的分片节点接收到所述共识消息,根据所述交易提案的哈希值,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案。
7.根据条款4至6中任一项所述的方法,其中,所述共识集合对所述第二共识提案进行共识包括:
并行化地执行对所述交易提案的检查,所述共识集合中的各个共识节点根据检查结果对所述第二共识提案进行共识。
8.根据条款4至7中任一项所述的方法,其中,所述第二共识提案具有其对应的哈希值,将所述第二共识提案在所述共识集合中发起共识包括:
将所述第二共识提案在所述共识集合中进行广播,之后所述共识集合的各个共识节点间的共识通信根据所述第二共识提案的哈希值进行。
9.根据条款5所述的方法,其中,所述联盟链分片中的任一分片节点接收到的交易包括跨片交易,所述从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
执行所述跨片交易在本分片内的部分交易;
其中,该方法还包括:
检查所述跨片交易的目的地址;
将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述目的分片中的分片节点接收到所述跨片交易的剩余部分,进行缓存、打包提案并发送给所述共识集合进行共识的操作;
所述目的分片校验所述执行成功的结果,校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
10.根据条款1所述的方法,其中,所述联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求中包括所述任一节点请求创建新的联盟链分片的消息;
当所述共识集合通过对所述第一共识提案的共识,为所述任一节点创建新的联盟链分片,并为所述新的联盟链分片分配对应编号。
11.根据条款1所述的方法,其中,所述联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求中包括所述任一节点请求退出的一个或多个联盟链分片的编号和/或请求退出所述共识集合的消息;
当所述共识集合通过对所述第一共识提案的共识,所述任一节点退出所述联盟链分片和/或退出所述共识集合。
12.一种在联盟链中实现联合共识分片的节点,其中,所述节点包括在联盟链的共识集合中的共识节点、在联盟链分片中的分片节点中至少任一项;当所述节点作为所述联盟链的共识集合中的共识节点,其包括:
获取装置,用于获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
第一广播装置,用于在所述共识集合中广播所述共识请求;
第一缓存装置,用于在收到所述共识请求后进行缓存;
第一打包装置,用于当满足第一预定条件,将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第一共识装置,用于对所述第一共识提案进行共识,共识通过后,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
13.根据条款12所述的节点,其中,作为共识节点的节点还包括:
第一校验装置,用于对所述共识请求进行校验,校验所述共识请求中所包括的所述任一节点的签名以及请求加入所述一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息。
14.根据条款12或13所述的节点,其中,所述共识集合由多个共识节点组成,作为共识节点的节点还包括:
记录装置,用于记录所述联盟链的分片的状态信息,所述分片的状态信息至少包括总分片个数、每个分片内所有节点的地址、每个分片的区块高度中至少任一项。
15.根据条款12至14中任一项所述的节点,其中,当所述节点作为所述联盟链分片中的分片节点,其包括:
第二打包装置,用于将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点,此时所述分片节点作为所述联盟链分片中的主节点;
第一执行装置,用于在接收到共识节点发送的共识消息后,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片;
其中,作为共识节点的节点还包括:
第二广播装置,用于接收到所述交易提案后,在所述共识集合中广播所述交易提案;
第二缓存装置,用于在收到所述交易提案后进行缓存;
第三打包装置,用于当满足第二预定条件,将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第二共识装置,用于对所述第二共识提案进行共识,共识通过后,将对应的共识消息广播给所述联盟链中所有分片中的分片节点。
16.根据条款15所述的节点,其中,作为分片节点的节点还包括:
第三广播装置,用于接收交易后,在其所处的联盟链分片中进行广播;
第三缓存装置,用于在收到所述交易后缓存至各自的交易池;
其中,所述第二打包装置用于当满足第三预定条件,将交易池中的交易打包成交易提案,此时所述分片节点作为所述联盟链分片中的主节点。
17.根据条款15或16所述的节点,其中,各个联盟链分片对应的交易提案具有其对应的哈希值,所述第一执行装置用于:
在接收到所述共识消息后,根据所述交易提案的哈希值,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案。
18.根据条款15至17中任一项所述的节点,其中,作为共识节点的节点还包括:
并行化装置,用于并行化地执行对所述交易提案的检查,所述共识集合中的各个共识节点根据检查结果对所述第二共识提案进行共识。
19.根据条款15至18中任一项所述的节点,其中,所述第二共识装置用于:
将所述第二共识提案在所述共识集合中进行广播,之后所述共识集合的各个共识节点间的共识通信根据所述第二共识提案的哈希值进行。
20.根据条款16所述的节点,其中,所述第三广播装置接收到的交易包括跨片交易,所述第一执行装置用于:
执行所述跨片交易在本分片内的部分交易;
其中,作为分片节点的节点还包括:
检查装置,用于检查所述跨片交易的目的地址;
第四广播装置,用于将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述节点还作为所述目的分片中的分片节点,其上的第三广播装置接收到所述跨片交易的剩余部分,并调用所述第三缓存装置、第二打包装置执行对应的缓存、打包提案的操作并发送给所述共识集合进行共识;
所述目的分片中的分片节点还包括第二校验装置,用于校验所述执行成功的结果;
所述目的分片中的分片节点的第一执行装置,用于在校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
21.根据条款12所述的节点,其中,所述获取装置获取的共识请求中包括所述任一节点请求创建新的联盟链分片的消息;
作为共识节点的节点还包括:
创建装置,用于当所述共识集合通过对所述第一共识提案的共识,为所述任一节点创建新的联盟链分片,并为所述新的联盟链分片分配对应编号。
22.根据条款12所述的节点,其中,所述获取装置获取的共识请求中包括所述任一节点请求退出的一个或多个联盟链分片的编号和/或请求退出所述共识集合的消息;
所述第一共识装置用于对所述第一共识提案进行共识,共识通过后,所述任一节点退出所述联盟链分片和/或退出所述共识集合。
23.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如条款1至11中任一项所述的方法被执行。
24.一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如条款1至11中任一项所述的方法被执行。
25.一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如条款1至11中任一项所述的方法。
本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (15)

1.一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:
联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;
当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
2.根据权利要求1所述的方法,其中,所述任一共识节点在所述共识集合中广播所述共识请求之前,还包括:
对所述共识请求进行校验,校验所述共识请求中所包括的所述任一节点的签名以及请求加入所述一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息。
3.根据权利要求1或2所述的方法,其中,所述共识集合由多个共识节点组成,所述共识节点中记录有所述联盟链的分片的状态信息,所述分片的状态信息至少包括总分片个数、每个分片内所有节点的地址、每个分片的区块高度中至少任一项。
4.根据权利要求1所述的方法,其中,该方法还包括:
所述联盟链分片中的主节点将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点;
所述共识集合中的任一共识节点接收到所述交易提案,在所述共识集合中广播所述交易提案,所述共识集合中的各个共识节点在收到所述交易提案后进行缓存;
当满足第二预定条件,所述共识集合中的主节点将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第二共识提案的共识,将对应的共识消息广播给所述联盟链中所有分片中的分片节点;
各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。
5.根据权利要求4所述的方法,其中,所述联盟链分片中的主节点将交易池中的交易打包成交易提案之前还包括:
所述联盟链分片中的任一分片节点接收交易,在其所处的联盟链分片中进行广播,所述联盟链分片的各个分片节点在收到所述交易后缓存至各自的交易池;
当满足第三预定条件,所述联盟链分片中的主节点将交易池中的交易打包成交易提案。
6.根据权利要求4或5所述的方法,其中,各个联盟链分片对应的交易提案具有其对应的哈希值,所述各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
所述各个联盟链分片中的分片节点接收到所述共识消息,根据所述交易提案的哈希值,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案。
7.根据权利要求4或5所述的方法,其中,所述共识集合对所述第二共识提案进行共识包括:
并行化地执行对所述交易提案的检查,所述共识集合中的各个共识节点根据检查结果对所述第二共识提案进行共识。
8.根据权利要求5所述的方法,其中,所述联盟链分片中的任一分片节点接收到的交易包括跨片交易,所述从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
执行所述跨片交易在本分片内的部分交易;
其中,该方法还包括:
检查所述跨片交易的目的地址;
将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述目的分片中的分片节点接收到所述跨片交易的剩余部分,进行缓存、打包提案并发送给所述共识集合进行共识的操作;
所述目的分片校验所述执行成功的结果,校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
9.一种在联盟链中实现联合共识分片的节点,其中,所述节点包括在联盟链的共识集合中的共识节点、在联盟链分片中的分片节点中至少任一项;当所述节点作为所述联盟链的共识集合中的共识节点,其包括:
获取装置,用于获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
第一广播装置,用于在所述共识集合中广播所述共识请求;
第一缓存装置,用于在收到所述共识请求后进行缓存;
第一打包装置,用于当满足第一预定条件,将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第一共识装置,用于对所述第一共识提案进行共识,共识通过后,所述任一节点加入所述联盟链分片和/或加入所述共识集合。
10.根据权利要求9所述的节点,其中,当所述节点作为所述联盟链分片中的分片节点,其包括:
第二打包装置,用于将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点,此时所述分片节点作为所述联盟链分片中的主节点;
第一执行装置,用于在接收到共识节点发送的共识消息后,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片;
其中,作为共识节点的节点还包括:
第二广播装置,用于接收到所述交易提案后,在所述共识集合中广播所述交易提案;
第二缓存装置,用于在收到所述交易提案后进行缓存;
第三打包装置,用于当满足第二预定条件,将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;
第二共识装置,用于对所述第二共识提案进行共识,共识通过后,将对应的共识消息广播给所述联盟链中所有分片中的分片节点。
11.根据权利要求10所述的节点,其中,作为分片节点的节点还包括:
第三广播装置,用于接收交易后,在其所处的联盟链分片中进行广播;
第三缓存装置,用于在收到所述交易后缓存至各自的交易池;
其中,所述第二打包装置用于当满足第三预定条件,将交易池中的交易打包成交易提案,此时所述分片节点作为所述联盟链分片中的主节点。
12.根据权利要求10或11所述的节点,其中,作为共识节点的节点还包括:
并行化装置,用于并行化地执行对所述交易提案的检查,所述共识集合中的各个共识节点根据检查结果对所述第二共识提案进行共识。
13.根据权利要求11所述的节点,其中,所述第三广播装置接收到的交易包括跨片交易,所述第一执行装置用于:
执行所述跨片交易在本分片内的部分交易;
其中,作为分片节点的节点还包括:
检查装置,用于检查所述跨片交易的目的地址;
第四广播装置,用于将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述节点还作为所述目的分片中的分片节点,其上的第三广播装置接收到所述跨片交易的剩余部分,并调用所述第三缓存装置、第二打包装置执行对应的缓存、打包提案的操作并发送给所述共识集合进行共识;
所述目的分片中的分片节点还包括第二校验装置,用于校验所述执行成功的结果;
所述目的分片中的分片节点的第一执行装置,用于在校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如权利要求1至8中任一项所述的方法被执行。
15.一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的方法。
CN202010834814.0A 2020-08-18 2020-08-18 一种在联盟链中实现联合共识分片的方法和装置 Active CN112039860B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010834814.0A CN112039860B (zh) 2020-08-18 2020-08-18 一种在联盟链中实现联合共识分片的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010834814.0A CN112039860B (zh) 2020-08-18 2020-08-18 一种在联盟链中实现联合共识分片的方法和装置

Publications (2)

Publication Number Publication Date
CN112039860A CN112039860A (zh) 2020-12-04
CN112039860B true CN112039860B (zh) 2021-04-06

Family

ID=73577990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010834814.0A Active CN112039860B (zh) 2020-08-18 2020-08-18 一种在联盟链中实现联合共识分片的方法和装置

Country Status (1)

Country Link
CN (1) CN112039860B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112910982B (zh) * 2021-01-27 2023-06-16 网易(杭州)网络有限公司 一种联盟链的节点准入方法、装置、电子设备及存储介质
CN113656509B (zh) * 2021-08-26 2024-05-31 支付宝(杭州)信息技术有限公司 区块链系统中执行交易的方法及装置
CN113468200B (zh) * 2021-09-01 2021-12-21 支付宝(杭州)信息技术有限公司 对区块链系统中的分片进行扩容的方法及装置
CN113821566A (zh) * 2021-09-10 2021-12-21 杭州链网科技有限公司 一种基于多链分片的区块链聚合架构
CN113852470B (zh) * 2021-09-23 2024-04-05 北京新华夏信息技术有限公司 提案广播方法、装置、设备和存储介质
CN114119242B (zh) * 2022-01-28 2023-03-14 浙商银行股份有限公司 基于自适应窗口分片的联盟链性能优化方法及装置
CN114385761B (zh) * 2022-03-23 2022-07-12 支付宝(杭州)信息技术有限公司 一种基于共识系统的共识数据存储、获取方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936589B (zh) * 2017-04-21 2020-02-07 杭州秘猿科技有限公司 一种无中心的许可链平行分片方法及交易方法
CN110832825B (zh) * 2017-05-22 2022-10-21 维萨国际服务协会 通过防篡改数据提高验证速度的网络的方法和节点
CN108847925B (zh) * 2018-06-20 2020-09-15 深圳大学 一种基于树状结构的分片区块链生成方法
CN109146447B (zh) * 2018-07-09 2022-07-05 矩阵元技术(深圳)有限公司 区块链透明分片方法、装置及系统
CN109150972B (zh) * 2018-07-17 2021-07-23 湖南宸瀚信息科技有限责任公司 一种双层分片的高效区块链的共识机制的工作方法
WO2020022957A1 (en) * 2018-07-27 2020-01-30 Aioz Pte Ltd Method and apparatus for transaction verification in a blockchain-based network
CN108881488B (zh) * 2018-08-01 2020-12-22 夸克链科技(深圳)有限公司 一种基于分域的区块链交易处理方法及网络
CN110896389B (zh) * 2018-09-12 2022-03-15 普天信息技术有限公司 一种区块链的共识方法、电子设备和计算机可读存储介质
CN109510876A (zh) * 2018-12-20 2019-03-22 弗洛格(武汉)信息科技有限公司 一种基于pbft的联盟链分片方法及相应的联盟链
CN110400140A (zh) * 2019-06-04 2019-11-01 西安电子科技大学 基于Fabric的分层分片交易信息处理方法及应用
CN110570202B (zh) * 2019-09-02 2022-06-03 杭州趣链科技有限公司 一种基于分片技术的混合共识方法
CN111428275B (zh) * 2020-03-13 2021-03-26 华东师范大学 一种面向联盟链的服务不停机分片增加方法
CN111526216B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统

Also Published As

Publication number Publication date
CN112039860A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112039860B (zh) 一种在联盟链中实现联合共识分片的方法和装置
CN112041873B (zh) 区块链网络划分
US10630463B2 (en) Meta block chain
US20210256016A1 (en) Blockchain system and method
CN111383021B (zh) 基于区块链网络的节点管理方法、装置、设备及介质
US11171774B2 (en) System for synchronizing a cryptographic key state through a blockchain
EP4332870A1 (en) Transaction data processing method and apparatus, computer device and storage medium
CN110286849B (zh) 数据存储系统的数据处理方法和装置
CN111144866B (zh) 数据转移方法、装置、节点设备及存储介质
KR20190054738A (ko) 비잔틴 장애를 극복 가능한 블록체인 생성 방법
CN113256424B (zh) 一种交易数据处理方法、装置、设备及存储介质
CN113518005B (zh) 一种区块共识方法、装置、设备及存储介质
US20200067912A1 (en) Implementing authentication protocol for merging multiple server nodes with trusted platform modules utilizing provisioned node certificates to support concurrent node add and remove
CN113626875A (zh) 一种区块链分片赋能的知识图谱文件存储方法
WO2022156507A1 (zh) 虚拟光驱生成方法、装置及计算机可读存储介质
CN113037824B (zh) 一种面向云计算的高性能区块链的构建方法
CN112583908B (zh) 应用于出块节点的区块链共识方法、系统、设备及介质
CN112600698B (zh) 应用于非出块节点的区块链共识方法、系统、设备及介质
Amiri et al. Rashnu: Data-dependent order-fairness
CN114584556B (zh) 文件传输方法和装置
US11627128B2 (en) Network management using trusted execution environments
Graves High performance password cracking by implementing rainbow tables on nVidia graphics cards (IseCrack)
EP4318266A1 (en) New data content packet, system and method for secure updating in distributed ledger networks
CN116388957A (zh) 一种基于区块链的链下扩容技术
KR20240002729A (ko) 외부 저장장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템, 장치 및 방법

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
GR01 Patent grant
GR01 Patent grant