智能合约白名单的制作方法

文档序号:18943062发布日期:2019-10-23 01:18阅读:960来源:国知局
智能合约白名单的制作方法

分布式账本系统(dls),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,dls通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并包括访问控制层。

智能合约是由区块链网络存储和执行的可执行软件指令集。智能合约通常以未加密的方式存储,因此对区块链网络中的所有参与者可见。区块链网络中的参与者可以编写和发布他们自己的智能合约,并且通常也可以调用已经部署在区块链网络中的智能合约。由于可以在智能合约中使用的指令集通常是图灵完备的,因此智能合约可以支持复杂的逻辑以支持不同的业务场景。

智能合约的复杂性可能引起安全风险。智能合约的安全风险通常来自他们可能影响的一系列账户。攻击者可以利用已部署的智能合约中的漏洞来构建交易,以将由智能合约控制的资金重发给攻击者的账户。解决与智能合约相关的这些安全风险的解决方案将是有利的。



技术实现要素:

本文的实施方式包括计算机实现的用于为智能合约实施账户白名单的方法。更具体地,本文的实施方式涉及用于允许智能合约的创建者定义白名单的技术,该白名单指定哪些账户可以调用智能合约。

在一些实施方式中,动作包括:由区块链网络中的节点识别用以执行存储在由所述区块链网络维护的区块链中的智能合约的请求,该请求标识出请求执行所述智能合约的请求账户;由该节点从与所述智能合约相关联的所述区块链中检索白名单,所述白名单标识出被授权执行所述智能合约的一个或多个账户;基于所述请求账户被包括在所述白名单中,由该节点确定该请求账户被授权执行所述智能合约;以及响应于确定该请求账户被授权执行所述智能合约,由该节点执行所述智能合约。其他实施方式包括相应的系统、装置和被配置为执行所述方法的动作、编码在计算机存储设备上的计算机程序。

这些和其他实施方式各自可选地包括以下一个或多个特征:

在一些情况下,所述请求是第一请求,所述请求账户是第一账户,并且所述方法包括:由所述节点识别不同于所述第一请求的用以执行所述智能合约的第二请求,所述第二请求标识出不同于所述第一账户的第二账户;基于所述第二账户未被包括在所述白名单中,由所述节点确定所述第二账户未被授权执行所述智能合约;以及响应于确定所述请求账户未被授权执行所述智能合约,由所述节点拒绝用以执行所述智能合约的所述第二请求。

在一些实施方式中,所述白名单被包括在与所述智能合约相关联的可执行指令集中。

在一些实施方式中,所述白名单和与所述智能合约相关联的可执行指令集是分离的。

在一些实施方式中,所述白名单包括被授权访问所述智能合约的所述一个或多个账户的标识。

在一些情况下,所述白名单包括对所述智能合约外部的位置的引用,该位置存储被授权访问所述智能合约的所述一个或多个。

在一些情况下,所述白名单标识出与一个或多个账户相关联的实体,并且确定所述请求账户被授权执行所述智能合约包括:确定所述请求账户是否与该实体相关联。

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

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

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

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

附图说明

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

图2描绘了根据本文实施方式的概念性架构的示例。

图3描绘了根据本文实施方式的用于使能智能合约白名单的环境的示例。

图4描绘了可以根据本文实施方式执行的信号流的示例。

图5描绘了可以根据本文实施方式执行的处理的示例。

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

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

具体实施方式

本文实施方式包括计算机实施的用于为智能合约实施账户白名单的方法。更具体地,本文实施方式涉及用于允许智能合约的创建者定义白名单的技术,该白名单指定哪些账户可以调用智能合约。

为本文实施方式提供进一步的背景,并且如上所述,分布式账本系统(dls),又可称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。在不参考任何特定用例的情况下,本文所使用的术语区块链一般指dls。

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

区块链是用于存储交易的数据结构,而区块链网络是用于管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。

通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识处理由授权的节点集控制,一个或多个节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是与参与实体相关的私有网络。在一些示例中,每个实体(节点)必须对每个区块签名,以使区块有效并被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,以使区块有效并被添加到区块链中。

预期本文的实施方式可以在任何适当类型的区块链网络中实现。

鉴于以上背景,本文进一步详细描述了本文的实施方式。更具体地,并且如上所述,本文的实施方式涉及用于允许智能合约的创建者定义白名单的技术,该白名单指定哪些账户可以调用智能合约。

通常,智能合约是存储在区块链中并由区块链网络中的节点执行的一个或多个计算机指令集。用于智能合约的代码通常被转换为可由区块链网络中的节点执行的形式(例如,字节码),并且将字节码本身或者被配置为检索智能合约字节码的字节码存储在区块链中。然后,区块链网络中的参与者可以调用智能合约代码中定义的函数,从而使节点执行所调用的函数中的指令。

本文描述了允许智能合约的创建者指定区块链网络中被允许调用智能合约的账户列表(白名单)的技术。当区块链网络中的参与者调用部署在由区块链网络管理的区块链中的智能合约时,参与者提供账户作为调用的一部分。区块链网络针对参与者的账户检查与智能合约相关联的白名单。如果参与者的账户在白名单中,则区块链网络执行智能合约调用。如果参与者的账户不在白名单中,则区块链网络不执行智能合约调用。区块链网络还可以存储参与者尝试访问智能合约失败的记录。

图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的示例包括分别对应于参与者a、参与者b和参与者c的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,至少一些节点将信息不可篡改地记录在区块链216中。如图中进一步详述,尽管在区块链网络212中示意性地描述了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。

在所描绘的示例中,每个参与者系统202、204、206分别由参与者a、参与者b和参与者c提供或代表参与者a、参与者b和参与者c,并且在区块链网络中作为各自的节点214发挥作用。如这里所使用的,节点通常是指连接到区块链网络212且使相应的参与者能够参与到区块链网络中的个体系统(例如,计算机、服务器)。在图2的示例中,参与者对应于每个节点214。然而,可以预期,一个参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(https))和/或使用远程过程调用(rpc)与区块链网络212通信或通过区块链网络212进行通信。

节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的监视节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整的副本,而其他节点214仅存储区块链216的一部分的副本。例如,数据访问特权可以限制相应的参与者在其相应系统内存储的区块链数据。在图2的示例中,参与者系统202、204、206存储区块链216的相应的完整副本216'、216”、216”'。

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

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

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

通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并竞相将区块添加到区块链中。这样的节点被称为矿工(或监视节点)。上文介绍的pow用作非限制性示例。

矿工节点执行共识处理以将交易添加到区块链中。尽管多个矿工节点参与共识处理,但只有一个矿工节点可以将区块写入区块链。也就是说,矿工节点在共识处理中竞相将他们的区块添加到区块链中。更详细地,矿工节点周期性地从交易池中收集待处理的交易(例如,最多达到区块中可包括的交易数量的预定限制,如果有的话)。交易池包括来自区块链网络中的参与者的交易消息。矿工节点创建区块,并将交易添加到区块中。在将多个交易添加到区块之前,矿工节点检查所述多个交易中是否有任一已经包含在区块链的区块中。如果有交易已包含在另一个区块中,则该交易将被丢弃。

矿工节点生成区块头,对区块中的所有交易进行哈希处理,并将所得的哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(merkle根哈希值)。将此哈希值添加到区块头中。矿工还确定区块链中最近的区块的哈希值(即,添加到区块链中的最后一个区块)。矿工节点还向区块头添加随机数(nonce)和时间戳。在挖矿处理中,矿工节点尝试查找满足所需参数的哈希值。矿工节点不断更改随机数,直到找到满足所需参数的哈希值。

区块链网络中的每个矿工都试图找到满足所需参数的哈希值,并且以这种方式彼此竞争。最终,矿工节点之一找到满足所需参数的哈希值,并将其通告给区块链网络中的所有其他矿工节点。其他矿工节点验证该哈希值,如果确定为正确,则验证区块中的每个交易,接受该区块,并将该区块附加到他们的区块链副本中。以这种方式,区块链的全局状态在区块链网络内的所有矿工节点上是一致的。上述处理是pow共识协议。

参考图2提供了非限制性示例。在此示例中,参与者a想要向参与者b发送金额。参与者a生成交易消息(例如,包括发送方、接收方和数值字段),并将交易消息发送到区块链网络,从而将交易消息添加到了交易池中。区块链网络中的每个矿工节点创建一个区块,从交易池中取出所有交易(例如,最多达到可添加到区块的交易数量的预定限制,如果有的话),并将交易添加到区块。以这种方式,参与者a发布的交易被添加到矿工节点的区块中。

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

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

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

图3描绘了根据本文实施方式的用于使能智能合约白名单的环境300的示例。如图所示,智能合约302存储在图2的区块链网络212中的区块链216中。智能合约302包括指令304和白名单306。白名单306包括一个或多个账户308。

如上所述,智能合约302存储在区块链216中。区块链网络212中的参与者可以调用智能合约302,这可以使区块链网络212中的节点214执行指令304。在一些实施方式中,区块链网络中的节点214将检查由智能合约的调用者指定的账户是否被包括在由白名单306指定的一个或多个账户308中。如果账户在白名单306中,则节点214执行指令304。如果账户不在白名单306中,则节点214不执行指令304。

在一些实施方式中,指令304可以是以由区块链网络212中的节点214支持的例如诸如solidity、serpent、lll、viper、mutan、c、c++、python、java、javascript、或其他编程语言的高级编程语言编写的软件代码。指令304还可以是从与智能合约302相关联的软件代码生成的被编译的字节码。

在一些实施方式中,白名单306和账户308与智能合约302一起存储在区块链216中。在一些情况下,白名单306和账户308被包括在智能合约302的指令304内。例如,白名单306可以被包括在指令304中的指令中,例如预处理器指令或特殊格式的注释。还可以使用例如函数修饰符的专用于创作智能合约所用的编程语言的结构来包括白名单306。白名单306还可以在指令304内的可执行指令中指定。在一些实施方式中,在节点214执行指令304之前检查白名单306。在一些情况下,例如当白名单306被包括在可执行指令中时,在评估白名单306之前,节点214可以开始执行指令304。例如,智能合约302可以包括用指令304定义的私有函数,其将调用者的账户作为参数并基于白名单306验证调用者被授权调用智能合约。这种函数可以在执行智能合约302时自动调用,并且如果调用者的账户未被授权执行合约,则智能合约302可以简单地退出。在一些情况下,正在执行智能合约302的节点214可以调用私有函数来检查白名单306,并且如果对私有函数的调用表明调用者的账户被授权执行智能合约302,则仅执行智能合约302的主函数。

图4描绘了可以根据本文实施方式执行的信号流400的示例。如图所示,区块链网络中的参与者402与区块链节点404通信。区块链节点404从智能合约302读取信息,智能合约302存储在由区块链网络管理的区块链中。

在406,参与者402生成对智能合约302的调用。该调用包括与参与者402相关联的账户的标识。在一些实施方式中,参与者402通过向具有以智能合约302为目的地账户的区块链网络提交交易来调用智能合约302。在这种情况下,区块链节点404将该交易识别为对智能合约302的调用,并且将执行信号流400的剩余部分。

在408,区块链节点404检索智能合约302的合约白名单(例如,306)。例如,区块链节点404可以从区块链中存储智能合约302的位置检索该白名单。

在410,区块链节点404确定参与者404提供的账户是否包括在检索到的智能合约302的白名单中。该处理已在上文图3中描述。如果区块链节点404确定该账户包括在白名单中,则信号流400继续到412,并且区块链节点404执行智能合约302。如果区块链节点404确定该账户未包括在白名单中,则信号流400继续到414,并且区块链节点404不执行智能合约302而拒绝智能合约调用。在一些情况下,区块链节点404将通知参与者该智能合约调用已被拒绝。区块链节点404还可以在区块链或另一个存储位置中记录执行智能合约302的尝试失败。

图5描绘了可以根据本文实施方式执行的处理500的示例。在一些实施方式中,可以使用利用一个或多个计算设备执行的一个或多个计算机可执行程序来执行处理400。

在502,通过区块链网络中的节点识别用以执行在由区块链网络维护的区块链中存储的智能合约的请求,该请求标识出请求执行该智能合约的请求账户。

在504,节点从与智能合约相关联的区块链中检索白名单,该白名单标识出被授权执行该智能合约的一个或多个账户。在一些情况下,该白名单被包含在与该智能合约相关联的可执行指令集中。在一些实施方式中,白名单和与智能合约相关联的可执行指令集是分离的。白名单可以包括被授权访问智能合约的一个或多个账户的标识。在一些情况下,白名单包括对智能合约外部位置的引用,该位置存储被授权访问所述智能合约的所述一个或多个。

在506,该节点基于请求账户包括在被检索的白名单中来确定该请求账户被授权执行智能合约。在一些情况下,白名单标识出与一个或多个账户相关联的实体,并且确定该请求账户被授权执行智能合约包括:确定该请求账户是否与该实体相关联。

在508,响应于确定该请求账户被授权执行智能合约,该节点执行智能合约。

在一些情况下,该请求是第一请求,该请求账户是第一账户,并且处理500包括识别不同于该第一请求的用以执行智能合约的第二请求,该第二请求标识出不同于第一账户的第二账户;基于第二账户未被包括在该检索到的白名单中,确定该第二账户未被授权执行智能合约;并且响应于确定该请求账户未被授权执行智能合约,拒绝执行该智能合约的第二请求。

图6描绘了根据本文实施方式的装置600的模块的示例。装置600可以是区块链节点,其被配置为控制对诸如联盟区块链网络的区块链网络中的智能合约的访问。装置600可以对应于上述实施方式,并且装置600包括以下:识别器或识别单元602,用于识别用以执行在由区块链网络维护的区块链中存储的智能合约的请求,该请求标识出请求执行智能合约的请求账户;检索器或检索单元604,用于从与智能合约相关联的区块链中检索白名单,该白名单标识出被授权执行智能合约的一个或多个账户;确定器或确定单元606,用于基于请求账户被包括在白名单中来确定该请求账户被授权执行智能合约;以及执行器或执行单元608,用于响应于确定该请求账户被授权执行智能合约来执行该智能合约。

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

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

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

再次参见图6,它可以被解释为示出了被配置为控制对区块链网络中的智能合约的访问的区块链节点的内部功能模块和结构。该区块链节点可以是被配置为控制对区块链网络中的智能合约的访问的装置的示例。

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

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

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

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

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

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

通常,计算机还将耦接至至少一个非暂态计算机可读存储介质(也被称为计算机可读存储器)。耦接至该计算机的存储介质可以是计算机的内部元件(例如集成硬盘驱动器)或外部元件(例如通用串行总线(usb)硬盘驱动器或可通过网络访问的存储系统)。存储介质的示例可以包括,例如,磁盘、磁光盘或光盘、固态驱动器、诸如云存储系统的网络存储资源或其他类型的存储介质。但是,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。

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

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

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

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

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

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