发明内容
本说明书实施例旨在提供一种更有效的传递跨链隐私数据的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种提供跨链消息的方法,所述方法由区块链的节点设备执行,包括:
获取第一交易,所述第一交易中调用所述第一合约、并向所述第一合约提供第一跨链消息;
执行第一交易,以在第一合约的账户状态中的消息队列中存入所述第一跨链消息;
获取第二交易,所述第二交易中调用所述第一合约中的查询函数;
执行第二交易,以从所述消息队列中读取所述第一跨链消息;
生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;
使用第一预定密钥对所述第一数据进行加密,以获取第二数据,所述第一预定密钥由所述第二交易的发起方提供;
将所述第二数据存储到所述区块链中。
在一种实施方式中,所述第一预定密钥为所述第二交易的发送账户的公钥。
在一种实施方式中,执行第二交易还包括,在从所述消息队列中读取所述第一跨链消息之后,在所述消息队列中删除所述第一跨链消息。
在一种实施方式中,执行第二交易还包括,验证所述第二交易的发送账户是否为预定账户,在所述第二交易的发送账户为预定账户的情况中,从所述消息队列中读取所述第一跨链消息。
在一种实施方式中,所述第一数据为所述第二交易的收据。
在一种实施方式中,所述区块链为Fabric链,所述第一数据为所述第二交易的读写集。
本说明书另一方面提供一种获取跨链消息的方法,所述方法由链下设备执行,包括:
向区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述跨链消息为隐私数据,所述查询函数用于读取所述消息队列中的跨链消息;
从所述区块链中获取与所述第二交易对应的第二数据;
使用第二预定密钥对所述第二数据解密,以获取第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,所述第二预定密钥为所述第二交易的发送账户的私钥。
在一种实施方式中,所述第二交易中以查询参数为传入参数调用第一合约中的查询函数,所述查询参数用于指示所述第一跨链消息。
本说明书另一方面提供一种提供跨链消息的装置,所述装置部署于区块链的节点设备,包括:
第一获取单元,配置为,获取第一交易,所述第一交易中调用所述第一合约、并向所述第一合约提供第一跨链消息;
第一执行单元,配置为,执行第一交易,以在第一合约的账户状态中的消息队列中存入所述第一跨链消息;
第二获取单元,配置为,获取第二交易,所述第二交易中调用所述第一合约中的查询函数;
第二执行单元,配置为,执行第二交易,以从所述消息队列中读取所述第一跨链消息;
生成单元,配置为,生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;
加密单元,配置为,使用第一预定密钥对所述第一数据进行加密,以获取第二数据,所述第一预定密钥由所述第二交易的发起方提供;
存储单元,配置为,将所述第二数据存储到所述区块链中。
在一种实施方式中,所述第一预定密钥为所述第二交易的发送账户的公钥。
在一种实施方式中,所述第二执行单元还配置为,在从所述消息队列中读取所述第一跨链消息之后,在所述消息队列中删除所述第一跨链消息。
在一种实施方式中,所述第二执行单元还配置为,验证所述第二交易的发送账户是否为预定账户,在所述第二交易的发送账户为预定账户的情况中,从所述消息队列中读取所述第一跨链消息。
在一种实施方式中,所述第一数据为所述第二交易的收据。
在一种实施方式中,所述区块链为Fabric链,所述第一数据为所述第二交易的读写集。
本说明书另一方面提供一种获取跨链消息的装置,所述装置部署于链下设备,包括:
发送单元,配置为,向区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述跨链消息为隐私数据,所述查询函数用于读取所述消息队列中的跨链消息;
获取单元,配置为,从所述区块链中获取与所述第二交易对应的第二数据;
解密单元,配置为,使用第二预定密钥对所述第二数据解密,以获取第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,所述第二预定密钥为所述第二交易的发送账户的私钥。
在一种实施方式中,所述第二交易中以查询参数为传入参数调用第一合约中的查询函数,所述查询参数用于指示所述第一跨链消息。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述由区块链节点设备执行的任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,实现上述由区块链节点设备执行的任一种方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述由链下设备执行的任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,实现上述由链下设备执行的任一种方法。
根据本说明书实施例的提供跨链消息的方案尤其适用于隐私保护场景,在隐私保护的场景中,用户通过直接读取区块链账本并不能获取明文的账本数据,在本说明书实施例提供的方案中,在消息发送合约的账户状态中保存跨链消息,并由查询者发送交易调用消息发送合约的查询函数来查询账户状态中的跨链消息,通过该方式,在区块链中以由查询者提供的密钥对该交易的收据进行加密并存入区块链中,从而查询者可使用预定解密密钥对该收据解密从而获取收据明文并从中获取跨链消息;通过该方法,还可以通过在查询函数设置验证程序,还可以验证查询账户是否为允许的预设账户,从而提高了安全性。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的跨链系统的示意图。如图1所示,所述跨链系统中包括区块链11和链下设备12。区块链11中部署有业务合约和消息发送合约,所述业务合约例如为跨链转账合约,并且所述业务合约中包括消息发送合约的调用,所述消息发送合约用于发送跨链消息。当区块链11中的用户希望进行跨链转账时,可通过其设备向区块链11中发送交易1,所述交易1中调用业务合约,并向业务合约传入与转账相关的参数,如接收转账的区块链标识、接收转账的账户、转账金额、接收合约账户等等。
假设区块链11为用于进行隐私保护的区块链,在区块链11中,与一般的区块链不同,区块链中的账本数据以密文的形式存储,从而使得链下用户不能随意读取区块链中的账本。例如,当上述设备向区块链11发送交易1时发送经加密的交易1,所述加密的密钥由上述设备预先或与发送交易1同时地提供给区块链。
区块链11中的各个节点在获取交易1之后,使用相应的解密密钥对交易1解密,并执行交易1。各个节点在执行交易时,将发起交易1的账户余额减少所述转账金额,并生成待发送的跨链消息(图1中的消息1),消息1中例如包括该消息1的发送区块链标识、接收区块链标识、发送账户、接收账户、接收合约账户及对接收账户的余额增加金额等内容,然后执行消息发送合约,并将消息1提供给消息发送合约。通过执行交易1中的消息发送合约,将消息1记录到消息发送合约的账户状态中的消息队列中,即将消息1记录到区块链11的账本中,图1中以顺序排列的消息1-消息5示意示出消息发送合约的账户状态中的消息队列。这里的消息1-消息5也可以是使用节点内部确定的密钥加密的消息1-消息5。
链下设备12用于在区块链11与其它区块链之间传递消息。链下设备12可通过向区块链11发送交易(例如图1中的交易m,其中m为交易编号)以获取跨链消息。同样地,链下设备12可向区块链11发送经加密的交易m,以用于进行隐私保护。交易m中调用消息发送合约的查询函数,以进行对上述消息队列的查询。假设区块链11为以太坊链,当区块链11中的节点设备执行交易m时,从消息队列中读取消息1,并将消息队列中的消息1删除(如图1中的虚线框所示)。节点设备在执行完成交易m之后,生成与交易m对应的收据m,收据m中包括通过查询消息队列获取的消息1,使用例如链下设备的账户公钥对收据m加密,在区块链11中存入加密的收据m。之后,链下设备12可从区块链11中读取加密的收据m,从而可通过自身的私钥对加密的收据m解密获取收据m,并从收据m中获取其中的消息1。链下设备12在获取消息1之后,可以将消息1提供给该消息1中的接收区块链中的接收账户和接收合约,从而使得接收区块链可基于该消息1完成转账过程。
可以理解,上述参考图1的描述只是示意性的,而不是用于限制本说明书实施例。例如,区块链11不限于为以太坊链,因此,当执行交易m时,不限于在区块链11中存入加密的收据m,以用于存入消息1,而可以根据具体的区块链类型通过其它形式进行对消息1的存储。下文将详细描述根据本说明书实施例的跨链提供消息的方法。
图2示出根据本说明书实施例的提供跨链消息的方法流程图。如图2所示,区块链11中例如包括节点1和节点2,区块链的节点1和节点2的节点设备中都存储有区块链11的账本数据,在图2及下文的描述中,为了简化描述,以节点1表示节点1的节点设备,以节点2表示节点2的节点设备,相应的步骤由相应的节点设备执行。该方法可由区块链11的节点1、节点2以及链下设备12共同执行。
首先,在步骤S201,节点1向节点2发送交易1。
例如,区块链11中的节点1对应的用户A希望进行跨链转账业务,因此,该用户A可通过节点1向区块链11中的任一节点(这里例如为节点2)发送交易1,以将交易1广播到区块链11中。该交易1中包括对图1中的业务合约的调用,以用于进行跨链转账业务。该业务合约以消息1为传入参数调用消息发送合约中包括的发送函数,以用于将消息1作为跨链消息发送到链外。可以理解,这里,不限于由节点1向节点2发送交易1,例如也可以由区块链11的用户通过其用户设备向节点2发送交易1。
为了保护隐私,用户A在发送交易1之前,可使用预定密钥对交易1进行加密,并将加密之后的交易1发送到区块链11中。例如,用户A可使用预定的非对称密钥中的公钥对交易1进行加密,并将该非对称密钥中的私钥提供给区块链11中的节点。或者用户A可使用预定对称密钥对交易1加密,并将该预定对称密钥提供给区块链11中的节点。
在步骤S202,节点2执行交易1,在区块链11中存入消息1。
在节点1向区块链11中发送交易1之后,区块链11的每个节点都将获取到交易1,执行交易1,以将与交易1相关的数据存入区块链11的账本中。
具体是,区块链11中的各个节点的节点设备在执行交易1中的消息发送合约时,从传入参数获取消息1,将消息1记录到消息发送合约的账户状态中的消息队列中,如图1中所示。该消息队列可以为先进先出的消息队列,例如,如图1中所示,消息1为与交易1对应的跨链消息,消息2为与交易2对应的跨链消息,交易2为在执行交易1之后执行的交易,因此,消息2在消息1之后进入消息队列,当链外设备12对该消息队列进行读取时,可先读取消息1,之后再读取消息2。
为了保护隐私,各个节点中在通过执行交易1获取消息1之后,可使用由该节点自身确定的密钥(例如对称密钥)对该消息1进行加密,并将加密后的消息1记录到消息队列中。
在步骤S203,链下设备12向节点2发送交易m。
所述链下设备12可以为区块链11的使用用户的设备,其它区块链的节点设备、或者用于在多个区块链之间中转消息的中继设备等等,在此不作限定,所述链下设备12中未存储有区块链11的账本数据。链下设备12通过向区块链11发送特定交易来从区块链11获取跨链消息。具体是,例如,如图1所示,链下设备12可向区块链11的任一节点(例如节点2)发送交易m,该交易m中调用消息发送合约中包括的查询函数。图3示出交易m的示意图。如图3所示,在交易m中,“From”字段中的“0x215e...”为链下设备12用于向区块链11发送交易m的账户,表示该交易m由链下设备12发出,“To”字段中的“SendMessage(0x29a0…)”为消息发送合约的合约名称,“0x29a0…”为消息发送合约的合约账户,表示该交易m调用消息发送合约,“Data”字段中的“Qurery()”为消息发送合约中的查询函数,表示交易m调用消息发送合约中的查询函数。这里对于Qurery()未传入任何参数,如下文中所述,在对Qurery()函数不同的设定下,也可以对Qurery()函数传入用于进行查询的参数。
同样地,为了保护隐私,链下设备12在发送交易m之前,可使用密钥对该交易m进行加密。例如,链下设备12可使用预定非对称密钥中的公钥对交易m进行加密,并例如通过密钥管理机构将该非对称密钥中的私钥提供给区块链11中的节点。或者链下设备12可使用预定对称密钥对交易m进行加密,并使用预定非对称密钥中的公钥对该对称密钥进行加密,将加密的交易m、加密的对称密钥一起发送给区块链11的节点,并通过密钥管理机构将该非对称密钥中的私钥提供给区块链11中的节点。或者链下设备12可使用预定对称密钥对交易m进行加密,并通过密钥管理机构将该对称密钥提供给区块链11中的节点。
在步骤S204,节点2执行交易m,读取消息1。
假设区块链11为以太坊链,在链下设备12向区块链11中的任一节点发送交易m之后,该节点将交易m广播到区块链11中,并由区块链11中的记账节点执行交易m、更新世界状态并入块,之后,记账节点将该包括交易m的区块发送到区块链11中,以使得区块链11中的每个节点执行交易m、更新世界状态并更新区块,从而最终区块链11中的每个节点的账本数据都是一致的。也就是说,图2中示出的区块链11的节点2执行的该步骤在区块链11中的每个节点中执行。
具体是,当区块链11的节点2即将执行交易m时,如果交易m为使用对称密钥经加密的交易,并且随交易m一起发送的信息中包括加密的对称密钥,则节点2使用预先获取的对应的非对称密钥中的私钥对加密的对称密钥解密,以获取对称密钥,并使用对称密钥对加密的交易m解密,从而获取交易m的明文内容。
在获取交易m的明文内容之后,节点2执行交易m中的消息发送合约中的查询函数,该查询函数中可预设允许查询账户,以验证交易m的发送账户是否为允许的查询账户。因此,在执行查询函数时,首先对交易m的发送账户进行验证,如果验证失败,则返回查询失败,如果验证成功,则从消息发送合约的账户状态中的消息队列中读取跨链消息。可以理解,在不需要对查询账户进行验证的情况中,在执行查询函数时,可直接从消息发送合约的账户状态中的消息队列中读取跨链消息。
在区块链11为Hyperledger Fabric区块链的情况中,在一种实施方式中,所述查询函数中例如包括GetProposer接口,在执行查询函数时,首先通过调用GetProposer获取提案者的证书,该证书中包括提案者的账户、公钥等信息,从而可基于查询函数中预设的账户或公钥验证该提案者是否被允许进行查询。在一种实施方式中,所述查询函数中例如包括GetCreator接口,在执行查询函数时,首先通过调用GetCreator获取提案者的账户,然后基于查询函数中预设的允许账户验证该提案者的账户是否为允许账户。
所述查询函数中对跨链消息的读取方式可根据需求进行设置,例如,可预设,在每次执行查询函数时,从消息队列中读取最早的消息,参考图1,假设当前消息1为最早记录的消息,消息2-消息5都是在消息1之后记录的消息。因此,在该次执行查询函数时,读取消息队列中的消息1。可以理解,所述查询函数不限于读取最老的1个消息,而可以预设为读取消息队列中最老的预定数目(例如5个等等)个消息,或者可以预设为读取消息队列中最新的预定数目个消息,或者可以预设为读取指定序号的消息,所述指定序号可在调用查询函数时作为传入参数传入给查询函数,或者可以预设为读取指定内容的消息,所述指定内容为所述消息中包括的内容,如接受合约账号、接收区块链标识等等,所述指定内容也可以在调用查询函数时作为传入参数传入给查询函数。
查询函数中还可以预设在进行对跨链消息的读取之后修改消息发送合约的状态(即修改世界状态)。具体是,在一种实施方式中,在例如读取消息队列中的消息1之后,可在消息队列中删除消息1(或加密的消息1),从而使得在下一次执行查询函数时不会重复读取消息1。在一种实施方式中,在读取消息1之后,可对消息1进行标记,以指示链下设备12已读取消息1,在该实施方式中,链下设备12可重复读取消息1,或者,在不止一个链下设备从区块链11读取跨链消息的情况中,在链下设备12读取消息1之后,其它链下设备还可以读取消息1。
在步骤S205,节点2生成收据m。
节点2在执行完成上述查询函数之后,以读取到的跨链消息(例如消息1)作为执行查询函数的返回数据,从而节点2在执行交易m之后,生成交易m的收据m,该收据m中包括执行查询函数的返回数据(即消息1)。
在步骤S206,节点2对收据m加密,并存入加密收据m。
收据m中的消息1可能涉及到个人隐私,如转账账户、转账金额等内容,因此,为了保护隐私,节点2在向区块链11中存入收据m之前需要对收据m进行加密。在一种实施方式中,节点2使用交易m的发送账户的公钥对收据m进行加密,并将加密收据m存入区块链11中。在一种实施方式中,节点2可使用预定对称密钥或预定非对称密钥对收据m进行加密并存入区块链11中。
可以理解,上文虽然以区块链11为以太坊链为例进行了描述,区块链11不限于为以太坊链,而可以为其它任意类型的区块链。例如,区块链11也可以为Hyperledger Fabric区块链,在该情况中,区块链11中的背书节点的节点设备在预执行交易m时,在读取消息1之后,将消息1写入与交易m对应的读写集中,区块链11中的提交节点在验证交易m的读写集之后,对该读写集进行加密,将该加密的读写集存入区块链11中。
在步骤S207,链下设备12从节点2获取加密收据m。
在一种实施方式中,链下设备12可连接区块链11中的任一节点(例如节点2),并从该节点远程读取加密收据m。在一种实施方式中,链下设备12在读取加密收据m之后,还可以从区块链11的节点中读取收据m的Spv证明。
在一种实施方式中,区块链11中的任一节点可在存入加密收据m之后主动向链下设备12推送所述加密收据m。
在步骤S208,链下设备12对加密收据m解密,以获取收据m。
在一种实施方式中,在链下设备12为中继设备的情况中,链下设备12在获取加密收据m及其Spv证明之后,首先对加密收据m解密。在加密收据m使用链下设备12的账户公钥进行加密的情况中,链下设备12使用自身账户私钥对该加密收据m解密,从而获取明文的收据m。在加密收据m使用预定密钥进行加密的情况中,链下设备12使用与所述预定密钥对应的解密密钥(对称密钥或者非对称密钥中的解密密钥)对该加密收据m解密,从而获取明文的收据m。在后一种情况中,链下设备12还可以将对加密收据m的解密密钥提供给其它设备,从而使得其它设备可从区块链11的节点中获取加密收据m并对其进行解密。
链下设备12在获取明文的收据m之后,可通过解析收据m获取其中的消息1。在收据m中例如以日志(Log)的形式记录消息1。该日志为在执行消息发送合约之后记录的日志,以用于记录执行消息发送合约的函数时的返回数据,即消息1。图4示出收据m中包括的日志示意图。如图4所示,该日志例如具有预设的特定标识(如图4中的“Message”所示),并且该日志中的“From”字段记录调用消息发送合约的合约(例如转账合约Transfer)的账户,“To”字段中记录消息发送合约的账户。因此,在收据m中,可基于所述特定标识“Message”或者消息发送合约的账户来确定用于记录消息1的日志,并获取该日志的“Data”字段的内容,该内容即为消息1。
在获取消息1之后,链下设备12可从消息1中确定接收链标识,从而可将该收据m及其Spv证明提供给相应的接收链。
在一种实施方式中,在链下设备12为可信中继设备的情况中,链下设备12在获取收据m及其Spv证明之后,首先可使用Spv证明对收据m进行验证,在验证通过的情况中,通过解析收据m,可获取消息1,从消息1中确定接收链标识,从而将消息1直接提供给相应的接收链。
在一种实施方式中,在链下设备12仅获取收据m的情况中,可将收据m或收据m中的消息1提供给对应的接收链。
图5示出根据本说明书实施例的一种提供跨链消息的装置500,所述装置500部署于区块链的节点设备,包括:
第一获取单元51,配置为,获取第一交易,所述第一交易中调用所述第一合约、并向所述第一合约提供第一跨链消息;
第一执行单元52,配置为,执行第一交易,以在第一合约的账户状态中的消息队列中存入所述第一跨链消息;
第二获取单元53,配置为,获取第二交易,所述第二交易中调用所述第一合约中的查询函数;
第二执行单元54,配置为,执行第二交易,以从所述消息队列中读取所述第一跨链消息;
生成单元55,配置为,生成与所述第二交易对应的第一数据,所述第一数据中包括所述第一跨链消息;
加密单元56,配置为,使用第一预定密钥对所述第一数据进行加密,以获取第二数据,所述第一预定密钥由所述第二交易的发起方提供;
存储单元57,配置为,将所述第二数据存储到所述区块链中。
在一种实施方式中,所述第一预定密钥为所述第二交易的发送账户的公钥。
在一种实施方式中,所述第二执行单元54还配置为,在从所述消息队列中读取所述第一跨链消息之后,在所述消息队列中删除所述第一跨链消息。
在一种实施方式中,所述第二执行单元54还配置为,验证所述第二交易的发送账户是否为预定账户,在所述第二交易的发送账户为预定账户的情况中,从所述消息队列中读取所述第一跨链消息。
在一种实施方式中,所述第一数据为所述第二交易的收据。
在一种实施方式中,所述区块链为Fabric链,所述第一数据为所述第二交易的读写集。
图6示出根据本说明书实施例的一种获取跨链消息的装置600,所述装置600部署于链下设备,包括:
发送单元61,配置为,向区块链发送第二交易,所述第二交易中调用第一合约中的查询函数,所述第一合约的账户状态中包括跨链消息的消息队列,所述跨链消息为隐私数据,所述查询函数用于读取所述消息队列中的跨链消息;
获取单元62,配置为,从所述区块链中获取与所述第二交易对应的第二数据;
解密单元63,配置为,使用第二预定密钥对所述第二数据解密,以获取第一数据,所述第一数据中包括所述消息队列中的第一跨链消息。
在一种实施方式中,所述第二预定密钥为所述第二交易的发送账户的私钥。
在一种实施方式中,所述第二交易中以查询参数为传入参数调用第一合约中的查询函数,所述查询参数用于指示所述第一跨链消息。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述由区块链节点设备执行的任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,实现上述由区块链节点设备执行的任一种方法。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述由链下设备执行的任一种方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,实现上述由链下设备执行的任一种方法。
根据本说明书实施例的提供跨链消息的方案尤其适用于隐私保护场景,在隐私保护的场景中,用户通过直接读取区块链账本并不能获取明文的账本数据,在本说明书实施例提供的方案中,在消息发送合约的账户状态中保存跨链消息,并由查询者发送交易调用消息发送合约的查询函数来查询账户状态中的跨链消息,通过该方式,在区块链中以由查询者提供的密钥对该交易的收据进行加密并存入区块链中,从而查询者可使用预定解密密钥对该收据解密从而获取收据明文并从中获取跨链消息;通过该方法,还可以通过在查询函数设置验证程序,还可以验证查询账户是否为允许的预设账户,从而提高了安全性。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,实现上述由链下设备执行的任一种方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本说明书实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书实施例的具体实施方式而已,并不用于限定本说明书实施例的保护范围,凡在本说明书实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。