资产交易方法、装置、存储介质及计算机设备与流程

文档序号:17117836发布日期:2019-03-15 23:30阅读:129来源:国知局
资产交易方法、装置、存储介质及计算机设备与流程

本申请涉及计算机技术领域,特别涉及资产交易方法、装置、存储介质及计算机设备。



背景技术:

所谓区块链技术,简称bt(blockchaintechnology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术最初是实现比特币交易的基础技术,目前开始应用于金融等各领域。在同一个区块链上只能存储相同类型的资产的交易信息,在一个区块链上不能实现不同类型的资产之间的交易。



技术实现要素:

本申请实施例提出了一种资产交易方法、装置、存储介质及计算机设备,从而能够在一个区块链上实现不同类型的资产之间的交易。

本申请实施例提出了一种资产交易方法,所述方法包括:

获取交易信息,所述交易信息中包括进行交易的第一资产的类型标识及数量,以及进行交易的第二资产的类型标识及数量;

当所述交易信息验证通过后,根据所述交易信息在区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,其中,所述交易记录至少包括第一交易记录和第二交易记录;所述第一交易记录包含与所述第一资产对应的第一输入项及第一输出项,所述第一输入项和所述第一输出项中分别包含所述第一资产的类型标识;所述第二交易记录包括与所述第二资产对应的第二输入项及第二输出项,所述第二输入项和所述第二输出项中分别包含所述第二资产的类型标识;

将所述新的区块广播给所述区块链网络中的其他节点;

接收所述其他节点的验证结果,并根据所述验证结果将所述新的区块添加到所述当前节点的区块链上。

本申请实施例还提出了一种资产交易装置,所述装置包括:

接收单元,用以获取交易信息,所述交易信息中包括进行交易的第一资产的类型标识及数量,以及进行交易的第二资产的类型标识及数量;

存储单元,用以当所述交易信息验证通过后,根据所述交易信息在区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,其中,所述交易记录至少包括第一交易记录和第二交易记录;所述第一交易记录包含与所述第一资产对应的第一输入项及第一输出项,所述第一输入项和所述第一输出项中分别包含所述第一资产的类型标识;所述第二交易记录包括与所述第二资产对应的第二输入项及第二输出项,所述第二输入项和所述第二输出项中分别包含所述第二资产的类型标识;将所述新的区块广播给所述区块链网络中的其他节点;接收所述其他节点的验证结果,并根据所述验证结果将所述新的区块添加到所述当前节点的区块链上。

本申请实施例还提出了一种计算机可读存储介质,存储有计算机可读指令,计算机可读指令被处理器执行时实现如上所述的方法。

本申请实施例还提出了一种计算机设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,所述一个或多个处理器实现如上所述的方法。

采用本申请实施例提供的上述方案,能够在同一个区块链上存储不同类型的资产的交易信息,从而能够在一个区块链上实现不同类型的资产之间的交易。

附图说明

为了更清楚的说明本申请中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中,

图1为本申请实例涉及的系统构架图;

图2a为本申请一些实例中区块的数据结构图;

图2b为本申请实例中区块链的局部示意图;

图3为本申请一些实例中资产交易方法的流程示意图;

图4为本申请一些实例中资产交易方法的流程示意图;

图5a-5c为本申请一些实例中资产交易方法的流程示意图;

图6是本申请一些实例中交易记录的结构示意图;

图7a是本申请一些实例中资产展示页面示意图;

图7b是本申请一些实例中资产交易界面示意图;

图8是本申请一些实例中资产交易的消息交互图;

图9是本申请一些实例中资产交易装置的结构示意图;

图10为本申请实例中的计算设备组成结构示意图。

具体实施方式

为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本发明的方案进行阐述。但本文并未示出所有实施方式。实施例中大量的细节仅用于帮助理解本发明的方案,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。说明书和权利要求书中的“包括”是指某种程度上至少包括,应当解释为除了包括之后提到的特征外,其它特征也可以存在。

本申请提出了资产交易方法、装置、存储介质及计算机设备,该方法可应用于图1所示的区块链系统100中。如图1所示,该系统100至少包括:应用层101、网络层103和数据层104,还可包括扩展层102等。应用层101面向用户提供应用客户端11和12(比如用于数字资产交易的钱包客户端等)和交易平台13。其中,应用客户端11和12运行在终端设备上,终端设备可以包括:pc机、手机、平板电脑、掌上电脑、超极本、可穿戴设备等。用户通过操作应用客户端11和12提供的用户界面(ui)可以登录交易平台13完成各种交易操作,比如:数字资产交易、共享账本查阅等等;交易平台13可包括一台服务器或者一个服务器集群,也可以包括分布式系统。扩展层102提供了一些扩展应用业务功能,包括智能合约等侧链应用,也可包括诸如文档、图片、视频等用户数据文件的存储和分享功能。用户通过操作应用客户端11和12提供的ui可以通过扩展层102实现智能合约签署、数据文件存储和分享等功能。网络层103包括分布在各个地区的多个区块链节点14,这些节点14构成了区块链网络,每个节点14可以是一个具有点对点通信功能的计算设备,如台式电脑、笔记本电脑、平板电脑等,这些区块链节点14构成了一个点对点(p2p)网络,每个节点14都存储了一条区块链15的完整数据。其中,网络层103用于实现各节点14之间的通信,封装了节点14之间的p2p组网机制、数据传播机制、验证机制等等。区块链网络本质上是一个p2p网络,每一个节点14既接收信息也产生信息,节点14之间维护一个共同的区块链来保持通信。在一个区块链网络中,每一个节点14都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当整个区块链网络中的节点验证通过后,这个新区块就可以被添加到区块链上了。数据层104则封装了区块链15的数据结构。如图1所示,一条区块链15由多个区块(区块0~区块n)链接而成。首先建立的区块0是“创世区块”,之后在一定规则下创建的数据结构相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。

图1示出了区块链系统100中的一部分,在实际应用中,网络层103之上还有共识层、激励层等等。其中,共识层封装了共识机制,以便让高度分散的节点14在去中心化的系统中高效地针对区块数据的有效性达成共识,也就是约定所有节点14之间怎么达成共识,去认定一个交易记录集的有效性,这既是认定的手段,也是防止篡改的手段。比较常用的共识机制主要有:工作量证明(proofofwork)、权益证明(proofofstake)、股份授权证明(delegatedproofofstake)。

在区块链系统中,数据会以文件的形式被永久记录,这些文件可被称为区块(block)。一个区块可包含一段时间内发生的交易记录集,并且该交易记录集未被先前的区块记录。所创建的区块依次链接,通常新的区块会加载区块链的尾部并链接到上一个区块。其中,交易(transaction)代表用户在交易系统中的一次操作,其导致了账本状态的一次改变,会在账本中添加对应的交易记录;区块则记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;链(chain)由一个个区块按照创建时间顺序串联而成,是整个账本状态变化的日志记录。

区块是一种记录交易的数据结构。每个区块由区块头和区块体组成,区块体负责记录前一段时间内的交易信息,区块头则记录了用于链接父区块、挖矿竞争、交易数据验证的信息。图2a示出了区块200a的数据结构。如图2a所示,区块200a包括区块头21和区块体22。区块体22记录了交易数量以及一段时间内发生的各笔交易的信息,如交易1、交易2、……、交易m的交易信息。区块头21记录了以下信息段:

1、版本号,用于标识软件及协议的相关版本信息;

2、父区块哈希值,是区块200a的父区块的区块头哈希值,通过这个值各个区块才能首尾相连组成区块链,并且这个值对区块链的安全性起到了至关重要的作用;

3、merkle根,这个值是由区块体22中所有交易信息的哈希值再逐级两两哈希计算出来的一个数值,主要用于验证一笔交易是否在这个区块中存在;

4、时间戳,记录该区块200a创建的时间,可精确到秒;

5、难度值,是该区块200a相关数学题的难度目标值;

6、随机数(nonce),记录解密该区块200a相关数学题的答案的值。

在区块200a加入区块链后,所有矿工(即各个区块链节点14)就开始下一个区块的生成工作,包括:

1、把在本地内存中的交易信息记录到区块体中;

2、在区块体中生成此区块中所有交易信息的merkle树,把merkle树根的值(即merkle根)保存在区块头中;

3、把最近加入区块链的区块200a的区块头的数据通过sha256算法生成一个哈希值填入到当前区块的父区块哈希值中;

4、把当前时间保存在时间戳字段中;

5、难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内。

对于一个区块而言,区块头哈希值可以唯标识一个区块,并且任何节点14通过对区块头进行哈希计算都可以独立地获取该区块头哈希值。而区块头哈希值实际上并不包含在本区块的数据结构里。区块头哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。另外,区块在区块链中还具有区块高度(blockheight),可用来标识区块在区块链中的位置。第一个区块(即创世块)的区块高度为0,引用创世块的区块的高度为1,以此类推,每一个随后被存储在区块链中的区块都比前一区块“高”出一个位置,区块高度值等于前一区块的区块高度值加一。和区块头哈希值不同,区块高度并不是区块的唯一标识,两个或两个以上的区块可能有相同的区块高度,在区块链里争夺同一位置。区块高度也不是区块数据结构的一部分,它并不被存储在区块里。当节点14接收来自区块链网络的区块时,会动态地识别该区块在区块链里的位置(即区块高度)。区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。

图2b示出了本申请实例中区块链的局部示意图。图2b中示出了三个区块23、24和25,各个区块的区块高度和区块头哈希值并不记录在区块内部,但是决定着区块之间的链接关系。在区块链节点14本地数据库中的区块链元数据表中可以保存着各个区块的区块高度和区块头哈希值。

在一些实例中,不同类型的资产的交易信息存储在不同的区块链中,例如,比特币的交易信息存储在一个区块链中,以太币的交易信息存储在另一个区块链中,无法基于同一个区块链实现不同的数字资产之间的交易。

为解决以上技术问题,本申请提出了资产交易方法、装置、存储介质和计算机设备。本申请提供的资产交易方法,可以由网络层103中的任意一个节点14来执行,如图3所示,主要包括以下步骤:

s301:获取交易信息,所述交易信息中包括进行交易的第一资产的类型标识及数量,以及进行交易的第二资产的类型标识及数量。

获取交易信息可以从交易请求中获取交易信息,其中,该交易请求可以是终端设备上的应用客户端11或12向区块链网络中的节点14发送的交易请求,该交易请求中携带第一资产的类型标识及数量以及进行交易的第二资产的类型标识及数量。在该情况下,在发送交易请求之前,以第一资产及第二资产进行交易的双方已经就交易的第一资产的数量及第二资产的数量达成合约。区块链网络中还可以存储第一资产与第二资产之间的交易汇率,一种资产类型在发布时,可以同时发布该资产类型与其他资产类型之间的交易汇率。从而区块链上存储有不同资产类型之间的交易汇率。进行交易的双方都可以查看到区块链网络上存储的两种资产之间的交易汇率,在该情况下,获取交易信息包括:从交易请求中获取第一资产的类型标识和数量以及第二资产的类型标识,根据第一资产和第二资产的类型标识在区块链中查找两者之间的交易汇率,进而确定进行交易的第二资产的数量。

s303:当所述交易信息验证通过后,根据所述交易信息在区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,其中,所述交易记录至少包括第一交易记录和第二交易记录;所述第一交易记录包含与所述第一资产对应的第一输入项及第一输出项,所述第一输入项和所述第一输出项中分别包含所述第一资产的类型标识;所述第二交易记录包括与所述第二资产对应的第二输入项及第二输出项,所述第二输入项和所述第二输出项中分别包含所述第二资产的类型标识;将所述新的区块广播给所述区块链网络中的其他节点。

对所述交易信息进行验证,主要是验证第一资产对应的用户是否具有该第一资产的支配权,以及第二资产对应的用户是否具有该第二资产的支配权。交易信息中还包括第一资产的来源和花费证明以及第二资产的来源和花费证明,在对第一资产进行验证时,根据第一资产的来源查找第一资产的花费条件,根据第一资产的花费条件、花费证明对第一资产进行验证,相对应地,根据第二资产的花费条件和花费证明对第二资产进行验证。花费证明中可以包括私钥签名,对应的花费条件中可以包括公钥,在进行验证时,用公钥对私钥签名进行验证。花费证明中也可以包括公钥+私钥签名,对应的花费条件中可以包括公钥哈希值,在进行验证时,根据公钥对公钥哈希值进行验证,验证通过之后,根据公钥对私钥签名进行验证。与交易信息对应的交易记录包括两条,与第一资产对应的第一交易记录及与第二资产对应的第二交易记录,第一交易记录与第二交易记录的格式可以如图6所示。第一交易记录中包括第一资产的类型标识、数量,第二交易记录汇总包括第二资产的类型标识、数量。在一个区块链中存储两种资产类型的交易记录,从而基于同一个区块链可以实现不同资产之间的交易。本申请提供的资产交易方法还可以实现两种以上的资产类型的交易,对应的区块链中存储两种以上的资产类型的交易信息。

第一交易记录的第一输入项可以包括输入来源、资产类型、资产数量、花费证明,第一交易记录的第一输出项可以包括输出账户地址、资产类型、资产数量及花费条件。第二交易记录的第二输入项可以包括输入来源、资产类型、资产数量、花费证明,第二交易记录的第二输出项可以包括输出账户地址、资产类型、资产数量及花费条件。

305:接收所述其他节点的验证结果,并根据所述验证结果将所述新的区块添加到所述当前节点的区块链上。

当接收到的验证结果中验证通过的验证结果的数量满足预设条件时,例如,超过51%的节点验证通过,将所述新的区块添加到所述当前节点的区块链上。

通过本申请实施例提供的方案,不同类型的资产的交易信息记录在同一个区块链上,即能够在一个区块链上实现不同类型的资产之间的交易,避免了将不同类型的资产的交易信息记录在不同的区块链上,减少了对区块链网络中各节点的存储空间的占用,并提高了各节点的处理效率。

在一些实例中,在上述步骤s301之后,即在获取交易信息之后,还可以包括对交易信息进行验证的步骤,如图4所示,包括s302。

s302:对所述交易信息进行验证。

在对交易信息进行验证时,包括对第一资产的验证及对第二资产的验证,具体地,根据所述第一资产的来源查找所述第一资产的花费条件;根据所述第一资产的花费条件、所述第一资产的花费证明对所述第一资产进行验证。根据所述第二资产的来源查找所述第二资产的花费条件;根据所述第二资产的花费条件、所述第二资产的花费证明对所述第二资产进行验证。花费证明中可以包括私钥签名,对应的花费条件中可以包括公钥,在进行验证时,用公钥对私钥签名进行验证。例如,以图6所示的实例为例进行说明,用户a用id=1的资产与用户b的id=2的资产进行交易,id=1的资产的花费证明包括a的私钥签名,id=1的资产的输入来源查找到的花费条件中包括用户a的公钥,用用户a的公钥对用户a的私钥签名进行验证。对id=2的资产的验证类似,在此不再赘述。花费证明中也可以包括公钥+私钥签名,对应的花费条件中可以包括公钥哈希值,在进行验证时,根据公钥对公钥哈希值进行验证,验证通过之后,根据公钥对私钥签名进行验证。还以上述例子进行说明,id=1的资产的花费证明包括a的私钥签名+a的公钥,id=1的资产的输入来源查找到的花费条件中包括用户a的公钥哈希值,采用用户a的公钥对用户a的公钥哈希值进行验证,验证通过后,再采用用户a的公钥对用户a的私钥签名进行验证,验证通过后,对id=1的资产验证通过。对id=2的资产的验证类似,在此不再赘述。

在一些实例中,所述根据所述验证结果将所述新的区块添加到所述当前节点的区块链上包括:

s3051:当接收到的验证结果中验证通过的验证结果的数量满足预设条件时,将所述新的区块添加到所述当前节点的区块链上。

所述预设条件可以是超过51%的节点验证通过。通过本申请实施例提供的方案,当验证通过的节点的数量满足预设条件时,将新生成的区块添加到区块链上,使得在区块链上存储的交易记录无法被篡改,从而保证了数据的安全性。在将交易记录存储在新的区块之前对交易记录进行验证,保证了进行交易有效性。

本申请提供的资产交易方法的流程图如图5a和5b所示,包括以下步骤:

s501:获取交易信息,所述交易信息中包括进行交易的第一资产的类型标识及数量,以及进行交易的第二资产的类型标识及数量。

所述交易信息为进行不同类型的数字资产的数字交易的信息。该交易信息可以由应用客户端直接发送给区块链网络中的节点14,该交易信息也可以由应用客户端发送给代理服务器(例如,该代理服务器可以为交易平台13),由交易平台13将交易信息发送给区块链网络中的节点14,其中,交易平台13可以解析交易信息中的交易内容,并生成符合区块链系统的格式的交易信息。

区块链网络中的节点14接收到的交易信息是符合区块链系统的格式的交易信息,以用户a用100比特币换取用户b的50以太币为例进行说明,假设比特币的id为1,以太币的id等于2,交易信息对应的交易记录的格式如图6所示,包括交易号,交易哈希值以及第一交易记录和第二交易记录。其中,第一交易记录和第二交易记录中都包括一个交易输入以及一个交易输出。其中,第一条记录对应交易信息“a向b转100比特币”,第二交易记录对应交易信息“b向a转50以太币”。其中,交易哈希值是对两条交易记录中包含的信息进行哈希计算得到的哈希值。对于交易记录中包含的信息,以第一交易记录为例进行说明,该第一条交易记录中包括交易输入(第一输入项)及交易输出(第一输出项)。其中,交易输入包含以下内容:

交易输入:

输入来源:资产转出方的资产来源。在这里为用户a的100比特币的来源,当a向b转100比特币时,用户a可以在自己的应用客户端(例如,钱包客户端)上查找自己的钱包地址的哪些输出(output)中具有比特币,进而进行选取,应用客户端根据用户a的选取操作,将输入来源信息添加到交易信息中。该输入来源包括信息:哪个区块(区块高度)的哪个交易(交易号)的哪个输出(输出标识)。例如,在图6中,与用户a的钱包地址对应的区块链中第50个区块中的第1001个交易的第(1)个输出中具有100比特币。

资产类型:表示资产的类别标识,其中,a要转的是100比特币,因而,id=1。本申请可以实现不同的资产的交易,资产类型可以为多种,可以包括虚拟资产,例如,比特币、以太币等,也可以包括实物的资产,例如,汽车、宠物等。

资产数量:进行交易的资产类型对应的资产数量。其中,根据输入来源也可以查找到资产对应的资产类型及数量,因而在交易输入中也可以不包括资产类型及资产数量。

花费证明:花费证明用以验证用户是否具有对应资产的支配权。用户a和用户b要进行交易,用户a和用户b分别用自己的私钥对交易内容进行签名,分别作为第一交易记录的花费证明及第二交易记录的花费证明。其中,所述交易内容包括用户a的比特币的来源、资产类型、数量、输出账户地址、花费条件以及用户b的比特币的来源、资产类型、数量、输出账户地址、花费条件。在进行签名时,先将交易内容中的信息进行哈希计算得到哈希值,采用用户a的私钥对所述哈希值进行签名得到a的私钥签名,作为第一交易记录的花费证明,采用用户b的私钥对所述哈希值进行签名得到b的私钥签名,作为第二交易记录的花费证明。花费证明可以包括对应用户的私钥签名,此外还可以包括对应用户的公钥。

交易输出:

项数:表征交易的第几项输出。

输出账户地址:资产接收方的钱包地址。在第一交易记录中,输出账户地址是用户b的钱包地址,在第二交易记录中,输出账户地址是用户a的钱包地址。

资产类型:资产的类别标识。

资产数量:资产类型对应的资产数量。

花费条件:花费条件用以对花费证明进行验证,与花费证明一起验证对应用户是否具有资产的支配权。花费条件与花费证明相对应,当花费证明包括私钥签名时,花费条件包括对应用户的公钥,当花费证明包括公钥+私钥签名时,花费条件包括公钥哈希值。在图6中,以花费证明包括私钥签名,花费条件包括对应用户的公钥为例进行说明。在第一交易记录中,交易输出中的花费条件是b的公钥,在后续用户b想要支配这100比特币时,需要用户b对后续的交易内容进行签名,也只有用b的公钥对所述签名进行验证时能验证成功,当验证成功时,说明这100比特币属于用户b,用户b对该100比特币具有支配权。

第二交易记录中包含的信息与第一交易记录中包含的信息相类似,在此不再赘述。

获取交易信息包括两种方式,第一种方式包括:

s5011:接收第一交易请求,从所述第一交易请求中获取所述第一资产的类型标识及数量,以及所述第二资产的类型标识及数量;

进行交易的双方达成交易的资产的数量,即进行交易的第一资产的数量及第二资产的数量,将第一资产的类型标识、数量,以及第二资产的类型标识、数量添加到交易请求中发送给区块链网络中的节点。

在第二种方式中,交易请求中包括第一资产的类型标识和数量,以及第二资产的类型标识,可以由区块链节点获取第一资产与第二资产之间进行交易的汇率,根据交易汇率确定第二资产的数量,第二种方式包括:

s5012:接收第二交易请求,从所述第二交易请求中获取所述第一资产的类型标识及所述第一资产的数量,以及所述第二资产的类型标识;

s5013:根据所述第一资产的类型标识以及所述第二资产的类型标识,获取所述第一资产与所述第二资产之间的交易汇率;

s5014:根据所述第一资产的数量及所述交易汇率,确定所述第二资产的数量。

在确定第一资产与第二资产之间进行交易的交易汇率时,节点14可以向第三方服务器查询,得到两种资产之间的交易汇率。节点14还可以在区块链上查找两种资产之间的交易汇率。例如,可以在资产发布时,将资产之间的交易汇率发送给节点14,进而存储到区块链上。交易汇率在区块链上存储,具有不可修改性,且各客户端都可以进行查询。查找到交易汇率后,节点14根据第一资产的数量及交易汇率确定第二资产的数量。

s503:对所述交易信息进行验证。

其中,所述交易信息中还包括所述第一资产的来源(例如,图6中的输入来源)、所述第二资产的来源,所述第一资产的花费证明、所述第二资产的花费证明;其中,在对所述交易信息进行验证时,包括对第一资产进行验证及对第二资产进行验证,分别对应步骤s5031及s5032,其中,s5031与s5032的步骤的执行的前后顺序在此不进行限定。

s5031:根据所述第一资产的来源、所述第一资产的花费证明对所述第一资产进行验证。

在一些实例中,步骤s5031包括步骤s50311和s50312。

s50311:根据所述第一资产的来源查找所述第一资产的花费条件;

s50312:根据所述第一资产的花费条件、所述第一资产的花费证明对所述第一资产进行验证。

s5032:根据所述第二资产的来源、所述第二资产的花费证明对所述第二资产进行验证。

在一些实例中,步骤s5032包括步骤s50321和s50322。

s50321:根据所述第二资产的来源(输入来源)查找所述第二资产的花费条件;

s50322:根据所述第二资产的花费条件、所述第二资产的花费证明对所述第二资产进行验证。

其中,在进行验证时,包括两种方式,第一种方式中,花费证明中包括私钥签名,对应的花费条件中包括对应用户的公钥。第二种方式中,花费证明中包括公钥+私钥签名,对应的花费条件中包括公钥哈希值。

对于第一种方式,所述第一资产的花费证明中包括根据所述第一资产对应的私钥确定的第一签名,所述第二资产的花费证明中包括根据所述第二资产对应的私钥确定的第二签名;其中,根据所述第一资产的来源查找到的花费条件中包括所述第一资产对应的第一公钥,根据所述第二资产的来源查找到的花费条件中包括所述第二资产对应的第二公钥。

所述s50312包括:

s50312a:根据所述第一公钥对所述第一签名进行验证;

其中,所述s50322包括:

s50322a:根据所述第二公钥对所述第二签名进行验证。

对于第二种验证方式,所述第一资产的花费证明中包括根据所述第一资产对应的私钥确定的第一签名以及所述第一资产对应的第一公钥,所述第二资产的花费证明中包括根据所述第二资产对应的私钥确定的第二签名以及所述第二资产对应的第二公钥;其中,根据所述第一资产的来源查找到的花费条件中包括所述第一资产对应的公钥哈希值,根据所述第二资产的来源查找到的花费条件中包括所述第二资产对应的公钥哈希值;

其中,所述s50312包括:

s50312b,根据所述第一公钥对所述第一公钥哈希值进行验证,当验证通过后,根据所述第一公钥对所述第一签名进行验证;

其中,所述s50322包括:

s50322b,根据所述第二公钥对所述第二公钥哈希值进行验证,当验证通过后,根据所述第二公钥对所述第二签名进行验证。

s5033,如果对所述第一资产和所述第二资产的验证均通过,则确定对所述交易信息的验证通过。

还以a用户用100比特币换用户b的50以太币为例进行说明。其中,第一交易记录与第二交易记录分别进行验证,在对第一交易的交易记录进行验证时,根据输入来源查找区块链的第50个区块的第1001号交易的标识为(1)的交易输出,该交易输出中包括花费条件。当花费条件包括用户a的公钥时,花费证明包括用户a的私钥签名,利用花费条件中的用户a的公钥对花费证明中的用户a的私钥签名进行验证。由于该花费证明是根据用户a的私钥进行的签名,只有用户a的公钥才能验证成功,因而当验证成功时,说明输入来源:501001(1)这条输出对应的资产属于用户a,用户a具有该资产的支配权。在一些实例中,花费条件中包括用户a的公钥哈希值,对应的花费证明中包括用户a的公钥+用户a的私钥签名,进行验证时,将花费证明中的用户a的公钥进行哈希计算得到哈希值,与花费条件中的公钥哈希值进行比较,当不一致时,验证失败,当一致时,根据用户a的公钥对用户a的私钥签名进行验证,当验证成功时,第一交易记录验证成功,当验证不成功时,第一交易记录验证失败。第二交易记录的验证方式与第一交易记录的验证方式相似,主要验证用户b是否具有输入来源“80100(3)”中的50以太币的支配权。验证方式类似,在此不再赘述。当第一交易记录与第二交易记录都验证成功时,交易信息才验证成功。

此外,发送给节点14的交易信息中还可以包括交易哈希值,即第一交易记录和第二交易记录包含的信息的哈希值。节点14在接收到交易信息时,可以将第一交易记录和第二交易记录中包含的信息进行哈希计算,得到哈希值,将计算得到的哈希值与交易信息中的哈希值进行比较,当一致时,表征交易信息在传输过程中没有被篡改,从而保证了交易信息在传输过程中的安全性。

s504:当所述交易信息验证通过后,根据所述交易信息在区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,其中,所述交易记录至少包括第一交易记录和第二交易记录;所述第一交易记录中包含与所述第一资产对应的第一输入项及第一输出项,所述第一输入项和所述第一输出项中分别包含所述第一资产的类型标识;所述第二交易记录包括与所述第二资产对应的第二输入项及第二输出项,所述第二输入项和所述第二输出项中分别包含所述第二资产的类型标识;将所述新的区块广播给所述区块链网络中的其他节点;接收所述其他节点的验证结果,并根据所述验证结果将所述新的区块添加到所述当前节点的区块链上。

其中,当交易信息中的第一交易记录与第二交易记录都验证成功后,所述交易信息验证成功。当满足预定数量的节点对所述新的区块验证通过后,将所述新的区块存储在区块链中,其中,所述预定数量,例如,可以是51%的节点。

其中,在将交易信息记录在一个新的区块中时,所述交易信息中还包括所述第一资产的来源、所述第一资产的花费证明、所述第一资产对应的第一输出账户地址、所述第一输出账户地址对应的第一花费条件、所述第二资产的来源、所述第二资产的花费证明、所述第二资产对应的第二输出账户地址、所述第二输出账户地址对应的第二花费条件;

其中,所述根据所述交易信息在所述区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,包括:

s5041:根据所述第一资产的来源、所述第一资产的花费证明、所述第一资产对应的第一输出账户地址、所述第一输出账户地址对应的第一花费条件,在所述区块链网络中当前节点的所述新的区块中,记录所述第一交易记录。

所述确定所述第一交易记录,包括:

s50411:根据所述第一资产的来源、所述第一资产的花费证明确定所述第一输入项;

s50412:根据所述第一资产对应的第一输出账户地址、所述第一资产的类型标识、数量及所述第一输出账户地址对应的第一花费条件确定所述第一输出项;

s50413:将所述第一输入项和所述第一输出项作为所述第一交易记录,记录在所述区块链网络中当前节点的所述新的区块中。

s5042:根据所述第二资产的来源、所述第二资产的花费证明、所述第二资产对应的第二输出账户地址、所述第二输出账户地址对应的第二花费条件,在所述区块链网络中当前节点的所述新的区块中,记录所述第二交易记录。

所述确定所述第二交易记录包括:

s50421:根据所述第二资产的来源、所述第二资产的花费证明确定所述第二输入项;

s50422:根据所述第二资产对应的第二输出账户地址、所述第二资产的类型标识、数量及所述第二输出账户地址对应的第二花费条件确定所述第二输出项;

s50423:将所述第二输入项和所述第二输出项作为所述第二交易记录,记录在所述区块链网络中当前节点的所述新的区块中。

在将交易信息记录在一个新的区块中时,可以将如图6所示的交易信息对应的交易记录记录在所述新的区块中,具体地,记录在所述新的区块的同一个交易中,该交易包括第一交易记录和第二交易记录,包括两条输入、两条输出。其中,当用户a用100比特币交换用户b的50以太币的情况下,用户a的100比特币的输入来源、资产类型、资产数量、花费证明构成第一条交易记录的交易输入(第一输入项)(交易输入中也可以不包括资产类型及资产数量),输出的项数、输出账户地址、资产类型、资产数量及花费条件构成第一交易的交易输出(第一输出项)。其中第二交易记录与第一交易记录的构成类似,在此不再赘述。

对于用户a及用户b的账户地址,账户地址可以是钱包地址。用户下载安装钱包客户端(例如,轻钱包客户端)后,用户在钱包客户端上可以申请创建钱包,与该客户端对应的服务器(例如,可以是交易平台13)生成私钥、公钥和钱包地址。在生成私钥、公钥和钱包地址的过程中,首先使用随机数发生器生成一个私钥,私钥通过一定的算法处理生成公钥,该算法可以是secp256k1算法。通过一个已知的私钥通过算法可以得到公钥,但通过已知的公钥无法反向得到私钥,从而有效保障了私钥的安全。根据公钥可以计算得到公钥的哈希值,根据公钥的哈希值计算得到钱包地址。上述服务器可以独立于区块链网络中的节点。上述生成钱包地址的过程也可以由客户端来操作,操作原理与上述类似,在此不再赘述。私钥和公钥在数学上是相关的,公钥用于加密一段信息或者验证一个数字签名,私钥用以解密信息和创建数字签名。公钥不能反推得到私钥,所以公钥可以公开不必担心资产的安全,私钥需要安全保管。钱包地址用以接收他人转账的资产,区块链中存储的是各个钱包地址之间的转账记录,资产并不直接存储在钱包地址中,若想获取一个钱包地址中的资产,需要根据区块链中记录的钱包地址之间的转账记录来计算得到。新申请得到的钱包地址中没有资产,根据钱包地址其他用户可以向该钱包地址中进行转账,例如,向一个钱包地址a中转20比特币。

采用本申请实例提供的技术方案,在一个区块链中记录不同类型的资产的交易记录,从而可以在一个区块链上实现不同类型的资产之间的交易。此外,区块链节点获取资产之间进行交易的交易汇率,例如,获取区块链上存储的不同类型的资产之间的交易汇率,从而根据汇率确定进行交易的资产的数量,提高不同类型资产的交易效率。在将交易信息对应的交易记录存储到区块链之前对交易信息进行验证,其中,区块链网络中的各节点都对所述交易信息进行验证,从而保证了存储在区块链上的交易记录的安全性、有效性及不可篡改性。

在本申请一些实例中,客户端可以向区块链网络中的节点查询对应的钱包地址中的资产。例如,可以在每次登陆客户端时,向区块链网络中的节点查询钱包地址中的资产,也可以定时向区块链网络中的节点查询钱包地址中的资产,或者由区块链网络中的节点向客户端实时发送钱包地址中的资产。

在本申请一些实例中,用户还可以通过非中心化的方式进行通信以达成合约,例如a要用100比特币换取b的以太币,用户a对应的钱包客户端将“a要用100比特币换以太币的信息”通过用户b的公钥进行加密(用户b的公钥是公开的),发送给区块链网络中的一个节点14,由该节点14将所述加密信息广播给其他客户端。各客户端用各自对应的用户的私钥对上述信息进行解密,当解密不成功时,说明此信息不是发送给自己的,因而只有用户b通过自己的私钥可以对上述信息进行解密。用户b看到该信息后,可以采取上述同样的方式向用户a返回信息,用户b对应的客户端可以采用用户a的公钥对信息“b进行交互的以太币的数量是50”进行加密,将加密信息发送给对应的节点14,由该节点14将加密信息广播给其他客户端。同样地,只有a的客户端根据用户a的私钥可以对上述信息进行解码。从而通过区块链实现用户a和用户b之间的非中心化的通信方式。

此外,当用户之间进行交易时,用户之间为了达成合约的通信也可以通过中心化的通信方式进行通信,例如,上述钱包客户端还可以用以进行通信,或者通过终端设备11上的其他的通信客户端进行通信。例如,用户a要用100比特币换取用户b的以太币,用户a可以与用户b通过通信客户端(微信、qq等)来达成合约,例如,a和b达成协议:a用100比特币换取b的50以太币。当a和b达成合约后,对合约中的信息进行哈希计算得到交易信息的哈希值,用户a和用户b分别用各自的私钥对上述哈希值进行签名,然后由发起方(该发起方可以是用户a,也可以是用户b),将交易信息发送给区块链网络中的节点。

当合约达成后,例如,用户a和用户b之间达成合约,a用100比特币兑换用户b的50以太币时,用户a和用户b分别对该合约信息进行签名,具体地,将合约中的信息进行哈希计算得到哈希值,用户a和用户b分别用自己的私钥对该哈希值进行签名。由用户a和用户b对应的上述签名以及合约中的信息生成交易信息,由发起方将交易信息发送给区块链网络中的节点,该发起方可以是用户a,也可以是用户b。

在一些实例中,区块链网络中的节点14还可以根据区块链中存储的交易信息确认各账户地址下的一个或多个资产类型标识,以及各资产类型标识下的资产数量,如图5c所示,包括以下步骤:

s11:接收第一客户端发送的资产查询请求;

s12:根据所述资产查询请求中携带的账户地址在所述区块链中查找所述账户地址对应的交易记录;

s13:根据查询到的交易记录确定所述账户地址对应的一个或多个资产类型以及各资产类型对应的资产数量;

s14:将所述账户地址对应的所述一个或多个资产类型以及各资产类型对应的资产数量发送给所述第一客户端。

采用本申请提供的资产交易方法,在同一个区块链中存储第一资产与第二资产的交易信息,第一资产与第二资产的类型可以相同,也可以不同,从而基于同一个区块链不仅可以实现相同资产之间的交易,还能实现不同资产类型之间的交易。

在本申请一些实例中,应用客户端,例如钱包客户端,可以直接向区块链网络中的节点查询账户地址下的资产类型以及各资产类型下的资产数量,还可以通过中间的代理服务器(例如,交易平台13)向节点14查询。查询得到的各资产类型以及各资产类型下的资产数量在应用客户端(例如,钱包客户端)上展示,如图7a所示,在客户端界面上展示有三种资产类型以及各资产类型对应的数量。同时,在该界面上还展示有交易控件701,在用户点击交易控件701后,展示如图7b所示的交易界面。在该交易界面上包括转出资产的资产类型、资产数量、收款人钱包地址,还包括转入资产的资产类型、资产数量以及我的钱包地址。用户可以在该交易界面上输入交易信息以发起交易。

本申请提供的资产交易方法的消息交互图,如图8所示,以应用客户端(钱包客户端)与区块链网络之间存在交易平台为例进行说明,包括以下步骤:

s801:钱包客户端向交易平台申请钱包地址。

s802:交易平台将生成的私钥、公钥及钱包地址发送给钱包客户端。

其中,生成私钥、公钥、钱包地址的操作也可以由其他的服务器生成,或者由钱包客户端生成。此外,交易平台可以将生成的公钥发送给区块链网络中的节点,由节点在发送给其他的钱包客户端,以使得公钥对外开放。

s803:钱包客户端向交易平台发送交易信息,该交易信息中包括第一交易记录的交易输入和交易输出,以及第二交易记录的交易输入及交易输出。

第一条交易的交易输入包括第一资产的输入来源及花费证明,第一交易记录的交易输出包括第一资产的类型标识、数量、输出账户地址以及输出账户地址对应的花费条件。

第二交易记录的交易输入包括第二资产的输入来源及花费证明,第二交易记录的交易输出包括第二资产的类型标识、数量、输出账户地址以及输出账户地址对应的花费条件。

钱包客户端在发送交易信息之前的交易双方达成合约的方式,可以采用中心化的方式达成方式,也可以采用区块链去中心化的方式达成合约。

s804:交易平台将交易信息对应的交易记录发送给区块链网络中的一个节点14。

其中,交易平台可以将接收到的交易信息进行解析,并生成区块链系统格式的交易记录发送给区块链网络中的节点14,例如,如图6所示格式的交易记录。

s805:对第一交易记录中的花费证明进行验证。

在验证时,根据第一交易记录中的输入来源查找对应的花费条件,根据查找到的花费条件对交易输入中的花费证明进行验证。

s806:对第二交易记录中的花费证明进行验证。

对第二交易记录中的花费证明进行验证的方式与第一交易记录中的花费证明的验证方式相似,在此不再赘述。

s807:当交易信息对应的交易记录验证通过后,将交易信息对应的交易记录记录在一个新区块中,将该新的区块广播给区块链网络中其他节点。

s808:当预定数量的节点对所述新的区块验证通过后,例如,超过51%的节点对所述新的区块验证通过后,将所述新的区块添加到区块链中。

以上对本申请实例提供的资产交易方法进行了说明。采用本申请提供的方案,能够在同一个区块链上存储不同类型的资产的交易信息,从而能够在一个区块链上实现不同类型的资产之间的交易。

本申请还提供了一种资产交易装置900,如图9所示,所述装置包括:

获取单元901,用以获取交易信息,所述交易信息中包括进行交易的第一资产的类型标识及数量,以及进行交易的第二资产的类型标识及数量;

存储单元902,用以当所述交易信息验证通过后,根据所述交易信息在区块链网络中当前节点的一个新的区块中,记录所述交易对应的交易记录,其中,所述交易记录至少包括第一交易记录和第二交易记录;所述第一交易记录中包含与所述第一资产对应的第一输入项及第一输出项,所述第一输入项和所述第一输出项中分别包含所述第一资产的类型标识;所述第二交易记录包括与所述第二资产对应的第二输入项及第二输出项,所述第二输入项和所述第二输出项中分别包含所述第二资产的类型标识;将所述新的区块广播给所述区块链网络中的其他节点;接收所述其他节点的验证结果,并根据所述验证结果将所述新的区块添加到所述当前节点的区块链上。

在一些实例中,所述获取单元901,用以:接收第一交易请求,从所述第一交易请求中获取所述第一资产的类型标识及数量,以及所述第二资产的类型标识及数量。

在一些实例中,所述获取单元901,用以:

接收第二交易请求,从所述第二交易请求中获取所述第一资产的类型标识及所述第一资产的数量,以及所述第二资产的类型标识;

根据所述第一资产的类型标识以及所述第二资产的类型标识,获取所述第一资产与所述第二资产之间的交易汇率;

根据所述第一资产的数量及所述交易汇率,确定所述第二资产的数量。

在一些实例中,所述交易信息中还包括所述第一资产的来源、所述第一资产的花费证明、所述第一资产对应的第一输出账户地址、所述第一输出账户地址对应的第一花费条件、所述第二资产的来源、所述第二资产的花费证明、所述第二资产对应的第二输出账户地址、所述第二输出账户地址对应的第二花费条件;

所述存储单元902用以:

根据所述第一资产的来源、所述第一资产的花费证明、所述第一资产对应的第一输出账户地址、所述第一输出账户地址对应的第一花费条件,在所述区块链网络中当前节点的所述新的区块中,记录所述第一交易记录;

根据所述第二资产的来源、所述第二资产的花费证明、所述第二资产对应的第二输出账户地址、所述第二输出账户地址对应的第二花费条件,在所述区块链网络中当前节点的所述新的区块中,记录所述第二交易记录。

在一些实例中,所述存储单元902,用以:

根据所述第一资产的来源、所述第一资产的花费证明确定所述第一输入项;

根据所述第一资产对应的第一输出账户地址、所述第一资产的类型标识、数量及所述第一输出账户地址对应的第一花费条件确定所述第一输出项;

将所述第一输入项和所述第一输出项作为所述第一交易记录,记录在所述区块链网络中当前节点的所述新的区块中;

根据所述第二资产的来源、所述第二资产的花费证明确定所述第二输入项;

根据所述第二资产对应的第二输出账户地址、所述第二资产的类型标识、数量及所述第二输出账户地址对应的第二花费条件确定所述第二输出项;

将所述第二输入项和所述第二输出项作为所述第二交易记录,记录在所述区块链网络中当前节点的所述新的区块中。

在一些实例中,所述装置进一步包括验证单元903,用以:

根据所述第一资产的来源、所述第一资产的花费证明对所述第一资产进行验证;根据所述第二资产的来源、所述第二资产的花费证明对所述第二资产进行验证;

如果对所述第一资产和所述第二资产的验证均通过,则确定对所述交易信息的验证通过。

在一些实例中,所述验证单元903,用以:

根据所述第一资产的来源查找所述第一资产的花费条件;

根据所述第一资产的花费条件、所述第一资产的花费证明对所述第一资产进行验证;

根据所述第二资产的来源查找所述第二资产的花费条件;

根据所述第二资产的花费条件、所述第二资产的花费证明对所述第二资产进行验证。

在一些实例中,所述第一资产的花费证明中包括根据所述第一资产对应的私钥确定的第一签名,所述第二资产的花费证明中包括根据所述第二资产对应的私钥确定的第二签名;其中,所述第一资产的花费条件中包括所述第一资产对应的第一公钥,所述第二资产的花费条件中包括所述第二资产对应的第二公钥;

所述验证单元903,用以:

根据所述第一公钥对所述第一签名进行验证;

根据所述第二公钥对所述第二签名进行验证。

在一些实例中,所述第一资产的花费证明中包括根据所述第一资产对应的私钥确定的第一签名以及所述第一资产对应的第一公钥,所述第二资产的花费证明中包括根据所述第二资产对应的私钥确定的第二签名以及所述第二资产对应的第二公钥;其中,所述第一资产的花费条件中包括所述第一资产对应的公钥哈希值,所述第二资产的花费条件中包括所述第二资产对应的公钥哈希值;

所述验证单元903,用以:

根据所述第一公钥对所述第一公钥哈希值进行验证,

当验证通过后,根据所述第一公钥对所述第一签名进行验证;

根据所述第二公钥对所述第二公钥哈希值进行验证,

当验证通过后,根据所述第二公钥对所述第二签名进行验证。

在一些实例中,所述验证单元903,用以:

当接收到的验证结果中验证通过的验证结果的数量满足预设条件时,将所述新的区块添加到所述当前节点的区块链上。

在一些实例中,所述装置还包括查询单元904,用以:

接收第一客户端发送的资产查询请求;

根据所述资产查询请求中携带的账户地址;

在所述区块链中查找所述账户地址对应的交易记录;

根据查询到的交易记录确定所述账户地址对应的一个或多个资产类型以及各资产类型对应的资产数量;

将所述账户地址对应的所述一个或多个资产类型以及各资产类型对应的资产数量发送给所述第一客户端。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述各实施例的功能模块可以位于一个终端或网络节点,或者也可以分布到多个终端或网络节点上。

本申请还提供了一种计算机可读存储介质,存储有计算机可读指令,可以使至少一个处理器执行如上述所述的方法。

在一些实例中,上述资产交易装置可运行在各种计算设备中,并加载在该计算设备的存储器中。

图10示出了资产交易装置所在的计算设备的组成结构图。如图10所示,该计算设备包括一个或者多个处理器(cpu)1002、通信模块1004、存储器1006、用户接口1010,以及用于互联这些组件的通信总线1008。

处理器1002可通过通信模块1004接收和发送数据以实现网络通信和/或本地通信。

用户接口1010包括一个或多个输出设备1012,其包括一个或多个扬声器和/或一个或多个可视化显示器。用户接口1010也包括一个或多个输入设备1014,其包括诸如,键盘,鼠标,声音命令输入单元或扩音器,触屏显示器,触敏输入板,姿势捕获摄像机或其他输入按钮或控件等。

存储器1006可以是高速随机存取存储器,诸如dram、sram、ddrram、或其他随机存取固态存储设备;或者非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备,或其他非易失性固态存储设备。

存储器1006存储处理器1002可执行的指令集,包括:

操作系统1016,包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;

应用1018,包括各种应用程序,其能够实现上述各实例中的处理流程,比如可以包括图9所示的装置900。在一些实例中,装置900可包括图9所示的各模块901~906中的部分或全部模块,各模块901~906可以存储有机器可执行指令。处理器1002通过执行存储器1006中各模块901~906中的机器可执行指令,进而能够实现上述各模块901~906的功能。

需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。

各实施例中的硬件模块可以以硬件方式或硬件平台加软件的方式实现。上述软件包括机器可读指令,存储在非易失性存储介质中。因此,各实施例也可以体现为软件产品。

在本申请各实例中,硬件可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。

另外,本申请的每个实例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本申请。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本申请,本申请还提供了一种非易失性存储介质,其中存储有数据处理程序,这种数据处理程序可用于执行本申请上述方法实例中的任何一种实例。

非易失性计算机可读存储介质可以是插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器。安装在扩展板或者扩展单元上的cpu等可以根据指令执行部分和全部实际操作。

非易失性计算机可读存储介质包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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