掌桥专利:专业的专利平台
掌桥专利
首页

在区块链中执行交易的方法和区块链系统

文献发布时间:2023-06-19 11:11:32


在区块链中执行交易的方法和区块链系统

技术领域

本说明书实施例涉及区块链技术领域,更具体地,涉及一种在区块链中执行交易的方法和区块链系统。

背景技术

区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。

在支持隐私交易的区块链系统中,区块链节点在可信执行环境(Trustedexecution environment,TEE)中执行交易,TEE可以保证外部无法窥探隐私交易相关的数据,但是不能保证交易执行结果的可信性,因为TEE无法保证能够获得可信的存储数据输入。尤其是,当区块链节点为恶意节点的情况中,该区块链节点提供给TEE的存储数据输入可能是虚假的。恶意节点可能可以通过向TEE发起查询交易,并为这些查询交易提供部分过时的信息,来达到诱骗TEE输出用户当前无法访问的信息。

发明内容

本说明书实施例旨在提供一种更有效的在区块链中执行交易的方案,以提供更加可信的交易执行结果。

为实现上述目的,本说明书一个方面提供一种在区块链中执行交易的方法,由区块链节点执行,所述区块链节点包括计算装置中的可信执行环境,所述方法包括:

所述可信执行环境获取第一交易,所述第一交易由用户设备基于第一账户发送,所述第一交易中调用第一合约,所述第一合约中包括请求读取所述第一账户的权限信息和第一数据的数据读取请求,并通过所述数据读取请求限定所述权限信息和所述第一数据对应于同一个区块;

所述可信执行环境通过所述计算装置将所述第一合约中的数据读取请求发送给可信存储装置,所述可信存储装置中存储有所述区块链的数据;

所述可信存储装置在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置将读取结果发送给所述可信执行环境,其中,所述读取结果中包括对应于同一个区块的所述权限信息和所述第一数据;

所述可信执行环境在接收到所述读取结果之后,根据所述第一合约中的验证逻辑,基于所述权限信息验证所述第一账户的权限,在验证通过的情况中,通过所述计算装置将所述第一数据返回给所述用户设备。

在一种实施方式中,所述第一合约中包括第一读取请求,所述第一读取请求用于请求对所述权限信息和所述第一数据进行批量读取。

在一种实施方式中,所述第一合约中包括第二读取请求和第三读取请求,其中,所述第二读取请求用于请求读取对应于第一区块的权限信息,所述第三读取请求用于请求读取对应于所述第一区块的第一数据。

在一种实施方式中,所述可信执行环境通过所述计算装置将所述第一合约中的数据读取请求发送给可信存储装置包括,所述可信执行环境对所述数据读取请求签名,将所述数据读取请求及其签名通过所述计算装置发送给可信存储装置;

所述可信存储装置在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置将读取结果发送给所述可信执行环境包括,所述可信存储装置在接收到所述数据读取请求及其签名之后,对所述签名进行验签,在验签通过的情况中,基于所述数据读取请求进行数据读取,对读取结果进行签名,并将所述读取结果及其签名通过所述计算装置发送给所述可信执行环境。

在一种实施方式中,所述第一数据为第二变量,所述第一合约限定所述权限信息和所述第二变量的值对应于由同一个区块确定的世界状态。

在一种实施方式中,所述第一数据为第一区块,所述第一合约限定所述权限信息对应于所述第一区块。

在一种实施方式中,所述第一数据为第二变量,所述数据读取请求中还包括第二区块的块标识,所述可信存储装置基于所述数据读取请求进行数据读取包括,所述可信存储装置基于所述第二区块的块标识读取与所述第二区块对应的数据。

在一种实施方式中,所述读取结果中包括所述第二区块的块标识,所述方法还包括,所述可信执行环境在接收到所述读取结果之后验证所述读取结果中的块标识是否与所述数据读取请求中的块标识一致。

在一种实施方式中,所述区块链节点包括所述可信存储装置。

本说明书另一方面提供一种区块链系统,包括计算装置和可信存储装置,所述计算装置中包括可信执行环境,所述可信存储装置中存储有所述区块链的数据,其中,

所述可信执行环境用于获取第一交易,所述第一交易由用户设备基于第一账户发送,所述第一交易中调用第一合约,所述第一合约中包括请求读取所述第一账户的权限信息和第一数据的数据读取请求,并通过所述数据读取请求限定所述权限信息和所述第一数据对应于同一个区块;通过所述计算装置将所述第一合约中的数据读取请求发送给所述可信存储装置;

所述可信存储装置用于在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置将读取结果发送给所述可信执行环境,其中,所述读取结果中包括对应于同一个区块的所述权限信息和所述第一数据;

所述可信执行环境还用于在接收到所述读取结果之后,根据所述第一合约中的验证逻辑,基于所述权限信息验证所述第一账户的权限,在验证通过的情况中,通过所述计算装置将所述第一数据返回给所述用户设备。

在一种实施方式中,所述第一合约中包括第一读取请求,所述第一读取请求用于请求对所述权限信息和所述第一数据进行批量读取。

在一种实施方式中,所述第一合约中包括第二读取请求和第三读取请求,其中,所述第二读取请求用于请求读取对应于第一区块的权限信息,所述第三读取请求用于请求读取对应于所述第一区块的第一数据。

在一种实施方式中,所述可信执行环境用于通过所述计算装置将所述第一合约中的数据读取请求发送给可信存储装置包括,所述可信执行环境用于对所述数据读取请求签名,将所述数据读取请求及其签名通过所述计算装置发送给可信存储装置;

所述可信存储装置用于在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置将读取结果发送给所述可信执行环境包括,所述可信存储装置用于在接收到所述数据读取请求及其签名之后,对所述签名进行验签,在验签通过的情况中,基于所述数据读取请求进行数据读取,对读取结果进行签名,并将所述读取结果及其签名通过所述计算装置发送给所述可信执行环境。

在一种实施方式中,所述第一数据为第二变量,所述第一合约限定所述权限信息和所述第二变量的值对应于由同一个区块确定的世界状态。

在一种实施方式中,所述第一数据为第一区块,所述第一合约限定所述权限信息对应于所述第一区块。

在一种实施方式中,所述第一数据为第二变量,所述数据读取请求中还包括第二区块的块标识,所述可信存储装置用于基于所述数据读取请求进行数据读取包括,所述可信存储装置用于基于所述第二区块的块标识读取与所述第二区块对应的数据。

在一种实施方式中,所述读取结果中包括所述第二区块的块标识,所述可信执行环境还用于在接收到所述读取结果之后验证所述读取结果中的块标识是否与所述数据读取请求中的块标识一致。

在一种实施方式中,所述区块链系统包括区块链节点,所述区块链节点包括所述计算装置和所述可信存储装置。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。

通过根据本说明书实施例的执行交易的方案,将权限信息访问请求和数据访问请求相互绑定地发送给可信存储访问,使得可信存储访问将匹配的权限信息和访问数据发送给可信执行环境,并由可信执行环境进行对用户权限的验证,从而,恶意区块链节点不能使用过期权限来访问区块链新增的数据,使得交易执行结果更加可信。

附图说明

通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:

图1示出根据本说明书实施例的区块链系统的示意图;

图2为根据本说明书实施例的一种在区块链中执行交易的方法流程图;

图3为根据本说明书实施例的一种区块链系统的架构图;

图4示出根据本说明书实施例的区块链节点的结构图。

具体实施方式

下面将结合附图描述本说明书实施例。

图1示出根据本说明书实施例的区块链系统的示意图。如图1所示,区块链系统中包括计算装置11和可信存储装置12。其中,所述计算装置11中包括TEE,所述TEE使得用户能够验证在该TEE中以预期的方式对数据进行处理,所述TEE例如为基于可信计算基(software guard extensions,SGX)技术的安全容器(Enclave)、基于TrustZone技术的可信空间等具体形式,所述TEE内部设置有硬件私钥,TEE使用其私钥对输出的数据进行签名,从而该数据的接收方可通过TEE的公钥验证该数据未经篡改。所述可信存储装置12例如可通过用户态存储访问(SPDK)提供可信存储服务,类似地,可信存储装置12可通过对输出的数据进行签名,从而确保该数据不被篡改。在该区块链系统中,在一种实施方式中,所述计算装置11为区块链节点,所述可信存储装置12为独立于区块链节点的设备,所述区块链节点通过与可信存储装置12连接而进行对区块链数据的访问。在另一种实施方式中,所述计算装置11和所述可信存储装置12共同构成区块链节点,其中,所述计算装置11和可信存储装置12可以为分离的两个实体设备,或者,所述计算装置11和可信存储装置12也可以为单个实体设备中的两个虚拟的或实体的模块。

在一种在图1所示的区块链系统中执行交易的方案中,用户设备13向区块链中发送查询数据的交易,该交易中调用合约进行对区块链中数据的查询,该合约需要读取交易的发送账户的权限信息,并基于该权限信息确定是否向用户设备13返回查询的数据。具体是,当计算装置11中的TEE执行该交易时,TEE向计算装置11请求读取交易发送账户的权限信息,以用于验证发送账户的权限,接收装置11在从TEE接收到读取请求之后,可通过图1中的操作①向可信存储装置发送读取账户权限信息的请求,从而可信装置12将经签名的账户权限信息返回给计算装置11,计算装置11再通过图1中的操作②把接收到的账户权限信息提供给TEE,TEE在接收到账户权限信息之后,可对该信息进行验签。然而,在该过程中,如果该区块链节点为恶意节点,该区块链节点的计算装置11可能通过操作①或操作②进行作恶。例如,计算装置11通过操作②将过去从可信存储装置12接收的账户的过去的权限信息发送给TEE,该过去的权限信息同样有可信存储装置12的签名,或者对存储访问请求进行篡改,要求存储系统基于以往区块返回权限信息,因此TEE并不能对该权限信息的正确性进行验证。

在根据本说明书实施例在区块链中执行交易的方案中,通过在合约中包括的数据读取请求中限定待读取的权限信息和待读取的数据对应于同一个区块,从而使得区块链节点无法提供与待读取的数据不匹配的权限,使得攻击者无法利用旧的权限来访问新增的数据。

下文将详细描述根据本说明书实施例在区块链中执行交易的方案。

图2为根据本说明书实施例的一种在区块链中执行交易的方法流程图,包括:

步骤S201,TEE获取交易Tx1,所述交易Tx1由用户设备基于账户A发送,所述交易Tx1中调用合约1,所述合约1中请求读取账户A的权限信息和数据D1,并通过数据读取请求绑定所述权限信息和所述数据D1对应于同一个区块;

步骤S203,TEE通过所述计算装置将所述合约1中的绑定数据的数据读取请求发送给可信存储装置,该可信存储装置例如提供SPDK服务,下文中以SPDK代为表示该可信存储装置。所述SPDK中存储有所述区块链的数据,采用SPDK的原因是:此时便于实现可信存储访问;

步骤S205,SPDK在接收到所述数据读取请求之后进行数据读取;

步骤S207,SPDK通过所述计算装置将读取结果发送给所述可信执行环境,其中,所述读取结果中包括对应于同一个区块的所述权限信息和所述数据D1;

步骤S209,TEE在接收到所述读取结果之后,根据所述合约1中的验证逻辑,基于所述权限信息验证所述账户A的权限;

步骤S211,在验证通过的情况中,TEE通过所述计算装置将所述数据D1返回给所述用户设备。

首先,在步骤S201,TEE获取交易Tx1,所述交易Tx1由用户设备基于账户A发送,所述交易Tx1中调用合约1,所述合约1中请求读取账户A的权限信息和数据D1,并绑定所述权限信息和所述数据D1对应于同一个区块。

在本说明书实施例的区块链中,可预先部署用于进行数据查询的智能合约(例如合约1),该智能合约可用于对用户进行权限的验证通过之后读取数据并向用户返回数据。在一种实施方式中,该区块链用于存储隐私数据,即存储在区块链中的数据都为加密数据,在该情况中,上述智能合约在对用户的权限验证通过之后,还可以对读取的加密数据进行解密,并将解密的数据返回给用户。

参考图1,对应于账户A的用户在希望从区块链查询数据时,可向区块链中任一节点发送调用上述合约1的交易Tx1。区块链的所述节点在接收到该交易Tx1之后,对其进行执行,并将交易的执行结果返回给用户。例如,对于交易Tx1,记账节点将通过合约1查询的数据返回给用户设备。由于交易Tx1为查询交易,所述接收交易Tx1的节点不需要将交易Tx1广播给区块链中的其它节点,也不需要将交易Tx1打包到区块中进行存储,并且交易Tx1的执行不会改变世界状态。

其中,区块链节点在执行交易的过程中,为了防止如上文所述的区块链节点作恶,在本说明书实施例中,在TEE中执行调用合约1的交易Tx1,并在合约1中数据读取请求中对读取的账户A的权限信息和用户待读的数据进行绑定。从而,如图1所示,区块链节点的计算装置11在获取到待执行的交易Tx1之后,将该交易Tx1提供给其中的TEE,从而使得在TEE中执行交易Tx1。其中,交易Tx1的发送账户为账户A,接收账户为合约1的合约地址,数据(Data)字段包括对合约1中的函数(例如数据读取函数Read())的调用。该函数在执行时使得首先读取绑定的账户A的权限信息和待读数据D1,即使得该权限信息和待读数据D1对应于同一个区块,然后基于该权限信息进行对账户A的权限的验证,在验证通过的情况中,再返回读取的数据D1。

为了对权限信息和待读数据进行绑定,在一种实施方式中,合约1中例如包括如下的读取函数Read(b):

Read(b)

{

GetMultiKey(a, b)

if (Value a> 10) {return Value b);}

else {return "权限不足"},

}

其中,GetMultiKey(a, b)为区块链节点提供的批量数据访问接口,其可以读取至少两个数据,并使得该读取的至少两个数据对应于同一个区块,合约1中通过使用该批量数据访问接口,从而实现对读取的至少两个数据的绑定。

在另一种实施方式中,读取函数Read(b)中可包括GetMultiKey(a, b/区块100),以表示读取变量a和变量b的与区块100对应的值。

例如,所述“a”表示变量a,该变量a对应于账户A的权限信息,例如,该变量a为账户A的余额,所述“b”表示变量b,为待读取的变量。在区块链中,通常,在每次存入一个新的区块之后,基于该区块中各个交易的执行结果更新状态数据库中的各个变量的值,因此,在区块链中可存储变量与各个区块对应的多个值。通过将变量a和变量b绑定为对应于同一个区块,从而限定了账户A的权限与变量b的值是相匹配的,不存在通过账户A的过去的权限(即在上述区块的前面区块对应的权限)来读取变量b的更新的值的情况。

可以理解,这里虽然以读取变量b作为示例进行描述,本说明书实施例不限于对变量进行读取,例如,也可以对区块、交易等数据进行读取。例如,所述b可以表示待读的区块的块号,例如,在交易Tx1中调用合约1的函数Read(b)时,可在交易Tx1的数据字段中包括Read(100),以指示对区块100的读取,在该情况中,函数Read(100)中包括接口GetMultiKey(a, 100),表示将变量a与区块100相绑定,即读取变量a的与区块100对应的值。

在上述Read(b)函数中,在通过GetMultiKey(a, b)接口读取了对应于同一个区块的变量a和变量b的值之后,基于变量a的值进行权限验证。例如,预设了账户只有余额大于10时才具有访问数据的权限,在该情况中,在Read(b)函数中通过if…else…语句判断变量a的值是否大于10,如果大于10,则返回读取的变量b的值,否则返回权限不足,即读取失败。

在另一种实施方式中,合约1中例如包括如下的读取函数Read(b):

Read(b)

{

GetKey(a/区块100);

GetKey(b/区块100);

if (Value a> 10) {return Value b);}

else {return "权限不足"},

},

在该实施方式中,调用区块链节点提供的读取接口GetKey(a/区块100)和GetKey(b/区块100),并在调用该读取接口时,将待读的变量a的值与区块100绑定,将待读的变量b的值与区块100绑定,即将待读的变量a的值与变量b的值与相同的区块绑定,从而可同样地防止节点作恶。类似地,如果通过Read函数读取区块(例如区块100),则可通过GetKey(a/区块100)将变量a与区块100绑定,通过GetKey(区块100)来读取区块100的数据。

在步骤S203,TEE通过所述计算装置将所述合约1中的绑定数据的数据读取请求发送给SPDK,所述SPDK中存储有所述区块链的数据。

TEE在获取上述交易Tx1之后,执行交易Tx1,在执行交易Tx1的过程中执行交易Tx1调用的合约1中的数据读取函数Read(b)。在上述第一种实施方式中,函数Read(b)中包括对接口GetMultiKey(a, b)的调用,该接口相当于对变量a和变量b的批量数据读取请求。如图1中所示,TEE可使用私钥对接口GetMultiKey(a, b)进行签名,并通过图1中的操作①将接口GetMultiKey(a, b)及其签名发送给SPDK。在这种方式中,将对权限信息的访问请求和对待读取数据D1的访问请求作为一个整体发送给SPDK,并通过签名保证该整体不可篡改,SPDK也将返回经签名的对应于一个区块的权限信息和读取的数据D1,从而使得区块链节点无法向TEE提供与数据D1不匹配的账户A的过期权限,从而使得区块链节点无法利用旧的权限来访问新增的数据。

在上述另一种实施方式中,函数Read(b)中包括GetKey(a/区块100)和GetKey(b/区块100),TEE可使用私钥对GetKey(a/区块100)和GetKey(b/区块100)分别进行签名,并将GetKey(a/区块100)和GetKey(b/区块100)及各自的签名都发送给SPDK。在这种实施方式中,将对权限信息的访问请求和对待读取数据D1的访问请求分别与同一个区块绑定,从而确保权限信息与读取的数据D1的匹配,从而可实现与上述实施方式相同的效果。

在步骤S205,SPDK在接收到所述数据读取请求之后进行数据读取。

在一种实施方式中,SPDK接收到GetMultiKey(a, b)及其签名,SPDK首先使用TEE的公钥对签名进行验签,通过该验签,可确定GetMultiKey(a, b)是否被篡改,从而可防止区块链节点的攻击。在验签通过之后,SPDK基于该批量数据读取接口的设定,读取对应于同一个区块的变量a的值和变量b的值。如果计算装置11在发送GetMultiKey(a, b)及其签名时未指定对应的区块,则SPDK可读取对应于最新区块的变量a的值和变量b的值。如果计算装置11在发送GetMultiKey(a, b)及其签名时指定对应的区块,则SPDK可读取对应于指定区块的变量a的值和变量b的值。

在另一种实施方式中,SPDK接收到GetMultiKey(a, b/区块100)及其签名,SPDK首先使用TEE的公钥对该签名进行验签,在验签通过之后,SPDK分别读取对应于区块100的变量a的值和对应于区块100的变量b的值。

在另一种实施方式中,SPDK接收到GetKey(a/区块100)和GetKey(b/区块100)及各自的签名,SPDK首先使用TEE的公钥对各个签名进行验签,在验签通过之后,SPDK分别读取对应于区块100的变量a的值和对应于区块100的变量b的值。

步骤S207,SPDK通过所述计算装置将读取结果发送给所述可信执行环境,其中,所述读取结果中包括对应于同一个区块的所述权限信息和所述数据D1。

参考图1,SPDK在读取了对应于同一个区块的变量a和变量b的值之后,使用自身的私钥对变量a的值和变量b的值构成的读取结果进行签名,并将读取结果及其签名发送计算装置11,并由计算装置将读取结果及其签名提供给TEE,在该读取结果中,如上文所述,变量a的值对应于账户A的权限,变量b的值即为待读取的数据D1。

在一种实施方式中,在数据读取请求中限定了数据对应的区块的情况中,SPDK在读取结果中还可以包括所述区块的区块号。例如,对于上述读取请求GetMultiKey(a, b/区块100)、GetMultiKey(a, 100)或者GetKey(a/区块100)等,SPDK在对应的读取结果中都可以包括区块100的区块号。可以理解,上文中以区块号示例表示区块的标识,本说明书实施例不限于此,在本说明书实施例中,可使用其他区块标识,如区块哈希值等。

步骤S209,TEE在接收到所述读取结果之后,根据所述合约1中的验证逻辑,基于所述权限信息验证所述账户A的权限。

TEE在接收到读取结果及其签名之后,首先使用SPDK的公钥对该签名进行验签,在验签通过的情况中,使用变量a的值验证所述账户A的权限。例如,在上文所述的Read(b)中,通过if…else…语句限定了权限验证逻辑,即如果变量a的值大于10,则返回变量b的值,否则返回“权限不足”,根据该验证逻辑,首先确定变量a的值是否大于10,如果大于10,则指示计算装置11向用户设备返回变量b的值,否则指示计算装置11向用户设备返回权限不足。

在一种实施方式中,为了保护隐私数据,SPDK中存储了加密数据,在该情况中,TEE在进行验签之后,首先使用预定密钥对读取的加密数据进行解密,从而获取变量a的值和变量b的值,并基于该变量a的值验证账户A的权限。

在另一种实施方式中,在读取结果中包括区块号的情况中,TEE可验证该区块号是否与数据读取请求中的区块号一致,在一致的情况下,再进行对账户权限的验证。

步骤S211,在验证通过的情况中,TEE通过所述计算装置将所述数据D1返回给所述用户设备。

在验证通过的情况中,TEE对变量b的值进行签名,并将该变量b的值提供给计算装置11,指示计算装置11将变量b的值及其签名返回给用户设备。通过提供变量b的值及其签名,防止了区块链节点对变量b的值的篡改。

通过根据本说明书实施例的执行交易的方案,将权限信息访问请求和数据访问请求相互绑定地发送给可信存储访问,使得可信存储访问将匹配的权限信息和访问数据发送给可信执行环境,并由可信执行环境进行对用户权限的验证,从而,恶意区块链节点不能使用过期权限来访问区块链新增的数据,使得交易执行结果更加可信。

图3为根据本说明书实施例的一种区块链系统的架构图,包括计算装置31和可信存储装置32,所述计算装置31中包括可信执行环境311,所述可信存储装置32中存储有所述区块链的数据,该区块链系统用于执行图2所示方法,其中,

所述可信执行环境311用于获取第一交易,所述第一交易由用户设备基于第一账户发送,所述第一交易中调用第一合约,所述第一合约中包括请求读取所述第一账户的权限信息和第一数据的数据读取请求,并通过所述数据读取请求限定所述权限信息和所述第一数据对应于同一个区块;通过所述计算装置31将所述第一合约中的数据读取请求发送给所述可信存储装置32;

所述可信存储装置32用于在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置31将读取结果发送给所述可信执行环境311,其中,所述读取结果中包括对应于同一个区块的所述权限信息和所述第一数据;

所述可信执行环境311还用于在接收到所述读取结果之后,根据所述第一合约中的验证逻辑,基于所述权限信息验证所述第一账户的权限,在验证通过的情况中,通过所述计算装置31将所述第一数据返回给所述用户设备。

在一种实施方式中,所述第一合约中包括第一读取请求,所述第一读取请求用于请求对所述权限信息和所述第一数据进行批量读取。

在一种实施方式中,所述第一合约中包括第二读取请求和第三读取请求,其中,所述第二读取请求用于请求读取对应于第一区块的权限信息,所述第三读取请求用于请求读取对应于所述第一区块的第一数据。

在一种实施方式中,所述可信执行环境311用于通过所述计算装置将所述第一合约中的数据读取请求发送给可信存储装置包括,所述可信执行环境用于对所述数据读取请求签名,将所述数据读取请求及其签名通过所述计算装置发送给可信存储装置;

所述可信存储装置32用于在接收到所述数据读取请求之后进行数据读取,并通过所述计算装置将读取结果发送给所述可信执行环境包括,所述可信存储装置用于在接收到所述数据读取请求及其签名之后,对所述签名进行验签,在验签通过的情况中,基于所述数据读取请求进行数据读取,对读取结果进行签名,并将所述读取结果及其签名通过所述计算装置发送给所述可信执行环境。

在一种实施方式中,所述第一数据为第二变量,所述第一合约限定所述权限信息和所述第二变量的值对应于由同一个区块确定的世界状态。

在一种实施方式中,所述第一数据为第一区块,所述第一合约限定所述权限信息对应于所述第一区块。

在一种实施方式中,所述第一数据为第二变量,所述数据读取请求中还包括第二区块的块标识,所述可信存储装置32用于基于所述数据读取请求进行数据读取包括,所述可信存储装置32用于基于所述第二区块的块标识读取与所述第二区块对应的数据。

在一种实施方式中,所述读取结果中包括所述第二区块的块标识,所述可信执行环境311还用于在接收到所述读取结果之后验证所述读取结果中的块标识是否与所述数据读取请求中的块标识一致。

图4示出根据本说明书实施例的区块链节点的结构图,所述区块链节点包括上述的计算装置31和可信存储装置32,其中所述计算装置31中包括可信执行环境311,该区块链节点用于执行图2所示方法。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。

需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 在区块链系统中执行交易的方法、装置及区块链系统
  • 在区块链中执行交易的方法和区块链系统
技术分类

06120112835658