1.本公开一个或多个实施例涉及将区块链网络承载的信息向多个客户端节点分发的方法、用于对网络节点集进行配置的方法和系统、以及电子设备。
背景技术:
2.在本文中,为了方便和易于参考,使用术语“区块链”。区块链是由一系列区块组成的链式数据库,每个区块上除了记录本区块的数据外还记录上一个区块的哈希(hash)值。本文使用此术语时的所指,除上述的区块链之外,还可以包括替代链、侧链和交易链技术、许可和未许可的分类账、共享分类账及其变体等。
3.近年来,使用区块链技术的服务已得到积极开发。区块链技术可以防止篡改注册数据,并通过多个参与者相互监督以高可靠性存储这样的注册数据。为此,存在对新技术的需求。
技术实现要素:
4.本公开一个或多个实施例的目的之一是提供将区块链网络承载的信息向多个客户端节点分发的方法、用于对网络节点集进行配置的方法和系统、以及电子设备。
5.根据本公开一个或多个实施例的一个方面,提供了一种将区块链网络承载的信息向多个客户端节点分发的方法,所述区块链网络包括第一区块链节点,所述多个客户端节点包括一个或多个第一类节点和一个或多个第二类节点,所述方法包括:通过在所述区块链网络上运行智能合约来生成用于所述区块链网络之外的所述多个客户端节点的目标方面的信息;由所述一个或多个第一类节点中的第一第一类节点监听所述第一区块链节点处的收据,以及响应于所述第一区块链节点处生成包含与所述目标方面相关联的主题的收据,由所述第一第一类节点从所述第一区块链节点获取与所述目标方面相关联的第一数据;由所述第一第一类节点基于所述第一数据得到并存储所述目标方面的信息;以及由所述一个或多个第二类节点中的第一第二类节点从所述第一第一类节点获取所述目标方面的信息。
6.根据本公开一个或多个实施例的又一个方面,提供了一种用于对网络节点集进行配置的方法,包括:通过在区块链网络上运行智能合约来生成用于所述区块链网络之外的网络节点集的配置信息;由所述网络节点集中的第一类节点监听所述区块链网络中的区块链节点处的收据,以及响应于所述区块链节点处生成包含与所述配置信息相关联的主题的收据,由所述第一类节点从所述区块链节点获取所述配置信息、存储所述配置信息、并根据所述配置信息进行自身节点的配置;以及由所述网络节点集中的第二类节点从所述第一类节点获取所述配置信息、并根据所述配置信息进行自身节点的配置。
7.根据本公开一个或多个实施例的又一个方面,提供了一种用于对网络节点集进行配置的系统,包括:区块链网络,被配置为运行智能合约以生成用于所述区块链网络之外的网络节点集的配置信息;第一类节点,包括所述网络节点集中的一个或多个节点,所述第一
类节点被配置为监听所述区块链网络中的区块链节点处的收据,以及响应于所述区块链节点处生成包含与所述配置信息相关联的主题的收据,从所述区块链节点获取所述配置信息、存储所述配置信息、并根据所述配置信息进行自身节点的配置;以及第二类节点,包括所述网络节点集中的除所述第一类节点之外的一个或多个节点,所述第二类节点被配置为从所述第一类节点获取所述配置信息、并根据所述配置信息进行自身节点的配置。
8.根据本公开一个或多个实施例的又一个方面,提供了一种电子设备,包括:第一通信模块,被配置为监听区块链网络中的至少一个区块链节点处的收据,并响应于所述至少一个区块链节点处生成包含与目标方面相关联的主题的收据,从所述至少一个区块链节点获取与所述目标方面相关联的数据,其中,所述区块链网络通过运行智能合约来生成用于所述区块链网络之外的包括所述电子设备在内的多个客户端节点的所述目标方面的信息,所述第一通信模块通过所述区块链网络的sdk与所述至少一个区块链节点建立加密通信以从所述至少一个区块链节点获取与所述目标方面相关联的数据;数据处理模块,被配置为基于所述数据得到所述目标方面的信息;存储模块,被配置为存储所述目标方面的信息;以及服务提供模块,被配置为响应于其他设备的查询请求,将所述存储模块中存储的所述目标方面的信息提供给所述其他设备。
9.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
10.构成说明书的一部分的附图描述了本公开的一个或多个实施例,并且连同说明书一起用于解释本公开一个或多个实施例的原理。
11.参照附图,根据下面的详细描述,可以更加清楚地理解本公开一个或多个实施例,其中:
12.图1是能在其中应用根据本公开一个或多个示例性实施例的通信系统的结构示意图。
13.图2是应用根据本公开一个或多个示例性实施例的将区块链网络承载的信息向多个客户端节点分发的方法的系统的结构示意图。
14.图3是应用根据本公开一个或多个示例性实施例的将区块链网络承载的信息向多个客户端节点分发的方法的系统的结构示意图。
15.图4是根据本公开一个或多个示例性实施例的用于对网络节点集进行配置的系统的结构示意图。
16.图5是根据本公开一个或多个示例性实施例的用于对网络节点集进行配置的系统的结构示意图。
17.图6是根据本公开一个或多个示例性实施例的用于对网络节点集进行配置的系统的结构示意图。
18.图7是根据本公开一个或多个示例性实施例的电子设备的结构示意图。
19.图8是可应用于根据本公开一个或多个示例性实施例的通用硬件系统的示例性框图。
具体实施方式
20.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。然而应当理解的是,本公开一个或多个实施例可以以多种不同的方式呈现出来,并不局限于下文描述的实施例。还应当理解的是,本公开一个或多个实施例能够以各种方式进行组合,从而提供更多额外的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
21.应当理解的是,在所有附图中,相同的附图标记表示相同的元件。在附图中,为清楚起见,某些特征的尺寸可以进行变形。
22.应当理解的是,本文中的用语仅用于描述特定的实施例,并不旨在限定。本文使用的所有术语(包括技术术语和科学术语)除非另外定义,均具有本领域技术人员通常理解的含义。为简明和/或清楚起见,公知的功能或结构可以不再详细说明。
23.在本文中,用语“连接”意图包含一个特征与另一个特征的物理、电性、和/或通信连接,并且这一个特征与另一个特征之间可以存在也可以不存在中间特征。当连接为通信连接时,即使提及a与b“直接连接”,只是意图强调a与b的连接之间不存在本公开一个或多个实施例所强调的一个或多个特征,但并不代表限制a与b之间不经过任何元件而连接,本领域技术人员应理解,a与b之间可以通过线缆、路由器、网关、信道、链路、网络等相连接。需要说明的是,在本公开一个或多个实施例的附图中,a与b之间的无论是直接连接还是间接连接都通过连接在a与b之间的直线或其他图形元素来表示。
24.在本文中,用语“a或b”包括“a和b”以及“a或b”,而不是排他地仅包括“a”或者仅包括“b”,除非另有特别说明。
25.在本文中,用语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开一个或多个实施例不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
26.在本文中,用语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。用语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
27.另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
28.还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
29.应当注意,在本文中,当提供多个相同或相似的元素时,可以使用两部分的附图标记(例如第一类节点206-1)在附图中标记它们。这些元素在本文中可以通过它们的全部附图标记(例如第一类节点206-1)单独地指代,也可以由它们的附图标记的第一部分(例如第
一类节点206)共同地指代。
30.为便于理解,下面对本公开一个或多个实施例中涉及的术语进行说明。
31.节点/网络节点:网络中的参与者。网络中的每个参与者是一个节点,节点参与网络组建和数据交换。
32.区块链网络:由分布式网络上的多个参与者通过共识规则共同维护基于区块链技术的链式数据的系统。
33.区块链节点:区块链网络中的网络节点。每个区块链节点具有一份完整的账本拷贝,具有参与区块链网络共识和账本维护的能力。
34.客户端节点:为与“区块链节点”进行区分,在本文中,将由区块链网络向其提供服务(例如向其提供区块链网络所承载的一个或多个方面的信息)的网络节点称为“客户端节点”。
35.智能合约:计算机可执行程序,其可以处理输入以产生结果,从而可以利用区块链网络来自动执行的合约或协议条款。
36.事件:除另有说明,在本文中指区块链网络中发生的特定事件或智能合约设置的特定通知。例如,事件可以包括产生了新的区块、用户发起了新的交易、智能合约特定的方法被调用等。
37.物联网(internet of things,iot):互连和/或互联的设备的系统。在该系统中,设备通过一个或多个通信网络获取、收集和/或转移内容或数据(诸如例如文本文件、图像、音频文件、视频文件、web页面、物理现象的测量结果等)。
38.iot设备:物联网中的节点,其可以是物理对象或虚拟对象。iot设备通常指的是例如嵌入在物理世界中并通过网络与计算资源连接的传感器等设备,可以用来收集数据或执行动作等。
39.在iot或类iot(例如分布式系统)的场景下,iot或类iot网络中的各个设备在启动后需要有初始的配置信息。管理员可以通过配置中心的服务来生成或更改配置信息。可以通过区块链网络来承载这些配置信息,以保证被存储的配置信息的可靠性。在这种情况下,配置中心的服务可以由能够在区块链网络中运行的智能合约来实现。区块链网络的各个参与方通过在智能合约里对配置信息进行投票等操作,来对配置信息进行修改。
40.通过区块链网络承载的信息需要下发到iot或类iot网络中的各个设备。一种实现方法是,iot或类iot网络中的各个设备分别向区块链网络中的各个区块链节点订阅特定事件(例如通过监听相应区块链节点处的收据中的特定主题(topic)),使得各个设备在用于iot或类iot网络中的设备的信息生成之后可以从区块链节点获取到该信息,从而使用这些信息例如进行自身设备的配置。在这样的实现方式中,存在多个设备(例如iot设备或分布式系统的各个组成部分)同时订阅链上事件的可能。而区块链节点的事件订阅连接的个数存在上限,如果设备较多,则区块链节点需要扩容,成本增高。此外,如果设备与区块链节点之间的事件订阅连接中断,则在事件订阅连接中断期间,设备无法获得区块链网络中生成的信息。另外,新设备入网时也无法及时获得用于设备初始化的配置信息等。
41.根据本公开一个或多个实施例,可以方便地将区块链网络承载的信息向多个客户端节点分发。在一些实施例中,区块链网络承载(包括例如存储和维护等)的信息例如可以是各个客户端节点的配置信息、动作/操作通知、操作日志等。根据本公开一个或多个实施
例,可以通过区块链网络承载用于网络节点集的配置信息,并利用这样的配置信息对网络节点集中的节点进行配置。在一些实施例中,上述客户端节点或网络节点集中的节点可以是iot设备。
42.图1是能在其中应用根据本公开一个或多个示例性实施例的通信系统100的结构示意图。通信系统100包括区块链网络102和由区块链网络102向其提供服务的多个客户端节点108。多个客户端节点108形成网络节点集。在通信系统100中,可以将区块链网络102所承载的一个或多个方面的信息,例如各个客户端节点108的配置信息、动作/操作通知、操作日志等,向多个客户端节点108分发。
43.区块链网络102包括多个参与者,即多个区块链节点104。每个区块链节点104通过共识规则共同维护基于区块链技术的区块链网络102。每个区块链节点104具有一份完整的账本拷贝,具有参与区块链网络102共识和账本维护的能力。每个区块链节点104处生成的每个区块中,可以存储有该区块所涉及的各个交易、记录各个交易的结果等信息的相应的收据、以及区块链网络102维护的各个账户的状态。由具有管理网络节点集中的多个客户端节点108的权限的账号,通过发起在区块链网络102上运行智能合约,可以生成(包括创建、更新和删除)用于网络节点集中的多个客户端节点108的各个方面的信息,例如配置信息、动作/操作通知、操作日志等。
44.在本文中,区块链网络102可以是由多个组织运营的联盟网络或由单个组织运营的私有网络。然而,对区块链网络102的类型没有特别限制。例如,区块链网络102可以是不特别限制参与者的公共网络。
45.对在区块链网络102中使用的通信方法或线路的类型没有特别限制。例如,区块链网络102可以由诸如互联网协议-虚拟专用网(ip-vpn)的租用线路网络来实现。此外,区块链网络102可以由诸如因特网的公用线路网络、电话线路网络或卫星通信网络来实现。此外,区块链网络102可以由包括以太网(注册商标)的各种局域网(lan)、广域网(wan)等来实现。此外,可以通过诸如wi-fi(注册商标)或蓝牙(注册商标)的无线通信网络来实现区块链网络102。
46.每个客户端节点108可以是一个或多个网络116中的任何参与者。一个或多个网络116可以包括由各客户端节点108中的一些组成的通信网络,例如,机器对机器(m2m)网络、iot网络等。一个或多个网络116中的任一个可以是固定网络(例如,以太网、光纤、isdn、plc等)或无线网络(例如,wlan、蜂窝等)或异构网络的网络。例如,一个或多个网络116中的任一个可以包括向多个用户提供诸如语音、数据、视频、消息、广播等的内容的多个接入网络。例如,一个或多个网络116中的任一个可以采用一种或多种信道接入方法,例如码分多址(cdma)、时分多址(tdma)、频分多址(fdma)、正交fdma(ofdma)、单载波fdma(sc-fdma)等。此外,一个或多个网络116中的任一个可以包括其他网络,诸如核心网络、互联网、传感器网络、工业控制网络、个人局域网、融合个人网络、卫星网络、家庭网络或企业网络。
47.各客户端节点108之间可以通过运营商网络等进行通信或直接无线电链路和/或有线线路进行通信。例如,一个客户端节点108可以收集数据并通过运营商网络或直接无线电链路将数据发送到另一个客户端节点108。客户端节点108的示例包括但不限于平板电脑、智能手机、医疗装置、温度和天气监视器、联网的汽车、智能仪表、游戏机、个人数字助理、健康和健身监视器、灯、恒温器、器具、车库门以及其他基于执行器的装置、安全装置和
智能插座等。
48.在一些实施例中,各客户端节点108中的一些可以是分布式系统中的各个组成部分,例如分布式存储系统、分布式计算系统、分布式流式计算系统、分布式搜索系统、分布式发布订阅消息系统、分布式业务系统等系统中的各个组成节点。
49.在一些实施例中,各客户端节点108中的一些可以是iot网络中的iot设备。在这些实施例中,iot设备常在存储器、尺寸、功能或性能方面受限,从而可能部署大量的设备,以实现与高性能设备类似的性能。然而,iot设备可以是智能电话、膝上型设备、平板设备、或pc、或其他较大设备。而且,iot设备可以是虚拟设备,诸如智能电话或其他计算设备上的应用。iot设备可包括iot网关,这些iot网关用于将iot设备连接至其他iot设备和/或连接至云应用,以进行数据存储、过程控制等。iot设备所在的iot网络可包括商用和家用自动化设备,诸如,给水系统、配电系统、管道控制系统、工厂控制系统、灯开关、恒温器、锁、相机、警报、运动传感器等。
50.在本公开一个方面,提供了将区块链网络承载的信息向多个客户端节点分发的方法。图2和图3是应用根据本公开一个或多个示例性实施例的将区块链网络承载的信息向多个客户端节点分发的方法的系统200的结构示意图。系统200包括区块链网络202和多个客户端节点206、208。区块链网络202包括多个区块链节点204。多个客户端节点206、208组成一个或多个网络216。其中,区块链网络202、区块链节点204、以及一个或多个网络216的全部或部分功能和/或操作可以分别类似于上述的区块链网络102、区块链节点104、以及一个或多个网络116的全部或部分功能和/或操作,在此省略对重复部分的详细描述。
51.多个客户端节点206、208包括一个或多个第一类节点206和一个或多个第二类节点208。第一类节点206可以通信连接到区块链网络202中的至少一个区块链节点204,从而从区块链节点204获取与目标方面相关联的数据。区块链网络202可以承载与多个客户端节点206、208有关的一个或多个方面的信息,例如各个客户端节点206、208的配置信息、动作/操作通知、操作日志等。第一类节点206可以仅从区块链节点204获取与所需的目标方面相关联的数据,例如与各个客户端节点206、208的配置信息相关联的数据。
52.在一些实施例中,第一类节点206可以通过区块链网络202的软件开发工具包(software development kit,sdk)与至少一个区块链节点204建立加密通信,从而从该区块链节点204获取与目标方面相关联的数据。第一类节点206在与区块链网络202建立通信之前,可以向该区块链网络202申请该区块链网络202的sdk。安装有该sdk的第一类节点206可以获知区块链网络202中各节点的ip地址、节点的公钥(或与之相关联的节点id)、以及如何建立加密通信等信息。如此,第一类节点206可以通过该区块链网络202的sdk与该区块链网络202中的区块链节点204通信以从该区块链节点204获取数据。
53.在一些实施例中,第一类节点206可以周期性地从区块链节点204获取与目标方面相关联的数据。第一类节点206从区块链节点204获取数据的获取周期可以根据需要来设置。在一些情况下,可以根据目标方面的变化频率来设置获取周期。例如,针对变化频率较高的方面相关联的数据,例如与动作/操作通知相关联的数据,可以设置较短的获取周期;针对变化频率较低的方面相关联的数据,例如与配置信息相关联的数据,可以设置较长的获取周期。在一些情况下,可以根据区块链网络202生成新区块的速度来设置获取周期。例如,可以将获取周期设置为大致等于区块链网络202的区块生成间隔时间。
54.根据设置的获取周期,第一类节点206可以周期性地通过与区块链节点204的通信连接而从区块链节点204获取数据。需要说明的是,在本技术的附图中,用连接在两个实体之间的直线(或其他图形元素)来表示二者之间的连接(例如通信连接),这样的连接可以是仅在需要时才建立的而并不是在较长的时间段期间内一直存在。然而应当理解,这样的连接也可以是在较长的时间段期间内一直存在的,第一类节点206可以周期性地经由该连接从区块链节点204获取数据,而不必每次需要获取数据时重新建立这样的连接。
55.在一些情况下,第一类节点206从区块链节点204获取的数据可能是一个区块的数据的部分或全部。在这些获取的数据中,除了与目标方面相关联的数据之外,还包括非所需的其他数据。在这些情况下,第一类节点206对从区块链节点204获取的数据进行筛选,以筛选出与目标方面相关联的数据。
56.在一些实施例中,第一类节点206可以响应于区块链节点204处的目标方面被改变,而从区块链节点204获取与目标方面相关联的数据。区块链节点204可以提供事件订阅服务,订阅方可以向区块链节点204订阅一个或多个事件。当所订阅的事件发生后,区块链节点204可以将所发生的事件相关的数据输出给订阅方。第一类节点206可以作为订阅方使用区块链节点204的事件订阅服务来获取与目标方面相关联的数据。例如,在目标方面的信息是由在区块链网络202上运行特定的智能合约来改变(包括创建、删除、修改等)的情况下,第一类节点206可以向区块链节点204订阅该特定的智能合约被调用的事件。当所订阅的事件发生后,即该特定的智能合约被调用后,区块链节点204可以将该事件相关的数据输出给第一类节点206。在该示例中,由于区块链节点204只向第一类节点206提供其所订阅的事件相关的数据,因此在这种情况下,第一类节点206无需进行数据筛选即可获取与目标方面相关联的数据。然而应当理解,在其他的示例中,第一类节点206可以向区块链节点204订阅产生了新区块的事件、用户发起了新交易的事件等。在这些示例中,根据需要,第一类节点206可能对从区块链节点204获取的数据进行筛选,以筛选出与目标方面相关联的数据。
57.在这些实施例中,第一类节点206可以监听区块链节点204处是否产生包含与目标方面相关联的主题的收据。如上所述,每个区块链节点204处生成的每个区块中,可以存储有该区块所涉及的各个交易、记录各个交易的结果等信息的相应的收据、以及区块链网络202维护的各个账户的状态。收据的格式(例如每个收据包括几条消息、每条消息包括几个主题)和内容(例如每条消息中每个主题的含义)可以由区块链网络202的参与方共同定义。例如,关于一个特定的智能合约的执行的收据中的一条特定的消息,可以包括多个主题以分别记录该智能合约的地址、调用该智能合约的账户、该智能合约中的哪个/哪些函数被执行、以及该智能合约执行的结果等。如上所述,第一类节点206可以通过sdk通信连接到一个特定的区块链节点204,并监听该区块链节点204处生成的收据中是否包含感兴趣的主题或主题的组合(下文称为“目标主题”)。如果监听到包含目标主题的收据,则通过sdk从该区块链节点204输出该收据的数据。可以根据需要定义收据的格式和内容,以便从区块链节点204打包输出所需的信息。
58.由于区块链节点204通常以特定的数据结构(例如merkle树、merkle patricia树等)进行数据存储,因此,第一类节点206直接从区块链节点204获取的数据可能不是客户端节点206、208所需要的数据格式。在这些情况下,第一类节点206还对与目标方面相关联的数据进行解析和映射,将这些数据映射为客户端节点206、208所需要的数据格式,从而基于
这些与目标方面相关联的数据得到目标方面的信息。此外,第一类节点206将得到的目标方面的信息进行存储,以便第二类节点208从第一类节点206获取。目标方面的信息可以被存储在第一类节点206的本地存储器中,也可以被存储在第一类节点206可访问的远程存储器中。第一类节点206与第二类节点208之间的访问方式可以使用mqtt协议、http协议等进行p2p通信,也可以使用自有协议进行通信。
59.在一些实施例中,第二类节点208可以周期性地从第一类节点206获取目标方面的信息。第二类节点208从第一类节点206获取目标方面的信息的获取周期可以根据需要来设置。例如,与第一类节点206从区块链节点204获取数据的获取周期类似地,可以根据目标方面的变化频率和/或根据区块链网络202生成新区块的速度来设置获取周期。在一些实施例中,第二类节点208可以响应于目标方面的信息被第一类节点206存储,例如包括被创建式、删除式、修改式等的存储,从第一类节点206获取目标方面的信息。在这些实施例中,可以仅在目标方面的信息有变化时,第二类节点208才从第一类节点206获取目标方面的信息。在一些实施例中,第二类节点208可以响应于第二类节点208启动,包括初始加入一个或多个网络216、以及离线之后的重新上线等,从第一类节点206获取目标方面的信息。例如,第二类节点208在启动之后可能需要对节点进行配置,因此可以在启动之后从第一类节点206获取目标方面的信息。
60.在上述任何一个或多个实施例中,第二类节点208从第一类节点206获取目标方面的信息,可以是由第二类节点208向与其通信连接的第一类节点206查询来获取,也可以是由第一类节点206进行单播、广播、多播(或组播)来获取。换言之,无论是通过查询的方式来获取,还是通过单播、广播、多播(或组播)的方式来获取,均可以是周期性地、响应于目标方面的信息被第一类节点206存储地、和/或响应于第二类节点208启动地。
61.如上所述,根据本公开一个或多个示例性实施例,将多个客户端节点206、208划分为第一类节点206和第二类节点208,其中第一类节点206直接从区块链网络202获取目标方面的信息并进行存储,第二类节点208无需从区块链网络202直接获取而只需从第一类节点206获取目标方面的信息,从而实现将区块链网络202承载的信息向多个客户端节点206、208分发。如此,不需要多个客户端节点206、208中的每个节点均直接从区块链网络202中的一个或多个区块链节点204查询数据或订阅事件,因此能够减轻区块链节点204的负荷,这在客户端节点206、208的数量庞大时具有明显的优势。此外,第二类节点208不需要从区块链网络202直接获取数据,因此这类节点不需要具有从区块链节点204直接读取数据和/或从区块链节点204订阅事件的功能,也不需要具有上述的数据筛选、解析和映射的功能,有利于第二类节点208的功能和结构的简化,这对于功能受限的iot设备较为适用。
62.需要确定多个客户端节点206、208中哪些节点作为第一类节点206、哪些节点作为第二类节点208。在一些实施例中,每个客户端节点可以作为哪类节点可以是预先确定的,该预先确定的结果可以记录在每个客户端节点各自的硬编码逻辑中。每个客户端节点在启动后,根据各自的硬编码逻辑来执行各自的行为,其中执行上述第一类节点206的全部或部分行为的客户端节点可以为预先确定的第一类节点206,执行上述第二类节点208的全部或部分行为的客户端节点可以为预先确定的第二类节点208。此外,第二类节点208需要获得第一类节点206的信息,例如一个或多个网络216中的第一类节点206的列表、或适用于该第二类节点208的第一类节点206的子集的列表,以便通信连接到第一类节点206来获取目标
方面的信息。在这些实施例中,第一类节点206的信息也被记录在第二类节点208的硬编码逻辑中。第二类节点208启动之后,可以从其硬编码逻辑中获取一个或多个第一类节点206的信息。
63.在一些实施例中,哪些节点作为第一类节点206可以是通过多个客户端节点206、208中的至少一些节点参与的选举过程来动态地确定的。在一些情况下,可以多个客户端节点206、208中的至少一些节点可以参与选举,使用已知的选举协议(例如raft选举协议)来产生选主,产生的选主可以作为第一类节点206。参与选举的节点知道选举结果,即知道第一类节点206的信息,未参与选举的节点可以通过与参与选举的节点通信来获知第一类节点206的信息。在一些情况下,在多个客户端节点206、208的集合或其子集中可以将一个节点设置为选举协助节点,由选举协助节点来确定集合或其子集中其他节点的身份(即是第一类节点206还是第二类节点208)。其他节点可以与选举协助节点通信,选举协助节点通知该节点的身份。选举协助节点可以随机确定、或者以任意适当的规则来确定其他节点的身份。选举协助节点还可以在第一类节点206的信息有变化时通知其他节点。这样的通知可以通过节点之间的驱动器来实现,也可以通过其他节点向选举协助节点查询来实现。在这些情况下,客户端节点在启动之后,可以先连接到选举协助节点以确定自身节点的身份,以及从选举协助节点获取第一类节点206的信息。在这些实施例中,第一类节点206的节点需要保持心跳,以便让其他节点知道本节点的状态。如果心跳丢失,则会触发前述选举过程。
64.在上述任意一个或多个实施例中,将哪些节点确定为第一类节点206可以考虑该节点运行的稳定性、运算处理的性能、以及网络连接的能力和可靠性等,以便选出能够在较长的时间段期间能够与区块链节点204保持稳定的通信连接、能够同时被多个其他节点访问、和/或能够处理从区块链节点204获取的数据的节点。此外,还需要考虑第一类节点206的个数在多个客户端节点206、208的个数中的占比,例如可以为5%、10%等,以便保证具有足够多的第一类节点206以供第二类节点208连接。在上述任意一个或多个实施例中,如果第二类节点208获得的第一类节点206的信息包括多于一个的第一类节点206,则第二类节点208可以在连接其中一个第一类节点206失败之后尝试连接其他的第一类节点206。
65.在一些情况下,区块链节点204、第一类节点206、和/或二者之间的通信链路可能发生故障,导致第一类节点206与区块链节点204之间的通信连接断开。在第一类节点206响应于区块链节点204处的目标方面被改变,而从区块链节点204获取与目标方面相关联的数据的一个或多个实施例中,在第一类节点206与区块链节点204之间的通信连接断开期间如果区块链节点204处的目标方面被改变,则第一类节点206无法从区块链节点204获取与目标方面相关联的数据。在这些情况下,第一类节点206可以从其他的第一类节点206获取与目标方面相关联的数据,或者可以从其他的第一类节点206直接获取目标方面的信息。
66.在一些实施例中,其他的第一类节点206可以是与本第一类节点206通信连接到同一个区块链节点204的第一类节点206。这适用于第一类节点206与区块链节点204之间的通信连接断开是由第一类节点206的故障和/或第一类节点206与区块链节点204之间的通信链路的故障引起的情况。
67.如图2所示,一个或多个网络216中的第一类节点206-1和206-2分别与区块链网络202中的区块链节点204通信连接,以分别从区块链节点204获取与目标方面相关联的数据。每个第一类节点206-1和206-2基于所获取的与目标方面相关联的数据,得到目标方面的信
息并进行存储。响应于第一类节点206-1与区块链节点204之间的通信连接断开,由第一类节点206-1经由与第一类节点206-2之间的通信连接从第一类节点206-2获取目标方面的信息。应当理解,第一类节点206-1可以与第一类节点206-2在较长的时间段期间内保持这样的通信连接,以便在需要的时候获取目标方面的信息;也可以在需要获取目标方面的信息时才与第一类节点206-2建立这样的通信连接。第一类节点206-1将自身存储的目标方面的信息与从第一类节点206-2获取的目标方面的信息进行比较,以判断从第一类节点206-2获取的目标方面的信息是否新于第一类节点206-1存储的目标方面的信息。可以基于目标方面的信息中的时间戳或基于第一类节点206-2的关于目标方面的信息的存储时间的通知来进行此项判断。响应于从第一类节点206-2获取的目标方面的信息新于第一类节点206-1存储的目标方面的信息,由第一类节点206-1基于从第一类节点206-2获取的目标方面的信息更新第一类节点206-1自身存储的目标方面的信息。
68.在一些实施例中,其他的第一类节点206可以是与本第一类节点206通信连接到不同的区块链节点204的第一类节点206。这适用于第一类节点206与区块链节点204之间的通信连接断开是由第一类节点206的故障、区块链节点204的故障、和/或第一类节点206与区块链节点204之间的通信链路的故障引起的情况。
69.如图3所示,一个或多个网络216中的第一类节点206-1和206-2分别与区块链网络202中的区块链节点204-1通信连接,以分别从区块链节点204-1获取与目标方面相关联的数据;第一类节点206-3与区块链节点204-2通信连接,以从区块链节点204-2获取与目标方面相关联的数据。每个第一类节点206-1至206-3基于所获取的与目标方面相关联的数据,得到目标方面的信息并进行存储。响应于第一类节点206-1与区块链节点204-1之间的通信连接断开,由第一类节点206-1经由与第一类节点206-3之间的通信连接从第一类节点206-3获取目标方面的信息。应当理解,第一类节点206-1可以与第一类节点206-3在较长的时间段期间内保持这样的通信连接,以便在需要的时候获取目标方面的信息;也可以在需要获取目标方面的信息时才与第一类节点206-3建立这样的通信连接。第一类节点206-1将自身存储的目标方面的信息与从第一类节点206-3获取的目标方面的信息进行比较,以判断从第一类节点206-3获取的目标方面的信息是否新于第一类节点206-1存储的目标方面的信息。响应于从第一类节点206-3获取的目标方面的信息新于第一类节点206-1存储的目标方面的信息,由第一类节点206-1基于从第一类节点206-3获取的目标方面的信息更新第一类节点206-1自身存储的目标方面的信息。
70.在本公开一个方面,提供了用于对网络节点集进行配置的方法和系统。图4是根据本公开一个或多个示例性实施例的用于对网络节点集316进行配置的系统300的结构示意图。系统300包括区块链网络302、网络节点集316和配置管理实体312。区块链网络302包括多个区块链节点304(例如304-1和304-2)。网络节点集316是包括多个客户端节点306、308的集合。网络节点集316中的一个或多个节点为第一类节点306(例如306-1至304-3),网络节点集中的除第一类节点306之外的一个或多个节点为第二类节点308。其中,区块链网络302、区块链节点304、第一类节点306和第二类节点308的全部或部分功能和/或操作可以分别类似于上述的区块链网络102、区块链节点104、第一类节点206和第二类节点208的全部或部分功能和/或操作,在此省略对重复部分的详细描述。
71.区块链网络302可以承载用于对网络节点集316进行配置的配置信息。配置信息可
以用来配置网络节点集316中的全部或部分客户端节点306、308中的每个客户端节点的一个或多个方面,例如用来配置客户端节点的网络连接、操作功率、行驶速度、感测范围等的参数等。这样的配置信息可以通过运行特定的智能合约来维护,包括创建、删除、修改等。配置管理实体312可以是具有管理网络节点集316中的多个客户端节点306、308的权限(本文简称“管理员权限”)的实体。配置管理实体312可以通过通信连接到区块链网络302来创建具有管理员权限的账号并以该账号发起该智能合约的运行,即发起智能合约的调用。尽管在图中以一个方框来表示,但配置管理实体312可以是一个或多个实体设备。配置管理实体312可以是任何形式的通用或专用的电子设备,例如一个或多个服务器、一个或多个用户终端等。第一类节点306从区块链网络302获取配置信息、存储配置信息、并根据配置信息进行自身节点的配置。第二类节点308从第一类节点306获取配置信息、并根据配置信息进行自身节点的配置。
72.在一些实施例中,可以对网络节点集316中的各客户端节点306、308使用相同的配置信息。这比较适用于网络节点集316中的各客户端节点306、308具有一个或多个相同或相似的属性或应用目的情况。在一些实施例中,网络节点集316中的各客户端节点306、308被划分为多个节点组,例如节点组s1、s2、s3,可以对各节点组使用各自的配置信息。这比较适用于网络节点集316中的各客户端节点306、308被基于其地理区域、制造厂商、适用的网络接入技术等因素进行分组的情况。在这些实施例中,区块链网络302承载的用于对网络节点集316进行配置的配置信息可以包括多组子信息,每组子信息用于配置相应的节点组中的客户端节点306、308。每组子信息可以包括用于标识所对应的节点组的组识别信息和用于配置所对应的节点组中节点的组配置信息。每组子信息可以通过运行各自对应的智能合约来维护,也可以多组子信息通过运行同一个智能合约来维护。同一个智能合约或多个不同的智能合约均可以由作为配置管理实体312的同一个或多个不同的实体设备来调用。
73.第一类节点306可以存储配置信息的多组子信息中的一个或多组子信息。通常,第一类节点306所存储的子信息包括自身节点所在的节点组所对应的一组子信息。在一个具体的示例中,第一类节点306-1可以存储用于节点组s1、s2和s3的多组子信息,第一类节点306-2可以存储用于节点组s2的一组子信息,第一类节点306-3可以存储用于节点组s1和s3的多组子信息。
74.图5和图6是根据本公开示例性实施例的用于对网络节点集618进行配置的系统600的结构示意图。系统600包括区块链网络602、数据导出模块610、消息队列612、以及网络节点集618。区块链网络602包括多个区块链节点604(例如604-1和604-2)。网络节点集618是包括多个客户端节点606、608的集合。网络节点集618中的一个或多个节点为第一类节点606(例如606-1至606-2),网络节点集中的除第一类节点606之外的一个或多个节点为第二类节点608。其中,区块链网络602、区块链节点604、第一类节点606和第二类节点608的全部或部分功能和/或操作可以分别类似于上述的区块链网络102、区块链节点104、第一类节点206和第二类节点208的全部或部分功能和/或操作,在此省略对重复部分的详细描述。
75.数据导出模块610可以通信连接到区块链网络602中的至少一个区块链节点604,从而从区块链节点604获取与用于网络节点集618的配置信息相关联的数据。与上述实施例中的第一类节点206、306类似地,数据导出模块610可以通过区块链网络602的sdk与至少一个区块链节点604建立加密通信,从而从该区块链节点604获取与用于网络节点集618的配
置信息相关联的数据。数据导出模块610可以通过sdk通信连接到一个特定的区块链节点604,并监听该区块链节点604处生成的收据中是否包含与配置信心相关联的主题或主题的组合。如果监听到包含该目标主题的收据,则通过sdk从该区块链节点604输出该收据的数据。
76.由于区块链节点604通常以特定的数据结构(例如merkle树、merkle patricia树等)进行数据存储,因此,数据导出模块610直接从区块链节点604获取的数据可能不是客户端节点606、608所需要的数据格式。在这些情况下,数据导出模块610还对与配置信息相关联的数据进行解析和映射,将这些数据映射为客户端节点606、608所需要的数据格式,从而基于这些与配置信息相关联的数据得到用于客户端节点606、608的配置信息。
77.数据导出模块610可以将配置信息发布到消息队列612所配置的一个或多个主题。数据导出模块610可以将不同类型的配置信息,例如针对客户端节点606、608的配置信息、动作/操作通知、操作日志等,发布到同一个主题,也可以将不同类型的配置信息发布到不同的多个主题。消息队列612将获取到的配置信息进行存储,以便向订阅了相关主题的一个或多个客户端节点分发。网络节点集618中的第一类节点606根据需要向消息队列612订阅所需的主题,从而使得消息队列612将数据导出模块610发布到第一类节点606所订阅的主题的配置信息推送给对应的第一类节点606。第一类节点606接收并存储消息队列612分发的配置信息,第二类节点608从第一类节点606获取配置信息。消息队列612可以是任何具有发布/订阅模式的消息队列,例如可以适用于为硬件性能低下的远程设备(例如当第一类节点606为某些性能较低的iot设备时)以及在网络状况不理想的情况下提供基于发布/订阅模式的消息队列服务的mqtt队列。
78.在一些实施例中,消息队列612对配置信息的存储可以被配置为将配置信息存储预定的时间。由于消息队列的大小通常存在上限,因此可以为消息队列设置一个清理周期,例如n天,消息队列会定期对过期的数据进行清理,以使得消息队列612将配置信息存储预定的时间。在一个具体的示例中,该清理周期n可以与网络节点集618中的活跃节点的个数n相同,活跃节点指最近预定天数内上线过的节点。在一些实施例中,消息队列612对配置信息的存储可以被配置为存储最新获取的配置信息,例如针对每个主题存储最新获取的配置信息。使用这种配置,即使在配置信息很长时间不更新的情况下,其也不会作为过期数据被清理,因此能够保证网络节点集618中在线和重新上线的节点均可以获取到最新的配置信息。
79.在一些实施例中,配置信息包括第一类配置信息和第二类配置信息,其中,第一类配置信息可以比第二类配置信息更静态。由于较为静态的信息更新的频率较低,例如可能若干个月才更新一次,如果用消息队列612来存储这样的静态信息,可能在消息队列612的清理时限到来时被当作过期数据被清除,这样会导致新启动(首次上线或重新上线)的节点获取不到这样的静态的配置信息,从而不利于对网络节点集618的管理。因此,针对较为静态的第一类配置信息,可以存储在第一类节点606中以便第二类节点608获取;而针对其他较为动态的信息,可以存储在消息队列612中以便客户端节点606、608获取。
80.图6所示的系统600是图5中的系统600的变形。除了具有图5所示的系统600的全部功能外,在图6所示的系统600中,网络节点集618中的一个或多个第一类节点606(例如第一类节点606-1)向消息队列612订阅配置信息,另外的一个或多个第一类节点606(例如第一
类节点606-2)直接向区块链节点604(例如区块链节点604-1或604-2)订阅配置信息,这可以适用于分发的配置信息包括多个类别的情况。在一些实施例中,配置信息包括第一类配置信息和第二类配置信息。数据导出模块610可以向区块链节点604(例如区块链节点604-1)订阅第一类配置信息,并将之发布到消息队列612,以便将第一类配置信息分发到网络节点集618中的第一组第一类节点606-1。网络节点集618中的第一组第二类节点608可以向第一组第一类节点606-1查询以获得第一类配置信息。此外,第二组第一类节点606-2可以不通过消息队列612、而是直接向区块链节点604(例如区块链节点604-1或604-2)订阅第二类配置信息。网络节点集618中的第二组第二类节点608可以向第二组第一类节点606-2查询以获得第二类配置信息。应当理解,第一组第一类节点和第二组第一类节点可以包括相同或不同的客户端节点,以及第一组第二类节点和第二组第二类节点可以包括相同或不同的客户端节点。
81.在本公开一个方面,提供了电子设备。图7是根据本公开一个或多个示例性实施例的电子设备400的结构示意图。上述各实施例中的第一类节点206、306中的任意一个可以包括电子设备400的全部或部分。电子设备400包括第一通信模块402、第二通信模块404、数据处理模块406、存储模块408、以及服务提供模块410。
82.第一通信模块402通信连接到区块链网络中的至少一个区块链节点,并周期性地和/或响应于至少一个区块链节点处的目标方面被改变地,从该至少一个区块链节点获取与目标方面相关联的数据。数据处理模块406基于从区块链节点获取的数据得到目标方面的信息。存储模块408存储目标方面的信息。服务提供模块410响应于其他设备(例如第二类节点208、308)的查询请求,将存储模块408中存储的目标方面的信息提供给其他设备。
83.第二通信模块404响应于第一通信模块402与上述至少一个区块链节点之间的通信连接断开,第二通信模块404通信连接到对等设备(例如另一个第一类节点206、306),并从对等设备获取目标方面的信息。数据处理模块406确定从对等设备获取的目标方面的信息是否新于存储模块408中存储的目标方面的信息。响应于数据处理模块406确定为从对等设备获取的目标方面的信息新于存储模块408中存储的目标方面的信息,存储模块408基于从对等设备获取的目标方面的信息更新存储模块408中存储的目标方面的信息。
84.上述电子设备400的全部或部分可以由一个或多个处理器执行存储于一个或多个存储器中的计算机可执行指令来实现,也可以由具有特定构造的电路系统来实现。
85.图8是可应用于根据本公开一个或多个示例性实施例的通用硬件系统500的示例性框图。现在将参考图8描述系统500,其是可以应用于本公开的各方面的硬件设备的示例。上述各实施例中的区块链节点104、204、304、客户端节点108、206、208、306、308、配置管理实体312、电子设备400中的任意一个可以包括系统500的全部或部分。系统500可以是被配置为执行处理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助理、智能电话、车载电脑、或其任何组合。
86.系统500可以包括可能经由一个或多个接口与总线502连接或与总线502通信的元件。例如,系统500可以包括总线502,以及一个或多个处理器504,一个或多个输入设备506和一个或多个输出设备508。一个或多个处理器504可以是任何类型的处理器,可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。上文所述的方法中的各个步骤均可以通过一个或多个处理器504执行指令来实现。
87.输入设备506可以是可以向计算设备输入信息的任何类型的设备,可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或遥控器。输出设备508可以是可以呈现信息的任何类型的设备,可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
88.系统500还可以包括非暂时性存储设备510或者与非暂时性存储设备510连接。非暂时性存储设备510可以是非暂时性的并且可以实现数据存储的任何存储设备,可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、硬盘、磁带或任何其他磁介质、光盘或任何其他光学介质、rom(只读存储器)、ram(随机存取存储器)、高速缓冲存储器、和/或任何其他存储器芯片/芯片组、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备510可以从接口拆卸。非暂时性存储设备510可以具有用于实现上述方法、步骤和过程的数据/指令/代码。例如,上文所述的区块链节点104、204、304存储的数据、第一类节点206、306存储的目标方面的信息可以至少部分地存储在非暂时性存储设备510中。
89.系统500还可以包括通信设备512。通信设备512可以是能够与外部设备和/或与网络通信的任何类型的设备或系统,可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备、和/或芯片组,例如蓝牙设备、1402.11设备、wifi设备、wimax设备、蜂窝通信设备、卫星通信设备、和/或类似物。
90.当系统500用作车载设备时,它还可以连接到外部设备,例如gps接收器,用于感测不同环境数据的传感器,例如加速度传感器、车轮速度传感器、陀螺仪和等等。以这种方式,系统500可以例如接收指示车辆的行驶状况的位置数据和传感器数据。当系统500用作车载设备时,它还可以连接到车辆的其他设施(例如发动机系统、雨刮器、防抱死制动系统等)以控制车辆的运行和操作。另外,非暂时性存储设备510可以具有地图信息和软件元素,使得处理器504可以执行路线引导处理。另外,输出设备508可以包括用于显示地图、车辆的位置标记、以及指示车辆的行驶状况的图像的显示器。输出设备508还可以包括扬声器或具有耳机的接口,用于音频引导。
91.总线502可以包括但不限于工业标准体系结构(isa)总线、微通道架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)本地总线、和外围部件互连(pci)总线。特别地,对于车载设备,总线502还可以包括控制器区域网络(can)总线或设计用于在车辆上应用的其他架构。
92.系统500还可以包括工作存储器514,其可以是可以存储对处理器504的工作有用的指令和/或数据的任何类型的工作存储器,可以包括但不限于随机存取存储器和/或只读存储设备。
93.软件元素可以位于工作存储器514中,包括但不限于操作系统516、一个或多个应用程序518、驱动程序、和/或其他数据和代码。用于执行上述方法和步骤的指令可以包括在一个或多个应用程序518中。软件元素的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质中,例如上述存储设备510,并且可以通过编译和/或安装被读入工作存储器514中。还可以从远程位置下载软件元素的指令的可执行代码或源代码。
94.还应该理解,可以根据具体要求进行变化。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现特定元件。此外,可以采用与诸如网络输入/输出设备之类的其他计算设备的连接。例如,根据本公开实施例的
方法或装置中的一些或全部可以通过使用根据本公开的逻辑和算法的、用汇编语言或硬件编程语言(诸如verilog,vhdl,c++)的编程硬件(例如,包括现场可编程门阵列(fpga)和/或可编程逻辑阵列(pla)的可编程逻辑电路)来实现。
95.还应该理解,系统500的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而可以由远离该一个处理器的另一个处理器执行其他处理。系统500的其他组件也可以类似地分布。这样,系统500可以被解释为在多个位置执行处理的分布式计算系统。
96.上述对本公开一个或多个示例性实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
97.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
98.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种
功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
99.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本技术不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
100.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
101.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
102.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
103.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
104.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
105.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
106.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
107.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
108.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
109.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
110.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
111.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
技术特征:
1.一种将区块链网络承载的信息向多个客户端节点分发的方法,所述区块链网络包括第一区块链节点,所述多个客户端节点包括一个或多个第一类节点和一个或多个第二类节点,所述方法包括:通过在所述区块链网络上运行智能合约来生成用于所述区块链网络之外的所述多个客户端节点的目标方面的信息;由所述一个或多个第一类节点中的第一第一类节点监听所述第一区块链节点处的收据,以及响应于所述第一区块链节点处生成包含与所述目标方面相关联的主题的收据,由所述第一第一类节点从所述第一区块链节点获取与所述目标方面相关联的第一数据;由所述第一第一类节点基于所述第一数据得到并存储所述目标方面的信息;以及由所述一个或多个第二类节点中的第一第二类节点从所述第一第一类节点获取所述目标方面的信息。2.根据权利要求1所述的方法,其中,所述第一第一类节点通过所述区块链网络的sdk与所述第一区块链节点建立加密通信,从而从所述第一区块链节点获取与所述目标方面相关联的第一数据。3.根据权利要求1所述的方法,还包括由所述第一第二类节点:周期性地从所述第一第一类节点获取所述目标方面的信息;响应于所述目标方面的信息被所述第一第一类节点存储,从所述第一第一类节点获取所述目标方面的信息;和/或响应于所述第一第二类节点启动,从所述第一第一类节点获取所述目标方面的信息。4.根据权利要求1所述的方法,其中,所述区块链网络还包括第二区块链节点,所述方法还包括:由所述一个或多个第一类节点中的第二第一类节点监听所述第一区块链节点或所述第二区块链节点处的收据,以及响应于所述第一区块链节点或所述第二区块链节点处生成包含与所述目标方面相关联的主题的收据,由所述第二第一类节点从所述第一区块链节点或所述第二区块链节点获取与所述目标方面相关联的第二数据;由所述第二第一类节点基于所述第二数据得到并存储所述目标方面的信息;响应于所述第一第一类节点与所述第一区块链节点之间的通信连接断开,由所述第一第一类节点从所述第二第一类节点获取所述目标方面的信息;以及响应于从所述第二第一类节点获取的所述目标方面的信息新于所述第一第一类节点存储的所述目标方面的信息,由所述第一第一类节点基于从所述第二第一类节点获取的所述目标方面的信息更新所述第一第一类节点存储的所述目标方面的信息。5.根据权利要求1所述的方法,还包括:响应于所述第一第二类节点启动,由所述第一第二类节点从所述第一第二类节点的硬编码逻辑或从所述多个客户端节点中的除所述第一第二类节点之外的其他节点处获取所述一个或多个第一类节点的信息,以便通信连接到所述第一第一类节点来获取所述目标方面的信息。6.根据权利要求1所述的方法,其中,所述一个或多个第一类节点由所述一个或多个第一类节点各自的硬编码逻辑或由所述多个客户端节点中的至少一些节点参与的选举过程来确定。
7.根据权利要求1所述的方法,其中所述第一第一类节点通过消息队列来监听所述第一区块链节点处的收据,所述方法还包括:由所述第一第一类节点向所述消息队列订阅所述目标方面的信息;以及由所述消息队列将所述目标方面的信息向所述第一第一类节点分发。8.根据权利要求1所述的方法,其中所述目标方面为第一目标方面,所述方法还包括:由消息队列监听所述区块链网络中的第二区块链节点处的收据,以及响应于所述第二区块链节点处生成包含与第二目标方面相关联的主题的收据,由所述消息队列从所述第二区块链节点获取所述第二目标方面的信息;以及由所述消息队列将所述第二目标方面的信息向所述多个客户端节点中的向所述消息队列订阅了所述第二目标方面的信息的一个或多个节点分发。9.根据权利要求8所述的方法,其中,所述第一目标方面的信息比所述第二目标方面的信息更静态。10.根据权利要求7或8所述的方法,还包括由所述消息队列:将目标方面的信息存储预定的时间;和/或存储最新获取的目标方面的信息。11.根据权利要求7或8所述的方法,还包括由所述消息队列:响应于获取到目标方面的信息,将目标方面的信息向所述一个或多个节点分发;和/或响应于所述一个或多个节点中的第一节点启动,将目标方面的信息向所述第一节点分发。12.根据权利要求7或8所述的方法,还包括:所述消息队列经由数据导出模块监听区块链节点处的收据;响应于区块链节点处生成包含与目标方面相关联的主题的收据,由所述数据导出模块从区块链节点获取与目标方面的信息相关联的数据;由所述数据导出模块基于所获取的与目标方面的信息相关联的数据得到目标方面的信息;以及由所述数据导出模块向所述消息队列发布目标方面的信息,从而使得所述消息队列获取目标方面的信息。13.根据权利要求1所述的方法,其中,所述客户端节点包括iot设备。14.根据权利要求1所述的方法,还包括由具有管理所述多个客户端节点的权限的账号通过发起在所述区块链网络上运行所述智能合约来生成所述目标方面的信息。15.一种用于对网络节点集进行配置的方法,包括:通过在区块链网络上运行智能合约来生成用于所述区块链网络之外的网络节点集的配置信息;由所述网络节点集中的第一类节点监听所述区块链网络中的区块链节点处的收据,以及响应于所述区块链节点处生成包含与所述配置信息相关联的主题的收据,由所述第一类节点从所述区块链节点获取所述配置信息、存储所述配置信息、并根据所述配置信息进行自身节点的配置;以及由所述网络节点集中的第二类节点从所述第一类节点获取所述配置信息、并根据所述配置信息进行自身节点的配置。
16.根据权利要求15所述的方法,其中,所述网络节点集包括组成iot网络的多个iot设备。17.根据权利要求15所述的方法,其中,所述网络节点集中的节点被划分为多个节点组,所述配置信息包括多组子信息,每组子信息包括用于标识所对应的节点组的组识别信息和用于所对应的节点组的组配置信息。18.根据权利要求17所述的方法,其中,所述第一类节点包括多个第一类节点,每个第一类节点存储所述配置信息的所述多组子信息中的一个或多组子信息。19.根据权利要求15所述的方法,其中,所述第一类节点通过所述区块链网络的sdk与所述区块链节点建立加密通信,从而从所述区块链节点获取所述配置信息。20.根据权利要求15所述的方法,其中,所述第一类节点包括第一第一类节点和第二第一类节点,所述第一第一类节点与所述区块链网络中的第一区块链节点通信连接,所述第二第一类节点与所述区块链网络中的第一区块链节点或第二区块链节点通信连接,所述方法还包括:响应于所述第一第一类节点与所述第一区块链节点之间的通信连接断开,由所述第一第一类节点从所述第二第一类节点获取所述第二第一类节点存储的配置信息;以及响应于从所述第二第一类节点获取的配置信息新于所述第一第一类节点存储的配置信息,由所述第一第一类节点基于从所述第二第一类节点获取的配置信息更新所述第一第一类节点存储的配置信息。21.根据权利要求15所述的方法,还包括由所述第二类节点:周期性地从所述第一类节点获取所述配置信息;响应于所述配置信息被所述第一类节点存储,从所述第一类节点获取所述配置信息;和/或响应于所述第二类节点启动,从所述第一类节点获取所述配置信息。22.根据权利要求15所述的方法,还包括由所述第二类节点:响应于所述第二类节点启动,从所述第二类节点的硬编码逻辑或从所述网络节点集中的其他节点处获取所述第一类节点的信息,以便通信连接到所述第一类节点来获取所述配置信息。23.根据权利要求15所述的方法,其中,所述第一类节点由所述第一类节点的硬编码逻辑或由所述网络节点集中的至少一些节点参与的选举过程来确定。24.根据权利要求15所述的方法,其中所述第一类节点通过消息队列来监听所述区块链节点处的收据,所述方法还包括:由所述第一类节点向所述消息队列订阅所述配置信息;以及由所述消息队列将所述配置信息向所述第一类节点分发。25.根据权利要求15所述的方法,其中所述配置信息为第一配置信息,所述区块链节点为第一区块链节点,所述方法还包括:由消息队列监听所述区块链网络中的第二区块链节点处的收据,以及响应于所述第二区块链节点处生成包含与第二配置信息相关联的主题的收据,由所述消息队列从所述第二区块链节点获取所述第二配置信息;以及由所述消息队列将所述第二配置信息向所述网络节点集中的向所述消息队列订阅了
所述第二配置信息的一个或多个节点分发。26.根据权利要求25所述的方法,其中,所述第一配置信息比所述第二配置信息更静态。27.根据权利要求24或25所述的方法,还包括由所述消息队列:将配置信息存储预定的时间;和/或存储最新获取的配置信息。28.根据权利要求24或25所述的方法,还包括由所述消息队列:响应于获取到配置信息,将配置信息向所述一个或多个节点分发;和/或响应于所述一个或多个节点中的第一节点启动,将配置信息向所述第一节点分发。29.根据权利要求24或25所述的方法,还包括:所述消息队列经由数据导出模块监听区块链节点处的收据;响应于区块链节点处生成包含与配置信息相关联的主题的收据,由所述数据导出模块从区块链节点获取与配置信息相关联的数据;由所述数据导出模块基于所获取的与配置信息相关联的数据得到配置信息;以及由所述数据导出模块向所述消息队列发布配置信息,从而使得所述消息队列获取配置信息。30.根据权利要求15所述的方法,还包括由具有管理所述网络节点集的权限的账号通过发起在所述区块链网络上运行所述智能合约来生成所述配置信息。31.一种用于对网络节点集进行配置的系统,包括:区块链网络,被配置为运行智能合约以生成用于所述区块链网络之外的网络节点集的配置信息;第一类节点,包括所述网络节点集中的一个或多个节点,所述第一类节点被配置为监听所述区块链网络中的区块链节点处的收据,以及响应于所述区块链节点处生成包含与所述配置信息相关联的主题的收据,从所述区块链节点获取所述配置信息、存储所述配置信息、并根据所述配置信息进行自身节点的配置;以及第二类节点,包括所述网络节点集中的除所述第一类节点之外的一个或多个节点,所述第二类节点被配置为从所述第一类节点获取所述配置信息、并根据所述配置信息进行自身节点的配置。32.根据权利要求31所述的系统,其中,所述网络节点集包括组成iot网络的多个iot设备。33.根据权利要求31所述的系统,其中,所述网络节点集中的节点被划分为多个节点组,所述配置信息包括多组子信息,每组子信息包括用于标识所对应的节点组的组识别信息和用于所对应的节点组的组配置信息。34.根据权利要求33所述的系统,其中,所述第一类节点还被配置为存储所述配置信息的所述多组子信息中的一个或多组子信息。35.根据权利要求31所述的系统,其中,所述第一类节点还被配置为通过所述区块链网络的sdk与所述区块链节点建立加密通信,从而从所述区块链节点获取所述配置信息。36.根据权利要求31所述的系统,其中,所述第一类节点包括第一第一类节点和第二第一类节点,所述第一第一类节点与所述区块链网络中的第一区块链节点通信连接,所述第
二第一类节点与所述区块链网络中的第一区块链节点或第二区块链节点通信连接,所述第一类节点还被配置为:响应于所述第一第一类节点与所述第一区块链节点之间的通信连接断开,由所述第一第一类节点从所述第二第一类节点获取所述第二第一类节点存储的配置信息;以及响应于从所述第二第一类节点获取的配置信息新于所述第一第一类节点存储的配置信息,由所述第一第一类节点基于从所述第二第一类节点获取的配置信息更新所述第一第一类节点存储的配置信息。37.根据权利要求31所述的系统,其中,所述第二类节点还被配置为:周期性地从所述第一类节点获取所述配置信息;响应于所述配置信息被所述第一类节点存储,从所述第一类节点获取所述配置信息;和/或响应于所述第二类节点启动,从所述第一类节点获取所述配置信息。38.根据权利要求31所述的系统,其中,所述第二类节点还被配置为:响应于所述第二类节点启动,从所述第二类节点的硬编码逻辑或从所述网络节点集中的其他节点处获取所述第一类节点的信息,以便通信连接到所述第一类节点来获取所述配置信息。39.根据权利要求31所述的系统,其中,所述第一类节点由所述第一类节点的硬编码逻辑或由所述网络节点集中的至少一些节点参与的选举过程来确定。40.根据权利要求31所述的系统,还包括消息队列,其中,所述第一类节点还被配置为:通过所述消息队列来监听所述区块链节点处的收据,并向所述消息队列订阅所述配置信息;以及所述消息队列被配置为:将所述配置信息向所述第一类节点分发。41.根据权利要求31所述的系统,还包括消息队列,其中所述配置信息为第一配置信息,所述区块链节点为第一区块链节点,所述消息队列还被配置为:监听所述区块链网络中的第二区块链节点处的收据,以及响应于所述第二区块链节点处生成包含与第二配置信息相关联的主题的收据,从所述第二区块链节点获取所述第二配置信息;以及将所述第二配置信息向所述网络节点集中的向所述消息队列订阅了所述第二配置信息的一个或多个节点分发。42.根据权利要求41所述的系统,其中,所述第一配置信息比所述第二配置信息更静态。43.根据权利要求40或41所述的系统,其中,所述消息队列还被配置为:将配置信息存储预定的时间;和/或存储最新获取的配置信息。44.根据权利要求40或41所述的系统,其中,所述消息队列还被配置为:响应于获取到配置信息,将配置信息向所述一个或多个节点分发;和/或响应于所述一个或多个节点中的第一节点启动,将配置信息向所述第一节点分发。45.根据权利要求40或41所述的系统,还包括数据导出模块,其中,所述消息队列还被配置为:经由所述数据导出模块监听区块链节点处的收据;以及
所述数据导出模块被配置为:响应于区块链节点处生成包含与配置信息相关联的主题的收据,从区块链节点获取与配置信息相关联的数据;基于所获取的与配置信息相关联的数据得到配置信息;以及向所述消息队列发布配置信息,从而使得所述消息队列获取配置信息。46.根据权利要求31所述的系统,其中,由具有管理所述网络节点集的权限的账号通过发起在所述区块链网络上运行所述智能合约来生成所述配置信息。47.一种电子设备,包括:第一通信模块,被配置为监听区块链网络中的至少一个区块链节点处的收据,并响应于所述至少一个区块链节点处生成包含与目标方面相关联的主题的收据,从所述至少一个区块链节点获取与所述目标方面相关联的数据,其中,所述区块链网络通过运行智能合约来生成用于所述区块链网络之外的包括所述电子设备在内的多个客户端节点的所述目标方面的信息,所述第一通信模块通过所述区块链网络的sdk与所述至少一个区块链节点建立加密通信以从所述至少一个区块链节点获取与所述目标方面相关联的数据;数据处理模块,被配置为基于所述数据得到所述目标方面的信息;存储模块,被配置为存储所述目标方面的信息;以及服务提供模块,被配置为响应于其他设备的查询请求,将所述存储模块中存储的所述目标方面的信息提供给所述其他设备。48.根据权利要求47所述的电子设备,其中,所述电子设备包括iot设备。49.根据权利要求47所述的电子设备,还包括:第二通信模块,被配置为:响应于所述第一通信模块与所述至少一个区块链节点之间的通信连接断开,通信连接到对等设备,并从所述对等设备获取所述目标方面的信息,其中,所述数据处理模块还被配置为:确定从所述对等设备获取的所述目标方面的信息是否新于所述存储模块中存储的所述目标方面的信息;所述存储模块还被配置为:响应于所述数据处理模块确定为从所述对等设备获取的所述目标方面的信息新于所述存储模块中存储的所述目标方面的信息,基于从所述对等设备获取的所述目标方面的信息更新所述存储模块中存储的所述目标方面的信息。
技术总结
本公开涉及将区块链网络承载的信息向多个客户端节点分发的方法,所述区块链网络包括第一区块链节点,所述多个客户端节点包括一个或多个第一类节点和一个或多个第二类节点,所述方法包括:通过在所述区块链网络上运行智能合约来生成用于所述区块链网络之外的所述多个客户端节点的目标方面的信息;由所述一个或多个第一类节点中的第一第一类节点监听所述第一区块链节点处的收据,以及响应于所述第一区块链节点处的收据中产生与所述目标方面相关联的主题,由所述第一第一类节点从所述第一区块链节点获取与所述目标方面相关联的第一数据;由所述第一第一类节点基于所述第一数据得到并存储所述目标方面的信息;以及由所述一个或多个第二类节点中的第一第二类节点从所述第一第一类节点获取所述目标方面的信息。本公开还涉及用于对网络节点集进行配置的方法和系统、以及电子设备。以及电子设备。以及电子设备。
技术研发人员:印明亮 魏亚文
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2021.11.26
技术公布日:2022/3/8