一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链的数据处理方法及区块链节点装置与流程

2022-11-30 07:45:08 来源:中国专利 TAG:


1.本技术涉及区块链技术领域,特别涉及一种基于区块链的数据处理方法及区块链节点装置。


背景技术:

2.区块链(block chains)是一种将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本,其中,通过在区块链节点安装和运行智能合约的合约逻辑,以完成交易。
3.对于传统的区块链系统而言,由于未设立对区块链节点和智能合约的运行环境的隔离机制,当区块链节点和智能合约所在的宿主机或环境被非法攻破后,可能导致区块链节点程序、智能合约等被非法替换,从而导致完成交易后所获得的结构体的不可靠性。
4.针对于此,目前业内提出一种在可信执行环境(trusted execution environment,tee)中安装和运行智能合约的方案,以期消除传统区块链智能合约运行过程中存在的安全隐患。
5.然而,基于tee运行智能合约的方案虽然可以在一定程度上提高智能合约运行过程中的安全性,但依然未能实现对交易过程中涉及的状态数据的隐私性保护,也无法很好地对完成交易的智能合约进行溯源。


技术实现要素:

6.本技术实施例提供一种基于区块链的数据处理方法及装置,有助于实现对交易过程中涉及的状态数据的隐私保护,以及对完成交易的智能合约进行可信溯源,提升区块链网络整体的可信性。
7.第一方面,本技术实施例提供了一种基于区块链的数据处理方法,该方法可应用于区块链上的区块链节点,所述方法包括:接收来自区块链客户端的交易请求,其中,所述交易请求包含交易参数,且所述交易请求用于指示所述区块链节点基于所述交易参数执行相应的智能合约以完成所述交易请求对应的交易;调用安装在可信执行环境tee中的可信执行程序ta,以使所述ta根据所述交易参数在所述tee执行所述智能合约,得到目标结构体;其中,所述目标结构体中包括所述交易相关的状态数据的密文,所述状态数据的加密密钥是所述区块链客户端的密钥;向所述区块链客户端发送所述目标结构体。
8.通过上述方案,区块链节点可以在tee环境中运行交易请求相应的智能合约以完成交易,并可使用区块链客户端的密钥实现对交易过程中涉及的状态数据的加密,以便实现不同参与方的相关的状态数据的隐私保护。
9.需要说明的是,本技术实施例中,智能合约可以预先安装在区块链节点的tee侧的操作系统上。其中,智能合约的安装流程可以是区块链客户端触发的,由区块链客户端将该智能合约的合约逻辑发送给区块链节点后,安装在区块链节点的tee侧的操作系统上;或者,智能合约的安装流程可以是区块链节点触发的,区块链节点可以从本地的安全存储区
域或者其他指定的可信设备或可信环境中获取该智能合约的合约逻辑后,安装在区块链节点的tee侧的操作系统上,本技术对此智能合约的安装过程的具体实现不做限定。
10.在一种可能的实现方式中,所述交易请求中包括写请求,所述交易参数包括所述写请求对应的写操作参数,所述交易相关的状态数据包括所述写操作参数对应的第一状态数据,所述交易相关的状态数据的密文包括所述第一状态数据对应的第一密文。
11.通过上述方案,智能合约中可以包括写操作逻辑,来自区块链客户端的交易请求中可以包括写操作参数,以触发写操作逻辑的执行。对于写操作,ta程序运行智能合约时,可以使用区块链客户端的密钥对写操作参数对应的第一状态数据进行加密,得到所述第一密文,并形成写集。该写集可以被封装在目标结构体中安全地反馈给区块链客户端,并保障写集中的第一密文中的第一状态数据不易被区块链节点程序或其他第三方查看或篡改,从而保障不同参与方的状态数据的隐私保护。
12.在一种可能的实现方式中,所述第一状态数据包括键(key)值(value)对;其中,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的加密密文与随机数的组合;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的加密密文与随机数组合。
13.通过上述方案,通过采用哈希算法对原key取哈希值作为查询键,既可以保障原key的隐私性,又可以保障查询键的固定,方便后续查询,在保障状态数据隐私的同时,不降低状态数据的写入和查询性能。同时,对原值或原键值对进行加密得到新的值,可以保障原值或原键值对的隐私性。可选地,在每次加密时采用不同的随机数,并将随机数追加至新的值中,可防止彩虹表攻击,进一步地提升区块链系统整体的可信性。
14.在一种可能的实现方式中,所述方法还包括:在确定所述交易在所述区块链达成共识的情况下,从存储有所述目标结构体的目标区块中获取所述目标结构体;将所述目标结构体中的第一密文写入所述区块链节点的状态数据库中;其中,所述状态数据库位于所述区块链节点的非可信执行环境ree中,所述第一密文的查询键为第一哈希值,所述第一哈希值是所述ta采用预设的哈希算法对所述第一状态数据中的键进行哈希运算得到的。
15.通过上述方案,区块链节点可以在确定所述交易在全网达成共识的情况下,从存储有该目标结构体的目标区块中获取所述目标结构体,并完成将该目标结构中的第一密文(即写集)写入到状态数据库中的操作,以保障全网节点写入数据的一致性。
16.在一种可能的实现方式中,所述交易请求中包括读请求,所述交易参数包括所述读请求对应的读操作参数,所述交易相关的状态数据包括所述读操作参数对应的第二状态数据,所述交易相关的状态数据的密文包括所述第二状态数据对应的第二密文。
17.通过上述方案,智能合约中可以包括读操作逻辑,来自区块链客户端的交易请求中可以包括读操作参数,以触发读操作逻辑的执行。对于读操作,ta程序运行智能合约时,通过调用api访问ree侧的状态数据库,以读取第二密文,并形成读集。该读集可以被封装在目标结构体中,安全地反馈给区块链客户端,并保障读集中的第二密文中的第二状态数据不易被区块链节点程序或其他第三方查看或篡改,从而保障不同参与方的状态数据的隐私
保护。
18.在一种可能的实现方式中,调用安装在tee中的ta,以使所述ta根据所述交易参数在所述tee执行所述智能合约,包括:调用所述ta,以使所述ta根据所述读操作参数从所述区块链节点的状态数据库中读取所述第二密文;调用所述ta,以使所述ta根据所述区块链客户端的密钥对所述第二密文进行解密,得到所述第二状态数据;调用所述ta,以使所述ta基于所述第二状态数据继续执行所述智能合约的后续逻辑。
19.通过上述方案,在交易涉及数据读取的情况下,ta通过访问状态数据库读取被加密存储的状态数据,ta可以在tee侧的合约沙箱中对读取到的加密数据进行解密获得明文数据,并在该合约沙箱内进行明文运算,以及执行后续逻辑。
20.在一种可能的实现方式中,所述读请求中包含待查询的目标键,所述第二密文采用键-值对格式;其中,所述ta从所述状态数据库读取所述第二密文时,以第二哈希值作为所述第二密文的查询键,所述第二哈希值是所述ta采用预设的哈希算法对所述目标键进行哈希运算得到的。
21.通过上述方案,ta采用预设的哈希算法对第二状态数据中的键和/或值进行哈希运算以及存储、查询等,既可以保障原key的隐私性,又可以保障查询键的固定,方便后续查询,又可以保障原值或原键值对的隐私性。
22.在一种可能的实现方式中,所述第二状态数据是所述第二密文对应的明文,所述明文对应的解密密钥为所述区块链客户端的密钥和随机数。由此,在每次加密时采用不同的随机数,并将随机数追加至新的值中,可防止彩虹表攻击,进一步地提升区块链系统整体的可信性。
23.在一种可能的实现方式中,所述目标结构体中还包括第三哈希值,所述第三哈希值是所述ta采用预设的哈希算法对所述智能合约的合约逻辑进行哈希运算得到的。由此,通过在目标结构体中添加智能合约的合约逻辑的哈希值,以便后续对完成交易的智能合约进行可信溯源。可选地,所述智能合约的合约逻辑为wasm字节码或evm字节码,或者,该目标智能合约的合约逻辑也可以为任意形式的源代码,例如源码文件或文件压缩包,本技术对此不做限定。
24.在一种可能的实现方式中,所述区块链节点接收来自区块链客户端的交易请求之前,所述方法还包括:接收来自区块链客户端的第三密文;调用所述ta,以使所述ta根据保存的非对称密钥对所述第三密文进行解密,获得所述区块链客户端的密钥。
25.通过上述方案,区块链客户端可以预先将自身的密钥导入到tee侧的ta程序,以便ta程序后续执行交易的过程中,方便地使用该区块链客户端的密钥对交易相关的状态数据进行加密和/或解密,实现对不同参与方的状态数据的隐私保护。
26.在一种可能的实现方式中,所述区块链客户端的密钥为对称密钥。可以理解的是,该区块链客户端的密钥也可以是非对称密钥,或采用其他方式的密钥,本技术对此不做限定。
27.第二方面,本技术实施例提供了一种区块链节点装置,包括:通信单元,用于接收来自区块链客户端的交易请求,其中,所述交易请求包含交易参数,且所述交易请求用于指示所述区块链节点基于所述交易参数执行相应的智能合约以完成所述交易请求对应的交易;处理单元,用于调用安装在可信执行环境tee中的可信执行程序ta,以使所述ta根据所
述交易参数在所述tee执行所述智能合约,得到目标结构体;其中,所述目标结构体中包括所述交易相关的状态数据的密文,所述状态数据的加密密钥是所述区块链客户端的密钥;通信单元还用于向所述区块链客户端发送所述目标结构体。
28.在一种可能的实现方式中,所述交易请求中包括写请求,所述交易参数包括所述写请求对应的写操作参数,所述交易相关的状态数据包括所述写操作参数对应的第一状态数据,所述交易相关的状态数据的密文包括所述第一状态数据对应的第一密文。
29.在一种可能的实现方式中,所述第一状态数据包括键值对;其中,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的加密密文与随机数的组合;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的加密密文与随机数组合。
30.在一种可能的实现方式中,所述处理单元还用于:在确定所述交易在所述区块链达成共识的情况下,通过所述通信单元从存储有所述目标结构体的目标区块中获取所述目标结构提;将所述目标结构体中的第一密文写入所述区块链节点的状态数据库中;其中,所述状态数据库位于所述区块链节点的非可信执行环境ree中,所述第一密文的查询键为第一哈希值,所述第一哈希值是所述ta采用预设的哈希算法对所述第一状态数据中的键进行哈希运算得到的。
31.在一种可能的实现方式中,所述交易请求中包括读请求,所述交易参数包括所述读请求对应的读操作参数,所述状态数据包括所述读操作参数对应的第二状态数据,所述状态数据的密文包括所述第二状态数据对应的第二密文。
32.在一种可能的实现方式中,所述处理单元用于:调用所述ta,以使所述ta根据所述读操作参数从所述区块链节点的状态数据库中读取所述第二密文;调用所述ta,以使所述ta根据所述区块链客户端的密钥对所述第二密文进行解密,得到所述第二状态数据;调用所述ta,以使所述ta基于所述第二状态数据继续执行所述智能合约的后续逻辑。
33.在一种可能的实现方式中,所述读操作参数中包含待查询的目标键,所述第二密文采用键-值对格式;其中,所述ta从所述状态数据库读取所述第二密文时,以第二哈希值作为所述第二密文的查询键,所述第二哈希值是所述ta采用预设的哈希算法对所述目标键进行哈希运算得到的。
34.在一种可能的实现方式中,所述第二状态数据是所述第二密文的明文,所述明文的解密密钥为所述区块链客户端的密钥,或者为所述区块链客户端的密钥和随机数。
35.在一种可能的实现方式中,所述目标结构体中还包括第三哈希值,所述第三哈希值是所述ta采用预设的哈希算法对所述智能合约的合约逻辑进行哈希运算得到的。
36.在一种可能的实现方式中,所述智能合约的合约逻辑为wasm字节码或evm字节码,或者,该智能合约的合约逻辑也可以为任意形式的源代码,例如源码文件或文件压缩包,本技术对此不做限定。
37.在一种可能的实现方式中,所述区块链节点接收来自区块链客户端的交易请求之前,所述处理单元还用于:通过所述通信单元接收来自区块链客户端的第三密文;调用所述
ta,以使所述ta根据保存的非对称密钥对所述第三密文进行解密,得到所述区块链客户端的密钥。
38.在一种可能的实现方式中,所述区块链客户端的密钥为对称密钥。
39.第三方面,本技术实施例提供了一种芯片,所述芯片与存储器耦合,所述芯片读取存储器中存储的计算机程序,执行本技术上述第一方面的方法。
40.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行本技术上述第一方面的方法。
41.第五方面,本技术实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本技术上述第一方面的方法。
42.本技术在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。
附图说明
43.图1为传统区块链系统中的智能合约执行过程的示意图;
44.图2示出了基于tee运行智能合约的流程示意图;
45.图3a-图3b示出了本技术实施例适用的系统架构图;
46.图4示出了本技术实施例提供的基于区块链的数据处理方法的流程示意图;
47.图5a-图5c示出了本技术实施例提供的基于区块链的数据处理方法的流程示意图;
48.图6示出了本技术实施例提供的区块链节点装置的示意图;
49.图7示出了本技术实施例提供的通信装置的示意图。
具体实施方式
50.下面结合本技术实施例中的附图对本技术进行介绍。
51.区块链(block chains)是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证数据不可篡改和不可伪造的分布式账本。区块链基于对等(peer to peer,p2p)网络,每个参与交易(transaction)和区块存储、验证、转发的p2p网络节点都是区块链上的节点,即区块链节点。
52.区块链网络可以包括一条或多条区块链,每条区块链上可以包括多个区块链节点。区块链节点可包括账本实例(ledger)和链码(chaincode)。账本实例用于记录区块链网络中的交易。链码可称为智能合约(smart contract),用于供区块链节点查询账本实例中的交易以及新增账本实例中的交易,链码的数量可以是一个或者多个。区块链节点可以实现为各种终端或服务器,并作为能够执行隐私交易的智能合约的可信节点,同步区块链网络的区块数据。
53.一条区块链可以对应一个通道(channel)。其中,通道具有如下特性:加入到同一个通道的区块链节点之间可以进行交易或者共享账本;对于同一个区块链节点可以加入一个或者多个通道,当该区块链节点加入一个通道时,该节点持有一个账本,当该区块链节点加入多个通道时,该节点对应持有多个账本。每个区块链节点存储的数据包括账本数据以
及状态数据(state database),其中,账本数据存储于区块(block)中,状态数据存储于状态数据库(state db)中,一般以键值对(k,v)的方式存储,其中,k代表键(key),v代表该键对应的值(value),比如k=小明,v=14岁,该种存储方式使得存储数据量极大减少,并且简单地通过单键查询、组合键查询以及范围键的查询即可获得业务所需的数据。
54.需要说明的是,区块中的账本数据是不可篡改的数据,状态数据库中的状态数据记录的是每一次交易的结果,因此可以不断增加交易对状态数据进行修改,状态数据是可以修改的数据。具体实现中,状态数据库中存储的状态数据可以是当前账本最近一次交易的相关数据。并且,每次交易执行的过程中,账本数据是不会更新的,只是进行了“模拟”交易,获得模拟交易的结果。在该模拟交易在区块链达成共识的情况下,该交易对应的相关结果才会被同步至相应区块,之后,区块链节点可以从存储该结构体的目标区块中获取该结构体,并将该结构体中的待写数据写入相应的状态数据库中。
55.在区块链网络中,智能合约是由用户编写的、安装和运行在区块链节点中的业务逻辑,是一段可以自动执行条款的计算机程序。传统的区块链系统可以包括用户侧的区块链客户端和网络侧的区块链节点,区块链节点和智能合约可实现为运行在linux虚拟机或docker容器等中的程序。一般地,参阅图1所示,当用户侧触发交易执行时,用户侧的区块链客户端可向区块链节点发送携带有用户参数的交易请求,发起对区块链节点侧的智能合约程序的调用,以通过在区块链节点侧运行智能合约程序来完成交易。区块链节点侧,智能合约程序能够根据外界输入信息(即用户参数),自动执行预先定义好的合约逻辑,并完成区块链内部相关状态的转移。执行智能合约得到的结构体称为一笔交易或一笔交易结构,该结构体可包括状态数据读写集合、合约执行结果、合约执行环境签名等信息。区块链节点向区块链客户端返回该结构体,区块链客户端可将该结构体发送给区块链排序节点,以便区块链排序节点进行后续的交易排序、出块等流程。
56.应理解,智能合约实际上是存储在区块链上的可执行代码,因其不一定设有实际拥有人,不是严格意义上的账户,但其特性和行为在很多情况下能够被看作是一种受编程逻辑控制的机器账户。广泛意义上的智能合约还可包括智能合约编程语言、编译器、虚拟机、事件、状态机、容错机制等。
57.参阅图1所示,由于传统的区块链系统中未设立对区块链节点程序或智能合约程序的运行环境的隔离机制,当区块链节点程序所在的宿主机或运行环境被攻破、或者客户端管理员(具备更新智能合约的权限)密钥泄露,将有可能导致区块链节点程序、合约执行环境签名密钥、智能合约程序等被非法替换。若区块链节点程序或合约执行环境签名密钥被非法替换,会导致区块链节点程序对合约执行结果和交易对应的状态数据读写集合的签名不可靠,导致严重的安全性问题。当智能合约程序被非法替换后,在该智能合约程序上执行的后续交易,并不知晓合约逻辑已经发生变化,可能会在错误的智能合约逻辑上被执行,导致严重的安全性问题。而所有交易的结构体以及区块链数据在区块链上以明文形式存储,链内所有参与方均为可见,缺乏隐私性。而且,区块链节点常采用纯软件方式(例如零知识证明(zero—knowledge proof)等技术)保障隐私性,性能较差。
58.针对于传统的区块链系统存在的诸多安全隐患,目前业界提出一种采用隔离机制、通过在tee运行智能合约的解决方案,以期消除传统区块链系统中智能合约运行过程存在的安全隐患。
59.具体的,在区块链节点侧,可通过隔离技术(例如trustzone隔离技术)将片上系统(system of chip,soc)上的硬件和软件资源划分的两个区域:非可信执行环境(例如富执行环境(rich execution environment,ree))和可信执行环境(trusted execution environment,tee)。其中,ree是通用执行环境,可运行通用的操作系统(operating system,os),例如安卓(android)系统、ios系统、linux系统等。ree资源丰富,可为上层应用程序(application,app)提供设备的相关功能。ree是开放的、可扩展的且通用的,可在互联互通的网络世界中运转,但ree的安全性较tee环境低。tee通常用来进行数字版权管理(digital rights management,drm)、移动支付和敏感数据保护等。tee受硬件机制保护,隔离于ree、只能通过特定接口与tee通信、并不规定某一种硬件实现方法。tee可以访问ree的内存,ree无法访问受硬件保护的tee内存。tee中可以同时运行多个可信执行程序(trusted application,ta)。
60.参阅图2所示,在基于tee运行智能合约的方案中,智能合约程序运行在tee内,区块链节点程序运行在ree。当用户侧触发交易执行时,用户侧的区块链客户端可向区块链节点发送携带有用户参数的交易请求,发起对区块链节点侧的智能合约程序的调用,以通过在区块链节点侧的tee内运行智能合约程序来完成交易。区块链节点侧,区块链节点程序向运行在tee侧的智能合约程序转发该交易请求。tee内的智能合约程序能够响应于该交易请求自动执行相应的智能合约的合约逻辑。合约逻辑执行过程中,完成从ree侧的状态数据库读取状态数据、构造结构体、交易加密、交易签名等处理,并向区块链节点程序返回交易对应的结构体。区块链节点程序向区块链客户端返回该结构体。后续,由区块链客户端可将该结构体发送给区块链排序节点,以便区块链排序节点进行后续的交易排序、出块等流程。
61.基于tee运行智能合约的方案,在合约执行过程中,可以实现以下两方面的安全性保障:
62.(1)区块链客户端向智能合约程序发送的交易请求、以及智能合约程序向区块链客户端返回的结构体都通过数字信封加密,相关交易信息不会被区块链节点程序查看或篡改,可以保障区块链客户端和智能合约程序之间安全地传递相关交易信息。
63.(2)交易签名在tee内完成,交易签名所使用的签名密钥,通过硬件加密方式,可靠地存储在tee内,可以保障交易签名的可靠性。
64.上述基于tee运行智能合约的方案,虽然可以在一定程度上提高智能合约执行过程中的安全性,但依然未能实现对执行交易过程中涉及的交易相关的状态数据的隐私性保护,区块链上的各个参与方依然可以查询所有明文的状态数据。并且,该方案中,由于交易对应的结构体本身只携带合约执行结果、状态数据读写集合等,均无法表征执行交易的合约逻辑,使得无法将该交易与完成该交易的特定合约逻辑关联起来,导致无法很好地对完成交易的合约逻辑进行溯源。
65.本技术实施例提供了一种基于区块链的数据处理方法及装置,有助于在不显著降低状态数据的写入、查询性能的情况下,实现对交易相关的状态数据的隐私保护。同时,实现对执行每笔交易的智能合约的可信追溯,提升区块链网络整体的可信性。其中,方法和装置是基于同一技术构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
66.下面结合附图及实施例详细介绍本技术。
67.图3a为本技术实施例适用的区块链系统的架构示意图。参阅图3a所示,该区块链系统可以包括区块链客户端和区块链节点。
68.其中,区块链客户端属于用户侧,可以是终端设备或运行在终端设备的应用程序。该区块链客户端主要用于向区块链节点发起用于安装智能合约的合约逻辑的请求、发起基于智能合约的交易请求、接收来自区块链节点的结构体以及实现其它区块链相关功能等。
69.区块链节点属于网络侧,可以是终端设备或服务器。该区块链节点的硬件和软件资源可划分为tee和ree两个区域。ree侧可包括区块链节点程序和状态数据库等,tee侧可包括智能合约程序以及智能合约的合约逻辑等。ree侧的区块链节点程序主要用于实现区块链客户端相关请求的接收和/或转发、状态数据的读/写功能、以及对tee侧智能合约程序的起、停、接口调用等生命周期管理能力。tee侧的智能合约程序主要用于实现智能合约的合约逻辑的加载、执行、以及在合约逻辑的执行过程中读取状态数据、对结构体的封装和处理、与ree侧程序的交互等。
70.本技术中,为了实现对不同参与方的状态数据的隐私保护以及对合约逻辑的可信溯源,一种实现方式中,tee侧的智能合约程序可实现安全的合约沙箱,在合约沙箱内实现对读取的加密的状态数据的解密,然后在明文状态下基于解密后的状态数据进行合约逻辑运算,并将形成的新的状态数据进行加密,从而在保证区块链交易以及状态数据隐私性的同时,又可以在合约沙箱内明文运算,从而不降低交易执行效率。并且,tee侧的智能合约程序除了具备正常的合约启动、更新以及交易执行等功能外,还可以为完成交易得到的结构体添加执行交易的智能合约的相关信息,例如该智能合约的合约逻辑的哈希值,从而实现交易与执行交易的智能合约的关联,保障每笔交易的执行逻辑可验证、可追溯。
71.示例的,参阅图3b所示,区块链节点可以是区块链云服务节点,例如arm服务器,区块链节点程序可以运行在该arm服务器的docker容器中,tee由arm服务器上的信任区(trustzone)来实现。智能合约程序为运行在trustzone中的可信执行程序ta,该ta可以实现智能合约的合约逻辑的加载/运行、哈希运算、加解密计算、合约执行、结构体封装等功能。
72.为了便于理解,下面以图3b为例,结合方法流程图对本技术中执行交易的过程进行示例说明。
73.参阅图4所示,在执行智能合约以完成交易请求对应的交易时,图3a所示的区块链系统可以实现以下方法步骤:
74.s401:区块链客户端向区块链节点发送交易请求,相应地,区块链节点接收来自区块链客户端的交易请求。
75.本技术中,该交易请求可以包括交易参数,且该交易请求可以用于指示区块链节点基于所述交易参数执行相应的智能合约以完成所述交易请求对应的交易。
76.示例的,该交易参数可以包括以下的一项或多项:智能合约的合约标识;和/或,与交易相关的输入参数;和/或,要读取的键、或者要写入的键值对,本技术对此不做限定。
77.s402:区块链节点调用安装在tee中的ta,以使得ta根据所述交易参数在所述tee执行所述智能合约,得到目标结构体。
78.本技术实施例中,该目标结构体是执行智能合约得到的结构体,也可以称为一笔交易。不失一般性地,该目标结构体可以包括:交易请求、合约执行结果、至少一个写集和/
或至少一个读集、交易签名、智能合约的合约逻辑的哈希值等。应理解,具体实现中,该目标结构体可以是基于预定格式的数据集合,本技术对此不做限定。
79.在一种可能的实现方式中,智能合约的合约逻辑中可以包括读操作逻辑和/或写操作逻辑。来自区块链客户端的交易请求中携带的交易参数,可以触发相应的智能合约的合约逻辑中的读操作逻辑和/或写操作逻辑的执行,从而获得交易相关的状态数据的读操作集合(简称为读集)和/或写操作集合(简称为写集)。该读集和/或写集可以与交易请求、合约执行结果等共同封装在交易对应的结构体中,作为结构体中的一部分,以反馈给区块链客户端。
80.在一个示例中,在智能合约的合约逻辑中,如果涉及到交易相关的状态数据的读取,则该合约逻辑运行读操作逻辑时,会根据读操作参数,调用区块链节点程序接口执行读操作,以从ree侧的状态数据库读取加密的状态数据,并在合约沙箱中对所读取的加密的状态数据进行解密获得解密后的明文状态数据,之后,在合约沙箱中基于解密后的明文状态数据完成后续逻辑执行过程。同时,每次执行读操作获得的加密的状态数据构成一个读集。应理解,在交易涉及多次读操作的情况下,合约逻辑执行多次读操作可以获得多个读集,最终所获得的目标结构体中可以包括多个读集。本技术中,为便于区分,将读操作参数对应的状态数据称为第二状态数据,将第二状态数据对应的密文称为第二密文,每个读集中可以包括第二密文以及读操作相关的其它信息。
81.在另一个示例中,在智能合约的合约逻辑中,如果涉及到交易相关的状态数据的写入,则该合约逻辑运行写操作逻辑时,会根据写操作参数,在合约沙箱中对写操作相关的状态数据进行加密获得加密的状态数据(或称为状态数据的密文)。同时,每次执行写操作获得的加密的状态数据构成一个写集。应理解,在目标交易涉及多次写操作的情况下,合约逻辑执行多次写操作可以获得多个写集,最终所获得的目标结构体中可以包括多个写集。本技术中,为便于区分,将写操作参数对应的状态数据称为第一状态数据,将第一状态数据对应的密文称为第一密文,每个写集中可以包括第一密文以及读操作相关的其它信息。
82.需要说明的是,在执行智能合约的合约逻辑的过程中,涉及状态数据的写入的情况下,仅获得写集而不直接执行将加密后的状态数据写入状态数据库的操作,待该目标结构体会被打包传递至目标区块存储并广播到各个区块链节点后(即该交易在区块链达成共识),由区块链节点从存储有该目标结构体的目标区块中取出该目标结构体,并将该目标结构体中的第一密文(或者是包括第一密文的写集)写入到状态数据库中,以保障全网节点写入数据的一致性。
83.本技术中,在合约沙箱中加密或解密交易相关的状态数据所使用的密钥为区块链客户端的密钥,该密钥可以是预先由区块链客户端生成、并加密传递至区块链节点的ta内的,合约逻辑通过使用区块链客户端自身的密钥实现对交易相关的状态数据的加密和/或解密,有助于实现对不同参与方的状态数据的隐私保护。区块链客户端的密钥的生成、传递以及使用等将在下文中结合附图详述,在此暂不赘述。
84.可以理解的是,根据不同的交易参数,在相应的智能合约的合约逻辑中,可以执行不同的读/写操作逻辑。在一些情形中,可能是一次输入不同的交易参数,以触发读操作逻辑和/或写操作逻辑的执行。相应地,智能合约执行完成交易所得到的目标结构体中,可以包含读集和/或写集。可选地,在一些情形下,可能是一次输入的交易参数触发至少一次读
操作逻辑的执行和/或至少一次写操作逻辑的执行,相应地,该目标结构体中可以包含至少一个读集和/或至少一个写集,本技术对此不做限定。
85.在完成交易后,ta可以对上述交易请求、合约执行结果、至少一个写集和/或至少一个读集等进行封装,得到目标结构体。在一个示例中,为了实现对执行交易的合约逻辑的可信溯源,ta还可以将完成交易的智能合约的相关信息,例如该智能合约的合约逻辑的哈希值,添加到该目标结构体中,作为目标结构体的一部分。由此,待该目标结构体被反馈给区块链客户端后,区块链客户端可以根据该目标结构体中所包含的智能合约的相关信息,对完成交易的智能合约进行验证和/或可信溯源。
86.进一步地,该ta还可以使用自身的签名密钥(或称为交易签名)对该目标结构体进行签名,最终获得完整的目标结构体。
87.s403:区块链节点向所述区块链客户端发送所述目标结构体,相应地,所述区块链客户端接收来自所述区块链节点的所述目标结构体。
88.具体地,运行在tee侧的ta可以向运行在ree侧的区块链节点程序发送该目标结构体,区块链节点程序可以向区块链客户端转发该目标结构体。
89.可选地,该区块链客户端将该目标结构体发送给区块链排序节点,由区块链排序节点进行后续的交易排序、出块等流程。该目标结构体被打包至目标区块中存储后在区块链达成共识,该目标结构体被广播到各个区块链节点,任一个区块链节点可以从该目标区块中取出这目标结构体,然后将该目标结构体中的第一密文(或者包括所述第一密文的写集)写入到状态数据库中,从而保证区块链网络中各个区块链节点写入的数据的一致性的。
90.由此,通过上述方法,在区块链网络中,在区块链上的区块链节点,通过运行在ree侧的区块链节点程序作为用户侧的区块链客户端和区块链节点的tee侧的智能合约程序之间的通信桥梁,该区块链节点程序可将来自区块链客户端的相关请求转发给运行在tee侧的智能合约程序,以使智能合约程序运行相应的智能合约以完成交易请求对应的交易;或者,区块链节点程序可将来自智能合约程序的相关处理结果返回给区块链客户端。智能合约的合约逻辑的运行过程中,可以在合约沙箱内执行交易,实现对交易相关的状态数据的加密和/或解密、明文运算等,同时获得目标结构体,该目标结构体中可以包括交易请求、合约执行结果、至少一个读集和/或至少一个写集、交易签名、智能合约的合约逻辑的相关信息等。
91.由于目标结构体中的读集和/或写集都包括基于区块链客户端的密钥加密交易相关的状态数据得到的密文,当该目标结构体经由区块链节点程序转发给区块链客户端时,区块链节点程序或第三方攻击者无法对该读集和/或写集中的密文进行更改,进一步地加强不同参与方的状态数据的安全保护,因此可以实现不同参与方的状态数据的隐私保护。目标结构体中包含的智能合约的合约逻辑的相关信息,则可以方便区块链客户端或其它区块链节点实现对完成交易的智能合约的验证和可信溯源。
92.本技术实施例中,智能合约的合约逻辑、区块链客户端的密钥等,可以预先加载和存储在区块链节点的tee侧操作系统中,进一步地,当用户侧的区块链客户端触发执行交易的处理流程时,tee侧的智能合约程序可以响应于来自区块链客户端的交易请求运行相应的智能合约的合约逻辑以完成所述交易请求对应的交易,得到目标结构体。为了便于理解,下面结合图5a-图5c所示的方法流程图,对本技术实施例提供的基于区块链的数据处理方
案可能涉及的相关阶段进行详细介绍。
93.阶段一:智能合约程序加载智能合约的合约逻辑:
94.示例的,智能合约的合约逻辑可由高级语言编译成字节码(byte-code),例如wasm字节码或evm字节码,智能合约程序可以是tee侧的ta。智能合约的字节码可由区块链客户端发送给区块链节点,并在区块链节点侧由ta加载完成。智能合约的字节码加载完成之后,后续,区块链节点即可通过调用ta来运行所述智能合约的字节码,以完成交易请求对应的交易。需要说明的是,本技术中,所述智能合约的合约逻辑也可以为任意形式的源代码,例如源码文件或文件压缩包,本技术对此不做限定。
95.参阅图5a所示,ta加载智能合约的合约逻辑的过程可以包括以下步骤:
96.s501:区块链客户端向区块链节点发送智能合约的字节码,相应地,区块链节点程序接收来自区块链客户端的智能合约的字节码。
97.s502:区块链节点程序调用ta的应用程序接口(application programming interface,api),以向ta导入智能合约的字节码。
98.s503:ta导入智能合约的字节码,并采用预设的哈希(hash)算法(例如sha256 hash,或采用其他哈希算法),计算该智能合约的字节码的哈希值,并将该智能合约的字节码的哈希值存储到映射(map)中。
99.s504:ta加载并运行智能合约的字节码。
100.其中,若该智能合约的字节码加载且运行成功,ta即可正常结束该处理流程,并可等待接收来自区块链客户端的交易请求。若该智能合约的字节码加载失败、或运行失败,则返回步骤s501,由区块链客户端再次触发加载智能合约的字节码的流程。
101.应理解,在具体实施时,若ta成功加载和运行智能合约的字节码,可由区块链节点通知区块链客户端。若ta加载或运行智能合约的字节码失败,可以是由区块链节点通知区块链客户端再次触发加载该字节码的流程,也可以是区块链客户端在预设时间段内未接收到来自区块链节点的应答反馈后,主动再次触发加载该字节码的流程,本技术对此具体实现不做限定。
102.阶段二:ta加载区块链客户端的密钥:
103.示例的,本技术中,用于实现不同参与方的状态数据的隐私保护所使用的区块链客户端的密钥,可以由相应的区块链客户端生成,并预先导入到区块链节点侧的ta内并保存。
104.示例的,区块链客户端的密钥可以为对称密钥。
105.参阅图5b所示,ta加载区块链客户端的密钥的过程包括以下步骤:
106.s511:区块链客户端发起合约初始化请求。
107.s512:区块链节点在接收到来自区块链客户端的合约初始化请求后,调用ta api,执行初始化操作。
108.s513:ta接收合约初始化请求,生成签名所用的非对称密钥,例如,ecdsa私钥(private key)和ecdsa公钥(public key)。
109.s514:ta接收合约初始化请求,生成加密所用的非对称密钥,例如,rsa私钥(private key)和rsa公钥(public key)。
110.s515:区块链客户端生成加密状态数据所用的对称密钥(例如aes key),即区块链
客户端的密钥。
111.s516:区块链客户端获取ta生成的rsa公钥。
112.s517:区块链客户端利用rsa公钥加密aes密钥,得到第三密文,并通过区块链节点程序,将该第三密文传递给ta。
113.s518:ta利用rsa私钥对接收到的第三密文进行解密,得到区块链客户端的密钥,即aes密钥。其中,若解密成功,则ta能够获得区块链客户端的对称密钥,并正常结束该处理流程。若解密失败,则返回s511,以使区块链客户端再次发起合约初始化请求,以便ta能够获得区块链客户端的密钥,完成将区块链客户端的密钥导入到ta的处理流程。
114.进一步地,在该区块链客户端后续发起交易时,区块链节点即可基于保存的区块链客户端的密钥对交易相关的状态数据进行加密和/或解密处理,从而保障作为参与方的该区块链客户端的状态数据的隐私保护。
115.应理解的是,上述仅是对本技术中由ta加载区块链客户端的密钥的处理过程的示例说明而非任何限定。在其他实施例中,区块链客户端还可以通过其他方式,将自身的密钥导入到区块链节点侧的ta,以便该ta在后续响应于来自该区块链客户端的交易请求以完成交易时,能够使用该区块链客户端的密钥完成对交易相关的状态数据的加密和/或解密,从而保障合约逻辑的正常运行以及不同参与方的状态数据的隐私保护。
116.需要说明的是,上述方法步骤仅是示例说明而非对步骤顺序(例如s513、s514、s515、s516等)的限定,在其他实施例中,例如也可以先执行s514,后执行s513,或者同时执行s513、s514、s515、s516,在此不再赘述。
117.阶段三:ta运行智能合约的字节码以完成交易请求对应的交易:
118.参阅图5c所示,ta运行智能合约的字节码以完成交易请求对应的交易的过程包括以下步骤:
119.s521:区块链客户端向区块链节点发送交易请求。本技术中,该交易请求包含交易参数,且所述交易请求用于指示所述区块链节点基于所述交易参数执行相应的智能合约的字节码以完成交易请求对应的交易。
120.s522:区块链节点程序调用ta,并将交易参数转发给ta。
121.s523:ta根据交易参数,调用相应的处于运行状态的智能合约的字节码。
122.s524:在智能合约的字节码的运行过程中,在涉及写操作逻辑的执行的情况下,智能合约的字节码通过调用ta api,对写操作参数对应的第一状态数据进行加密处理,获得第一密文,同时,形成写集。
123.在一个示例中,第一状态数据包括键(key)-值(value)对。其中,所述第一密文可以是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的,例如enc(value);或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的加密密文与随机数的组合,例如enc(value) 随机数(nonce);或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的,例如enc(key value);或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的加密密文与随机数组合enc(key value) nonce。
124.在另一个示例中,所述第一密文的查询键为第一哈希值,所述第一哈希值是所述
ta采用预设的哈希算法对所述第一状态数据中的键(key)进行哈希运算得到的,例如hash(key)。
125.s525:在智能合约的字节码的运行过程中,在涉及读操作逻辑的执行的情况下,智能合约的字节码调用ta api,并调用ree侧区块链节点程序api,通过访问ree侧的状态数据库,传入待查询的目标键,以从状态数据库中读取第二密文。然后,在tee侧,ta在合约沙箱中,利用保存的区块链客户端的密钥,对所读取的第二密文进行解密,获得明文的第二状态数据,并基于所获得的第二状态数据,完成后续逻辑执行过程。同时,形成读集。
126.需要说明的是,本技术中,第二状态数据是所述第二密文对应的明文,所述明文对应的解密密钥为所述区块链客户端的密钥,或者为所述区块链客户端的密钥和随机数。第二状态数据可以包括键(key)-值(value)对,该第二密文可以是在之前的交易中,由ta对交易相关的第二状态数据进行加密得到的。其中,所述第二密文可以是所述ta根据所述区块链客户端的密钥对所述第二状态数据中的值进行加密得到的,例如enc(value);或者,所述第二密文是所述ta根据所述区块链客户端的密钥对所述第二状态数据中的值进行加密得到的加密密文与随机数的组合,例如enc(value) 随机数(nonce);或者,所述第二密文是所述ta根据所述区块链客户端的密钥对所述第二状态数据中的键值对进行加密得到的,例如enc(key value);或者,所述第二密文是所述ta根据所述区块链客户端的密钥对所述第二状态数据中的键值对进行加密得到的加密密文与随机数组合enc(key value) nonce。
127.在交易请求包括读请求的情况下,该读请求中可以包含待查询的目标键(key)。ta可以采用预设的哈希算法对该目标键进行哈希运算得到第二哈希值,例如hash(key),并调用ree侧区块链节点程序api,通过访问ree侧的状态数据库,传入所述第二哈希值,以所述第二哈希值作为所述第二密文的查询键,从所述状态数据库中读取所述第二密文,例如enc(key value) nonce。ta在合约沙箱内,可以采用所述区块链客户端的密钥和/或随机数对读取的第二密文进行解密,可以得到明文的第二状态数据。进一步地,ta可以在合约沙箱内,基于所获得的明文的第二状态数据,继续执行所述智能合约的后续逻辑。
128.需要说明的是,在上述s524和s525,智能合约的字节码在合约沙箱内利用明文数据完成逻辑处理时,可直接使用明文数据,不涉及复杂的零知识证明运算,处理性能较高。
129.需要说明的是,上述示例中,仅为了便于描述,以hash()表示哈希运算的结果,以enc()表示加密运算的结果,而非对本技术实施例的哈希算法和加密算法的任何限定。并且,上述示例中对第一状态数据进行哈希运算和/或加密运算的过程、对第二密文进行解密的过程,可以在ta提供的api内完成,对于使用api的智能合约的合约逻辑开发者透明。换言之,任何智能合约均可以由该ta加载和运行,并在合约沙箱内完成相应的交易,获得相应的目标结构体。
130.s526:ta构造目标结构体,并在该目标结构体中,添加智能合约的字节码的hash值,以及通过ta内的签名密钥对该目标结构体整体进行交易签名。
131.本技术中,该ta的签名密钥可以用于表明该目标结构体出自可信执行环境。ta将智能合约的字节码的hash值添加到目标结构体中,利用可信执行环境的可信性(即ta无法被随意篡改且ta不会将伪造的字节码hash值追加到目标结构体中),将每一笔出自ta的交易与特定的智能合约的合约逻辑关联,从而保障交易内容是真实存在的、且实现该交易的执行逻辑是可验证的、可追溯的,共同保障该目标结构体是可信的。
132.s527:ta将所获得的目标结构体发送给区块链节点程序。
133.s528:区块链节点程序向区块链客户端发送该目标结构体,以便区块链客户端将该目标结构体发送给区块链排序节点。进一步地,区块链排序节点即可进行后续的交易排序、出块等流程。该目标结构体中包括交易请求、加密的读集和/或写集、合约执行结果、智能合约的字节码的hash值以及ta签名等。
134.可选的,所述方法还包括:区块链节点在确定所述交易在所述区块链达成共识的情况下,从存储有所述目标结构体的目标区块中获取所述目标结构体,并将所述目标结构体中的第一密文(或者包括所述第一密文的写集)写入所述区块链节点的状态数据库中,以保障全网节点写入数据的一致性。
135.由此,通过上述图5a-图5c的步骤,通过在区块链节点的tee侧操作系统中运行ta、保存区块链客户端的密钥,以使得ta可以在运行相应的智能合约的合约逻辑以完成交易请求对应的交易时,使用区块链客户端的密钥对交易相关的状态数据进行加密和/或解密,以确保在区块链状态数据库中存储的状态数据都是加密的,目标结构体中的状态数据也是加密的,从而保障不同参与方的状态数据的隐私保护。同时,每笔目标结构体中可以追加执行相应交易的智能合约的合约逻辑的哈希值,以确保该目标结构体是可信的、且可以精确地追溯到执行交易的智能合约的合约逻辑,从而提升交易的隐私性和可信度。
136.基于相同的技术构思,本技术实施例还提供了一种区块链节点装置,如图6所示,该区块链节点装置600可包括通信单元610和处理单元620。其中,通信单元610,用于接收来自区块链客户端的交易请求,其中,所述交易请求包含交易参数,且所述交易请求用于指示所述区块链节点基于所述交易参数执行相应的智能合约以完成交易请求对应的交易;处理单元620,用于调用安装在可信执行环境tee中的可信执行程序ta,以使所述ta根据所述交易参数在所述tee执行所述智能合约,获得目标结构体;其中,所述目标结构体中包括所述交易相关的状态数据的密文,所述状态数据的加密密钥是所述区块链客户端的密钥;通信单元610还用于向所述区块链客户端发送所述目标结构体。
137.在一种实施方式中,所述交易请求中包括写请求,所述交易参数包括所述写请求对应的写操作参数,所述交易相关的状态数据包括所述写操作参数对应的第一状态数据,所述交易相关的状态数据的密文包括所述第一状态数据对应的第一密文。
138.在一种实施方式中,所述第一状态数据包括键值对;其中,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的值进行加密得到的加密密文与随机数的组合;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的;或者,所述第一密文是所述ta根据所述区块链客户端的密钥对所述第一状态数据中的键值对进行加密得到的加密密文与随机数组合。
139.在一种实施方式中,所述处理单元还用于:在确定所述交易在所述区块链达成共识的情况下,通过所述通信单元从存储有所述目标结构体的目标区块中获取所述目标结构体;将所述目标结构体中的第一密文写入所述区块链节点的状态数据库中;其中,所述状态数据库位于所述区块链节点的非可信执行环境ree中,所述第一密文的查询键为第一哈希值,所述第一哈希值是所述ta采用预设的哈希算法对所述第一状态数据中的键进行哈希运
算得到的。
140.在一种实施方式中,所述交易请求中包括读请求,所述交易参数包括所述读请求对应的读操作参数,所述状态数据包括所述读操作参数对应的第二状态数据,所述状态数据的密文包括所述第二状态数据对应的第二密文。
141.在一种实施方式中,所述处理单元用于:调用所述ta,以使所述ta根据所述读操作参数从所述区块链节点的状态数据库中读取所述第二密文;调用所述ta,以使所述ta根据所述区块链客户端的密钥对所述第二密文进行解密,得到所述第二状态数据;调用所述ta,以使所述ta基于所述第二状态数据继续执行所述目标智能合约的后续逻辑。
142.在一种实施方式中,所述读操作参数中包含待查询的目标键,所述第二密文采用键-值对格式;其中,所述ta从所述状态数据库读取所述第二密文时,以第二哈希值作为所述第二密文的查询键,所述第二哈希值是所述ta采用预设的哈希算法对所述目标键进行哈希运算得到的。
143.在一种实施方式中,所述第二状态数据是所述第二密文的明文,所述明文的解密密钥为所述区块链客户端的密钥和随机数。
144.在一种实施方式中,所述目标结构体中还包括第三哈希值,所述第三哈希值是所述ta采用预设的哈希算法对所述智能合约的合约逻辑进行哈希运算得到的。
145.在一种实施方式中,所述智能合约的合约逻辑为wasm字节码或evm字节码或源码文件或文件压缩包。
146.在一种实施方式中,所述区块链节点接收来自区块链客户端的交易请求之前,所述处理单元还用于:通过所述通信单元接收来自区块链客户端的第三密文;调用所述ta,以使所述ta根据保存的非对称密钥对所述第三密文进行解密,得到所述区块链客户端的密钥。
147.在一种实施方式中,所述区块链客户端的密钥为对称密钥。
148.如图7所示,为根据本技术一个实施例的通信装置的示意图。该通信装置的结构如图7所示,包括处理器701、存储器702。所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令;当所述处理器调用所述指令时,使得所述通信装置执行以上实施例以及实施例提供的数据处理方法,下面对该通信装置的各个单元器件的功能进行介绍。
149.所述处理器701、所述存储器702之间通过总线703相互连接。所述总线703可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
150.存储器702中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令。存储器702可能包含随机存取存储器(random access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器701执行存储器702中的程序指令,并使用所述存储器702中存储的数据,实现上述功能,从而实现上述实施例提供的数据处理方法。
151.可以理解,本技术图7中的存储器702可以是易失性存储器或非易失性存储器,或
可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
152.需要说明的是,本技术以上实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
153.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
154.基于以上实施例,本技术实施例还提供了一种计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行以上实施例提供的方法。
155.基于以上实施例,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被计算机执行时,使得计算机执行以上实施例提供的方法。
156.其中,存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。
157.基于以上实施例,本技术实施例还提供了一种芯片,所述芯片与存储器耦合,所述芯片用于读取存储器中存储的计算机程序,实现以上实施例提供的方法。
158.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(sol id state disk,ssd))等。
159.本技术实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列(fpga)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
160.本技术实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。
161.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
162.尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献