用于更新区块链中的数据的系统和方法
技术领域
本申请一般涉及用于更新区块链中的数据的系统和方法。
背景技术
区块链通过将数据保存在相互之间具有先后(precedence)关系的一系列数据区块中来以去中心化方式提供数据存储。区块的链由区块链节点的网络维护和更新,所述区块链节点也负责在共识方案下验证数据。存储的数据可以包括许多数据类型,例如各方之间的金融交易、历史访问信息等。
许多区块链(例如以太坊区块链)已启用通过区块链交易执行的区块链合约(也被称为智能合约)。区块链交易是由外部拥有的账户(例如区块链账户)发起的签名的消息,由区块链网络传输并记录在区块链中。可以编写区块链合约以实现各种功能,例如将数据添加到区块链账户、更改区块链中的数据等。因此,可以通过执行各种区块链交易来维护和更新区块链。
在现有的区块链方案中,每个区块链节点都需要执行各种区块链交易以维护区块链。达成共识后,所有区块链节点都需要按照约定的顺序执行相同的交易,以保持区块链的本地副本同步。因为每次执行都需要大量的算力,所以在重复计算中会消耗大量计算资源。随着区块链交易算法的复杂性提高,冗余问题将变得更加突出。此外,由于大多数区块链交易是为满足个人需求而构建的,并且不考虑其他同时执行的区块链交易,因此这些区块链交易的执行效率很低。
例如,为了更新区块链数据,客户端在本地检索每个本地账户及其对应的本地维护的私钥。在相同的本地环境中,客户端使用本地账户的私钥对本地账户的区块链交易签名。然后,客户端发送签名的区块链交易以在区块链中执行。因此,一次执行一次区块链交易。此外,客户端必须存储和管理本地账户的区块链地址和公私钥,这给客户端带来了维护存储和安全性的负担。此外,由于区块链交易是由客户端在封闭环境中独立编写的,因此轻微的错误可能会导致整个区块链交易的执行错误,并可能导致巨大的财务损失。如果没有持续的资源投入,客户端维护的安全协议可能会变得过时、过期或存在漏洞,这可能导致区块链系统出现安全隐患。
发明内容
本文的各种实施例包括但不限于用于更新区块链中的数据的系统、方法和非暂时性计算机可读介质。
根据一些实施例,一种计算机实现的用于更新区块链中的数据的方法包括:获得用于更新一个或多个区块链中的多条数据的一个或多个请求;更新所述一个或多个区块链中的所述多条数据。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:获得用于在与一个本地账户相关联的多个区块链中对应地更新所述多条数据的所述一个或多个请求;以及更新所述一个或多个区块链中的所述多条数据包括:在所述多个区块链中对应地批量更新所述多条数据。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:获得用于在与多个本地账户相关联的一个区块链中对应地更新所述多条数据的所述一个或多个请求;以及更新所述一个或多个区块链中的所述多条数据包括:在一个区块链中批量更新所述多条数据。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:获得用于在与多个本地账户相关联的多个区块链中对应地更新所述多条数据的所述一个或多个请求;以及更新所述一个或多个区块链中的所述多条数据包括:在所述多个区块链中对应地批量更新所述多条数据。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:获得一个或多个本地账户、待执行以对应地更新与所述一个或多个本地账户相关联的所述多条数据的一个或多个未签名的区块链交易、所述多条数据的信息以及所述与所述一个或多个区块链交易对应的所述一个或多个区块链的一个或多个标识;以及所述多条数据的所述信息包括:将要添加至所述一个或多个区块链的新数据或将对所述一个或多个区块链中的现有数据做出的更改。
在一些实施例中,更新所述一个或多个区块链的所述多条数据包括:获得与所述一个或多个本地账户相关联的一个或多个区块链地址以及对应地与所述一个或多个区块链地址关联的一个或多个私钥;基于所述一个或多个区块链地址对应地更新所述一个或多个未签名的区块链交易;利用所述一个或多个私钥对应地对所述一个或多个更新的区块链交易进行签名;以及将所述签名的一个或多个区块链交易发送至所述一个或多个区块链的一个或多个区块链节点以供执行。
在一些实施例中,将所述签名的一个或多个区块链交易发送至所述一个或多个区块链节点以供执行包括:构建包括所述签名的一个或多个区块链交易的主区块链交易;以及根据所述一个或多个区块链的所述一个或多个标识,将所述主区块链交易发送至所述一个或多个区块链的所述一个或多个区块链节点以供执行。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:从客户端获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求;以及所述客户端不存储(1)与所述一个或多个本地账户相关联的所述一个或多个区块链地址和/或(2)与所述一个或多个区块链地址相关联的所述一个或多个私钥。
在一些实施例中,获得对应地与所述一个或多个区块链地址关联的所述一个或多个私钥包括:检索加密形式的所述一个或多个私钥;基于所述一个或多个区块链地址对应地更新所述一个或多个未签名的区块链交易包括:将所述一个或多个区块链地址对应地添加至所述一个或多个未签名的区块链交易;以及利用所述一个或多个私钥对应地对所述一个或多个更新的区块链交易进行签名包括:对检索的所述加密形式的一个或多个私钥进行解密并利用解密形式的所述一个或多个私钥对应地对所述一个或多个更新的区块链交易进行签名。
在一些实施例中,检索所述加密形式的所述一个或多个私钥包括:从密钥管理系统(KMS)中根据一个或多个映射关系中的一个或多个KMS目录检索所述加密形式的所述一个或多个私钥;所述一个或多个映射关系将所述一个或多个本地账户与所述一个或多个区块链地址和所述一个或多个KMS目录关联起来;以及所述一个或多个KMS目录链接至所述加密形式的所述一个或多个私钥。
在一些实施例中,对所述检索的所述加密形式的一个或多个私钥进行解密并利用所述解密形式的所述一个或多个私钥对应地对所述一个或多个更新的区块链交易进行签名包括:在可信执行环境(TEE)中,对所述检索的所述加密形式的一个或多个私钥进行解密并利用所述解密形式的所述一个或多个私钥对应地对所述一个或多个更新的区块链交易进行签名。
在一些实施例中,获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求包括:根据轻目录访问协议(LDAP)从客户端获得用于更新所述一个或多个区块链中的所述多条数据的所述一个或多个请求。
根据一些实施例,一种用于更新区块链中的数据的系统,包括:
一个或多个处理器以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行前述实施例中任一个所述的方法。
根据一些实施例,一种用于更新区块链中的数据的装置,包括用于以执行前述实施例中任一个所述的方法的多个模块。
根据一些实施例,一种存储有指令的非暂时性计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行前述实施例中任一个所述的方法。
根据其他实施例,一种用于更新区块链中的数据的系统,包括:一个或多个处理器以及耦接到所述一个或多个处理器且配置有指令的一个或多个非暂时性计算机可读存储器,所述指令能够由所述一个或多个处理器执行以促使所述系统执行包括以下的操作:获得用于更新一个或多个区块链中的多条数据的一个或多个请求;更新所述一个或多个区块链中的所述多条数据。
根据其他实施例,一种用于更新区块链中的数据的计算机可读存储介质配置有指令,所述指令能够由所述一个或多个处理器执行以促使所述一个或多个处理器执行包括以下的操作:获得用于更新一个或多个区块链中的多条数据的一个或多个请求;更新所述一个或多个区块链中的所述多条数据。
根据其他实施例,一种用于更新区块链中的数据的装置可以包括:获得模块,用于获得用于更新一个或多个区块链中的多条数据的一个或多个请求,以及更新模块,用于更新所述一个或多个区块链中的所述多条数据。
本文的公开的实施例具有一个或多个技术效果。通过中心化区块链数据更新(例如,区块链数据的添加、移除或修改),所公开的实施例可以节省网络算力,减少客户端(例如,客户端系统或设备)的存储和安全负担,并提高区块链操作效率。在一些实施例中,服务器端可以向各种客户端提供区块链即服务(BaaS)或类似类型的服务,关于区块链数据添加或修改的客户端请求等可以被引导到服务器端。这些请求可以针对一个或多个本地账户的一个或多个不同的区块链被批量处理。可以在一个区块链交易或较少的区块链交易中编译和执行许多类似的请求,以减少虚拟机上的重复执行,用于通过执行单个区块链交易来单独满足请求。因此,节省了整体网络算力。此外,为多个用户在多个区块链中的多个区块链数据更新启用了批量处理。因此,提高了区块链数据更新效率。此外,诸如加密/解密、数据分析、任务流和状态存储之类的通用算法可以由服务器端有效地管理,并且可以针对每批区块链数据更新而被有效地调用。因此,减少了冗余算法的维护和执行。因为服务器端监督操作方案并确保系统安全性,减少或消除了客户端的存储和安全负担。因此,利用所公开的系统和方法,区块链的效率、稳定性和安全性被显著提高。此外,简单地通过连接到服务器端118,可以允许客户端的现有用户与区块链进行交互。因此,在不增加客户端负担的情况下扩展了区块链的可用性。结果,客户可以以更安全、更快速、更简单、更高效的方式访问区块链。
参考附图考虑以下描述和所附权利要求书,本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征,以及操作方法和相关结构的元件的功能以及部件的组合和制造经济性将变得更加明显。所有这些附图形成本说明书的一部分,其中,相同的附图标记表示各附图中的对应部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,而不是限制性的。
附图说明
图1示出了根据一些实施例的用于更新区块链中的数据的环境。
图2示出了根据一些实施例的用于实现区块链交易的框架。
图3示出了根据一些实施例的用于更新区块链中的数据的方法的流程图。
图4和图5示出了根据一些实施例的用于更新区块链中的数据的方法的流程图。
图6示出了根据一些实施例的用于更新区块链中的数据的装置的框图。
图7示出了可以实现本文描述的任何实施例的计算机系统的框图。
具体实施方式
图1示出了根据一些实施例的用于更新区块链中的数据的环境100。如图所示,在环境100中,客户端111可以耦接到服务器端118,并且服务器端118和节点B可以经过各种通信网络耦接到区块链系统112。类似地,服务器端118可以可选地耦接到更多类似于区块链系统112的区块链系统,例如区块链系统113、区块链系统114等。每个区块链系统可以维护一个或多个区块链。每个区块链可以对应于唯一的区块链ID。
在一些实施例中,客户端111可以包括一个或多个服务器(例如,节点C)和一个或多个其他计算设备(例如,节点A1、节点A2、节点A3)。节点A1、节点A2和节点A3可以耦接到节点C。在一些实施例中,节点C可以由具有各种本地账户(从节点A1、节点A2、节点A3评估的本地账户)的实体(例如,网站、移动电话应用、组织、公司、企业)来实现。例如,移动电话应用可能具有从相应的用户账户访问应用的服务器的数百万的终端用户。应用的服务器可以相应地存储数百万个用户账户。客户端111的组件及其布置可以具有许多其他配置。
在一些实施例中,节点B可以包括轻节点。轻节点可能无法下载完整的区块链,而是可以只下载区块头以验证区块链交易的真实性。轻节点可以由全量节点(例如,区块链系统112中的区块链节点)服务并且有效地依赖于全量节点来访问区块链的更多功能。通过安装适当的软件,可以在诸如膝上型电脑、移动电话等的电子设备中实现轻节点。
在一些实施例中,可以具有更多类似于客户端111的客户端耦接到服务器端118。服务器端118可以提供区块链即服务(BaaS),并且被称为BaaS端。在一个实施例中,BaaS是一种云服务模型,其中客户端或开发人员将Web或移动应用的幕后方面外包。BaaS可以为区块链上发生的活动提供预先编写的软件,例如用户认证、数据库管理和远程更新。BaaS端可以在服务器、服务器群集或其他设备中实现。在一个实施例中,BaaS端基于区块链技术提供企业级平台服务。该服务可以帮助客户端构建安全且稳定的区块链环境,并轻松管理区块链的部署、操作、维护和开发。该服务具有高安全性、高稳定性、易用性以及开放性和共享性的特征。基于云的丰富的安全策略和的多租户隔离,BaaS端可以使用芯片加密技术提供高级安全保护。基于高度可靠的数据存储,这项服务提供了可以快速扩展而不会中断的端到端且较高可用性的服务。BaaS端可以提供增强的管理功能,以帮助客户端构建企业级区块链网络环境。BaaS端可以为标准区块链应用和数据提供本地支持,支持例如HyperledgerFabric和Enterprise Ethereum-Quorum的主流开源区块链技术,以构建开放且包容的技术生态系统。
在一些实施例中,区块链系统112可以包括维护一个或多个区块链(例如,公有区块链、私有区块链等)的多个区块链节点(例如,区块链节点1、区块链节点2、区块链节点3、区块链节点4、区块链节点i等)。其他区块链系统(例如,区块链系统113、区块链系统114)可以包括维护其他区块链的区块链节点的类似布置。每个区块链节点都可以在一个或多个区块链系统中找到。每个区块链系统的区块链节点可以维护一个或多个区块链。区块链节点可以包括全量节点。全量节点可以下载每个区块和区块链交易,并对照区块链的共识规则进行检查。区块链节点可以形成网络(例如,点对点网络),其中一个区块链节点与另一区块链节点通信。所示的区块链节点的次序和数量仅仅是为了说明的示例。区块链节点可以在服务器、计算机等中实现。例如,每个区块链节点可以在服务器或服务器集群中实现。服务器集群可以采用负载平衡。每个区块链节点可以对应于经由诸如TCP/IP的各种类型的通信方法耦接在一起的一个或多个物理硬件设备或者虚拟设备。根据分类,区块链节点还可以被称为全量节点、Geth节点、共识节点等。
在环境100中,每个节点和设备可以安装有适当的软件(例如,应用程序接口)和/或硬件(例如,有线、无线连接)以访问环境100的其他设备。通常,节点和设备可以能够经过一个或多个有线或无线网络(例如,因特网)彼此通信,通过所述网络可以通信数据。节点和设备中的每一个可以包括一个或多个处理器以及耦接到一个或多个处理器的一个或多个存储器。存储器可以是非暂时性的且计算机可读的,并且配置有可由一个或多个处理器执行以促进所述一个或多个处理器执行本文描述的操作的指令。所述指令可以存储在存储器中或通过通信网络下载而不必存储在存储器中。尽管在该图中节点和设备被示为单独的组件,但是应当理解,这些系统和设备可以实现为单个设备或耦接在一起的多个设备。例如,节点B可以可选地集成到区块链节点2中。
诸如节点A1、节点A2、节点A3、节点B和节点C之类的设备可以安装有适当的区块链软件用于发起、转发或访问区块链交易。术语“区块链交易”可以指在区块链系统中执行并记录在区块链中的任务单元。例如,节点A1可以通过与节点C、服务器端118和区块链节点1的通信来访问区块链,并且节点B可以通过与区块链节点2的通信来访问区块链。在一些实施例中,节点A1可以向节点C提交区块链数据更新请求(例如,添加,删除或修改区块链数据)。节点C可以将请求和其他类似请求转发给服务器端118。服务器端118可以相应地更新区块链数据。为此,服务器端118可以编译区块链数据更新请求,生成指令(例如,以主区块链交易的形式),并且将它们发送到一个或多个区块链节点(例如,区块链节点1)以供执行。
在一些实施例中,服务器端118可以基于从节点C获得的信息来构建一个或多个区块链合约,以在区块链交易(例如,主区块链交易)中执行。区块链节点可以执行区块链交易以部署区块链合约或调用部署的区块链合约。区块链合约可以涉及也可以不涉及金融交易。区块链合约可以包括以代码行编写的用户之间的合约条款。区块链合约可以是一种计算机协议,其旨在以数字方式促进、验证或施行合约的协商或履行。在一个实施例中,区块链合约可以包括数据更新。区块链交易的示例可以用区块链合约代码对数据进行编码,用于(1)将数据添加到区块链以进行存储(例如,通过区块链合约部署)或(2)检索和删除或修改数据(例如,通过访问或执行区块链合约)。
在一些实施例中,在接收到未确认的区块链交易的区块链交易请求后,接收方区块链节点可以对区块链交易执行初步验证。例如,区块链节点1可以在从节点C接收到区块链交易之后执行初步验证。一旦被验证,区块链交易可以被存储在接收方区块链节点(例如,区块链节点1)的池数据库中,该节点也可以将该区块链交易转发到一个或多个其他区块链节点(例如,区块链节点3、区块链节点4)。由于每个区块链节点可以包括或耦接到存储器,所以池数据库可以分别存储在区块链节点的存储器中。池数据库可以存储由一个或多个客户端设备提交的多个区块链交易。在接收到区块链交易之后,一个或多个其他区块链节点可以重复由接收方区块链节点完成的处理。
每个区块链节点可以根据其偏好从池中选择一些区块链交易,并将其形成为向区块链提出的新区块。区块链节点可以通过投入算力来解决复杂的数学问题来对提出的新区块进行“挖矿”。如果区块链交易涉及区块链合约,则区块链节点可以在对应的虚拟机(VM)中本地执行区块链合约。为了处理区块链合约,区块链网络的每个区块链节点都运行一个对应的虚拟机,并在区块链合约中执行相同的指令。虚拟机是基于计算机体系架构并提供物理计算机的功能的计算机系统的软件仿真。区块链上下文中的虚拟机可以被理解为被设计用作区块链合约的运时环境的系统。
根据共识规则成功挖出所提出的区块链交易的新区块的特定区块链节点可以将新区块打包至其区块链的本地副本中,并将结果多播到其他区块链节点。特定区块链节点可以是首先成功完成验证、已获得验证特权、或者已经基于另一个共识规则被选择等的区块链节点。然后,其他区块链节点可以遵循与特定区块链节点的执行相同的执行顺序在本地执行新区块中的区块链交易,彼此验证执行结果(例如,通过执行哈希计算),并将区块链的副本与特定区块链节点的副本同步。通过更新区块链的本地副本,其他区块链节点可以类似地将区块链交易中这样的信息写入对应的本地存储器。因此,区块链合约可以部署在区块链上。如果在某些时点验证失败,则区块链交易被拒绝。
部署的区块链合约可以具有地址,根据该地址可以访问部署的合约。区块链节点可以通过向区块链合约输入某些参数来调用已部署的区块链合约。在一个实施例中,节点C或节点B可以请求调用部署的区块链合约以执行各种操作。例如,可以检索存储在部署的区块链合约中的数据。对于另一示例,可以将数据添加到部署的区块链合约中。对于又一示例,可以执行在部署的区块链合约中指定的金融交易。尽管如此,其他类型的区块链系统和相关的共识规则可以应用于所公开的区块链系统。
图2示出了根据一些实施例的用于实现区块链交易的框架。在一些实施例中,客户端111可以向服务器端118发送信息(例如,具有用于更新区块链数据的相关信息的请求、用于更新区块链数据的未签名的区块链交易)以供服务器端118更新区块链数据。更新区块链数据可以包括向区块链添加新数据或者删除或修改现有的区块链数据。为此,服务器端118可以为客户端111对区块链交易进行签名,将该请求与其他区块链数据更新请求一起编译,和/或执行其他操作。然后,服务器端118可以将包括编译的区块链数据更新请求的主区块链交易发送到一个或多个区块链节点以供执行。
在一些实施例中,客户端111可以维护一些本地账户,每个本地账户与一个或多个区块链账户相关联。为了更新每个区块链账户的区块链数据,客户端111可以构建未签名的区块链交易并将其发送到服务器端118,用于在区块链中执行区块链交易。服务器端118可以代表客户端111对区块链交易进行签名,将其与其他区块链交易一起编译,和/或执行其他操作。然后,服务器端118可以将包括签名的区块链交易的主区块链交易发送到一个或多个区块链节点以供执行。
在一些实施例中,签名的区块链交易(例如,区块链交易A)可以包括用于部署或调用已部署的区块链合约的区块链合约A。例如,区块链交易A可以包括诸如随机数(例如,区块链交易序列号)、自(例如,客户端111的区块链地址或另一区块链地址)、至(例如,如果部署区块链合约则为空)、交易费、签名(例如,服务器端118添加的对应区块链账户的签名)、值(例如,交易金额)、数据(例如,区块链合约A)等的信息。
在一些实施例中,节点B可以构建签名的区块链交易并将其发送到一个或多个区块链节点以供执行。在一个实施例中,节点B可以构建区块链交易B。区块链交易B可以包括用于部署或调用已部署的区块链合约的区块链合约B。例如,区块链交易B可以包括创建区块链账户或调用已部署的区块链合约A的区块链合约。可以在用户端应用221处用源代码对区块链合约B进行编程。例如,用户或机器可以对区块链合约B进行编程。节点B可以使用相应的编译器来编译源代码,该编译器将源代码转换为字节代码。区块链交易B可以包括诸如随机数(例如,区块链交易序列号)、自(例如,节点B的区块链地址或另一区块链地址)、至(例如,如果部署区块链合约则为空)、交易费、值(例如,交易金额)、签名(例如,节点B的签名)、数据(例如,至区块链合约的消息)等的信息。节点B可通过远程过程调用(RPC)接口223将区块链交易B发送到一个或多个区块链节点以供执行。RPC是第一程序(例如,用户端应用)可以用来从位于网络上的另一计算机(例如,区块链节点)中的第二程序请求服务而不必理解网络细节的协议。当第一程序促使进程在不同地址空间中执行时,则其好像为正常(本地)进程调用,而无需程序员明确地编码用于远程交互的细节。
在一些实施例中,在接收到区块链交易(例如,区块链交易A或B)时,接收方区块链可以验证区块链交易是否有效。例如,可以验证签名和其他格式。如果验证成功,则接收方区块链节点可以将接收到的区块链交易(例如,区块链交易A或B)广播到区块链网络,该区块链网络包括各种其他区块链节点。一些区块链节点可以参与区块链交易的挖矿过程。区块链交易可以由特定节点挑选以进行共识验证从而打包到新区块中。如果区块链交易涉及区块链合约,则特定节点可以创建与区块链账户地址相关联的区块链合约的合约账户。如果区块链交易涉及调用部署的区块链合约,则特定节点可以触发其本地VM以执行接收到的区块链交易,从而从其区块链的本地副本调用部署的区块链合约并更新区块链中的账户状态。如果特定节点成功挖出新区块,则特定节点可以将新区块广播到其他区块链节点。其他区块链节点可以验证该新区块为由该特定区块链节点挖出的。如果达成共识,则将区块链交易B分别打包到由区块链节点维护的区块链本地副本中。区块链节点可以类似地触发其本地VM以执行区块链交易B,从而调用部署在区块链本地副本上的区块链合约A并进行相应的更新。
在接收到新区块时,其他区块链节点可以执行验证。如果达成了新区块有效的共识,则将新区块分别打包到由区块链节点维护的区块链的本地副本中。区块链节点可以类似地触发它们的本地VM(例如,本地VM1、本地VMi、本地VM2)以执行新区块中的区块链交易,从而调用区块链的本地副本(例如,本地区块链副本1、本地区块链副本i、本地区块链副本2)并进行相应的更新。每个区块链节点的硬件机器可以访问一个或多个虚拟机,所述虚拟机可以是相应的区块链节点的一部分或耦接到相应的区块链节点。每次都可以触发相应的本地VM来执行区块链交易。同样,将执行新区块中的所有其他区块链交易。轻节点也可以与更新的区块链同步。
图3示出了根据一些实施例的用于更新区块链中的数据的流程图。图3中呈现的各个步骤可以被称为用于更新区块链中的数据的方法。以下呈现的方法的操作旨在是说明性的。取决于实施方式,方法可以包括以各种次序或并行执行的附加的、更少的或可选步骤。
如图所示,客户端111与服务器端118交互以更新区块链中的数据。客户端111可以包括诸如网站、移动电话应用、公司、组织等实体的一个或多个服务器或类似的计算设备。客户端111可以存储和维护一个或多个本地账户,诸如在网站注册的用户账户或公司员工的或用户账户。服务器端118可以包括一个或多个服务器或类似的计算设备。服务器端118可以向包括客户端111的一个或多个客户端提供区块链即服务(BaaS)。例如,服务器端118可以为客户端111中的本地账户的区块链地址(区块链账户)更新区块链数据。服务器端118可以耦接到一个或多个客户端以及一个或多个区块链的一个或多个区块链节点。为简单起见,一个或多个区块链节点由相应的区块链表示。例如,区块链1可以代表区块链本身及其区块链节点,而区块链2可以代表区块链本身及其区块链节点。
在一些实施例中,客户端111可以包括维护数据库404的用户侧系统服务器403。数据库404可以存储多个本地账户(例如,本地账户1、2、3)。例如,数据库404可以存储网站、移动电话应用、公司、组织等的数百万个用户账户。数据库404可以存储与表示区块链的区块链ID相关联的本地账户,其中本地账户具有关联的区块链地址(区块链账户)。例如,如图所示,本地账户1在区块链ID 1的区块链1中具有一个区块链账户,在区块链ID 2的区块链2中具有另一个区块链账户,本地账户2在区块链ID 2的区块链2中具有一个区块链账户,本地账户3在区块链ID 1的区块链1中具有一个区块链账户,在区块链ID 3的区块链3中具有另一个区块链账户。客户端可以不存储或管理(1)与一个或多个本地账户关联的一个或多个区块链地址和/或(2)与一个或多个区块链地址关联的一个或多个私钥。由于客户端111不必存储区块链地址和公/私钥,因此减轻了客户端的存储和安全性负担。
在一些实施例中,为了更新针对本地账户的区块链地址(区块链账户)的对应区块链上的区块链数据,用户侧系统服务器403可以向服务器端118的服务器405发送:一个或多个本地账户、待执行以对应地更新与一个或多个本地账户相关联的多条数据的一个或多个未签名的区块链交易、多条数据的信息以及与一个或多个区块链交易对应的一个或多个区块链的一个或多个标识(步骤411)。这样的信息可以在一个或多个区块链数据更新请求中被发送到服务器端118。对于每个本地账户,可以对其在一个或多个区块链中的一个或多个区块链地址执行区块链数据更新。例如,本地账户1的用户想要更新区块链1和区块链2中的一些数据,本地账户2的用户想要向区块链2中添加一些数据,等等。如上所述,可以通过将区块链交易添加至对应的区块链并执行区块链交易来实现数据更新。
在一些实施例中,服务器405可以获得用于更新一个或多个区块链中的多条数据的一个或多个请求。在一些实施例中,服务器405可以从客户端(例如,客户端111的用户侧系统服务器403)获得一个或多个本地账户(例如以本地账户ID、电子邮件地址、电话号码等的形式)、待执行以对应地更新与一个或多个本地账户相关联的多条数据的一个或多个未签名的区块链交易、多条数据的信息以及与一个或多个区块链交易对应的一个或多个区块链的一个或多个标识(步骤411)。多条数据的信息包括:将要添加至一个或多个区块链的新数据或将要对一个或多个区块链中的现有数据做出的更改(例如,删除、修改或类似操作)。
在一些实施例中,服务器端118可以根据轻目录访问协议(LDAP)从客户端(例如,客户端111的用户侧系统服务器403)获得用于更新一个或多个区块链中的多条数据的一个或多个请求。LDAP是一种开放的,与供应商无关的行业标准应用协议,用于通过网络访问和维护分布式目录信息服务。例如,目录服务可以提供包括本地账户在内的具有例如公司电子邮件目录的层次结构的组织化记录集。LDAP可以允许客户端111从服务器端118接收区块链数据更新服务,而对现有数据库或其他基础设施几乎没有改变。也就是说,客户端不必开发与区块链交互的复杂接口。取而代之的是,客户端可以简单地通过连接到服务器端118来允许其现有用户与区块链进行交互。因此,在不增加客户负担的情况下扩展了区块链的可用性。
在一些实施例中,服务器端118可以获得与一个或多个本地账户相关联的一个或多个区块链地址以及对应地与一个或多个区块链地址关联的一个或多个私钥(步骤412和步骤413);基于一个或多个区块链地址,对应地更新一个或多个未签名的区块链交易(步骤412);用一个或多个私钥对应地对一个或多个更新的区块链交易进行签名(步骤414-416);并将签名的一个或多个区块链交易发送到一个或多个区块链中的一个或多个区块链节点以供执行(步骤417)。
在一些实施例中,为了获得对应地与一个或多个区块链地址关联的一个或多个私钥,服务器端118可以检索加密形式的一个或多个私钥(步骤413)。为了基于一个或多个区块链地址对应地更新一个或多个未签名的区块链交易,服务器端118可以将一个或多个区块链地址对应地添加到一个或多个未签名的区块链交易中(步骤412)。为了用一个或多个私钥对应地对一个或多个更新的区块链交易进行签名,服务器端118可以对检索的加密形式的一个或多个私钥进行解密,并用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名(步骤414-416)。
在一些实施例中,为了检索加密形式的一个或多个私钥,服务器端118可以根据一个或多个映射关系中的一个或多个秘钥管理系统(KMS)目录从KMS(例如,服务器端118的KMS 409)中检索加密形式的一个或多个私钥(步骤412)。KMS可以是服务器405的一部分,也可以位于服务器405的外部。KMS,也被称为加密密钥管理系统(CKMS),是一种用于为设备和应用生成、分发和管理加密密钥的集成的方法。它们可能涵盖从密钥的安全生成到密钥的安全交换,再到安全密钥处理和存储的安全性方面。因此,KMS包括用于密钥生成、分发和替换的后端功能,以及用于在设备上注入密钥、存储和管理密钥的客户端功能。
一个或多个映射关系将一个或多个本地账户与一个或多个区块链地址和一个或多个KMS目录关联起来。一个或多个KMS目录链接到加密形式的一个或多个私钥。例如,在服务器端118的数据库406中,服务器端118可以存储本地账户、与本地账户关联地创建的区块链地址、对应的KMS目录和区块链地址的区块链标识之间的映射关系。KMS目录链接到区块链地址的相应加密私钥。例如,如图所示,在第一条目中,本地账户1与区块链地址1、KMS目录1和区块链1的区块链ID 1相关联地存储;在第二条目中,本地账户1与区块链地址2、KMS目录2和区块链2的区块链ID 2相关联地存储;在第三条目中,本地账户2与区块链地址3、KMS目录3和区块链2的区块链ID 2相关联地存储;以此类推。
因此,通过查询数据库406中的任何本地账户,服务器端118可以找到一个或多个区块链中与其对应的区块链账户和对应的KMS目录。目录将引导到存储在KMS中的加密的私钥,该私钥可以在可信执行环境(TEE)中被解密。TEE可以是服务器405的一部分,也可以位于服务器405的外部。一般而言,TEE提供了一个提供更高级别的安全性的执行空间。在一个实施例中,TEE是主处理器的安全区域。它可以保证内部加载的代码和数据在机密性和完整性方面得到保护。作为隔离的执行环境的TEE提供了安全性特征,例如隔离执行,使用TEE执行的应用的完整性以及其资产的机密性。为了提高安全性,私钥在TEE内部可以是明文,但在TEE外部则保持加密。因此,可以在TEE内部执行私钥的加密和解密。可以基于各种方法或标准对私钥进行加密,例如数据加密标准(DES)、TripleDES、RSA、高级加密标准(AES)、Twofish等。
在一些实施例中,为了对检索的加密形式的一个或多个私钥进行解密并用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名,服务器端118可以在可信执行环境(TEE)(例如,服务器端118的TEE 407)中,对检索的加密形式的一个或多个私钥进行解密(步骤415),并使用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名(步骤416)。
在一些实施例中,服务器端118可以构建包括签名的一个或多个区块链交易的主区块链交易;并根据一个或多个区块链的一个或多个标识,将主区块链交易发送至一个或多个区块链的一个或多个区块链节点以供执行(步骤417)。因此,各种区块链数据更新请求被编译到一个主区块链交易中以供有效执行。例如,如果本地账户1的用户想要更新区块链1和区块链2中的一些数据,本地账户2的用户想要向区块链2中添加一些数据等,则服务器端118可以构建主区块链交易,该主区块链交易包括用于在对应的区块链中实现数据更新的单个区块链交易。在成功执行之后,服务器端118可以向客户端发送通知用于客户端111通知区块链数据的成功更新。
在一些实施例中,如果一个或多个区块链节点同时维护区块链1和区块链2,则服务器端118可以构建一个主区块链交易以供区块链节点执行。一个或多个区块链节点可以是也可以不是任何区块链的全部区块链节点。然而,如果区块链1和区块链2由不同的区块链节点维护,则服务器端118可以为两个不同的区块链节点组(一组维护区块链1,另一组维护区块链2)构建两个主区块链交易用于执行。
在一些实施例中,为了构建区块链交易,服务器端118可以维护并向多个区块链数据更新请求应用诸如加密/解密、数据分析、任务流以及状态存储的通用算法。因此,由于避免了在不同区块链节点上重复执行区块链交易,因此节省了整体网络算力。
除了单独地更新一个或多个区块链中的多条数据之外,服务器端118可以批量更新多个区块链数据。在一些实施例中,一个本地账户可以与一个区块链或多个区块链中的多个区块链地址相关联。服务器端118可以针对多个区块链地址批量更新多个区块链中的多条区块链数据。例如,服务器端118可以获得用于对应地更新与一个本地账户相关联的多个区块链中的多条数据的一个或多个请求,并对应地在多个区块链中批量更新多条数据。
在一些实施例中,多个本地账户可以与一个区块链中的多个区块链地址相关联。服务器端118可以在批量更新针对多个区块链地址的一个区块链的多条区块链数据。例如,服务器端118可以获得用于对应地更新与多个本地账户相关联的一个区块链中的多条数据的一个或多个请求,并在一个区块链中批量更新多条数据。
在一些实施例中,多个本地账户可以与多个区块链中的多个区块链地址相关联。服务器端118可以批量更新针对多个区块链地址的多个区块链的多条区块链数据。例如,服务器端118可以获得用于对应地更新与多个本地账户相关联的多个区块链中的多条数据的一个或多个请求,并在多个区块链中对应地批量更新多条数据。
这样,服务器端118可以监督针对区块链数据更新的操作并确保系统安全性。结果,至少减轻了客户端的存储和安全性负担。由于服务器端118可以向许多客户端提供服务,因此服务器端118可以针对所有请求维护和更新合约算法和其他通用算法。因此,利用所公开的系统和方法,更新区块链数据的效率、稳定性和安全性被显著提高。因此,客户端可以更安全、更快速、更简单、更有效的方式开设区块链账户。
图4和图5示出了根据一些实施例的用于更新区块链中的数据的示例性方法510的流程图。方法510可以由用于更新区块链中的数据的设备、装置或系统(例如,服务器端118)执行。方法510可以由图1的环境100的一个或多个组件(例如,服务器端118)执行。服务器端118可以实现区块链即服务(BaaS)。服务器端118可以包括一个或多个服务器或其他计算设备。方法510可以由包括各种硬件机器和/或软件的系统或设备(例如,计算机,服务器)实现。例如,系统或设备可以包括一个或多个处理器以及一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述一个或多个非暂时性计算机可读存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行以使得系统或设备(例如,处理器)执行方法510的指令。下面示出的方法510的操作旨在是示意性的。取决于实施方式,方法510可以包括以各种次序或并行执行的附加的、更少的或替代步骤。方法510的更多细节可以参考图1至图3以及以上的相关描述。例如,方法510中包括参考图3描述的用于更新区块链中的数据的步骤。
框511包括获得用于更新一个或多个区块链中的多条数据的一个或多个请求。框512包括更新一个或多个区块链中的多条数据。
在一些实施例中,一个本地账户可以与一个区块链或多个区块链中的多个区块链地址相关联。服务器端118可以批量更新针对多个区块链地址的多个区块链中的多条区块链数据。例如,获得用于更新所述一个或多个区块链中的多条数据的一个或多个请求包括:获得用于在与一个本地账户相关联的多个区块链中对应地更新多条数据的一个或多个请求;以及更新一个或多个区块链的多条数据包括:在多个区块链中对应地批量更新多条数据。
在一些实施例中,多个本地账户可以与一个区块链中的多个区块链地址相关联。服务器端118可以批量更新针对多个区块链地址的一个区块链中的多条区块链数据。例如,获得用于更新所述一个或多个区块链中的多条数据的一个或多个请求包括:获得用于在与多个本地账户相关联的一个区块链中对应地更新多条数据的一个或多个请求;以及更新一个或多个区块链的多条数据包括:在一个区块链中批量更新多条数据。
在一些实施例中,多个本地账户可以与多个区块链中的多个区块链地址相关联。服务器端118可以批量更新针对多个区块链地址的多个区块链中的多条区块链数据。例如,获得用于更新所述一个或多个区块链中的多条数据的一个或多个请求包括:获得用于在与多个本地账户相关联的多个区块链中对应地更新多条数据的一个或多个请求;以及更新一个或多个区块链的多条数据包括:在多个区块链中对应地批量更新多条数据。
在一些实施例中,框511包括框521。获得用于更新一个或多个区块链中的多条数据的一个或多个请求包括:获得一个或多个本地账户、待执行以对应地更新与一个或多个本地账户相关联的多条数据的一个或多个未签名的区块链交易、多条数据的信息以及与一个或多个区块链交易对应的一个或多个区块链的一个或多个标识。多条数据的信息包括:将要添加至一个或多个区块链的新数据或将对一个或多个区块链中的现有数据做出的更改(例如,删除、修改或类似操作)。对于每个本地账户,可以对其在一个或多个区块链中的一个或多个区块链地址执行区块链数据更新。每个区块链地址可以唯一地标识与本地账户相关联的区块链账户。在一个示例中,可以获得用于更新与一个或多个本地账户相关联的多条数据的一个请求。在另一示例中,可以获得共同用于更新与一个或多个本地账户相关联的多条数据的多个请求。
在一些实施例中,获得用于更新一个或多个区块链中的多条数据的一个或多个请求包括:根据轻目录访问协议(LDAP)从客户端获得用于更新一个或多个区块链中的多条数据的一个或多个请求。
在一些实施例中,框512包括框522至框525。更新一个或多个区块链的多条数据包括:获得与一个或多个本地账户相关联的一个或多个区块链地址以及对应地与一个或多个区块链地址关联的一个或多个私钥;基于一个或多个区块链地址对应地更新一个或多个未签名的区块链交易;利用一个或多个私钥对应地对一个或多个更新的区块链交易进行签名;以及将签名的一个或多个区块链交易发送至一个或多个区块链的一个或多个区块链节点以供执行。
在一些实施例中,将签名的一个或多个区块链交易发送至一个或多个区块链节点以供执行包括:构建包括签名的一个或多个区块链交易的主区块链交易;以及根据一个或多个区块链的一个或多个标识,将主区块链交易发送至一个或多个区块链的一个或多个区块链节点以供执行。
在一些实施例中,获得用于更新一个或多个区块链中的多条数据的一个或多个请求包括:从客户端获得用于更新一个或多个区块链中的多条数据的一个或多个请求。在一个实施例中,客户端可以包括诸如网站、移动电话程序、公司、组织等的实体的一个或多个服务器或类似计算设备。客户端可以存储和维护一个或多个本地账户,例如在网站注册的用户账户或公司员工的用户账户。客户端可以不存储(1)与一个或多个本地账户相关联的一个或多个区块链地址和/或(2)与一个或多个区块链地址相关联的一个或多个私钥。
在一些实施例中,获得对应地与一个或多个区块链地址关联的一个或多个私钥包括:检索加密形式的所述一个或多个私钥。基于一个或多个区块链地址对应地更新一个或多个未签名的区块链交易包括:将一个或多个区块链地址对应地添加至一个或多个未签名的区块链交易。利用一个或多个私钥对应地对一个或多个更新的区块链交易进行签名包括:对检索的加密形式的一个或多个私钥进行解密并利用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名。
在一些实施例中,检索所述加密形式的所述一个或多个私钥包括:根据一个或多个映射关系中的一个或多个秘钥管理系统(KMS)目录从KMS中检索加密形式的一个或多个私钥;一个或多个映射关系将一个或多个本地账户与一个或多个区块链地址和一个或多个KMS目录关联起来;以及一个或多个KMS目录链接至加密形式的一个或多个私钥。例如,服务器端可能已将映射关系存储在数据库中。
在一些实施例中,对检索的加密形式的一个或多个私钥进行解密并用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名包括:在可信执行环境(TEE)中,对检索的加密形式的一个或多个私钥进行解密并用解密形式的一个或多个私钥对应地对一个或多个更新的区块链交易进行签名。
图6示出了根据一些实施例的用于更新区块链中的数据的系统610的框图。系统610(例如,计算机系统)可以是上述服务器端118、类似设备或设备的系统、或服务器端118和一个或多个附加设备的组合的实施方式的示例。例如,方法510可以由系统610实现。计算机系统610可以包括一个或多个处理器以及一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述非暂时性计算机可读存储介质耦合到一个或多个处理器并配置有可由一个或多个处理器执行以促使系统或设备(例如,处理器)执行上述方法和操作,例如方法510。系统610可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,系统610可以被称为用于更新区块链中的数据的装置。装置可以包括:获得模块611,用于获得用于更新一个或多个区块链中的多条数据的一个或多个请求,以及更新模块612,用于更新一个或多个区块链中的多条数据。
这里描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或包含硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常由操作系统软件控制和协调。传统的操作系统控制和调度计算机进程用于执行,执行存储器管理,提供文件系统、网络、I/O服务,以及提供用户接口功能,例如图形用户界面(“GUI”)等。这里描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备或者一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,这里描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备执行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。
图7是示出了可以在其上实现本文描述的任何实施例的计算机系统700的框图。系统700可以执行本文描述的任何方法(例如,方法510和相关步骤)。系统700可以在本文描述的任何系统(例如,系统610、服务器端118)中实现。计算机系统700包括总线702或用于传送信息的其它通信机制、与总线702耦接的用于处理信息的一个或多个硬件处理器704。硬件处理器704可以是例如一个或多个通用微处理器。
计算机系统700还包括耦接至总线702的用于存储信息和要由处理器704执行的指令的主存储器706,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器706还可以用于在执行可由(一个或多个)处理器704执行的指令期间存储临时变量或其它中间信息。当这些指令被存储在处理器704可访问的存储介质中时,这些指令使计算机系统700呈现为专用机器,所述专用机器被定制为执行指令中所指定的操作。计算机系统700还包括耦接至总线702的用于存储用于处理器704的静态信息和指令的只读存储器(ROM)708或其他静态存储设备。诸如磁盘、光盘或USB拇指驱动器(闪存驱动器)等的存储设备710被提供并耦接至总线702,用于存储信息和指令。
计算机系统700可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑实现本文描述的技术,所述固件和/或程序逻辑与计算机系统相结合使得计算机系统700成为专用机器或将计算机系统700编程为专用机器。根据一个实施例,响应于处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列,计算机系统700执行本文描述的操作、方法和处理。这些指令可以从另一存储介质诸如存储设备710读入主存储器706。执行包含在主存储器706中的指令序列使得处理器704执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。
主存储器706、ROM 708和/或存储设备710可以包括非暂时性存储介质。这里使用的术语“非暂时性介质”和类似术语是指存储数据和/或促使机器以特定方式操作的指令的介质,所述介质不包括暂时性信号。这种非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备710。易失性介质包括动态存储器,例如主存储器706。常规形式的非暂时性介质包括,例如,软磁盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式磁带以及它们的网络版本。
计算机系统700还包括耦接至总线702的网络接口718。网络接口718提供耦接至一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接至一个或多个本地网络。例如,网络接口718可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或提供至相应类型的电话线的数据通信连接的调制解调器。作为另一示例,网络接口718可以是提供至兼容局域网(LAN)(或与WAN通信的WAN组件)的数据通信连接的LAN卡。还可以实现无线链路。在任何这样的实现方式中,网络接口718发送和接收承载表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
计算机系统700可以通过网络、网络链路和网络接口718发送消息并接收数据,包括程序代码。在因特网示例中,服务器可以通过因特网、ISP、本地网络和网络接口718传输所请求的用于应用程序的代码。
接收的代码可以在被接收时由处理器704执行,和/或存储在存储设备710或其他非易失性存储设备中以供稍后执行。
前面部分中描述的每个处理、方法和算法可以体现在由包括计算机硬件的一个或多个计算机系统或者计算机处理器执行的代码模块中并且被其完全或部分自动化地实现。处理和算法可以部分或全部地在专用电路中实现。
上述各种特征和处理可以彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合都旨在落入本文的范围内。另外,在一些实施方式中可以省略某些方法或处理框。本文描述的方法和处理也不限于任何特定顺序,与其相关的框或状态可以以适当的其他顺序执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以在单个框或状态中组合。框或状态的示例可以串行、并行或以某种其他方式执行。可以将框或状态添加到所公开的实施例中或从所公开的实施例中移除。这里描述的系统和组件的示例可以与所描述的不同地被配置。例如,与所公开的实施例相比,可以添加、移除或重新布置元件。
本文描述的方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或被永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的引擎,所述处理器实现的引擎用于执行本文描述的一个或多个操作或功能。
类似地,这里描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现的引擎执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能,或作为“软件即服务”(SaaS)操作。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)并且经由一个或多个适当的接口(例如,应用程序接口(API))被访问。
某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且跨多个机器被部署。在一些实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置。
在本文中,多个实例可以实现作为单个实例所描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,但是可以同时执行一个或多个独立的操作,并且不需要以所示的顺序执行所述操作。在配置中作为独立组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文中的主题的范围内。此外,这里使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用于将一个元件与另一元件区分开。此外,术语“一”、“一个”和“多个”在本文中并不表示对数量的限制,而是表示存在至少一个所述的物品。
尽管已经参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求书以及这些权利要求书所赋予的等同物的全部范围限定。