在分布式账本系统中进行交易的并行执行的制作方法

文档序号:20606029发布日期:2020-05-01 22:06阅读:222来源:国知局
在分布式账本系统中进行交易的并行执行的制作方法

本文涉及分布式账本系统中的交易执行。



背景技术:

分布式账本(dls),还可被称为共识网络,例如区块链网络,使参与实体能够安全地且不可篡改地存储数据。区块链网络的示例可以包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放使用dls,并开放参与共识处理。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选定的实体组群提供,该选定的实体组群控制共识处理,并且联盟区块链网络包括访问控制层。

区块链网络是管理、更新和维护一个或多个区块链结构的计算节点的网络。区块链是按照以下方式存储交易的数据结构:允许未来交易被验证以与存储在链中的所有先前交易一致。交易由区块链网络中的每个网络节点执行并记录在区块链中。

区块链网络中遇到的一个问题是处理交易的速度。通常,区块链网络中的网络节点按照它们被提交的顺序依次处理交易。这可能导致交易吞吐量降低,并且导致在提交交易和清算交易之间的延迟。

虽然许多现有技术可用于在区块链系统的网络节点之间执行交易,但是执行交易的更有效的解决方案将是有利的。



技术实现要素:

本文描述了用于在分布式账本系统(例如,区块链网络)中进行交易执行的技术。这些技术总体上涉及由网络节点在分布式账本系统中进行交易的并行执行。所描述的技术可提高区块链网络中的交易的处理速度并提高区块链网络的交易吞吐量。

本文还提供了一个或多个非暂态计算机可读存储介质,其耦接到一个或多个处理器并且其上存储有指令,当所述指令由一个或多个处理器执行时,促使一个或多个处理器执行根据本文提供的方法的实施例的操作。

本文还提供了用于实施本文提供的方法的系统。该系统包括一个或多个处理器,以及耦接到一个或多个处理器并且其上存储有指令的计算机可读存储介质,该指令当由一个或多个处理器执行时,促使一个或多个处理器执行根据本文提供的方法的实施例的操作。

应理解,根据本文的方法可包括本文描述的方面和特征的任何组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任何组合。

在附图和以下描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求,本文的其他特征和优点将显现。

附图说明

图1描绘了可用于执行本文实施例的环境的示例。

图2描绘了根据本文实施例的架构的示例。

图3a描绘了根据本文实施例的区块链网络中的交易的串行执行顺序的示例。

图3b描绘了根据本文实施例的区块链网络中的交易的并行执行顺序的示例。

图3c描绘了根据本文实施例的区块链网络中的失败交易的串行执行顺序的示例。

图4描绘了可根据本文实施例执行的处理的示例。

图5描绘了根据本文实施例的装置的模块的示例。

各附图中相同的附图标记和名称表示相同的元件。

具体实施例

本文描述了用于分布式账本系统(例如,区块链网络)中的交易执行的技术。这些技术总体上涉及由网络节点在分布式账本系统中执行诸如智能合约交易的交易的并行执行。所描述的技术可提高区块链网络中的智能合约交易的处理速度并增加区块链网络的交易吞吐量。

为本文的实施例提供进一步的上下文,并且如上所述,分布式账本系统(dls),也可以称为共识网络(例如,由点对点节点组成)和区块链网络,使参与实体能够安全地、不可篡改地进行交易和存储数据。尽管术语“区块链”通常与特定网络和/或用例相关联,但是在不参考任何特定用例情况下,本文使用“区块链”一般地指代dls。

区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含链中紧邻其之前的前一区块的加密哈希值(cryptographichash)链接到该前一区块。每个区块还包括时间戳、其自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并编入默克尔(merkle)树中。merkle树是一种数据结构,在该树的叶节点处的数据经哈希处理,并且在该树的每个分支中的所有哈希值在该分支的根处级联(concatenated)。该处理沿着该树持续一直到整个树的根,在整个树的根处存储代表树中所有数据的哈希值。通过确定哈希值是否与树的结构一致,可以快速验证声称是存储在该树中的交易的哈希值。

区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。本文参考联盟区块链网络进一步详细描述了本文的实施例。然而,预期本文的实施例可以在任何适当类型的区块链网络中实现。

通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识处理由可以被称为共识节点的授权节点集控制,一个或多个共识节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。

在一些示例中,在联盟区块链网络内,提供全局区块链作为跨所有节点复制的区块链。也就是说,所有共识节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在联盟区块链网络内实施共识协议。例如,联盟区块链网络可以实施实用拜占庭容错(practicalbyzantinefaulttolerance,pbft)共识,下面将进一步详细描述。

图1是示出了可用于执行本文实施例的环境100的示例的图。在一些示例中,示例性环境100使得实体能够参与联盟区块链网络102。示例性环境100包括计算设备106、108和网络110。在一些示例中,网络110包括局域网(lan)、广域网(wan)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路访问网络110。在一些示例中,网络110使得与联盟区块链网络102通信或在联盟区块链网络102内部通信成为可能。通常,网络110表示一个或多个通信网络。在一些情况下,计算设备106、108可以是云计算系统(未示出)的节点,或者每个计算设备106、108可以是单独的云计算系统,包括通过网络互连并且用作分布式处理系统的多个计算机。

在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与联盟区块链网络102的任何适当的计算系统。示例性计算设备包括(但不限于)服务器、台式计算机、笔记本电脑、平板电脑和智能手机。在一些示例中,计算系统106、108承载用于与联盟区块链网络102交互的一个或多个由计算机实施的服务。例如,计算系统106可以承载第一实体(例如,用户a)的由计算机实施的服务、例如第一实体使用的管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算系统108可以承载第二实体(例如,用户b)的由计算机实施的服务、例如第二实体使用的管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图1的示例中,联盟区块链网络102被表示为节点的对等网络(peer-to-peernetwork),并且计算系统106、108分别提供参与联盟区块链网络102的第一实体和第二实体的节点。

图2描绘了根据本文的实施例的架构200的示例。所述架构200的示例包括实体层202、承载服务层204和区块链网络层206。在所描绘的示例中,实体层202包括三个参与者,参与者a、参与者b和参与者c,每个参与者具有各自的交易管理系统208。

在所描绘的示例中,承载服务层204包括用于每个交易管理系统208的接口210。在一些示例中,各个的交易管理系统208通过网络(例如,图1的网络110)使用协议(例如,超文本传输安全协议(https))与各自的接口210通信。在一些示例中,每个接口210提供各自的交易管理系统208与区块链网络层206之间的通信连接。更具体地,接口210与区块链网络层206的区块链网络212通信。在一些示例中,使用远程过程调用(rpc)进行接口210与区块链网络层206之间的通信。在一些示例中,接口210“承载”用于各自的交易管理系统208的区块链网络节点。例如,接口210提供用于访问区块链网络212的应用程序接口(api)。

如本文所述,提供作为对等网络的区块链网络212,所述区块链网络212包括在区块链216中不可篡改地记录信息的多个节点214。尽管示意性地描绘了单个区块链216,但是提供了区块链216的多个副本,并且跨区块链网络212维护区块链216的多个副本。例如,每个节点214存储区块链的副本。在一些实施例中,区块链216存储与在参与联盟区块链网络的两个或更多个实体之间执行的交易相关联的信息。

区块链(例如,图2的区块链216)由一系列区块组成,每个区块存储数据。数据的示例包括表示两个或更多个参与者之间的交易的交易数据。虽然本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以存储在区块链中(例如,文档、图像、视频、音频)。交易的示例可以包括(但不限于)有价物(例如,资产、产品、服务、货币)的交换。交易数据被不可篡改地存储在区块链中。也就是说,交易数据不能改变。

在将交易数据存储至区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供的)转换为固定长度哈希值(也作为字符串数据提供的)的处理。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理可确保即使交易数据的轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括(但不限于)输出256位哈希值的安全哈希算法(sha)-256。

多个交易的交易数据被哈希处理并存储在区块中。例如,提供了两个交易的哈希值,并对它们自身进行哈希处理以提供另一个哈希值。重复该处理,直到对于所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为merkle根哈希值,并存储在区块头中。任何交易的更改都会导致其哈希值发生变化,并最终导致merkle根哈希值发生变化。

通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并竞相将区块添加到区块链中。这种节点称为共识节点。上面介绍的pbft用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。

更详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将所得的哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(merkle根哈希值)。此哈希值被添加到区块头中。共识节点还确定区块链中最新区块(即,添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)和时间戳。

通常,pbft提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过在pbft中假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而实现。在pbft中,以包括主共识节点和备共识节点的次序提供共识节点。主共识节点被周期性地改变,交易通过区块链网络内的所有共识节点对区块链网络的全局状态达成一致被添加到区块链中。在该处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点(peernode)接收的,并验证在传输期间消息未被篡改。

在pbft中,共识协议在多个阶段被提供且所有共识节点以相同状态开始。首先,客户端向主共识节点发送请求以调用服务操作(例如,在区块链网络内执行交易)。响应于接收该请求,主共识节点将该请求组播到备共识节点。备共识节点执行该请求,并且各自向客户端发送回复。客户端等待直到接收到阈值数量的回复。在一些示例中,客户端等待直到接收到f+1个回复,其中f是区块链网络内可以容忍的错误共识节点的最大数量。最终结果是,足够数量的共识节点就将记录添加到区块链的次序达成一致,并且该记录被接受或被拒绝。

在一些区块链网络中,实施加密以维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能识别交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密处理。在对称加密中,同一密钥可以用于多个节点,因此每个节点都可以对交易数据进行加密/解密。

非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何节点或所有其他节点是已知的。节点可以使用另一个节点的公钥对数据进行加密,并且该加密数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者a可以使用参与者b的公钥对数据进行加密,并将加密数据发送给参与者b。参与者b可以使用其私钥对该加密数据(密文)进行解密并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥进行解密。

非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参与者a的数字签名确认该消息是由该节点发送的。数字签名还可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者a将向参与者b发送消息。参与者a生成该消息的哈希值,然后使用其私钥对该哈希值进行加密以提供作为加密哈希值的数字签名。参与者a将该数字签名附加到该消息上,并将具有该数字签名的消息发送给参与者b。参与者b使用参与者a的公钥对该数字签名进行解密,并提取哈希值。参与者b对该消息进行哈希处理并比较哈希值。如果哈希值相同,则参与者b可以确认该消息确实来自参与者a,并且未被篡改。

可以基于与区块链网络中的节点的交互确定区块链的共识版本。例如,作为区块链网络中的节点的web服务器可以使用最长链和/或最重链标准从多个候选路径中选择区块的链作为区块链的共识版本。多个候选路径可以包括在不同时间从区块链网络中的不同节点接收的不同区块。

如上所述,区块链网络使参与者能够进行交易,例如,购买/出售商品和/或服务。在一些实施例中,每个参与者与一个或多个账户相关联。交易可以涉及一个或多个参与者,并且交易的执行可以影响一个或多个参与者的一个或多个账户。作为示例,从参与者a到参与者b的资金转移交易可以导致参与者a的账户a中的资金减少且参与者b的账户b中的资金增加。

在一些实施例中,记账模型用于记录参与者之间的交易和相应账户。记账模型的示例包括未花费的交易输出(utxo)模型和账户模型(还被称为基于账户的模型或账户/余额模型)。

在utxo模型中,链上的资产为交易的形式。每个交易都会花费先前交易的输出,并生成可在后续交易中花费的新输出。跟踪参与者的未花费的交易,并且参与者具有的用于花费的余额被计算为未花费的交易的总和。每个交易都将一个或多个未花费的输出(以及仅未花费的输出)作为输入,并且可以具有一个或多个输出。为防止双花和欺诈,有必要要求在进一步的交易中仅可使用未花费的输出。

账户模型如传统银行一样执行记账并管理账户余额。在此模型下,账户可以具有地址和相应的账户余额。链上的资产被表示为账户的余额。每个转账交易可以具有转移资产的账户地址和接收资产的账户地址。交易金额直接在账户余额上更新。账户模型是有效的,因为每个交易可能仅需要验证发送账户具有足够的余额来支付交易。除了支持交易验证和证据功能外,账户模型还可以完全支持智能合约,特别是那些需要状态信息或涉及多方的智能合约。

在一些实施例中,交易包括由外部账户发送到区块链上的另一账户的消息包。交易可以包括发送方的签名、接收方的地址以及发送方转发给接收方的代币。交易还可以包括关于智能合约的信息。每个交易都可以为区块链上的记录。

在一些实施例中,智能合约是被设计为由数据处理系统(例如区块链共识网络)传播、验证和/或执行合约的计算机程序。智能合约允许在没有第三方参与的情况下进行可信交易。交易是可追溯的且不可逆的。

在一些实施例中,区块链系统中的交易可以包括多种类型,诸如转移、合约部署、合约调用、合约更新、存款等。在一些实施例中,不管交易的类型如何,交易可以包括发送方、接收方、转账金额、合约所需的数据、交易的哈希值和签名。

在一些实施例中,根据在执行交易之前是否可以预先确定或明确受交易的执行影响的账户,可以将交易分类为第一类型交易或第二类型交易。对于第一类型交易,可以在执行第一类型交易之前预先确定受第一类型交易的执行影响的一个或多个账户。第一类型交易的示例可以包括如上所述的资金转移交易,其中在参与者a和参与者b之间执行转账交易之前可以确定受资金转移交易影响的账户(例如,参与者a的账户a和参与者b的账户b)。

对于第二类型交易,在执行第二类型交易之前,不能预先确定或明确受第二类型交易的执行影响的一个或多个账户。第二类型交易的示例可以包括智能合约交易,例如智能合约的调用。智能合约交易可涉及一个或多个参与者执行智能合约。受智能合约交易的执行影响的账户可取决于执行时区块链的当前状态,因此在实际执行智能合约交易之前无法明确该账户。这样,两个或更多个智能合约交易可能不会并行执行。由于智能合约调用可导致组成智能合约的指令的执行,因此可能无法确定特定合约调用将影响的账户范围。例如,考虑将特定账户和付款金额作为参数的智能合约,并在某些条件为真时将付款金额应用于特定账户。因为这个智能合约的调用者指定特定账户并且条件取决于执行智能合约时区块链的状态,所以可能无法从智能合约本身的定义中确定(例如,其源代码)对智能合约的特定调用将会影响哪些账户。在一些实施例中,合约调用可以是可能影响区块链网络中的所有账户的交易。因此,合约调用不能与任何其他交易并行执行。

为了提供本文的实施例的进一步上下文,图3a描绘了根据本文的实施例的用于区块链网络中的交易的串行执行顺序300的示例。如图所示,执行顺序300包括根据它们将由区块链网络中的网络节点执行的顺序而排序的多个交易(302a-302d、304a-304c、306a-306c和308a-308b)。执行顺序300是串行执行顺序,其中交易302a-302d、304a-304c、306a-306c和308a-308b中的每个单独交易被逐个执行。在区块链网络的所有共识节点(例如,参与共识协议的网络节点)中,执行顺序300可以是相同的执行顺序。例如,执行顺序300可以是由区块链网络中的所有共识节点执行的共识处理之后约定的多个交易的执行顺序。串行执行顺序300可用于确保不同区块链节点的最终执行结果是一致的。

在一些实施例中,多个交易各自包括第二类型交易,例如智能合约交易。如上所述,在执行第二类型交易之前,不能预先确定或确定受第二类型交易的执行影响的账户,因为第二类型交易的执行可取决于区块链网络中的区块链的当前状态或最新状态。在一些实施例中,为了估计受第二类型交易的执行影响的账户,第二类型交易可以由网络节点预执行,例如,在多个交易中轮到第二类型交易执行之前。例如,在执行多个交易的共识处理之前,可由网络节点预执行第二类型交易。

例如,在接收到智能合约交易之后,网络节点可将智能合约交易添加到高速缓存中的交易列表中。当网络节点的cpu或者处理器或核心之一空闲时,网络节点可以从高速缓存中的交易列表中移除智能合约交易,并且在预执行时,例如在网络节点执行交易列表中的所有交易的共识处理之前,基于网络节点的区块链的最新状态预执行智能合约交易。这样,可以在预执行之后确定受智能合约交易的预执行影响的一个或多个账户。受智能合约交易的预执行影响的一个或多个账户可以用作对受智能合约交易的实际执行影响的一个或多个账户的估计或预测。在一些实施例中,如果受智能合约交易的预执行影响的一个或多个账户与受智能合约交易的实际执行影响的一个或多个账户不同,则智能合约交易的预执行可以回滚以撤消由于预执行而对账户所做的任何更改。这样,账户状态不受影响。

在一些实施例中,网络节点(例如,从客户端接收智能合约交易并预执行智能合约交易的网络节点)可以记录受智能合约交易的预执行影响的一个或多个账户,例如,通过作为智能合约交易消息的数据结构中的附加字段或元素写入智能合约交易消息中。智能合约交易和受智能合约交易的预执行影响的相应的一个或多个账户都可以经历所有网络节点执行的共识处理。这可以避免其他网络节点对智能合约交易的重复预执行操作,从而节省计算资源。

在一些实施例中,多个交易302a-302d、304a-304c、306a-306c和308a-308b是在共识处理的时元(epoch)期间接收的交易。在一些实施例中,共识处理或机制被设计为在涉及多个节点的网络中实现可靠性。例如,区块链网络依赖于共识机制来达成区块链网络中的网络节点之间的一致。共识的时元表示区块链网络中的多个网络节点之间的一轮共识。例如,每个网络节点可以周期性地收集未决交易并将它们各自接收的未决交易提交给共识处理,以便获得要由区块链网络中的每个网络节点执行的交易列表。

在一些实施例中,每个节点接收交易的顺序可以与参与者发送交易的顺序不同。在一些实施例中,在执行共识之后,每个节点对交易的共识操作将进一步导致交易列表的交易顺序的不确定性。在一些实施例中,每个网络节点在执行多个交易之前根据一定的规则对多个交易进行分类或排序,并且,只要在区块链网络的网络节点中,节点的排序规则或协议是相同的,每个节点的最终执行结果就可以是一致的。

在一些实施例中,基于估计的受智能合约的执行影响的账户(例如,受智能合约交易的预执行影响的账户),智能合约交易可被划分为一个或多个组,其中受一个组中的智能合约交易的预执行影响的账户不会与受另一个组中的智能合约交易的预执行影响的账户重叠。例如,考虑到交易1影响账户a和账户b、交易2影响账户b和账户c、交易3影响账户d和账户e,由于交易1和交易2影响共同的账户即账户b,所以无法同时执行。这样,交易1、交易2和交易3可被划分为两组,其中组i包括影响共同的账户即账户b的交易1和2,组ii包括交易3。在一些实施例中,两个交易(交易1和交易2)的相对执行顺序可以是任意的。但是,组i和组ii可以并行执行,因为它们不会影响任何共同的账户。在一些实施例中,只要每个网络节点以相同的方式分组,并且组内交易的执行顺序相同,就可以确保每个节点的最终执行结果一致。

作为另一示例,如图3b所示,例如,基于交易的预执行是否影响一个或多个共同的交易实体(例如,受让方或发送方、转让方或接收方、或其对应的账户)或例如基于在影响一个或多个相同账户或共同账户方面是否具有依赖关系,如图3a所示的交易302a-d、304a-c、306a-c可308a-b可以被划分为四组。如图3b所示,交易302a-d表示根据交易302a-d的预执行结果影响第一共同交易实体的第一智能合约交易组340a;交易304a-c表示根据交易304a-c的预执行结果影响第二共同交易实体的第二智能合约交易组340b;交易306a-c代表根据交易306a-c的预执行结果影响第三共同交易实体的第三智能合约交易组340c;交易308a-b表示根据交易308a-b的预执行结果影响第四共同交易实体的第四智能合约交易组340d。在组340a、340b、340c和340d的每两个组之间,一个组中的交易不与另一组中的交易影响同一账户,交易的预先执行结果。

如果两个或更多个交易可能影响一个或多个共同的账户,则两个或更多个交易可能不会同时并行执行,并且两个或更多个交易会被分组到单个组中。换句话说,在单个组内,单个组中的智能合约交易的预执行影响一个或多个相同的账户;而在两个不同的组之间,受一个组中的智能合约交易的预执行影响的一个或多个账户不会与受另一个组中的智能合约交易的预执行影响的一个或多个账户重叠。结果,单个组中的智能合约交易将被串行执行,而不同组中的智能合约交易可并行执行。两个或更多个交易之间的相对执行顺序可以是任意的,例如,根据区块链网络中的所有网络节点约定的某些协议或排序规则来确定。在一些实施例中,只要每个网络节点以相同的方式分组,并且组内的交易的预执行顺序相同,就可以确保每个节点的最终预执行结果一致。

图3b描绘了根据本文的实施例的用于区块链网络中的交易的并行执行顺序350的示例。根据并行执行顺序350,智能合约交易组340a、340b、340c和340d可以由区块链网络中的网络节点并行执行。可以利用每个网络节点的多核或多线程处理能力并行执行交易组340a、340b、340c和304d,从而导致区块链网络中的处理速度和交易吞吐量的增加,因为现在网络在任一时间并行执行四个交易,而不是在所有交易被串行执行的情况下只执行一个交易。

在一些实施例中,区块链网络中的每个网络节点,例如基于区块链网络的区块链的当前状态或最新状态,根据并行执行顺序350并行执行每个组的智能合约交易。在一些实施例中,受智能合约交易的实际执行影响的一个或多个账户可能与受智能合约交易的预执行影响的一个或多个账户不同,因为实际执行时区块链的最新状态可能与预执行时区块链网络的区块链的最新状态不同,或者先前的智能合约交易的执行可能影响当前交易的执行以及受当前交易影响的一个或多个账户。在这种情况下,可以回滚或撤消智能合约交易的执行。这种智能合约交易可以被称为失败的智能合约交易并且被添加到失败交易列表中。在并行执行所有其他交易之后,可以以串行方式重新执行失败交易列表。在一些实施例中,可以根据区块链网络中的所有网络节点约定的某些规则对失败交易列表中的交易进行分类,以便确保整个区块链网络的执行结果一致。

图3c描绘了根据本文的实施例的用于区块链网络中的失败的交易的执行顺序350的示例。在该示例中,在根据并行执行顺序350实际执行智能合约交易组340a、340b、340c和340d之后,可以确定智能合约交易308a和308b是失败的交易,因为受智能合约交易308a和308b的实际执行影响的一个或多个账户分别不同于受智能合约交易308a和308b的预执行影响的一个或多个账户。在这种情况下,智能合约交易308a和308b的实际执行被回滚。智能合约交易310a和308b被放入失败交易列表中,并且在根据并行执行顺序350并行执行了智能合约交易组340a、340b、340c和340d的实际执行之后被重新执行。

在一些实施例中,对于区块链网络中的每个网络节点,只要根据相同规则对智能合约交易进行分组(例如,基于智能合约交易的预执行结果),组内的交易顺序就是一致的,在实际执行其他智能合约交易之后,根据相同的规则回滚并以串行方式重新执行失败的交易,并且可以在区块链网络中的所有网络节点间获得一致的最终执行结果。

图4描绘了可以根据本文的实施例执行的处理400的示例。在一些实施例中,可以使用利用一个或多个计算设备执行的一个或多个计算机可执行程序来执行处理400。例如,处理400可以由区块链网络中的每个网络节点执行。为了清楚地呈现,以下描述在本文中的其他附图的上下文中总体上描述了方法400。应当理解,方法400可以例如通过适当的任何合适的系统、环境、软件和硬件,或者系统、环境、软件和硬件的组合来执行。在一些实施例中,方法400的各个步骤可以并行、组合、循环或以任何顺序运行。

在402处,区块链网络中的网络节点接收要在区块链网络中执行的多个交易。网络节点是区块链网络中的多个网络节点之一。多个交易可以包括,例如,如图3a所示的交易302a-302d、304a-304c、306a-306c和308a-308b。在一些实施例中,多个交易中的每个交易可以包括智能合约交易,例如对智能合约的调用。在一些实施例中,多个交易中的每个交易包括这样的交易:在执行该交易之前,受执行该交易影响的一个或多个账户不是确定性的(即,无法确定)。换句话说,多个交易中的每个交易的执行可以影响一个或多个账户,但是在执行多个交易中的每个交易之前,不能预先确定或明确所述一个或多个账户。在一些实施例中,多个交易中的每个交易的预执行可以用于预测或估计受多个交易中的每个交易的实际执行影响的一个或多个账户。

在一些实施例中,多个交易不需要由网络节点根据预定或强制顺序执行。换句话说,多个交易之间的相对执行顺序不是必须的,只要区块链网络中的所有网络节点根据相同的顺序执行多个交易即可。

在一些实施例中,区块链网络中的每个网络节点可以例如从与区块链网络中的对应网络节点连接的一个或多个客户端接收要在区块链网络中执行的对应数量的交易。在一些实施例中,交易包括例如在一个时间段期间(例如,共识处理的时元)从区块链网络中的所有网络节点接收的所有交易。交易可以形成经历区块链网络中的所有网络节点执行的共识处理的交易列表。

在404处,对于多个交易中的每个交易,在执行多个交易的共识处理之前,该交易由网络节点基于区块链网络中的区块链的第一当前状态预执行,并且受该交易的预执行影响的一个或多个账号被确定。在一些实施例中,区块链网络中的区块链的第一当前状态可以是在预执行交易时(例如,在执行多个交易的最终顺序被确定之前)区块链的当前状态或最新状态。在一些实施例中,当网络节点的一个或多个处理器空闲时,由网络节点预执行交易。在一些实施例中,交易可以由网络节点预执行,同时网络节点正在接收另一交易或执行其他操作,例如,通过利用网络节点的多核或并行处理能力。在一些实施例中,预执行交易可以更好地利用网络节点的计算资源或处理能力,而不会引入额外的延迟或等待时间。

在一些实施例中,可以回滚已经预执行的交易,以避免对区块链网络中的区块链的第一状态的任何改变。在一些实施例中,可以在执行多个交易的共识处理之前回滚已经预执行的交易。在一些实施例中,可以在存储区块链的第一当前状态的数据结构(例如,世界状态或全局状态默克尔帕特里夏树(mpt)树)的副本上进行交易的预执行,使得区块链网络中区块链的第一当前状态不因第二类型交易的预执行而改变。

在一些实施例中,受预执行交易影响的一个或多个账户可以与交易一起记录或保存为例如列表或另一数据结构。在一些实施例中,受预执行交易影响的一个或多个账户还可以经历由区块链网络中的所有网络节点执行的共识处理,以执行与受预执行交易影响的一个或多个账户有关的共识。通过记录受预执行交易影响的一个或多个账户并将它们提交以由网络节点进行共识处理,可以避免其他网络节点对交易的重复的预执行操作,从而节省计算资源。

在406处,对于多个交易中的每个交易,网络节点执行与多个交易以及受预执行交易影响的一个或多个账户有关共识处理。例如,可以例如根据区块链网络采用的共识算法或协议执行共识处理。

在408处,网络节点基于针对多个交易中的每个交易、受预执行该交易影响的一个或多个账户,将多个交易划分为一个或多个交易组。每个交易组包括影响一个或多个共同交易实体的一个或多个交易。在每两个不同交易组之间,一个组中的任何交易不影响任何与另一个组中的任何交易有关的共同交易实体。共同交易实体可以包括例如与交易相关联的受让方、转让方、受让方的账户、或转让方的账户。

例如,图3b示出了基于受预执行交易302a-302d、304a-304c、306a-306c和308a-308b影响的一个或多个账户,将交易302a-302d、304a-304c、306a-306c、308a-308b划分为四个组340a-340d的示例。

在410处,通过基于区块链网络中的区块链的第二当前状态并行执行一个或多个交易组来执行多个交易。例如,图3b示出了通过根据并行执行顺序350并行执行四个智能合约交易组340a-340d来执行交易302a-302d、304a-304c、306a-306c、308a-308b的示例。在一些实施例中,基于区块链网络中的区块链的第二当前状态,诸如在执行各个交易时(例如,在并行执行交易302a-302d、304a-304c、306a-306c和308a-308b时)区块链的当前状态或最新状态,并行执行四个智能合约交易组340a-340d。在一些实施例中,区块链的第二当前状态不同于区块链网络中的区块链的第一当前状态。例如,区块链的第二当前状态是比区块链的第一当前状态较后的状态。在某些情况下,在第二当前状态下保存在区块链中的数据可能不同于在第一当前状态下保存在区块链中的数据。在这种情况下,相比于受基于区块链的第一当前状态预执行交易影响的账户,基于区块链的第二当前状态执行交易可以影响不同的账户。

在412处,对于多个交易中的每个交易,确定受执行交易影响的一个或多个账户。例如,一旦交易被执行,就可以确定受执行该交易影响的一个或多个账户。

在414处,确定受执行交易影响的一个或多个账户是否与受预执行该交易影响的一个或多个账户相同,以及受执行交易影响的一个或多个账户是否不受多个交易中任何先前执行的交易影响。

在416处,响应于针对多个交易中的一个交易,确定受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户相同,并且受执行交易影响的一个或多个账户不受多个交易中任何先前执行的交易的影响,提交对该交易的执行。在一些实施例中,提交多个交易的执行可以包括将多个交易的执行结果写入区块链网络的区块链中和/或向区块链网络的一个或多个客户端返回多个交易的执行结果。

在418处,响应于针对多个交易中的一个交易,确定受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户不同,或者受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响,回滚对该交易的执行。

在420处,可在并行执行一个或多个交易组之后重新执行这种交易。在一些实施例中,这种交易可以被识别为失败的交易(例如,如图3c中所示的交易308a或308b)。

在一些实施例中,可以从多个交易中识别一个或多个失败的交易,其中针对一个或多个失败的交易中的每个交易,受执行失败的交易影响的一个或多个账户与受预执行该失败的交易影响的一个或多个账户不同,或者受执行交易影响的一个或多个账户受多个交易中任何先前执行的交易影响。可在并行执行一个或多个交易组之后,重新执行该一个或多个失败的交易。在一些实施例中,可以将所有失败的交易添加到失败交易列表。在并行执行一个或多个交易组之后,可以以串行方式重新执行失败交易列表中的所有失败的交易。

在一些实施例中,在重新执行失败的交易之后,处理400进行到416,其中对失败的第二类型交易的重新执行被提交。

在一些实施例中,网络节点以与区块链网络的多个网络节点中的任何其他网络节点执行多个交易的顺序相同的顺序执行多个交易。例如,每个网络节点可以根据区块链网络中的多个网络节点约定的协议,确定在一个或多个组中的每个组内执行一个或多个交易的顺序;以及在并行执行一个或多个交易组之后执行一个或多个失败的交易的顺序。在一些实施例中,只要根据相同规则(例如,基于智能合约交易的预执行结果)对多个交易进行分组,组内交易的执行顺序就是一致的,在实际执行其他智能合约交易之后,例如,根据相同的规则回滚并且以串行方式重新执行失败的交易,可以在区块链网络中的所有网络节点间获得一致的最终执行结果。

图5是根据本文的实施例的装置500的模块的示例的示图。装置500可以是被配置为执行智能合约交易的并行执行的区块链网络节点的示例性实施例,其中区块链网络是联盟区块链网络。装置500可以对应于上述实施例,并且装置500包括以下:接收器或接收模块502,用于接收多个交易;预执行模块504,用于在执行与多个交易有关的共识处理之前,基于区块链网络中的区块链的第一当前状态,预执行多个交易中的每个交易;第一确定模块506,用于确定受多个交易中的每个交易的预执行影响的一个或多个账户;共识模块508,用于对多个交易和受预执行交易影响的一个或多个账户进行共识处理;划分器或划分模块510,用于针对多个交易中的每个交易受预执行交易影响的一个或多个账户,将多个交易划分为交易组;执行模块512,用于通过基于区块链网络中的区块链的第二当前状态并行执行一个或多个交易组来执行多个交易;第二确定模块514,用于确定受执行多个交易之一影响的一个或多个账户,以及确定受执行交易影响的一个或多个账户是否与受预执行该交易影响的一个或多个账户相同以及受执行交易影响的一个或多个账户是否不受多个交易中任何先前执行的交易影响;提交模块516,用于响应于确定受执行交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户相同并且受执行交易影响的一个或多个账户不受多个交易中任何先前执行的交易影响,提交对该交易的执行。

在可选实施例中,装置500还包括以下:回滚模块518,用于响应于确定受执行交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户不同,或受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响,回滚对所述多个交易之一的执行。重新执行模块520,用于在并行执行一个或多个交易组之后重新执行交易。

在可选实施例中,装置500还包括以下:记录模块522,用于记录受预执行多个交易中的每个交易影响的一个或多个账户,以执行与受预执行交易影响的一个或多个账户有关的共识处理。

在可选实施例中,网络节点以与区块链网络的多个网络节点中的任何其他网络节点执行多个交易的顺序相同的顺序执行多个交易。

在可选实施例中,装置500还包括以下:识别模块524,用于识别一个或多个失败的交易,其中,针对一个或多个失败的交易中的每个交易,受执行失败的交易影响的一个或多个账户与受预执行该失败的交易影响的一个或多个账户不同,或者受执行交易影响的一个或多个账户受多个交易中任何先前执行的交易影响;重新执行模块520,用于在并行执行一个或多个交易组之后,重新执行一个或多个失败的交易。

在可选实施例中,装置500还包括以下:第三确定模块526,用于确定在一个或多个组中的每个组内执行一个或多个交易的顺序;第四确定模块528,用于确定在并行执行一个或多个交易组之后执行一个或多个失败的交易的顺序。

在可选实施例中,每个交易组包括影响一个或多个共同交易实体的一个或多个交易;在每两个不同交易组之间,一个组中的任何交易不影响任何与另一组中的任何交易有关的共同交易实体。

在可选实施例中,共同交易实体可以包括与交易相关联的受让方、转让方、受让方的账户、或转让方的账户。

在可选实施例中,多个交易中的每个交易包括智能合约交易。

在可选实施例中,多个交易中的每个交易包括在执行交易之前受执行该交易影响的一个或多个账户不是确定性的交易。

在可选实施例中,网络节点预执行交易包括:当网络节点的一个或多个处理器空闲时,网络节点预执行交易。

在先前实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。

对于装置中每个模块的功能和角色的实施过程,可以参考前一方法中相应步骤的实施过程。为简单起见,这里省略了细节。

由于装置实施基本上对应于方法实施,对于相关部分,可以参考方法实施中的相关描述。先前描述的装置实施仅是示例。被描述为单独部分的单元可以是或不是物理上分离的,并且显示为单元的部分可以是或不是物理单元,可以位于一个位置,或者可以分布在多个网络单元上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域普通技术人员无需付出创造性劳动就能理解和实现本申请的实施例。

再次参考图5,它可以被解释为示出了交易执行装置的内部功能模块和结构。交易执行装置可以是被配置为执行智能合约交易的并行执行的区块链网络节点的示例。交易执行装置可以是被配置为执行智能合约交易的并行执行的区块链网络节点的示例。本质上,执行主体可以是电子设备,并且该电子设备包括:一个或多个处理器;以及被配置为存储一个或多个处理器的可执行指令的存储器。

一个或多个处理器被配置为:接收多个交易;在执行与多个交易有关的共识处理之前,基于区块链网络中的区块链的第一当前状态,预执行多个交易中的每个交易;确定受预执行交易影响的一个或多个账户;执行与多个交易和受预执行交易影响的一个或多个账户有关的共识处理;基于针对多个交易中的每个交易、受预执行交易影响的一个或多个账户,将多个交易划分为一个或多个交易组;通过基于区块链网络中的区块链的第二当前状态并行执行一个或多个交易组,执行多个交易;确定受执行交易影响的一个或多个账户;确定受执行该交易影响的一个或多个账户是否与受预执行交易影响的一个或多个账户相同以及受执行该交易影响的一个或多个账户是否不受多个交易中任何先前执行的交易影响;响应于确定,针对多个交易中的每个交易,受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户相同且受执行该交易影响的一个或多个账户不受多个交易中任何先前执行的交易影响,提交对该交易的执行。

可选地,一个或多个处理器被配置为:响应于针对多个交易中的一个交易,确定受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户不同,或受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响,回滚对该交易的执行;并在并行执行一个或多个交易组之后重新执行该交易。

可选地,一个或多个处理被配置为:针对多个交易中的每个交易,记录受预执行该交易影响的一个或多个账户,以执行与受预执行该交易影响的一个或多个账户有关的共识处理。

可选地,由网络节点以与区块链网络的多个网络节点中的任何其他网络节点执行多个交易的顺序相同的顺序执行多个交易。

可选地,一个或多个处理器被配置为:识别一个或多个失败的交易,其中,针对一个或多个失败的交易中的每个失败的交易,受执行该失败的交易影响的一个或多个账户与受预执行该失败的交易影响的一个或多个账户不同,或者受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响;在并行执行一个或多个交易组之后,重新执行一个或多个失败的交易。

可选地,一个或多个处理器被配置为:根据区块链网络中的多个网络节点约定的协议:确定在所述一个或多个交易组中的每个交易组内执行一个或多个交易的顺序;确定在并行执行一个或多个交易组之后执行一个或多个失败的交易的顺序。

可选地,每个交易组包括影响一个或多个共同交易实体的一个或多个交易;在每两个不同交易组之间,一个组中的任何交易不影响任何与另一组中的任何交易的共同交易实体。

可选地,共同交易实体可以包括与交易相关联的受让方、转让方、受让方的账户、或转让方的账户。

可选地,多个交易中的每个交易包括智能合约交易。

可选地,多个交易中的每个交易包括在执行该交易之前受执行该交易影响的一个或多个账户不是确定性的交易。

可选地,网络节点预执行交易包括:当网络节点的一个或多个处理器空闲时,网络节点预执行该交易。

本文中描述的技术产生一个或多个技术效果。例如,本文公开了这样的技术:允许网络节点在分布式账本系统中并行执行交易,同时保证分布式账本系统的每个网络节点执行的交易的执行顺序相同,以确保分布式账本系统中的交易执行结果的一致性。在一些实施例中,可以并行执行的智能合约交易被识别并分组在一起,例如,基于智能合约交易的预执行结果。在一些实施例中,技术效果和优点尤其通过将不影响任何共同交易实体或彼此不具有依赖关系的交易(例如,不影响区块链网络中的相同账户)放入不同组中来实现。因此,该技术识别由单个网络节点彼此可并行执行的交易组。在一些实施例中,在智能合约交易的情况下,如果一个或多个智能合约交易的实际执行影响的账户与一个或多个智能合约交易的预执行识别的账户不同,则一个或多个智能合约交易的执行被回滚或撤消,然后在并行执行其余智能合约交易之后以串行方式重新执行,从而相对于通常并行执行的益处以适度的计算成本确保结果的正确性。

因此,在一些实施例中,所描述的技术可以提高交易的处理速度并提高区块链网络中的交易吞吐量。例如,当网络节点的一个或多个处理器空闲时,可以由网络节点完成智能合约交易的预执行,这可以更好地利用网络节点的计算资源或处理能力,而不会引入额外的延迟或等待时间。在一些实施例中,在通过执行共识处理达成共识之后,在执行交易之前,通过将交易划分为不同的组,多个交易组可以通过利用多处理器或多核网络节点或一组计算机中的多个计算机被独立地并行执行,以提高网络节点的执行速度和整个区块链网络的效率。在一些实施例中,所描述的技术不需要输入(例如,手动)受智能合约交易的执行影响的账户列表,因此不会出现输入错误的可能性或受某些智能合约交易影响的账户的不可预测性。

描述的主题的实施例可单独包括一个或多个特征或包括一个或多个特征的组合。

例如,在第一实施例中,一种用于在区块链网络中执行多个交易的方法,其中,所述区块链网络包括多个网络节点,所述方法包括:由包括多个网络节点的区块链网络中的网络节点接收要在区块链网络中执行的多个交易;针对多个交易中的每个交易,在执行与多个交易有关的共识处理之前,网络节点基于区块链网络中的区块链的第一当前状态,预执行该交易;确定受预执行该交易影响的一个或多个账户;执行与多个交易和受预执行交易影响的一个或多个账户有关的共识处理;网络节点针对多个交易中的每个交易,基于受预执行该交易影响的一个或多个账户,将多个交易划分为一个或多个交易组;通过基于区块链网络中的区块链的第二当前状态并行执行一个或多个交易组,执行多个交易;针对多个交易中的每个交易,确定受执行该交易影响的一个或多个账户;确定受执行该交易影响的一个或多个账户是否与受预执行该交易影响的一个或多个账户相同以及受执行该交易影响的一个或多个账户是否不受多个交易中任何先前执行的交易影响;响应于针对多个交易中的每个交易,确定受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户相同并且受执行该交易影响的一个或多个账户不受多个交易中任何先前执行的交易影响,提交对该交易的执行。

前述和其他描述的实施例可各自可选地包括以下特征中的一个或多个:

第一特征,可与以下任何特征组合,还包括:响应于针对多个交易中的一个交易,确定受执行该交易影响的一个或多个账户与受预执行该交易影响的一个或多个账户不同,或受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响,回滚对该交易的执行;并在并行执行一个或多个交易组之后重新执行该交易。

第二特征,可与以下任何特征组合,还包括:针对多个交易中的每个交易,记录受预执行该交易影响的一个或多个账户,以执行与受预执行该交易影响的一个或多个账户有关的共识处理。

第三特征,可与以下任何特征组合,其中,网络节点以与区块链网络的多个网络节点中的任何其他网络节点执行多个交易的顺序相同的顺序执行多个交易。

第四特征,可与以下任何特征组合,还包括:识别一个或多个失败的交易,其中,针对所述一个或多个失败的交易中的每个失败的交易,受执行该失败的交易影响的一个或多个账户与受预执行该失败的交易影响的一个或多个账户不同,或者受执行该交易影响的一个或多个账户受多个交易中任何先前执行的交易影响;在并行执行一个或多个交易组之后,重新执行一个或多个失败的交易。

第五特征,可与以下任何特征组合,还包括:根据区块链网络中的多个网络节点约定的协议:确定一个或多个交易组的每个交易组内执行一个或多个交易的顺序;确定在并行执行一个或多个交易组之后执行一个或多个失败的交易的顺序。

第六特征,可与以下任何特征组合,其中,每个交易组包括影响一个或多个共同交易实体的一个或多个交易;在每两个不同交易组之间,一个组中的任何交易不影响任何与另一组中的任何交易有关的共同交易实体。

第七特征,可与以下任何特征组合,其中,共同交易实体包括与交易相关联的受让方、转让方、受让方的账户、或转让方的账户。

第八特征,可与以下任何特征组合,其中,多个交易各自包括智能合约交易。

第九特征,可与以下任何特征组合,其中,多个交易各自包括这样在执行该交易之前受执行该交易影响的一个或多个账户不是确定性的交易。

第十特征,可与以下任何特征组合,其中,由网络节点预执行该交易包括:当网络节点的一个或多个处理器空闲时,网络节点预执行该交易。

本文中描述的主题、动作和操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施可以实现为一个或多个计算机程序,例如,编码在计算机程序载体上的一个或多个计算机程序指令模块,用于由数据处理执行或控制数据处理装置的操作。例如,计算机程序载体可以包括一个或多个计算机可读存储介质,其具有编码或存储在其上的指令。载体可以是有形的非暂态计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(ram)、只读存储器(rom)或其他介质类型。替代地或另外地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以便传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。

计算机程序,也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由通信数据网络互联的在一个或多个位置上的一台或多台计算机。

计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:文件保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。

举例来说,用于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从耦合到处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。

术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。

本文中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个计算机或处理器执行,以通过对输入数据进行运算并生成输出来执行操作。过程和逻辑流程也可以由例如fpga、asic或gpu的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。

适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。

通常,计算机还将包括或可操作地耦合至一个或多个大容量存储设备,以从一个或多个存储设备接收数据或将数据传输到一个或多个大容量存储设备。存储设备可以是,例如,磁盘、磁光或光盘,固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机不需要具有这样的设备。因此,计算机可以耦合到例如本地和/或远程的一个或多个存储器的一个或多个存储器设备。例如,计算机可以包括作为计算机的整体部件的一个或多个本地存储器,或者计算机可以耦合到云网络中的一个或多个远程存储器。此外,计算机可以嵌入到另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。

组件可以通过例如直接地或经由一个或多个中间组件彼此电连接或光连接而可交换地彼此“耦合”。如果其中一个组件集成到另一个组件中,则组件也可以彼此“耦合”。例如,集成到处理器中的存储组件(例如,l2高速缓存组件)被“耦合到”处理器。

为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备(例如,lcd(液晶显示器)监视器),用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户设备上的web浏览器接收的请求将网页发送到用户设备上的web浏览器,或者通过与在例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)轮流发送文本消息或其他形式的消息来并接收来自用户的响应消息来与用户交互。

本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。

尽管本文包含许多具体实施细节,但这些不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且可以要求保护指向子组合或子组合的变体。

类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的效果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。

已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。

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