实现基于区块链的去中心化应用的系统和方法与流程

文档序号:21788500发布日期:2020-08-07 20:39阅读:395来源:国知局
实现基于区块链的去中心化应用的系统和方法与流程

相关申请的交叉引用

本申请要求于2019年11月8日向中国国家知识产权局(cnipa)提交的国际申请pct/cn2019/116655的优先权和权益。本文通过引用的方式结合上述申请的全部内容。

本申请一般涉及用于实现基于区块链的去中心化应用的方法和设备。



背景技术:

诸如基于区块链的虚拟机和智能合约之类的区块链技术的发展已经使基于区块链技术的去中心化应用的创建成为可能。去中心化应用可以包括前端应用和基于区块链的后端逻辑。前端应用可以提供用户接口,接收用户输入,并向用户提供输出。基于区块链的后端逻辑可以执行与去中心化应用的功能相关的计算、处理和数据存储任务。

尽管与传统的服务器或基于云的系统相比,区块链系统可能会享有诸如安全性、可信度和透明性之类的优势,但区块链系统仍存在计算效率和网络容量不足等缺点。由区块链系统的特性引起的这些和其他缺点给去中心化应用的开发和使用造成了各种障碍。例如,一些区块链系统的低计算效率或高处理成本可能会驱使去中心化应用的某些开发人员在与开发人员相关联的私有服务器上实现后端逻辑的至少一部分。这种方法可能会通过损害其安全性和可信度来破坏基于区块链的解决方案的初衷。作为另一个示例,区块链系统容量的限制可能会延迟前端应用查询相关数据的响应时间。区块链的数据结构也可能限制使用复杂数据查询的灵活性。作为另一个示例,开发人员可能需要为每个去中心化应用创建基于区块链系统的用户身份管理系统,这可能是繁重且昂贵的。作为另一个示例,区块链系统可能不提供与外部系统的接口,用于存储可能与去中心化应用相关的数据。作为另一个示例,用于开发、测试、编译和发布基于区块链的逻辑和前端应用的开发环境可能对开发人员不可用。现有的开发环境可能不允许将基于区块链的逻辑的开发和前端应用的开发集成在一起。这两个组件之间的接口可能很复杂,并且难以编程和测试。



技术实现要素:

本文的各种实施例包括但不限于用于实现基于区块链的去中心化应用的系统、方法和非暂时性计算机可读介质。

根据一些实施例,一种计算机实现的用于实现基于区块链的去中心化应用的方法包括:客户端设备基于与外部服务相关联的软件开发工具包(sdk)生成对外部服务的请求,其中,所述sdk与客户端设备上的客户端侧应用集成;客户端设备向与外部服务相关联的服务器发送请求;客户端设备从与外部服务相关联的服务器获得响应于请求的结果;客户端设备基于来自外部服务的结果生成区块链交易,其中,所述区块链交易调用部署在区块链上的区块链合约;客户端设备将区块链交易发送到一个或多个区块链节点以添加到区块链;以及客户端设备从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到所述区块链相关联的一个或多个返回值。

在一些实施例中,所述方法还包括在生成对外部服务的请求之前:客户端设备向与在线平台相关联的服务器发送访问外部服务的请求,其中,在线平台承载多个其他外部服务;客户端设备从与在线平台相关联的服务器获得与外部服务相关联的sdk;以及客户端设备将sdk与客户端侧应用集成。

在一些实施例中,与在线平台相关联的服务器被配置为响应于访问外部服务的请求,将客户端侧应用的标识添加到与外部服务相关联的白名单。

在一些实施例中,与在线平台相关联的服务器包括与外部服务相关联的服务器。

在一些实施例中,所述方法还包括客户端设备从与在线平台相关联的服务器获得针对与外部服务相关联的sdk的更新;以及基于所述获得的更新,更新与外部服务相关联的sdk。

在一些实施例中,外部服务与区块链上的不同的区块链合约相关联;所述生成的区块链交易调用该不同的区块链合约。

在一些实施例中,外部服务包括与不同的区块链相关联的去中心化标识(did)服务。

在一些实施例中,对外部服务的请求包括用于创建did的请求;并且响应于该请求的结果包括记录在与该did相关联的did文档中的信息,其中该did文档存储在不同的区块链中。

在一些实施例中,对外部服务的请求包括用于认证did的请求;并且响应于该请求的结果包括认证结果。

在一些实施例中,外部服务包括与区块链相关联的oracle服务。

在一些实施例中,对外部服务的请求包括向区块链合约提供目标数据的请求;并且与区块链相关联的oracle服务被配置为从一个或多个源获得目标数据,并将包括目标数据的区块链交易添加至区块链。

在一些实施例中,包括目标数据的区块链交易还包括区块链合约的标识。

根据其他实施例,一种用于实现基于区块链的去中心化应用的系统包括:一个或多个处理器;以及耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行前述实施例中任一实施例的方法。

根据又一些实施例,一种非暂时性计算机可读存储介质配置有可由一个或多个处理器执行以促使一个或多个处理器执行前述实施例中任一实施例的方法的指令。

根据其他实施例,一种用于实现基于区块链的去中心化应用的装置包括用于执行前述实施例中的任一实施例的方法的多个模块。

根据一些实施例,一种用于实现基于区块链的去中心化应用的系统包括,一个或多个处理器;以及耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行包括以下的操作:基于与外部服务相关联的软件开发工具包(sdk)生成对外部服务的请求,其中,所述sdk与客户端设备上的客户端侧应用集成;向与外部服务相关联的服务器发送请求;从与外部服务相关联的服务器获得响应于请求的结果;基于来自外部服务的结果生成区块链交易,其中,所述区块链交易调用部署在区块链上的区块链合约;将区块链交易发送到一个或多个区块链节点以添加到区块链;以及从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到所述区块链相关联的一个或多个返回值。

根据其他实施例,一种非暂时性计算机可读存储介质配置有能够由一个或多个处理器执行以促使一个或多个处理器执行包括以下的操作的指令:基于与外部服务相关联的软件开发工具包(sdk)生成对外部服务的请求,其中,所述sdk与客户端设备上的客户端侧应用集成;向与外部服务相关联的服务器发送请求;从与外部服务相关联的服务器获得响应于请求的结果;基于来自外部服务的结果生成区块链交易,其中,所述区块链交易调用部署在区块链上的区块链合约;将区块链交易发送到一个或多个区块链节点以添加到区块链;以及从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到所述区块链相关联的一个或多个返回值。

根据其他实施例,一种用于实现基于区块链的去中心化应用的装置包括:第一生成模块,用于基于与外部服务相关联的软件开发工具包(sdk)生成对外部服务的请求,其中,所述sdk与客户端设备上的客户端侧应用集成;第一发送模块,用于向与外部服务相关联的服务器发送请求;第一获得模块,用于从与外部服务相关联的服务器获得响应于请求的结果;第二生成模块,用于基于来自外部服务的结果生成区块链交易,其中,所述区块链交易调用部署在区块链上的区块链合约;第二发送模块,用于将区块链交易发送到一个或多个区块链节点以添加到区块链;以及第二获得模块,用于从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到所述区块链相关联的一个或多个返回值。

本文公开的实施例具有一种或多种技术效果。在一些实施例中,在线平台向去中心化应用提供各种基于区块链的服务。这允许将去中心化应用的各种功能外包,并使轻量级且易于实现的去中心化应用的开发成为可能。在其他实施例中,该平台提供了针对区块链数据的可信赖的中间存储以及针对数据的复杂查询功能。这允许通过去中心化应用有效地获取区块链数据,而不会使与区块链相关联地提供的数据接口过载。在其他实施例中,该平台承载可由去中心化应用调用或以其他方式使用的基于区块链的程序的市场。这扩大了去中心化应用潜在的能力范围,并减少了开发去中心化应用所需的工作量。在其他实施例中,该平台提供了集成的开发环境,该开发环境用于开发、测试和启动用于去中心化应用的基于区块链的后端逻辑和前端应用。这使得能够快速开发和启动去中心化应用,并有效创建和验证去中心化应用的不同组件之间的依赖关系。在其他实施例中,该平台结合了基于区块链的数据存储和其他安全去中心化数据存储解决方案。这满足了去中心化应用的不同部分提出的不同数据存储要求,并通过此类应用实现了灵活的数据管理。

本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征,以及结构的相关元件的功能和操作方法以及零件的组合及制造的经济性,在参考附图考虑以下描述和所附权利要求时将变得更加明显,所有这些附图、描述和权利要求均形成本文的一部分,其中,相似的附图标记指代各个附图中的相应部分。然而,应该明确理解,附图仅用于示例和说明目的,而不旨在限制。

附图说明

图1示出了根据一些实施例的与区块链相关联的网络环境。

图2示出了根据一些实施例的用于实现区块链交易的框架。

图3示出了根据一些实施例的用于支持基于区块链的去中心化应用的网络环境。

图4示出了根据一些实施例的用于支持基于区块链的去中心化应用的装置的框图。

图5示出了根据一些实施例的用于开发基于区块链的去中心化应用的处理。

图6示出了根据一些实施例的用于开发基于区块链的去中心化应用的方法。

图7示出了根据一些实施例的用于开发基于区块链的去中心化应用的计算机系统的框图。

图8示出了根据一些实施例的用于基于区块链的数据同步的处理。

图9示出了根据一些实施例的用于基于区块链的数据同步的方法。

图10示出了根据一些实施例的用于基于区块链的数据同步的计算机系统的框图。

图11示出了根据一些实施例的用于实现基于区块链的去中心化应用的处理。

图12示出了根据一些实施例的用于实现基于区块链的去中心化应用的方法。

图13示出了根据一些实施例的用于实现基于区块链的去中心化应用的计算机系统的框图。

图14示出了可以实现本文描述的任何实施例的计算机系统的框图。

具体实施方式

本文描述的实施例提供了与用于去中心化应用的开发、部署、发布和操作的平台相关联的方法、系统和装置。该平台可以支持使用去中心化结构执行数据存储、处理和计算任务的应用,并允许该应用结合其他基于区块链的工具或程序的功能。该平台还可以提供用于有效访问区块链数据以及外部数据的资源和工具。该平台还提供了集成的开发环境,该开发环境用于开发与去中心化应用相关联的前端应用和基于区块链的后端逻辑。开发环境提供了各种工具来以隔离或聚合方式创建和测试基于区块链的逻辑和前端应用。该平台扩展了基于区块链的去中心化应用的功能,降低了此类应用的客户端部分所需的复杂性,并提高了其开发和操作的效率。

图1示出了根据一些实施例的与区块链相关联的网络环境。如图所示,在环境100中,客户端侧计算设备111可以耦接到服务器端118,并且服务器端118和节点b可以通过各种通信网络耦接到区块链系统112。类似地,服务器端118可以可选地耦接到更多类似于区块链系统112的区块链系统,例如区块链系统113、区块链系统114等。每个区块链系统可以维护一个或多个区块链。

在一些实施例中,客户端侧计算设备111可以包括一个或多个服务器(例如,节点c)以及一个或多个其他计算设备(例如,节点a1、节点a2、节点a3)。节点a1、节点a2和节点a3可以耦接到节点c。在一些实施例中,节点c可以由具有各种本地账户(从节点a1、节点a2、节点a3评估的本地账户)的实体(例如,网站、移动电话应用、组织、公司、企业)来实现。例如,移动电话应用可具有数百万个从相应的用户账户访问应用的服务器的端用户(end-user)。应用的服务器可以相应地存储数百万个用户账户。客户端侧计算设备111的组件及其布置可以具有许多其他配置。

在一些实施例中,区块链系统112可包括维护一个或多个区块链(例如,公有区块链、私有区块链、联盟区块链)的多个区块链节点(例如,区块链节点1、区块链节点2、区块链节点3、区块链节点4、区块链节点i等)。其他区块链系统(例如,区块链系统113等)可以包括维护其他区块链的区块链节点的类似布置。每个区块链节点都可以在一个或多个区块链系统中找到。区块链节点可以包括全节点。全节点可以下载每个区块和区块链交易,并根据区块链的共识规则检查他们。区块链节点可以形成网络,在所述网络中一个区块链节点与另一个区块链节点通信。所示的区块链节点的次序和数量仅仅是为了说明的示例。区块链节点可以在服务器、计算机等中实现。例如,每个区块链节点可以在服务器或服务器集群中实现。服务器集群可以采用负载平衡。每个区块链节点可以对应经由各种类型的通信方法诸如tcp/ip耦接在一起的一个或多个物理硬件设备或虚拟设备。根据分类,区块链节点也可以称为全节点、geth节点、共识节点等。

在一些实施例中,节点b可以包括轻节点。轻节点可以不下载完整的区块链,而是可以只下载区块头以验证区块链交易的真实性。轻节点可以由全节点(例如,区块链系统112中的区块链节点)服务并且有效地依赖于全节点来访问区块链的更多功能。轻节点可以通过安装适当的软件在诸如笔记本电脑、移动电话等电子设备中实现。在一个实施例中,节点b可将区块链交易发送至区块链系统112以添加至区块链。

在一些实施例中,可以有更多类似于客户端侧计算设备111的客户端侧计算设备耦接到服务器端118。服务器端118可以提供区块链即服务(baas),并且被称为baas云。在一个实施例中,baas是一种云服务模型,其中客户端或开发人员将web或移动应用的幕后方面外包。baas可以为区块链上发生的活动提供预先编写的软件,例如用户认证、数据库管理和远程更新。baas云可以在服务器、服务器集群或其他设备中实现。在一个实施例中,baas云提供基于区块链技术的企业级平台服务。这项服务可以帮助客户端构建安全且稳定的区块链环境,并轻松管理区块链的部署、操作、维护和开发。该服务具有高安全性、高稳定性、易用性以及开放性和共享性的特征。基于云的丰富的安全策略和多租户隔离,baas云可以使用芯片加密技术来提供高级的安全保护。基于高度可靠的数据存储,这项服务提供了可以快速扩展而不会中断的端到端并具有高可用性的服务。baas云可以提供增强的管理功能,以帮助客户构建企业级区块链网络环境。baas云可以为标准区块链应用和数据提供本地支持,支持例如hyperledgerfabric和enterpriseethereum-quorum的主流开源区块链技术,以构建开放且包容的技术生态系统。

在环境100中,系统、节点和设备中的每一个可以安装有适当的软件(例如,应用编程接口)和/或硬件(例如,有线、无线连接)以访问环境100的其他设备。通常,系统、节点和设备可以能够通过一个或多个有线或无线网络(例如,互联网)彼此通信,通过所述网络可以通信数据。系统、节点和设备中的每一个可以包括一个或多个处理器以及耦接到一个或多个处理器的一个或多个存储器。存储器可以是非暂时性的且计算机可读的,并且配置有可由一个或多个处理器执行以促进所述一个或多个处理器执行本文描述的操作的指令。指令可以存储在存储器中,或者可以通过通信网络下载,而无需存储在存储器中。尽管在此附图中系统、节点和设备被示为单独的组件,但是应当理解,这些系统、节点和设备可以实现为单个设备或耦接在一起的多个设备。例如,节点b可以可选地集成到区块链节点2中。

诸如节点a1、节点a2、节点a3、节点b和节点c之类的设备可以安装有适当的区块链软件以发起、转发或访问区块链交易。术语“区块链交易”可以指在验证后在区块链系统中执行并记录在区块链中的任务单元。在一些实施例中,服务器端118可以基于从节点a1、a2或a3获得的信息来构建区块链合约。服务器端118可以将区块链合约添加至区块链交易中。在服务器端118将区块链交易提交给区块链系统之后,区块链节点可以验证区块链交易以添加到区块链。如果将区块链交易添加到区块链,则区块链合约被部署在区块链上并在特定状态下被发起。通过一个或多个附加区块链交易,可以调用所部署的区块链合约以更新特定状态。

可以根据共识规则来验证区块链交易。例如,下面提供了工作量证明(pow)共识处理。尽管如此,诸如pos(权益证明)、dpos(代表权益证明)和pbft(实用拜占庭容错)的其他类型的共识处理可以类似地应用于所公开的系统和方法。

在关于区块链交易验证的一些实施例中,在接收到未确认的区块链交易的区块链交易请求后,接收方区块链节点可以对区块链交易执行一些初步验证。例如,区块链节点1可以在从节点c接收到区块链交易之后执行初步验证。一旦被验证,区块链交易可以被存储在接收方区块链节点(例如,区块链节点1)的数据库中,该节点也可以将该区块链交易转发到一个或多个其他区块链节点(例如,区块链节点3、区块链节点4)。类似地,每个区块链节点可以包括或耦接到存储数据库的存储器。该数据库可以存储多个未确认的区块链交易。在接收到区块链交易之后,一个或多个其他区块链节点可以重复由接收方区块链节点完成的初步验证和广播处理。

对于验证,每个区块链节点可以根据其偏好从数据库中选择一些区块链交易,并将其形成为向区块链提出的新区块。区块链节点可以通过投入计算能力来解决复杂的数学问题,从而对提出的新区块进行“挖矿”。如果区块链交易涉及区块链合约,则区块链节点可以在对应的虚拟机(vm)中本地执行区块链合约。为了处理区块链合约,区块链网络的每个区块链节点都运行对应的虚拟机,并在区块链合约中执行相同的指令。虚拟机是基于计算机架构的计算机系统的软件仿真,并提供物理计算机的功能。在区块链背景下的vm可以理解为设计为作为区块链合约的运行环境运行的系统。

根据共识规则成功挖出所提出的区块链交易的新区块的特定区块链节点可以将新区块打包至其区块链的本地副本中,并将结果多播到其他区块链节点。特定区块链节点可以是首先成功完成验证、已获得验证特权、已经基于另一共识规则被选择等的区块链节点。然后,其他区块链节点可以遵循与特定区块链节点执行的执行顺序相同的执行顺序,在本地执行新区块中的区块链交易,彼此验证执行结果(例如,通过执行哈希计算),并将它们的区块链的副本与特定区块链节点的副本同步。通过更新其区块链的本地副本,其他区块链节点可以类似地将区块链交易中的此类信息写入各自的本地存储器中。因此,区块链合约可以部署在区块链上。如果验证在某些点失败,则区块链交易被拒绝。

部署的区块链合约可以具有地址,根据该地址可以访问部署的合约。区块链节点可以通过向区块链合约输入某些参数来调用部署的区块链合约。在一个实施例中,可以调用部署的区块链合约以添加或更新区块链合约中的特定信息,从而更新区块链合约中的一个或多个状态。在一个实施例中,可以通过查询添加到区块链的相应区块链交易来从区块链中检索区块链合约的一个或多个状态。最新更新的状态可以反映在最新的相关区块链交易中。虽然如上所述,但是其他类型的区块链系统和相关联的共识规则可应用于所公开的设备和方法。

图2示出了根据一些实施例的用于实现区块链交易的框架。在一些实施例中,客户端侧计算设备111可以向服务器端118发送信息。该信息可以用于创建区块链账户、基于区块链合约执行动作等。区块链可以由区块链系统112维护。服务器端118可以基于从客户端侧计算设备111获得的信息来构建区块链合约。服务器端118可以将区块链合约添加至区块链交易a。服务器端118可以代表与客户端侧计算设备111相关联的用户对区块链交易进行签名。例如,区块链交易a可以包括例如随机数(例如,交易序列号)、from(例如,用户的区块链地址)、to(例如,如果部署区块链合约则为空)、交易费、签名(例如,服务器端118的签名、服务器端118管理的用户的签名)、值(例如,交易金额)、数据(例如,区块链合约)等的信息。然后,服务器端118可以将区块链交易a提交到区块链系统112的一个或多个区块链节点以添加到区块链。

在将区块链交易添加到区块链之后,区块链合约被部署在区块链上并在特定状态下被发起。通过一个或多个附加区块链交易,可以调用所部署的区块链合约以更新特定状态。在一些实施例中,节点b可以构建签名的区块链交易b并将其发送到区块链系统112以供执行。在一个实施例中,可以执行区块链交易b来调用所部署的区块链合约以更新状态。在一些实施例中,可以在用户端应用221处用源代码对区块链交易b进行编程。例如,用户或机器可以对区块链交易b进行编程。节点b可以使用相应的编译器来编译源代码,该编译器将源代码转换为字节代码。区块链交易b可以包括诸如随机数、from、to、交易费、值、签名、数据等的信息。节点b可以通过远程过程调用(rpc)接口233将区块链交易b发送到区块链系统112的一个或多个区块链节点以供执行。rpc是一种协议,第一程序(例如,用户端应用)可以使用该协议从位于网络上的另一台计算机(例如,区块链节点)的第二程序请求服务,而无需了解网络的细节。当第一程序促使进程在不同地址空间中执行时,其如同正常(本地)进程调用,而无需程序员明确地编码远程交互的细节。

在一些实施例中,在接收到区块链交易(例如,区块链交易a或b)时,接收方区块链节点可以验证区块链交易是否有效。例如,可以验证签名和其他格式。如果验证成功,接收方区块链节点就可将接收到的区块链交易广播到区块链网络,该区块链网络包括各种其他区块链节点。一些区块链节点可以参与区块链交易的挖矿过程。区块链交易可以由特定节点选择以进行共识验证从而打包到新区块中。如果区块链交易涉及部署区块链合约,则特定节点可以创建与合约账户地址相关联的区块链合约的合约账户。如果区块链交易涉及调用部署的区块链合约,则特定节点可以触发其本地虚拟机以执行接收到的区块链交易,因此从其区块链的本地副本调用部署的区块链合约并更新所部署的区块链合约中的状态。如果特定节点成功挖出新区块,则特定节点可以将新区块广播到其他区块链节点。

在接收到新区块时,其他区块链节点可以执行验证。如果对新区块有效达成了共识,则将新区块分别打包到由区块链节点维护的区块链的本地副本中。区块链节点可以类似地触发它们的本地虚拟机(例如,本地虚拟机1、本地虚拟机i、本地虚拟机2)以执行新区块中的区块链交易,从而调用区块链的本地副本(例如,本地区块链副本1、本地区块链副本i、本地区块链副本2)并进行相应的更新。每个区块链节点的硬件机器可以访问一个或多个虚拟机,所述虚拟机可以是相应区块链节点的一部分或耦接到相应区块链节点。每次都可以触发相应的本地虚拟机来执行区块链交易。同样,将执行新区块中的所有其他区块链交易。轻节点也可以同步到更新后的区块链。

图3示出了根据一些实施例的用于支持基于区块链的去中心化应用的网络环境。在一些实施例中,网络环境可以包括平台310,其提供各种服务以使得去中心化应用成为可能;一个或多个客户端系统320,其中每个与一个或多个用户或其他合适的实体相关联;一个或多个计算系统330,其与用于去中心化应用的开发环境相关联。在一些实施例中,客户端系统320可以操作一个或多个客户端侧应用,其中的一个或多个可以由一个或多个区块链合约的后端处理来支持。在一些实施例中,提供开发环境的一个或多个计算系统330可以被实现为平台310的一部分、被实现为一个或多个客户端侧计算设备、或者被实现为一个或多个客户端侧计算设备和与平台310相关联的一个或多个计算设备的组合。

在一些实施例中,平台310可以包括区块链系统311,该区块链系统311包括被配置为管理区块链的一个或多个区块链节点。在一些实施例中,区块链系统311可被实现为图1和图2所示的服务器端118的一部分或全部、图1和图2中示出的区块链系统111、112、113、114中任意一个的部分或全部,或其任意组合。在一些实施例中,区块链系统311可以包括与多个区块链相关联并且被配置为管理多个区块链中的每个的区块链节点。在一些实施例中,区块链系统311可以从在客户端系统320上运行的客户端侧应用接收一个或多个区块链交易,并且通过一个或多个区块链节点将一个或多个区块链交易添加到适当的区块链。在其他实施例中,区块链系统311可以基于来自在客户端系统320上运行的客户端侧应用的请求来生成一个或多个区块链交易,并且通过一个或多个区块链节点将一个或多个区块链交易添加到适当的区块链。

在一些实施例中,平台310可以包括与文件系统相关联的一个或多个计算设备312。该文件系统可以被配置为存储与一个或多个客户端侧应用相关联的多个源,并基于来自一个或多个客户端侧应用的请求向所述一个或多个客户端侧应用提供多个源中的一个或多个。在一些实施例中,一个或多个客户端侧应用可以与区块链相关联,或者通过区块链上的处理和计算来支持。例如,一个或多个客户端侧应用可以各自与区块链上的一个或多个区块链合约相关联。在一些实施例中,文件系统可以包括分布式的、点对点的或基于云的文件系统。作为示例,可以根据星际文件系统(ipfs)协议来实现文件系统。作为另一示例,文件系统可以被实现为内容传送网络(cdn)。该文件系统可以包括多个节点,每个节点被配置为与一个或多个其他节点通信并存储数据。平台310可以包括与文件系统相关联的一个或多个节点。可以经由一个或多个节点来检索存储在文件系统中的数据。在其他实施例中,文件系统可以包括基于云的数据存储系统。

在一些实施例中,平台310可以包括数据库313。数据库313可以存储来自与区块链系统311相关联的一个或多个区块链的数据。在一些实施例中,数据库313可以被配置为周期性地将其中存储的数据与区块链上的数据同步。在其他实施例中,数据库313可扫描区块链上的数据或扫描从区块链获得的数据,以识别一个或多个问题,例如相关规则或法规的合规性问题。在一些实施例中,数据库313可以耦接到数据库服务器314。数据库313可以被配置为从数据库服务器314接收一个或多个数据查询,获得响应于一个或多个数据查询的数据,并且将响应于一个或多个数据查询的数据提供给数据库服务器314。在一些实施例中,数据库313可以被配置为处理诸如条件查询、集合查询或联合查询的复杂查询。在一些实施例中,通过将区块链上的数据与数据库313同步并直接从数据库313提供这样的数据,平台310可以减少用于访问区块链的查询的数量及其处理工作量,并支持诸如复杂的查询和数据审核的高级操作。

在一些实施例中,平台310可以包括数据库服务器314。数据库服务器314可以被配置为查询数据库313以获得与关联于区块链系统311的一个或多个区块链相关联的数据。在一些实施例中,数据库服务器314可以从在客户端系统320上运行的客户端侧应用接收一个或多个数据请求,并基于一个或多个数据请求来查询数据库313。在一些实施例中,客户端侧应用可以与由区块链系统311管理的区块链上的区块链合约相关联,并且可以请求与区块链合约相关联的数据。响应于该请求,数据库服务器314可以查询数据库313以获得与区块链合约相关联的数据,并将所获得的数据发送至客户端侧应用。在一些实施例中,与数据库313相关联的一个或多个数据库方案可以被公开或以其他方式对一个或多个客户端侧应用可用。客户端侧应用可以基于数据库方案将其数据请求制定(formulate)给数据库服务器314。

在一些实施例中,数据库服务器314可以被配置为执行区块链交易审核。数据库服务器314可以从在客户端系统320上运行的客户端侧应用获得与区块链相关联的区块链交易。数据库服务器可以检查区块链交易以确认区块链交易满足一个或多个预设要求,并将区块链交易发送到区块链系统311以添加到适当的区块链。同样如上所述,区块链交易审核可能是必需的,也可能不是必需的。如果不必需,则客户端侧应用可以绕过数据库服务器314,并且直接将区块链交易发送到区块链系统311以添加到区块链。

在一些实施例中,平台310可以包括应用服务器315。应用服务器315可以承载一个或多个基于区块链的程序。每个基于区块链的程序可以包括例如由区块链的操作所支持的逻辑、在一个或多个服务器(例如,与平台310相关联的一个或多个服务器)上实现的逻辑、以及使得基于区块链的程序可以由其他应用访问的接口。在一些实施例中,应用服务器315可以被配置为基于来自客户端侧应用的一个或多个请求来执行基于区块链的程序。基于区块链的程序可以与关联于区块链系统311的区块链上的区块链合约相关联。在一些实施例中,发送请求的客户端侧应用也可以与区块链上的区块链合约相关联。分别与基于区块链的程序和客户端侧应用相关联的后端区块链合约可以彼此交互。例如,与基于区块链的程序相关联的区块链合约可以被执行,以生成对与客户端侧应用相关联的区块链合约的一个或多个输入。在一些实施例中,应用服务器315承载的一个或多个基于区块链的程序可以由平台310的提供商来提供。应用服务器315承载的一个或多个其他基于区块链的程序可以由一个或多个第三方区块链服务提供商来提供。基于区块链的程序的示例可以包括提供去中心化身份服务的程序和提供oracle服务的程序。

作为示例,基于区块链的程序可以提供oracle服务或与将区块链外部的数据并入区块链相关联的服务。在一些实施例中,基于区块链的程序可以从可信源340获得外部数据、认证该外部数据并将该外部数据注入到区块链中。例如,基于区块链的程序可以被执行,以从一个或多个外部计算系统340获得外部数据、生成包括所获得的外部数据的区块链交易、并将包括所获得的外部数据的区块链交易发送到一个或多个区块链节点从而添加到区块链。在一些实施例中,基于区块链的程序可以在将外部数据注入到区块链中之前为其提供保护。例如,基于区块链的程序可以使用可信执行环境(tee),tee可以提供隔离执行环境,该隔离执行环境提供例如隔离执行、使用tee执行的应用的完整性以及其资产的机密性的安全性特征。在一些实施例中,客户端侧应用可以通过调用该基于区块链的程序将可信数据合并到其区块链逻辑中。

作为另一个示例,基于区块链的程序可以提供身份服务。基于区块链的程序可以被操作以创建去中心化标识(did)、创建和管理did文档、认证did、基于did提供身份信息或执行其他合适的功能。did可以链接到并用于唯一地标识与用户或其他实体相关联的账户。在一些实施例中,基于区块链的程序可以被配置为从客户端侧应用接收一个或多个输入。一个或多个输入可以包括与一个或多个用户或实体相关联的一个或多个数字签名。数字签名可能已经基于集成在客户端侧应用中或由客户端侧应用调用的签名工具生成,该签名工具可以被操作以安全保存用户凭据、加密密钥对或其他机密信息,并生成用户的数字签名或其他身份证明。例如,基于区块链的程序可以被执行,以从客户端侧应用获得去中心化标识(did)、生成用于从区块链获得与did相对应的did文档的区块链交易,并将用于获得did文档的区块链交易发送至一个或多个区块链节点以添加到区块链中。在一些实施例中,可以在没有账户管理或密码验证功能的情况下实现客户端侧应用,而依赖于该基于区块链的程序来实现这种功能。

在一些实施例中,平台310可以包括网关316。网关可以被配置为向客户端系统320上运行的客户端侧应用提供和以下相关联的一个或多个接口:区块链系统311、与文件系统相关联的一个或多个计算设备312、数据库313、数据库服务器314、应用服务器315、平台310的其他合适组件,或其任意组合。网关316可以被配置为执行各种功能,诸如路由、地址映射、消息转发、其他合适的功能或其任意组合。例如,网关316可以被配置为将与客户端侧应用相关联的一个或多个源的路由映射并解析到与文件系统312相关联的一个或多个地址、解析与在应用服务器315上运行的基于区块链的程序相关联的一个或多个地址、从区块链上搜索与存储数据的数据库313相关联的路由信息、执行另一种适当的操作或其任意组合。

在一些实施例中,客户端系统320可以包括一个或多个客户端侧应用以及支持该客户端侧应用的一个或多个工具。客户端系统320上的一个或多个工具可以对应于平台310的一个或多个组件,并且使客户端侧应用能够与平台310提供的一个或多个服务进行交互或使用该服务。作为示例,客户端系统320可以包括签名工具321,其可以被配置为安全保存与一个或多个用户相关联的一个或多个加密密钥,并且基于该加密密钥来生成内容或消息,例如与用户相关联的数字签名。可替代地,签名工具321可以被提供为基于云的服务并且可以被客户端侧应用调用。作为另一个示例,客户端系统320可以存储与数据库313相关联的一组数据库方案322。客户端系统320可以基于数据库方案322生成针对存储在数据库313中的数据的一个或多个数据请求或查询。作为又一示例,客户端系统320可以包括一个或多个程序客户端323,每个程序客户端323与由应用服务器315承载的基于区块链的程序之一相关联。程序客户端323可以向相应的基于区块链的应用的一个或多个功能提供一个或多个接口。客户端侧应用可以与程序客户端323进行交互,以使用相应的基于区块链的程序的一个或多个功能。

在一些实施例中,与用于去中心化应用的开发环境相关联的一个或多个计算系统330可以包括用于承载和操作应用开发环境的一个或多个软件包或模块。开发环境可以包括用于编写和编辑区块链合约的源代码的一个或多个接口331、用于编写和编辑与区块链合约相关联的客户端侧应用的源代码的一个或多个接口332、用于将配置信息(例如,与基于区块链的程序相关联的信息、客户端侧应用与区块链合约之间的依赖关系信息)插入与客户端侧应用或区块链合约相对应的源代码中的一个或多个工具333、用于将源代码编译和打包到可部署且机器可执行的代码中的一个或多个工具334、用于部署与区块链合约相关联的可执行代码的一个或多个工具335、用于部署与客户端侧应用相关联的可执行代码的一个或多个工具336、一个或多个其他合适的组件,或其任意组合。在一些实施例中,一个或多个计算设备可以被配置为操作用于开发客户端侧应用和相应的区块链合约的集成开发环境(ide)。

图4示出了根据一些实施例的用于支持基于区块链的去中心化应用的装置的框图。所述装置400可以是图3所示的网络环境的一个或多个组件的实现的示例。装置400可以包括被配置为管理区块链的区块链模块410。装置400可以包括与文件系统相关联的文件存储模块420,该文件存储模块420被配置为存储与客户端侧应用相关联的多个源并且向客户端侧应用提供多个源中的一个或多个,其中,客户端侧应用与区块链上的第一区块链合约相关联;在一些实施例中,文件系统包括根据星际文件系统(ipfs)协议的分布式文件系统。

装置400可以包括数据库服务器模块430,其被配置为查询存储来自区块链的数据的数据库模块460,以获得与第一区块链合约相关联的数据并将所获得的数据发送至客户端侧应用。在一些实施例中,数据库服务器模块430还被配置为从客户端侧应用获得与区块链相关联的区块链交易,检查该区块链交易以确认该区块链交易满足一个或多个预设要求,并将区块链交易发送到区块链模块410以添加到区块链。

装置400可以包括应用服务器模块440,其被配置为基于来自客户端侧应用的一个或多个请求来执行基于区块链的程序,其中,基于区块链的程序与区块链上的第二区块链合约相关联,并且第二区块链合约可以被执行以生成对第一区块链合约的一个或多个输入。在一些实施例中,基于区块链的程序可以被执行以从一个或多个外部计算系统获得外部数据,生成包括所获得的外部数据的区块链交易,并将包括所获得的外部数据的区块链交易发送至区块链模块410以添加到区块链。在一些实施例中,基于区块链的程序可以被执行以从客户端侧应用获得去中心化标识(did),生成用于从区块链获得与did相对应的did文档的区块链交易,并将用于获得did文档的区块链交易发送到区块链模块410以添加到区块链。

装置400可以包括应用开发模块450,其被配置为操作用于开发客户端侧应用和第一区块链约的集成开发环境(ide)。

装置400可以包括数据库模块460,其中,数据库模块460被配置为从数据库服务器模块430接收一个或多个数据查询,获得响应于一个或多个数据查询的数据,以及将响应于一个或多个数据查询的数据提供给数据库服务器模块430。在一些实施例中,数据库模块460还被配置为周期性地使数据库模块460与区块链上的数据同步或扫描区块链上的数据以识别一个或多个合规性问题。

装置400可以包括网关模块470,其被配置为向客户端侧应用提供与区块链模块410、文件存储模块420、数据库服务器模块430或应用服务器模块440相关联的一个或多个接口。在一些实施例中,网关模块470被配置为将与客户端侧应用相关联的多个源中的每一个映射到与文件系统相关联的一个或多个地址,以解析与基于区块链的程序相关联的一个或多个地址,或者搜索与数据库模块460相关联的路由信息。

图5示出了根据一些实施例的用于开发基于区块链的去中心化应用的处理。取决于实施方式,图5中所示出的处理可包括以各种顺序执行或并行执行的附加的、更少的或可选的步骤。去中心化应用可以包括客户端侧应用以及与该客户端侧应用相关联的一个或多个区块链合约。客户端侧应用可以提供其中接收用户输入并显示输出的接口。客户端侧应用可以将后端计算和处理中继到其中存储有一个或多个区块链合约的区块链。特别地,与一个或多个区块链合约相关联的逻辑可以由与该区块链相关联的一个或多个虚拟机执行。

在一些实施例中,可以提供ide并且可以使得在同一环境中开发区块链合约和与去中心化应用相关联的客户端侧应用成为可能。如图5所示,ide可以包括用于区块链合约的开发环境510和/或用于客户端侧应用的开发环境520。这样的ide可以在图3所示的一个或多个计算系统330上实现。开发环境510和520可以经由网关530与一个或多个存储系统540以及与一个或多个区块链相关联的一个或多个系统550对接。与一个或多个区块链相关联的一个或多个系统550可以承载和操作多种服务,例如账户服务、合约服务、公证服务,其他合适的服务或其任意组合。这里,网关530可以类似于图3所示的网关316来实现。一个或多个存储系统540可以类似于图3所示的与一个或多个计算设备312相关联的文件系统来实现。与一个或多个区块链相关联的一个或多个系统550可以被实现为如图3所示的区块链系统311、应用服务器315或区块链系统311和应用服务器315的组合。

在一些实施例中,基于区块链的去中心化应用开发的处理可以在步骤501开始。ide(例如510)可以基于多个输入来生成区块链合约和与区块链合约相关联的接口规范。在一个实施例中,多个第一输入可以由去中心化应用的开发者在ide提供的用户接口中输入。输入可以包括与区块链合约相关联的源代码。源代码可以用开发人员选择的一种或多种编程语言(例如,solidity、c++)编写。在一些实施例中,ide可以提供各种工具来协助开发人员创建新的区块链合约。这些工具可以包括例如用于区块链合约模板的市场、经验证或已确认的区块链合约的数据库、以不同语言或针对不同区块链平台创建的区块链合约的翻译或转换,其他合适的工具或其任意组合。

在一些实施例中,在步骤502,ide(例如,510)可以基于输入获得与区块链合约相关联的源代码,并编译所获得的源代码以生成与区块链合约相关联的字节代码。在编译源代码之前,ide可以对源代码执行检查。例如,ide可以分析获得的源代码以识别一个或多个语法问题,或者分析获得的源代码以识别与区块链合约相关联的一个或多个安全问题。

在一些实施例中,ide(例如510)可以进一步生成与区块链合约相关联的接口规范。接口规范可以包括与区块链合约相关联的应用二进制接口(abi)的规范。abi的规范可以包括对与区块链合约相关联的一个或多个接口功能中的每一个的描述。

在步骤503,ide(例如510)可以将区块链合约部署在区块链上。在一些实施例中,ide可以生成包括区块链合约的逻辑的一个或多个区块链交易,其中一个或多个区块链交易可以被执行以将区块链合约添加到区块链。ide可以经由网关530将区块链交易发送到与区块链关联的计算机系统550。计算机系统550可包括与区块链相关联的一个或多个区块链节点。一个或多个区块链节点可以将区块链交易添加到区块链,使得区块链合约被注册在区块链上。在一些实施例中,ide可以将与区块链合约相关联的字节代码发送到与区块链相关联的计算机系统550。该字节代码可以由与计算机系统550相关联的合约服务来处理,该合约服务可以将与区块链合约相关联的字节代码添加到区块链。

在一些实施例中,ide(例如510)还可以提供用于测试区块链合约的工具。例如,在将区块链合约部署在区块链上之前,ide可以生成与区块链合约相关联的一个或多个单元测试用例,并执行一个或多个单元测试用例以测试区块链合约。单元测试用例可以自动生成,也可以基于多个输入生成。ide可以使用一种或多种其他合适的方法来测试区块链合约。

在步骤504,开发环境510可以将与区块链合约相关联的接口规范提供给用于客户端侧应用的开发环境520。在一些实施例中,开发环境520可以加载与区块链合约相关联的接口规范。在一些实施例中,ide可以基于接口规范来生成与区块链合约相关联的对象。可以以基于对象的编程语言(例如,javascript)生成对象,在该基于对象的编程语言中,将对客户端侧应用进行编程。该对象可以包括与区块链合约的接口规范相关联的一个或多个方法。可以调用一个或多个方法来与区块链合约进行交互。ide可以将与对象相关联的代码合并到与客户端侧应用相关联的源代码中。步骤504可以或可以不与步骤503同时发生。

在步骤505,ide(例如520)可以基于多个输入和与区块链合约相关联的接口规范来生成客户端侧应用。客户端侧应用可以被执行以调用部署在区块链上的区块链合约。在一些实施例中,客户端侧应用的源代码可以包括与区块链合约相关联的对象。用于创建客户端侧应用的一个或多个输入可以调用与接口规范相关联的一个或多个方法,以建立客户端侧应用和区块链合约之间的依赖关系,并使能客户端侧应用和与区块链合约相关联的接口以相互调用。ide可以将与区块链合约相关联的对象和基于输入的源代码包括在客户端侧应用中。

在一些实施例中,为了与部署在区块链上的区块链合约对接,客户端侧应用可能需要与区块链相关的软件开发工具包。ide(例如520)可以在客户端侧应用中集成与区块链相关的sdk。在一些实施例中,客户端侧应用可以调用在计算机系统550或应用服务器315中运行的一个或多个基于区块链的程序。用于创建客户端侧应用的一个或多个输入可以包括对与该区块链相关联的一个或多个基于区块链的程序的一个或多个引用。客户端侧应用可以被执行,以调用一个或多个基于区块链的程序。ide可以将与一个或多个基于区块链的程序相关联的一个或多个sdk集成在客户端侧应用中。

在一些实施例中,ide(例如510、520)可以提供用于测试包括客户端侧应用和区块链合约的去中心化应用的一个或多个工具。在一些实施例中,ide可以提供用于客户端侧应用的一个或多个模拟器,以及提供用于区块链合约的一个或多个模拟器。模拟器可用于模拟去中心化应用的执行并测试去中心化应用的功能,例如客户端侧应用与区块链合约之间的相互调用。在一些实施例中,ide可以提供用于测试区块链合约或客户端侧应用的一个或多个模拟器,并使用一个或多个模拟器来执行客户端侧应用或区块链合约,以识别与客户端侧应用或区块链合约相关联的一个或多个问题。经过适当的测试后,ide可以准备客户端侧应用以进行部署。

在一些实施例中,在步骤507,ide(例如520)可以将客户端侧应用存储在在线存储系统540中。ide可以编译和打包客户端侧应用。然后,ide可以将客户端侧应用发送到一个或多个系统以进行存储和发布。例如,可以根据星际文件系统(ipfs)协议或基于云的存储系统在分布式文件系统上存储和发布客户端侧应用。可以使用户可以从在线存储系统540下载客户端侧应用。在一些实施例中,客户端侧应用可以在去中心化应用市场中列出以供用户访问。

在一些实施例中,如果区块链合约在其与客户端侧应用的集成期间或在测试期间被更新,则在步骤508,ide可以经由网关530将区块链合约部署到区块链。在一些实施例中,步骤508可以与步骤507同时发生。

图6示出了根据一些实施例的用于开发基于区块链的去中心化应用的方法。方法600可以由用于开发基于区块链的去中心化应用的设备、装置或系统执行。方法600可以由图1-3和图5所示的环境或系统的一个或多个组件来执行,例如图3中用于开发去中心化应用的计算机系统330的一个或多个组件或图5中的ide510和520的一个或多个组件。根据实施方式,方法600可以包括以不同顺序执行或并行执行的附加步骤、更少步骤或可选步骤。

框610包括基于多个第一输入来生成区块链合约和与区块链合约相关联的接口规范。在一些实施例中,生成区块链合约包括:基于多个第一输入获得与区块链合约相关联的源代码,以及编译所获得的源代码以生成与区块链合约相关联的字节代码。在一些实施例中,与区块链合约相关联的接口规范包括与区块链合约相关联的应用二进制接口(abi)的规范,其中,abi的规范包括与区块链合约相关联的一个或多个接口功能中的每一个的描述。

在一些实施例中,生成区块链合约还包括:在编译所获得的源代码以生成字节代码之前,分析所获得的源代码以识别一个或多个语法问题,或者分析所获得的源代码以识别与区块链合约相关联的一个或多个安全问题。在一些实施例中,生成区块链合约包括基于多个第三输入生成与区块链合约相关联的一个或多个单元测试用例,并执行一个或多个单元测试用例以测试区块链合约。

框620包括将区块链合约部署在区块链上。

框630包括基于多个第二输入和与区块链合约相关联的接口规范来生成客户端侧应用,其中,该客户端侧应用可以被执行以调用部署在区块链上的区块链合约。在一些实施例中,生成客户端侧应用包括将与区块链相关联的软件开发工具包(sdk)集成在客户端侧应用中。在一些实施例中,一个或多个第二输入包括对与该区块链相关联的一个或多个基于区块链的程序的一个或多个引用。客户端侧应用可以被执行以调用一个或多个基于区块链的程序。在一些实施例中,生成客户端侧应用包括将与一个或多个基于区块链的程序相关联的一个或多个sdk集成在客户端侧应用中。

在一些实施例中,生成客户端侧应用包括基于接口规范生成与区块链合约相关联的对象,其中,该对象包括与接口规范相关联的一个或多个方法;以及获得多个第二输入,其中,一个或多个第二输入包括调用与接口规范相关联的一个或多个方法的源代码;以及将与区块链合约相关联的对象和源代码包括在客户端侧应用中。在一些实施例中,生成客户端侧应用包括提供用于测试区块链合约或客户端侧应用的一个或多个模拟器,以及使用一个或多个模拟器执行客户端侧应用或区块链合约,以识别与客户端侧应用或区块链合约相关联的一个或多个问题。

框640包括将客户端侧应用存储在在线存储系统中。在一些实施例中,在线存储系统包括根据星际文件系统(ipfs)协议的分布式文件系统或基于云的存储系统。

在一些实施例中,该方法还包括提供用于区块链合约开发和应用开发的集成开发环境(ide);在ide中接收多个第一输入;在ide中接收多个第二输入。

图7示出了根据一些实施例的用于开发基于区块链的去中心化应用的计算机系统的框图。系统700可以是图3中用于开发去中心化应用的计算机系统330的一个或多个组件、图5中的ide510和520的一个或多个组件、或如图1-3和图5中所示的一个或多个其他组件的实现的示例。方法600可以由计算机系统700实现。计算机系统700可以包括一个或多个处理器以及耦接到一个或多个处理器并配置有指令的一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述指令可由一个或多个处理器执行以促使所述系统或设备(例如,处理器)执行上述方法,例如方法600。计算机系统700可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中,计算机系统700可以被称为用于开发基于区块链的去中心化应用的装置。装置可以包括:第一生成模块710,用于基于多个第一输入来生成区块链合约和与区块链合约相关联的接口规范;部署模块720,用于将区块链合约部署在区块链上;第二生成模块730,用于基于多个第二输入和与区块链合约相关联的接口规范来生成客户端侧应用,其中,该客户端侧应用可以被执行以调用部署在区块链上的区块链合约;以及存储模块740,用于将客户端侧应用存储在在线存储系统中。

图8示出了根据一些实施例的用于基于区块链的数据同步的处理。取决于实施方式,图8中所示出的处理可包括以各种顺序执行或并行执行的附加的、更少的或可选的步骤。该处理可以由图3所示的网络环境的一个或多个组件或者其他合适的系统或设备执行。例如,执行该处理的步骤的系统或设备可以包括:区块链系统311,其包括被配置为管理一个或多个区块链的一个或多个区块链节点;数据库313,其被配置为存储来自与该区块链系统311相关联的一个或多个区块链的数据;数据库服务器314,其被配置为查询数据库313以获得与关联于区块链系统311的一个或多个区块链相关联的数据;以及客户端320,其包括一个或多个客户端侧应用和支持客户端侧应用的一个或多个工具。区块链系统311、数据库313和数据库服务器314可以是用于支持客户端上的去中心化应用的平台310的一部分。

用于基于区块链的数据同步的处理可以开始于步骤810,其中,平台310可以从与区块链相关联的一个或多个区块链节点获得与记录在区块链的一个或多个区块中的多个区块链交易相关联的数据。在步骤820,平台310可以将所获得的数据存储在数据库313中。数据库313中的数据可以与区块链上的数据连续地同步。区块链系统311可以监视区块链,以确定新区块何时被添加到区块链并被区块链网络确认。然后,它可以获得与记录在新添加的区块中的多个区块链交易相关联的数据,并基于记录在新添加的区块中的区块链交易来更新数据库313。平台310可以出于各种目的扫描或以其他方式处理添加到数据库313的数据,例如用于审核或验证区块链交易是否符合相关法律或法规。

可以根据一个或多个方案来组织数据库313中的数据。一个或多个方案中的至少一个方案可以与最初从中获得数据的区块链的数据结构不同。每个方案可以是以正规语言描述的结构,该正规语言由指定了数据的组织的数据库313支持。每个方案可以包括以一个或多个公式表示的一个或多个完整性约束。方案可以定义存储在数据库313中的数据的各种结构元素,例如表、字段、关系、视图、索引、包、过程、函数、队列、触发器、类型、序列、物化视图、同义词、数据库链接、目录、xml方案,其他合适的元素或其任意组合。在一些实施例中,数据库313可以被实现为平台310上的中心化系统。在其他实施例中,数据库313可以被实现为分布式系统或基于云的系统,其一部分可以在或可以不在平台310上实现。该平台可以包括允许访问数据库313的一个或多个接口。每个方案可以表示为数据库结构的图形描述。

在一些实施例中,数据库313中的数据可以以多个版本冗余地存储。数据的每个版本可以包括与其他版本相同或重叠的内容,但是可以基于该版本唯一的特定方案进行构造。对于每个版本,可以重新排列或组织数据以符合方案,然后将其存储在数据库313中。可以基于例如所应用的处理、重新排列或优化的级别来以层次结构组织方案。在其他实施例中,分别对应于一个或多个方案的一个或多个索引可以被存储在数据库313中,并且可以被用于对存储在数据库313中的数据的结构进行编码。

根据一个示例性方案,可以基于记录每个区块链交易的区块链中的区块的高度来对数据库313中的与区块链交易相关联的数据进行排序。根据该方案存储的数据可以遵循区块链中记录的数据结构。根据另一示例方案,可以基于每个区块链交易的类型对与区块链交易相关联的数据进行分类。例如,相同类型的区块链交易(例如,价值转移)可以在数据库313中被分组在一起。

存储在数据库313中的一个或多个区块链交易可各自调用部署在区块链上的一个或多个区块链合约。根据示例性方案,可以基于一个或多个区块链合约对数据库313中的与区块链交易相关联的数据进行分类。例如,可以在数据库313中将调用一个区块链合约的区块链交易分组在一起,分配相同的标识或连续地排列。平台310可以进一步基于区块链合约来处理获得的数据。每个区块链合约可以具有接口定义,该接口定义指定例如区块链合约的输入类型、输出类型、参数、公式或其他合适的元素。平台310可以基于区块链合约的接口定义来解析调用区块链合约的区块链交易,以获得例如区块链交易的一个或多个输入、一个或多个返回值或者其他合适的信息。通过解析区块链交易而获得的信息可以与区块链交易相对应地存储在数据库313中。

一个或多个区块链交易可各自包括分别与关联于区块链的一个或多个区块链账户相关联的一个或多个标识。根据示例性方案,可以基于每个区块链交易中的一个或多个标识来对与一个或多个区块链交易相关联的数据进行分类。例如,与特定账户相关联的区块链交易可以在数据库313中被分组在一起。

在步骤830,数据库服务器314可以从数据库313获得方案。数据库服务器314可以维护方案的字典并且使其中的方案保持最新。数据库服务器314可以向一个或多个客户端公开方案或以其他方式使方案对一个或多个客户端可用。在步骤840,客户端320可以从数据库服务器314获得数据库313的方案。例如,客户端320可以向数据库服务器314发送针对一个或多个方案的请求,并从数据库服务器314接收一个或多个方案中的每一个的规范。可以用数据库313支持的正规语言来表示该规范。

在步骤850,客户端可以根据该方案制定数据查询,并将数据查询发送到数据库服务器314。在步骤860,数据库服务器314可以对数据库313执行数据查询以获得响应于该数据查询的结果。在一些实施例中,响应于数据查询,数据库服务器314可以识别数据库313中的数据,并且将所识别的数据直接返回给客户端320。在其他实施例中,数据库服务器314可以进一步对所识别的数据执行一个或多个数据操作以确定响应于数据查询的结果。数据操作可以包括集合操作(例如,并、交集)、算术操作(例如,加、减)、逻辑操作(例如,与、或)、比较操作(例如,等于、大于)、其他合适的操作或其任意组合。数据操作可以进一步包括复杂的操作,例如条件操作、聚合、联合、其他合适的复杂操作或其任意组合。这些操作可能最初不可用于对区块数据的直接查询,但是可以通过重新组织数据库313中的数据和数据库服务器314的查询处理能力而变得可用。数据库313和数据库服务器314还可以使这种数据查询的执行效率更高。在步骤870,数据库服务器314可以将结果返回给客户端320。

图9示出了根据一些实施例的用于基于区块链的数据同步的方法。方法900可以由用于基于区块链的数据同步的设备、装置或系统执行。方法900可以由图1至图3所示的环境或系统的一个或多个组件执,例如由平台310的一个或多个组件(例如,数据库313、数据库服务器314)执行。取决于实施方式,方法900可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。

框910包括从与区块链相关联的一个或多个区块链节点获得与记录在区块链的一个或多个区块中的多个区块链交易相关联的数据。

框920包括将获得的数据存储在一个或多个数据存储中,其中,所述存储包括根据一个或多个方案来组织所获得的数据,一个或多个方案中的至少一个方案不同于区块链的数据结构。在一些实施例中,一个或多个数据存储包括一个或多个分布式数据存储系统。在一些实施例中,将获得的数据存储在一个或多个数据存储中包括根据层次结构冗余地存储所获得的数据。在一些实施例中,冗余地存储获得的数据包括:根据一个或多个方案中的第一方案来存储所获得的数据,并根据一个或多个方案中的第二方案存储所获得的数据。在一些实施例中,根据一个或多个方案来组织所获得的数据包括:生成分别与一个或多个方案相关联的一个或多个索引,以及将一个或多个索引存储在一个或多个数据存储中。

在一些实施例中,根据一个或多个方案组织所获得的数据包括基于记录每个区块链交易的区块链中的区块的高度对与区块链交易相关联的数据进行排序。在一些实施例中,一个或多个区块链交易各自调用与区块链相关联的一个或多个区块链合约。根据一个或多个方案来组织所获得的数据包括基于一个或多个区块链合约对与一个或多个区块链交易相关联的数据进行分类。在一些实施例中,根据一个或多个方案来组织所获得的数据还包括,对于一个或多个区块链交易中的每个区块链交易,获得与由该区块链交易调用的一个或多个区块链合约相关联的接口定义,基于所获得的接口定义解析该区块链交易以获得一个或多个输入和一个或多个返回值,以及将一个或多个输入和一个或多个返回值与关联于区块链交易的数据相关联地存储。在一些实施例中,一个或多个区块链交易中的每一个均包括分别与关联于区块链的一个或多个区块链账户相关联的一个或多个标识。根据一个或多个方案来组织所获得的数据包括基于每个区块链交易中的一个或多个标识对与一个或多个区块链交易相关联的数据进行分类。在一些实施例中,根据一个或多个方案来组织所获得的数据包括基于每个区块链交易的类型对与区块链交易相关联的数据进行分类。

框930包括从客户端设备接收基于一个或多个方案中的一个方案的数据查询。在一些实施例中,方法900还包括:在接收基于一个或多个方案中的一个方案的数据查询之前,从客户端系统接收对一个或多个方案中的一个方案的请求,并将一个或多个方案中的一个方案的规范发送给客户端系统。

框940包括对一个或多个数据存储中的数据执行数据查询以获得结果。在一些实施例中,对一个或多个数据存储中的数据执行数据查询以获得结果包括:基于数据查询识别一个或多个数据存储中的数据的子集;对所识别的数据的子集执行一个或多个数据操作;并根据一个或多个数据操作确定结果。

框950包括向客户端设备发送包括所获得的结果的响应。

在一些实施例中,方法900还包括:确定区块是新添加到区块链中的;获取与记录在新添加的区块中的多个区块链交易相关联的数据;以及基于记录在新添加的区块中的区块链交易来更新一个或多个数据存储。

图10示出了根据一些实施例的用于基于区块链的数据同步的计算机系统的框图。系统1000可以是图3中的平台310的一个或多个组件(例如,数据库313、数据库服务器314)或图1至图3中示出的一个或多个其他组件的实现的示例。方法900可以由计算机系统1000实现。计算机系统1000可以包括一个或多个处理器以及耦接到一个或多个处理器并配置有指令的一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述指令可由一个或多个处理器执行以促使所述系统或设备(例如,处理器)执行上述方法,例如方法900。计算机系统1000可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中,计算机系统1000可以被称为用于基于区块链的数据同步的装置。该装置可以包括:获得模块1010,用于从与区块链相关联的一个或多个区块链节点获得与记录在区块链的一个或多个区块中的多个区块链交易相关联的数据;存储模块1020,用于将获得的数据存储在一个或多个数据存储中,其中,所述存储包括根据一个或多个方案来组织所获得的数据,一个或多个方案中的至少一个方案不同于区块链的数据结构;接收模块1030,用于从客户端设备接收基于一个或多个方案中的一个方案的数据查询;执行模块1040,用于对一个或多个数据存储中的数据执行数据查询以获得结果;以及发送模块1050,用于向客户端设备发送包括所获得的结果的响应。

图11示出了根据一些实施例的用于实现基于区块链的去中心化应用的处理。取决于实施方式,图11中所示的处理可包括以各种顺序执行或并行执行的附加的、更少的或可选的步骤。该处理可以由图3所示的网络环境的一个或多个组件或其他合适的系统或设备执行。例如,执行该处理的步骤的系统或设备可以包括:区块链系统311,其包括被配置为管理一个或多个区块链的一个或多个区块链节点;应用服务器315,其用于提供一个或多个基于区块链的程序或其他合适服务的市场;客户端320,其包括一个或多个客户端侧应用以及支持客户端侧应用的一个或多个工具。由应用服务器315提供的市场中的一个或多个程序或服务可以位于平台310的外部(例如,由第三方提供)。示例性外部服务可由平台310外部的一个或多个服务器340提供。外部服务340的一个或多个服务器可以与关联于区块链系统311的区块链以及一个或多个外部区块链350进行交互。外部区块链350可以包括可执行的一个或多个区块链合约,以实现外部服务340的一个或多个功能。可替代地,平台可以提供市场中的一个或多个程序或服务。在这种情况下,外部服务340的服务器可以被视为平台310的一部分。

图11所示的处理可以开始于步骤1105,其中应用服务器315可以使与外部服务340相关联的信息可用。例如,应用服务器315可以提供一个或多个web接口,客户端320可以从该web接口获得关于通过平台310可用的多个外部服务340的信息。应用服务器315可以提供诸如外部服务340的提供商、外部服务340的功能、关于与用于客户端侧应用的外部服务340对接的指令之类的信息。应用服务器315可以提供与外部服务340相关联的软件模块(例如,sdk),以供客户端侧应用下载和合并。软件模块可以被集成在客户端侧应用中,并且被用于完成与外部服务340的各种交互(例如,请求服务,解析返回值)。应用服务器315可以进一步提供一个或多个其他功能,例如许可控制、支付处理等。

在步骤1110,客户端320可以向应用服务器315发送访问外部服务340的请求。外部服务340可以由安装在客户端320上的客户端侧应用使用。在接收到请求之后,应用服务器315可以确定客户端侧应用是否具有访问外部服务340的必需许可。例如,应用服务器315可以确定客户端侧应用的开发者是否已经获得了将外部服务的sdk并入客户端侧应用的许可,或者是否已经进行了所需的支付。如果存在必需许可,则在步骤1115,应用服务可以准许客户端320访问外部服务。例如,响应于对访问外部服务340的请求,应用服务器315可以将客户端320上的客户端侧应用的标识添加到与外部服务340相关联的白名单。

在步骤1120,应用服务器315可以将外部服务340的sdk发送到客户端320。sdk可以与客户端320上的客户端侧应用集成。在一些实施例中,如步骤1110、1115和1120所示,可以准许每个客户端320访问外部服务340。在其他实施例中,与外部服务340相关联的sdk可以由客户端侧应用的开发者获得并且与客户端侧应用集成。当客户端320获得并安装客户端侧应用时,它可以获得使用外部服务340所必需的软件模块。在这种情况下,步骤1110、1115和1120可能是必需的,也可能不是必需的。在一些实施例中,可以更新外部服务340及其对应的sdk。客户端320可以从应用服务器315获得对sdk的更新。它可以通过从应用服务器315提取更新或由应用服务器315推送更新来获得该更新。客户端320然后可以基于所获得的更新来更新包括sdk的客户端侧应用。

在步骤1125,客户端320可以基于软件开发工具包(sdk)或与外部服务340相关联的其他合适的软件模块生成对外部服务340的请求。sdk或软件模块可以与客户端设备320上的客户端侧应用集成。然后,客户端320可以将请求发送到与外部服务340相关联的服务器。该请求可以促使外部服务340执行一个或多个操作、返回信息或执行与该请求相关联的其他合适的动作。在步骤1130,与外部服务关联的服务器可以处理请求。处理请求的一个或多个步骤可能需要区块链操作。在步骤1135a,外部服务340的服务器可以生成区块链交易并将其发送到外部区块链350。替代地或附加地,外部服务340的服务器可以生成区块链交易并将其发送到区块链系统311,以添加到与区块链系统311相关联的一个或多个区块链。在步骤1140,在完成所请求的操作之后,外部服务340可以将响应返回到客户端320。该响应可以包括例如所请求的信息、所请求的操作完成的确认或所请求的操作的结果。

在一些实施例中,客户端侧应用可以使用由外部服务340执行其功能所返回的结果。客户端侧应用的一个或多个功能可以通过与区块链系统311相关联的区块链的操作来执行。在步骤1145,客户端320可以基于来自外部服务的结果生成区块链交易,并且将区块链交易发送到区块链系统311以添加到区块链。区块链交易可以调用与部署在区块链上的客户端侧应用相关联的区块链合约。在步骤1150,客户端320可以从区块链系统311获得与将区块链交易添加到区块链相关联的一个或多个返回值。

例如,外部服务340可以包括去中心化标识(did)服务。可以基于外部区块链350来管理did服务。与外部区块链350相关联的一个或多个区块链合约可以耦接到服务器340,并提供诸如以下的一个或多个功能:did创建、did文档记录、did文档更新、did认证、可验证声明(vc)创建、vc验证等。did服务340可以被配置为响应于来自客户端320的请求来执行一个或多个操作。在第一示例性场景中,在步骤1125,客户端320可以将用于创建did的请求发送到外部服务340。作为响应,在步骤1130,外部服务340可以生成新的did并创建与该did相对应的did文档。在步骤1135a,外部服务340可以生成用于在外部区块链350中注册did以及记录did文档的一个或多个区块链交易,并且将一个或多个区块链交易添加到外部区块链350。在步骤1140,外部服务340可以将响应于该请求的结果发送回客户端320。该结果可以包括与最新创建的did相关联的各种信息,例如did、did文档中的部分或全部信息。在第二示例性场景中,在步骤1125,客户端320可以将用于认证did的请求发送到外部服务340。作为响应,在步骤1130,外部服务340可以处理该请求以识别认证did所需的信息。在步骤1135a,外部服务340可以向外部区块链350添加一个或多个区块链交易,以认证did(例如,用于检索与对应于该did的did文档相关联的信息)。在步骤1140,外部服务340可以将指示did是否被认证的响应返回到客户端320。

作为另一个示例,外部服务340可以包括oracle服务。oracle服务可以支持一个或多个区块链,包括与区块链系统311相关联的区块链和客户端320上的客户端侧应用。oracle服务可以使用在区块链上的一个或多个区块链合约,所述一个或多个区块链合约与关联于客户端320上的客户端侧应用的区块链合约不同。为了使用oracle服务,客户端320可以与关联于oracle服务的服务器340通信。可替代地,客户端320可以生成用于调用与oracle服务相关联的区块链合约,并将区块链交易添加到区块链。外部服务340可以通过监视或监听区块链来接收关于区块链交易的通知。在第一示例性场景中,在步骤1125,客户端320可以向外部服务340发送针对与区块链系统311相关联的区块链外部的目标数据的请求。在步骤1130,外部服务340可以处理该请求,获得所请求的外部目标数据,并且执行一个或多个操作以验证或认证该目标数据。然后,在步骤1135b,外部服务340可以生成一个或多个区块链交易并将其发送到与区块链系统311相关联的区块链,其中一个或多个区块链交易包括所请求的目标数据和由oracle服务作出的该目标数据为真的表示。一个或多个区块链交易可以调用或包括与客户端侧应用相关联的区块链合约的标识,使得区块链合约可以通过区块链的操作来利用目标数据。在步骤1140,客户端320可以获得响应于其请求的结果。该结果可以包括由外部服务340添加的一个或多个区块链交易、对该一个或多个区块链交易已被添加到区块链的确认或其他合适的信息。客户端320可以从外部服务340获得结果或者直接或间接地从区块链获得结果。

图12示出了根据一些实施例的用于实现基于区块链的去中心化应用的方法。方法1200可以由用于实现基于区块链的去中心化应用的设备、装置或系统执行。方法1200可以由图1至图3所示的环境或系统的一个或多个组件执行,例如由客户端320的一个或多个组件执行。根据实施方式,方法1200可以包括以不同顺序执行或并行执行的附加步骤、更少步骤或可选步骤。

框1210包括基于与外部服务相关联的软件开发工具包(sdk)生成对外部服务的请求,其中,sdk与客户端设备上的客户端侧应用集成。在一些实施例中,方法1200进一步包括,在生成对外部服务的请求之前:客户端设备向与在线平台相关联的服务器发送访问外部服务的请求,其中,在线平台承载多个其他外部服务;客户端设备从与在线平台相关联的服务器获得与外部服务相关联的sdk;以及客户端设备将sdk与客户端侧应用集成。在一些实施例中,与在线平台相关联的服务器被配置为响应于访问外部服务的请求,将客户端侧应用的标识添加到与外部服务相关联的白名单。在一些实施例中,与在线平台相关联的服务器包括与外部服务相关联的服务器。在一些实施例中,方法1200还包括:客户端设备从与在线平台相关联的服务器获得针对与外部服务相关联的sdk的更新;以及基于所获得的更新,更新与外部服务相关联的sdk。

框1220包括将请求发送到与外部服务相关联的服务器。

框1230包括从与外部服务相关联的服务器获得响应于该请求的结果。在一些实施例中,外部服务与区块链上的不同的区块链合约相关联;所生成的区块链交易调用该不同的区块链合约。

在一些实施例中,外部服务包括与不同的区块链相关联的去中心化标识(did)服务。在一些实施例中,对外部服务的请求包括用于创建did的请求;并且响应于该请求的结果包括记录在与该did相关联的did文档中的信息,其中该did文档存储在不同的区块链中。在一些实施例中,对外部服务的请求包括用于认证did的请求;并且响应于该请求的结果包括认证结果。

在一些实施例中,外部服务包括与区块链相关联的oracle服务。在一些实施例中,对外部服务的请求包括向区块链合约提供目标数据的请求;并且与区块链相关联的oracle服务被配置为从一个或多个源获得目标数据,并将包括目标数据的区块链交易添加至区块链。在一些实施例中,包括目标数据的区块链交易还包括区块链合约的标识。

框1240包括基于来自外部服务的结果生成区块链交易,其中,区块链交易调用部署在区块链上的区块链合约。

框1250包括将区块链交易发送到一个或多个区块链节点以添加到区块链。

框1260包括从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到区块链相关联的一个或多个返回值。

图13示出了根据一些实施例的用于实现基于区块链的去中心化应用的计算机系统的框图。系统1300可以是图3中的客户端320的一个或多个组件的实现的示例,或图1至图3中所示出的一个或多个其他组件的实现的示例。方法1200可以由计算机系统1300实现。计算机系统1300可以包括一个或多个处理器以及耦接到一个或多个处理器并配置有指令的一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述指令可由一个或多个处理器执行以促使所述系统或设备(例如,处理器)执行上述方法,例如方法1200。计算机系统1300可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中,计算机系统1300可以被称为用于实现基于区块链的去中心化应用的装置。该装置可以包括:第一生成模块1310,用于基于与外部服务相关联的软件开发工具包(sdk)来生成对外部服务的请求,其中,sdk与客户端设备上的客户端侧应用集成;第一发送模块1320,用于向与外部服务相关联的服务器发送请求;第一获得模块1330,用于从与外部服务相关联的服务器获得响应于该请求的结果;第二生成模块1340,用于基于来自外部服务的结果生成区块链交易,其中,区块链交易调用部署在区块链上的区块链合约;第二发送模块1350,用于将区块链交易发送至一个或多个区块链节点以添加到区块链;第二获得模块1360,用于从与区块链同步的一个或多个数据存储中获得与将区块链交易添加到区块链相关联的一个或多个返回值。

本文描述的技术可由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备、或者结合硬接线和/或程序逻辑以实现所述技术的任何其他设备或设备的组合。专用计算设备可实现为个人计算机、笔记本电脑、移动电话、照相手机、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏机、平板电脑、可穿戴设备或其组合。计算设备通常可由操作系统软件控制和协调。常规的操作系统控制和调度计算机处理以执行、进行内存管理、提供文件系统、网络、i/o服务,以及提供用户界面功能,诸如图形用户界面(“gui”),等等。本文所述的各种系统、装置、存储介质、模块和单元可以在专用计算设备、或者一台或多台专用计算设备的一个或多个计算芯片中实现。在一些实施例中,本文所述的指令可以在专用计算设备上的虚拟机中实现。在执行时,所述指令可以使专用计算装置执行本文所述的各种方法。虚拟机可以包括软件、硬件或其组合。

图14示出了可以实现本文描述的任何实施例的计算机系统的框图。系统1400可以在图1至图13所示的环境或系统的任何组件中实现。图1至图13所示的软件应用或服务可以在系统1400上被实现或操作。图1至图13所示的一个或多个示例性方法可以由计算机系统1400的一种或多种实施方式执行。

计算机系统1400可以包括总线1402或用于通信信息的其他通信机制、与总线1402耦接的用于处理信息的一个或多个硬件处理器1404。硬件处理器1404可以是例如一个或多个通用微处理器。

计算机系统1400还可包括耦接到总线1402的、用于存储信息和可由处理器1404执行的指令的主存储器1406,例如随机存取存储器(ram)、高速缓存和/或其他动态存储设备。主存储器1406也可被用于在由处理器1404可执行的指令的执行期间存储临时变量或其他中间信息。当这些指令存储在处理器1404可访问的存储介质中时,将计算机系统1400呈现到为了执行指令中指定的操作而定制的专用机器中。计算机系统1400可以进一步包括只读存储器(rom)1408或耦接到总线1402的用于存储用于处理器1404的静态信息和指令的其他静态存储设备。可以提供例如磁盘、光盘、usb拇指驱动器(闪存驱动器)等的存储设备1410并将其耦接到总线1402以存储信息和指令。

计算机系统1400可以使用定制的硬接线逻辑、一个或多个asic或fpga、固件和/或程序逻辑,其与计算机系统结合而使计算机系统1400成为专用机器或将计算机系统1400编程为专用机器,来实施本文所述的技术。根据一个实施例,本文所述的操作、方法和过程由计算机系统1400响应处理器1404执行主存储器1406中包含的一个或多个指令的一个或多个序列来执行。这些指令可以从另一存储介质诸如存储设备1410读取到主存储器1406中。执行主存储器1406中包含的指令序列可使得处理器1404施行本文描述的处理步骤。在替代的实施例中,可以使用硬接线电路代替软件指令或与软件指令结合使用。

主存储器1406、rom1408和/或存储设备1410可包括非暂时性存储介质。术语“非暂时性介质”和类似术语,在本文中使用时,是指存储使机器以特定方式运行的数据和/或指令的介质,所述介质不包括暂态信号。这种非暂时性介质可包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,例如存储设备1410。易失性介质包括动态存储器,例如主存储器1406。非暂时性介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其他存储芯片或内存盒、以及他们的网络版本。

计算机系统1400可包括耦接到总线1402的网络接口1418。网络接口1418可为连接到一个或多个本地网络的一个或多个网络链接提供双向数据通信耦合。例如,网络接口1418可以是综合业务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器、或向相应类型的电话线提供数据通信连接的调制解调器。作为另一示例,网络接口1418可以是局域网(lan)卡,以提供数据通信连接至可兼容的lan(或与wan通信的wan组件)。也可以实现无线链接。在任何这种实施中,网络接口1418可发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

计算机系统1400可以通过网络、网络链接和网络接口1418发送消息和接收包括程序代码的数据。在互联网示例中,服务器可以通过互联网、isp、本地网络和网络接口1418来传输应用的请求代码。

接收到的代码可以在接收时由处理器1404执行,和/或存储在存储设备1410或其他非易失性存储器中,以供以后执行。

上述部分所述的每个过程、方法和算法可以被包含在代码模块中并全部或部分由代码模块自动执行,所述代码模块由包括计算机硬件的一个或多个计算机系统或者计算机处理器执行。所述处理和算法可以部分地或全部地在专用电路中实现。

上述各种特征和处理可彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合均应落入本文的范围内。此外,在一些实施方式中可以省略某些方法或过程块。本文所述的方法和过程也不限于任何特定的顺序,与其相关的块或状态可以以适当的其他顺序执行。例如,所述块或状态可以以不同于具体公开的顺序执行,或者多个块或状态可以组合成单个块或状态。块或状态的示例可以串行、并行或以一些其他方式执行。块或状态可被添加到所公开实施例或从所公开实施例移除。本文所述的系统和组件的示例可以被配置为不同于所描述的。例如,与所公开的实施例相比,可以将元件添加、移除或重新排列。

本文所述的方法的各种操作可由临时配置(例如,通过软件)或永久配置以执行相关操作的一个或多个处理器至少部分地执行。无论临时配置或永久配置,这些处理器可以构成处理器实现的引擎,其操作以执行本文所述的一个或多个操作或功能。

类似地,本文所述的方法可以至少部分为处理器实施,一个或多个特定处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器实现的引擎执行。此外,一个或多个处理器还可以操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(saas)。例如,至少一些操作可以由一组计算机(例如,包括处理器的机器)执行,这些操作通过网络(例如,互联网)和一个或多个适当的接口(例如,应用编程接口(api))可访问。

某些操作的性能可以分布在处理器之间,不仅驻留在单个机器内,而且部署在多台机器上。在一些实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器场中)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。

在本文中,多个实例可以实现描述为单个实例的组件、操作或结构。虽然一种或多种方法的单个操作被示出并描述为单独的操作,但是一个或多个单个操作可以同时执行,而不需要按照所示的顺序执行操作。在配置中作为单独组件呈现的结构和功能可以作为组合结构或组件实现。同样,作为单个组件呈现的结构和功能可以作为单独的组件实现。这些和其他变更、修改、添加和改进落入本文主题的范围内。

尽管已经参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。详细说明不应以限制性的意义来理解,各种实施方案的范围仅由所附的权利要求以及这些权利要求的主题等同的全部范围来限定。此外,本文中使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是被用于区分一个元件和另一元件。此外,术语“一个”和“多个”在本文中不表示数量限制,而是表示至少一种所述物品的存在。另外,在本文中,“或”是包括性的而不是排他性的,除非另外明确指出或通过上下文另外指出。因此,在本文中,除非另外明确指出或通过上下文另外指出,“a、b或c”是指“a、b、c、a和b、a和c、b和c、或a、b和c”。而且,除非另外明确指出或通过上下文另外指出,“和”既是连词又是数个。因此,在本文中,除非另外明确指出或通过上下文另外指出,“a和b”是指“a和b,共同地或分别地”。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1