【技术实现步骤摘要】
调用合约的方法及装置
本说明书一个或多个实施例涉及可验证计算
,尤其涉及一种调用合约的方法及装置。
技术介绍
在相关技术中,针对各种场景下的隐私需求,一种方式是通过同态加密(Homomorphicencryption)和零知识证明(Zero-knowledgeproof)等加密技术实现隐私保护,但也随之带来了严重的性能损失。可信执行环境(TrustedExecutionEnvironment,TEE)是另一种解决方式。TEE可以起到硬件中的黑箱作用,在TEE中执行的代码和数据操作系统层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程效率没有损失。
技术实现思路
有鉴于此,本说明书一个或多个实施例提供一种调用合约的方法及装置,能够在链下环境内安全实现调用合约的操作。为实现上述目的,本说明书一个或多个实施例提供技术方案如下:根据本说明书一个或多个实施例的第一方面,提出了一种调 ...
【技术保护点】
1.一种调用合约的方法,包括:/n链下隐私计算节点接收到经过加密的调用请求,并在链下可信执行环境中解密得到所述调用请求包含的链下合约的标识信息和入参数据的信息;/n所述链下隐私计算节点根据所述标识信息调用预先部署的所述链下合约的字节码,并通过部署于所述链下可信执行环境中的虚拟机执行所述字节码以对所述入参数据进行链下隐私计算;/n所述链下隐私计算节点在链下可信执行环境中对得到的链下隐私计算结果进行加密并反馈。/n
【技术特征摘要】 【专利技术属性】
1.一种调用合约的方法,包括:
链下隐私计算节点接收到经过加密的调用请求,并在链下可信执行环境中解密得到所述调用请求包含的链下合约的标识信息和入参数据的信息;
所述链下隐私计算节点根据所述标识信息调用预先部署的所述链下合约的字节码,并通过部署于所述链下可信执行环境中的虚拟机执行所述字节码以对所述入参数据进行链下隐私计算;
所述链下隐私计算节点在链下可信执行环境中对得到的链下隐私计算结果进行加密并反馈。
2.根据权利要求1所述的方法,所述链下隐私计算节点接收到经过加密的调用请求,包括:所述链下隐私计算节点接收到区块链节点通过预言机机制传输的调用请求;
所述链下隐私计算节点在链下可信执行环境中对得到的链下隐私计算结果进行加密并反馈,包括:所述链下计算节点通过预言机机制对所述链下隐私计算结果进行反馈。
3.根据权利要求2所述的方法,所述链下隐私计算节点接收到区块链节点通过预言机机制传输的调用请求,包括:
所述经过加密的调用请求由所述区块链节点从客户端提交的交易中提取得到;或者,
所述经过加密的调用请求由所述区块链节点根据所述客户端提交的交易在自身创建的链上可信执行环境内执行链上合约而生成。
4.根据权利要求1所述的方法,所述链下隐私计算节点接收到经过加密的调用请求,包括:所述链下隐私计算节点接收到客户端直接发起的链下调用请求;
所述链下隐私计算节点在链下可信执行环境中对得到的链下隐私计算结果进行加密并反馈,包括:所述链下计算节点将所述链下隐私计算结果直接反馈给客户端。
5.根据权利要求1所述的方法,所述链下隐私计算节点接收到经过加密的调用请求,包括:
所述链下隐私计算节点直接从请求方处接收到经过加密的调用请求;或者,
在所述链下隐私计算节点属于链下隐私计算集群的情况下,所述链下隐私计算节点接收所述链下隐私计算集群的控制节点转发的经过加密的调用请求。
6.根据权利要求1所述的方法,所述调用请求由节点非对称密钥对的公钥进行加密后传输,且所述节点非对称密钥对的私钥被所述链下隐私计算节点所维护。
7.根据权利要求6所述的方法,所述链下隐私计算节点属于链下隐私计算集群,且所述节点非对称密钥对的私钥仅被所述链下隐私计算节点所维护;
在所述经过加密的调用请求的目标节点被设定为所述链下隐私计算节点的情况下,所述经过加密的调用请求被所述链下隐私计算集群的控制节点接收并转发至所述链下隐私计算节点;
在所述经过加密的调用请求的目标节点未设定的情况下,所述经过加密的调用请求被所述控制节点接收并转发至所述链下隐私计算集群中的所有链下隐私计算节点。
8.根据权利要求6所述的方法,所述链下隐私计算节点属于链下隐私计算集群,且所述节点非对称密钥对的私钥被所述链下隐私计算集群内的所有链下隐私计算节点共同维护;
所述链下隐私计算节点被所述链下隐私计算集群的控制节点根据负载均衡算法从所述链下隐私计算集群中选取,且所述经过加密的调用请求被所述控制节点接收并转发至所述链下隐私计算节点。
9.根据权利要求1所述的方法,所述链下可信执行环境中部署有若干执行引擎;所述方法还包括:
所述链下隐私计算节点确定所述字节码对应的执行引擎;
所述链下隐私计算节点通过确定出的执行引擎执行所述字节码。
10.根据权利要求1所述的方法,还包括:
所述链下隐私计算节点向请求方提供远程证明报告,所述远程证明报告由认证服务器对所述链下隐私计算节点产生的自荐信息进行验证后生成,所述自荐信息与所述链下隐私计算节点上创建的链下可信执行环境相关;
其中,所述调用请求由客户端在根据所述远程证明报告确定所述链下隐私计算节点可信的情况下发起。
11.根据权利要求1所述的方法,所述入参数据的信息由合约非对称密钥对的公钥进行加密,所述合约非对称密钥由所述链下隐私计算节点在所述链下可信执行环境内预先生成且对应于所述链下合约的身份;所述方法还包括:
所述链下隐私计算节点根据所述合约非对称密钥对的私钥,在所述链下可信执行环境中解密得到所述入参数据的信息。
12.根据权利要求11所述的方法,
不同的链下隐私计算节点针对所述链下合约生成的合约非对称密钥对不同;或者,
不同的链下隐私计算节点针对所述链下合约生成的合约非对称密钥对相同。
13.根据权利要求1所述的方法,所述调用请求还包括指定对象的身份公钥的信息;所述链下隐私计算节点在链下可信执行环境中对得到的链下隐私计算结果进行加密并反馈,包括:
所述链下隐私计算节点根据所述身份公钥对所述执行结果进行加密后反馈。
14.根据权利要求1所述的方法,所述调用请求还包含函数信息;所述链下隐私计算节点调用所述链下合约的字节码,包括:
所述链下隐私计算节点调用所述链下合约中对应于所述函数信息的字节码。
15.根据权利要求1所述的方法,所述链下隐私计算结果包括以下至少之一:响应码、响应信息、合约调用的返回值、合约调用的过程输出。
16.根据权利要求1所述的方法,还包括:
所述链下隐私计算节点对所述调用请求进行哈希运算得到第一哈希值;
所述链下隐私计算节点将所述第一哈希值与所述链下隐私计算结果关联反馈,所述第一哈希值用于与请求方生成的所述调用请求的第二哈希值进行比较,所述比较结果用于确定所述链下隐私计算结果是否可靠。
17.根据权利要求1所述的方法,还包括:
在所述链下合约为无状态合约的情况下,所述链下合约的入参数据包括所述链下合约中定义的合约状态的历史状态取值。
18.一种调用合约的方法,包括:
客户端生成调用请求,所述调用请求包含链下合约的标识信息和入参数据的信息;
所述客户端向链下隐私计算节点发送经过加密的调用请求,所述标识信息和所述入参数据的信息被所述链下隐私计算节点在链下可信执行环境中解密得到后,所述标识信息用于指示所述链下隐私计算节点获取链下合约的字节码,并通过部署于所述链下可信执行环境中的虚拟机执行所述字节码以对所述入参数据进行链下隐私计算。
19.根据权利要求18所述的方法,所述客户端向链下隐私计算节点发送经过加密的调用请求,包括:
所述客户端向区块链节点提交交易,所述交易触发所述区块链节点通过预言机机制将经过加密的调用请求传输至所述链下隐私计算节点;
其中,所述链下隐私计算节点产生的链下隐私计算结果被反馈至所述区块链节点,所述链下隐私计算结果用于驱动所述区块链节点更新区块链账本数据。
20.根据权利要求18所述的方法,所述客户端向链下隐私计算节点发送经过加密的调用请求,包括:所述客户端向所述链下隐私计算节点直接发起链下调用请求;所述方法还包括:
所述客户端向区块链节点发起存证交易,所述存证交易包含所述链下隐私计算结果。
21.根据权利要求18所述的方法,所述客户端向链下隐私计算节点发送经过加密的调用请求,包括:
所述客户端直接向链下隐私计算节点发送经过加密的调用请求;或者,
在所述链下隐私计算节点属于链下隐私计算集群的情况下,所述客户端向所述链下隐私计算集群的控制节点发送经过加密的调用请求,以由所述控制节点转发所述调用请求。
22.根据权利要求18所述的方法,所述调用请求由节点非对称密钥对的公钥进行加密后传输,且所述节点非对称密钥对的私钥被所述链下隐私计算节点所维护。
23.根据权利要求22所述的方法,在所述链下隐私计算节点属于链下隐私计算集群的情况下,所述节点非对称密钥对的私钥仅被所述链下隐私计算节点所维护,或者所述节点非对称密钥对的私钥被所述链下隐私计算集群内的所有链下隐私计算节点共同维护。
24.根据权利要求18所述的方法,还包括:
所述客户端获取所述链下隐私计算节点的远程证明报告,所述远程证明报告由认证服务器对所述链下隐私计算节点产生的自荐信息进行验证后生成,所述自荐信息与所述链下隐私计算节点上创建的链下可信执行环境相关;
所述客户端根据所述远程证明报告确定所述链下隐私计算节点可信的情况下,向所述链下隐私计算节点发送经过加密的调用请求。
25.根据权利要求18所述的方法,所述入参数据的信息由合约非对称密钥对的公钥进行加密,所述合约非对称密钥由所述链下隐私计算节点在所述链下可信执行环境内预先生成且对应于所述链下合约的身份;所述方法还包括:
所述客户端采用所述合约非对称密钥对的公钥对所述入参数据的信息进行加密后传输。
26.根据权利要求25所述的方法,
不同链下隐私计算节点针对所述链下合约生成的合约非对称密钥对不同;或者,
不同链下隐私计算节点针对所述链下合约生成的合约非对称密钥对相同。
27.根据权利要求18所述的方法,还包括:
客户端向调用请求中添加指定对象的身份公钥的信息;
客户端接收所述链下隐私计算节点采用所述身份公钥对所述执行结果进行加密后返回的结果密文。
28.根据权利要求18所述的方法,还包括:
客户端向调用请求中添加函数信息,所述函数信息用于指示所述链下隐私计算节点用于调用所述链下合约中对应于所述函数信息的的字节码。
29.根据权利要求18所述的方法,所述链下隐私计算结果包括以下至少之一:响应码、响应信息、合约调用的返回值、合约调用的过程输出。
30.根据权利要求18所述的方法,还包括:
所述客户端接收到所述链下隐私计算节点对所述调用请求进行哈希运算得到的第一哈希值与所述链下隐私计算结果;
所述客户端生成所述调用请求的第二哈希值,并将所述第一哈希值与所述第二哈希值进行比较;
所述客户端根据比较结果确定所述链下隐私计算结果是否可靠。
31.根据权利要求18所述的方法,还包括:
在所述链下合约为无状态合约的情况下,所述链下合约的入参数据包括所述链下合约中定义的合约状态的历史状态取值。
32.一种调用合约的方法,包括:
区块链节点获取经过加密的调用请求,所述调用请求包含链下合约的标识信息和入参数据的信息;
所述区块链节点通过预言机机制将经过加密的调用请求传输至链下隐私计算节点,所述标识信息和所述入参数据的信息被所述链下隐私计算节点在链下可信执行环境中解密得到后,所述标识信息用于指示所述链下隐私计算节点获取链下合约的字节码,并通过部署于所述链下可信执行环境中的虚拟机执行所述字节码以对所述入参数据进行链下隐私计算;
所述区块链节点接收所述链下隐私计算节点通过预言机机制反馈的链下隐私计算结果。
33.根据权利要求32所述的方法,所述区块链节点获取经过加密的调用请求,包括:
区块链节点从客户端提交的交易中提取得到调用请求;或者,
所述区块链节点根据所述客户端提交的交易在自身创建的链上可信执行环境内执行链上合约而生成调用请求。
34.根据权利要求32所述的方法,还包括:
所述区块链节点将所述计算结果直接反馈至客户端;或者,
所述区块链节点根据接收到的所述计算结果更新区块链账本数据。
35.根据权利要求32所述的方法,所述区块链节点通过预言机机制将经过加密的调用请求传输至链下隐私计算节点,包括:
区块链节点直接通过预言机机制将经过加密的调用请求传输至链下隐私计算节点;或者,
在所述链下隐私计算节点属于链下隐私计算集群的情况下,所述区块链节点通过预言机机制将经过加密的调用请求传输至所述链下隐私计算集群的控制节点,以由所述控制节点转发所述调用请求。
36.根据权利要求32所述的方法,所述调用请求由节点非对称密钥对的公钥进行加密后传输,且所述非对称密钥对的私钥被所述链下隐私计算节点所维护。
37.根据权利要求36所述的方法,在所述链下隐私计算节点属于链下隐私计算集群的情况下,所述节点非对称密钥对的私钥仅被所述链下隐私计算节点所维护,或者所述节点非对称密钥对的私钥被所述链下隐私计算集群内的所有链下隐私计算节点共同维护。
38.根据权利要求32所述的方法,所述入参数据的信息由合约非对称密钥对的公钥进行加密,所述合约非对称密钥由所述链下隐私计算节点在所述链下可信执行环境内预先生成且对应于所述链下合约的身份。
39.根据权利要求32所述的方法,所述区块链节点接收所述链下隐私计算节点通过预言机机制反馈的计算结果,包括:
在所述调用请求中还包括指定对象的身份公钥的信息的情况下,所述区块链节点接收到所述链下隐私计算节点采用所述身份公钥对所述执行结果进行加密后返回的计算结果密文。
40.根据权利要求32所述的方法,还包括:
所述区块链节点接收到所述链下隐私计算节点对所述调用请求进行哈希运算得到的第一哈希值与所述链下隐私计算结果;
所述区块链节点将所述第一哈希值与所述链下隐私计算结果反馈至请求方,所述第一哈希值用于与所述请求方生成的所述调用请求的第二哈希值进行比较,比较结果用于确定所述链下隐私计算结果是否可靠。
技术研发人员:吴行行,邱鸿霖,吴因佥,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。