基于智能合约的计算、更新、读取方法及装置、电子设备与流程

allin2022-08-01  332



1.本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于智能合约的计算装置、电子设备。


背景技术:

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


技术实现要素:

3.本说明书提出一种基于智能合约的计算方法,应用于区块链中的节点设备,所述区块链上部署了用于执行近似计算的智能合约,所述方法包括:
4.接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;
5.响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;
6.进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。
7.本说明书还提出一种基于智能合约的计算装置,应用于区块链中的节点设备,所述区块链上部署了用于执行近似计算的智能合约,所述装置包括:
8.接收模块,接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;
9.采样模块,响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;
10.计算模块,进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。
11.以上技术方案中,在调用智能合约针对数据集合进行近似计算的场景下,通过在智能合约中引入针对该数据集合的分层采样机制,可以在不牺牲近似计算结果的准确度的基础上,降低对该数据集合进行近似计算时的耗时,提高针对该数据集合进行近似计算时的计算效率。
附图说明
12.图1是一示例性实施例提供的一种基于智能合约的计算方法的流程图;
13.图2是一示例性实施例提供的一种最优化求解方法的流程图;
14.图3是一示例性实施例提供的一种电子设备的结构示意图;
15.图4是一示例性实施例提供的一种基于智能合约的计算装置的框图。
具体实施方式
16.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
17.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
18.随着智能合约技术的不断发展,在使用智能合约与业务进行对接时,智能合约也逐渐开始承担一部分与该业务相关的算力。
19.例如,在实际应用中,区块链上部署的用于与业务进行对接的智能合约中,除了可以包括与业务相关的业务逻辑以外,还可以包括针对该业务相关的业务数据进行计算的逻辑,从而使得用户可以通过调用该智能合约的方式,在区块链上完成针对该业务相关的计算。
20.当利用智能合约对与业务相关的数据集合进行计算时,其计算总耗时通常取决于针对每一条数据分别进行i/o操作的耗时和对上述一组数据批量进行计算的耗时。
21.例如,在实际应用中,以与业务相关的数据集合预先存证在区块链上为例,此时智能合约对与业务相关的数据集合进行计算时的总耗时,通常可以用如下的公式进行表示:
[0022][0023]
其中,在上述公式中,i表示上述数据集合中的第i条数据;ioi表示针对第i条数据进行i/o操作处理操作的耗时;operationi表示对数据集合中的i条数据批量进行计算的耗时。
[0024]
需要说明的是,由于数据集合在区块链上进行存证时,通常是以key-value键值对的形式,逐条的存储在区块链节点设备搭载的存储介质中,因此对于存储在区块链上的上述数据集合,通常只能根据数据的key键值,逐条的从区块链节点设备搭载的存储介质中来读取数据。
[0025]
在一些对数据计算的隐私性和安全性要求较高的应用场景中,上述智能合约还可以部署在区块链节点设备搭载的tee(trusted execution environment,可信执行环境)
中。
[0026]
在这种情况下,上述数据集合中的数据,通常都需要加密存储。此时,利用智能合约对与业务相关的数据集合进行计算时,其计算总耗时则通常取决于针对每一条数据分别进行i/o操作的耗时、针对每一条数据分别进行解密的耗时、和对上述一组数据批量进行计算的耗时。
[0027]
例如,在实际应用中,以与业务相关的数据集合预先存证在区块链上为例,此时智能合约对与业务相关的数据集合进行计算时的总耗时,通常可以用如下的公式进行表示:
[0028][0029]
其中,在上述公式中,operationi表示对数据集合中的第i条数据进行解密的耗时。
[0030]
通过以上的介绍不难看出,在利用智能合约对与业务相关的数据集合进行计算的场景下,如果该数据集合包含的数据量比较大,通过智能合约对该数据集合进行计算,得到准确的计算结果是非常耗时的。
[0031]
而在实际应用中,在一些业务场景之下,可能并不需要针对与业务相关的数据的精确计算结果,而是可以容忍一些计算精度上的损失。
[0032]
例如,在计算用户平均年龄的计算场景下,大多数情况下是不需要准确的计算结果的,通常只需要近似计算得到一个平均年龄的区间即可。
[0033]
基于此,本说明书提出一种在智能合约中引入近似计算和分层抽样的机制,来提升针对业务相关的数据进行计算的计算效率的技术方案。
[0034]
在实现时,可以在区块链上部署用于进行数据计算的智能合约,在该智能合约中可以包含用于进行近似计算的近似计算逻辑和用于进行分层采样的采样逻辑。计算发起方可以通过发起一笔智能合约调用交易的方式,来调用该智能合约对参与计算的数据集合进行近似计算。其中,该智能合约调用交易可以包括与近似计算对应的计算参数;该计算参数可以包括参与近似计算的数据集合的数据标识;
[0035]
而区块链中的节点设备在接收到计算发起方发起的该智能合约调用交易时,可以响应于智能合约调用交易,调用该智能合约调用交易包含的采样逻辑,对与上述数据标识对应的数据集合中的数据样本进行分层采样,在分层采样完成后,可以进一步调用该智能合约包含的近似计算逻辑,基于从上述数据集合中分层采样得到的数据样本进行近似计算,以得到针对该数据集合的近似计算结果。
[0036]
在以上技术方案中,在调用智能合约针对数据集合进行近似计算的场景下,通过在智能合约中引入针对该数据集合的分层采样机制,可以在不牺牲近似计算结果的准确度的基础上,降低对该数据集合进行近似计算时的耗时,提高针对该数据集合进行近似计算时的计算效率。
[0037]
例如,仍以与业务相关的数据集合预先存证在区块链上为例,在智能合约中引入了分层采样机制之后,此时智能合约对与业务相关的数据集合进行计算时的总耗时,通常可以用如下的公式进行表示:
[0038][0039]
其中,在上述公式中,ng表示从数据集合中分层采样得到的数据样本的数量。ng表示数据集合中的数据样本的总数量。由于ng的数值与ng的数值相比,通常是数量级的差异,因此智能合约中引入了分层采样机制之后,通过该智能合约对数据集合进行计算时的耗时,也会数量级的减少。
[0040]
可见,在智能合约中引入了分层采样机制,可以显著的提高针对该数据集合进行近似计算时的计算效率。
[0041]
请参见图1,图1是一示例性实施例提供的一种基于智能合约的计算方法的流程图。所述方法应用于区块链中的节点设备;其中,所述区块链上部署了用于执行近似计算的智能合约,所述方法包括以下步骤:
[0042]
步骤102,接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;
[0043]
上述计算发起方,具体可以是具有数据计算需求的一方。例如,在一个例子中,上述计算发起方可以是一个具有数据计算需求的用户。在另一个例子中,在基于智能合约与业务对接的场景下,该计算发起方具体也可以是一个具有数据计算需求的链外业务系统。
[0044]
在区块链上,可以部署用于进行数据计算的智能合约,该智能合约包含的合约代码对应的执行逻辑,具体可以包括用于进行近似计算的近似计算逻辑和用于进行数据采样的采样逻辑。通过这种方式,可以在该智能合约中引入对数据的近似计算和数据采样的逻辑。
[0045]
其中,需要说明的是,上述数据采样所采用的采样方式,在本说明书中不进行特别限定;例如,可以采用随机采样(random sampling)、分层采样(stratified sampling),等等。
[0046]
在以下实施例中,将以上述数据采样为分层采样,以及上述采样逻辑为分层采样逻辑为例进行说明。
[0047]
上述计算发起方可以通过发起一笔智能合约调用交易的方式,来调用上述智能合约对参与计算的数据集合进行近似计算。
[0048]
例如,以上述计算发起方为用户,以及上述区块链为采用账户模型的区块链为例,在这种情况下,上述智能合约可以理解为区块链上的一个锚定了合约代码的合约账户,而该用户可以在区块链上注册外部账户,并通过该外部账户发起一笔智能合约调用交易,并将该智能合约调用交易提交至接入的区块链节点设备,来调用该智能合约。
[0049]
其中,需要说明的是,在上述智能合约调用交易中,具体可以包括与近似计算对应的计算参数;该计算参数可以包括参与近似计算的数据集合的数据标识。
[0050]
上述计算发起方在发起上述智能合约调用交易时,如果该计算发起方直接与区块链节点进行对接,则可以打包一笔智能合约交易,点对点的直接提交至接入的区块链节点设备即可。而如果该计算发起方通过诸如baas(blockchain as a service)平台提供的区块链接入服务接入区块链,则可以生成一个针对上述智能合约的调用请求,并将该调用请
求提交至baas平台,再由该baas平台基于该调用请求中携带的调用参数打包一笔智能合约调用交易,提交至区块链节点设备。
[0051]
区块链节点设备可以接收上述计算发起方发起的上述智能合约调用交易,并在接收到上述智能合约调用交易时,可以响应该智能合约调用交易,在区块链上调用上述智能合约,对上述数据集合进行近似计算。
[0052]
步骤104,响应于所述智能合约调用交易,调用所述智能合约包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;
[0053]
区块链节点设备接收到上述计算发起方发起的上述智能合约调用交易之后,可以响应该智能合约调用交易,调用所述智能合约包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样。
[0054]
其中,需要说明的是,区块链节点设备在接收到上述计算发起方发起的上述智能合约调用交易之后,通常还需要基于区块链支持的共识算法,与其它参与共识的区块链节点一起,对该智能合约调用交易以及该智能合约调用交易的执行结果进行共识处理。由于本说明书并不涉及对区块链的共识过程进行改进,故在本说明书中对该智能合约调用交易以及该智能合约调用交易的执行结果进行共识处理的过程不再进行详述。
[0055]
在示出的一种实施方式中,区块链节点设备在调用所述智能合约包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样之前,可以先获取上述智能合约调用交易中包含的上述数据标识,并基于该数据标识来读取参与近似计算的数据集合。
[0056]
其中,基于该数据标识来读取参与近似计算的数据集合时,具体可以从区块链上来读取,也可以从链外读取,在本说明书中不进行特别限定。
[0057]
在一种实现方式中,该数据集合具体可以预先存证在上述区块链上。
[0058]
例如,在区块链上还可以部署一个用于进行数据存证的存证合约,计算发起方在调用上述智能合约进行计算之前,可以通过打包一笔存证交易的方式,将该需要参与计算的数据集合发布至该存证合约进行存证。
[0059]
又如,上述智能合约包含的合约代码对应的执行逻辑,除了可以包括上述近似计算逻辑和上述采样逻辑以外,还可以包含数据存证逻辑。也即,该智能合约除了可以用于进行近似计算以外,其本身也自带针对数据的存证功能。此时计算发起方在调用该智能合约进行计算之前,也可以先通过打包一笔存证交易的方式,将该需要参与计算的数据集合预先发布至该智能合约进行存证,后续该智能合约可以从自身的合约存储空间中来读取存证完毕的上述数据集合来进行近似计算。
[0060]
在这种情况下,区块链节点设备可以基于上述数据标识,来获取区块链上存证的与该数据标识对应的数据集合。例如,在这种情况下,该数据标识具体可以是上述数据集合在区块链上存证成功之后,由区块链节点返回的存证hash。
[0061]
在另一种实现方式中,该数据集合具体也可以预先存证在与上述区块链对接的链外数据库中。在这种情况下,该智能合约可以通过与其对应的预言机程序(oracle machine),从上述链外数据库中获取与该数据标识对应的数据集合。
[0062]
其中,上述预言机程序具体可以是中心化的预言机程序,也可以是去中心化的预言机程序。当上述预言机程序为中心化的预言机程序时,此时该预言机程序可以是部署在
链外的服务设备上的一个预言机服务程序。当上述预言机程序为去中心化的预言机程序时,此时该预言机程序可以是部署在区块链上的一个与上述智能合约进行对接的预言机合约。需要说明的是,由于本说明书并不涉及预言机程序相关的改进,故在本说明书中对上述智能合约通过与其对应的预言机程序,从上述链外数据库中获取与该数据标识对应的数据集合的具体实现过程,在本说明书中不再详述。
[0063]
对于上述智能合约调用交易中包含的计算参数,除了可以包括以上提到的上述数据集合的数据标识以外,在实际应用中,还可以包括其它形式的与近似计算相关的参数。
[0064]
在示出的一种实施方式中,上述计算参数具体可以包括下表中示出的各类参数:
[0065]
参数类型参数含义数据集id表示参与近似计算的数据集合计算类型id表示需要进行的近似计算的计算类型误差值表示可容忍的近似计算的计算误差置信概率表示期望的近似计算的准确度采样算法id表示指定的采样算法类型
[0066]
其中,需要说明的是,上表中除了数据集id以外,其它参数均为可选参数。
[0067]
例如,如果上述智能合约调用交易中的计算参数中,不包含计算类型id,则表示允许上述智能合约采用默认的计算类型对上述数据集合进行近似计算。如果上述智能合约调用交易中的计算参数中,不包含误差值,则表示可容忍的计算误差为0。如果上述智能合约调用交易中的计算参数中,不包含置信概率,则表示置信概率为100%,期望的近似计算的准确度100%,在这种情况下,上述智能合约会针对上述数据集合进行精确计算,不再进行近似计算。
[0068]
在示出的一种实施方式中,区块链节点设备在调用上述智能合约包含的采样逻辑,对获取到与上述数据标识对应的数据集合进行分层采样时,具体可以先计算进行分层采样的采样数量,然后再按照计算出的采样数量进行分层采样。
[0069]
在示出的一种实施方式中,霍夫丁不等式(hoeffding’s inequality)通常用于描述随机变量和与其期望值偏差的概率上限。而在近似计算的场景下,上述采样数量可以作为随机变量,上述近似计算的误差值可以作为期望值偏差,上述近似计算的置信概率可以作为上述概率上限。因此,在本说明书中可以利用霍夫丁不等式来描述上述采样数量、上述近似计算的误差值和上述近似计算的置信概率之间的数学关系。换言之,在近似计算的场景下,可以利用霍夫丁不等式来推导出上述采样数量、上述近似计算的误差值和上述近似计算的置信概率之间的数学关系。
[0070]
其中,在利用霍夫丁不等式来描述上述采样数量、上述近似计算的误差值和上述近似计算的置信概率之间的数学关系时,霍夫丁不等式表示成如下公式:
[0071][0072]
在上述公式中,h表示霍夫丁不等式的数学标识符。ng表示所述采样数量。bg、ag分别表示所述数据集合中的数据样本的最大值和最小值。δ表示所述置信概率;εg表示与上述近似计算对应的误差值;ng表示所述数据集合中的数据样本的总数量。
[0073]
而基于上述公式推导出的上述采样数量、上述近似计算的误差值和上述近似计算
的置信概率之间的数学关系,则可以用如下公式表示:
[0074][0075]
而在上述智能合约中,可以预先维护上述数学关系。区块链节点设备在调用上述智能合约计算进行分层采样所需的采样数量时,可以获取上述智能合约调用交易中的计算参数中的与近似计算对应的置信概率δ,以及与近似计算对应的误差值εg,再将获取到的置信概率δ和误差值εg输入维护的上述数学关系中进行计算,得到与上述数据集合对应的采样数量。
[0076]
其中,由于采用分层采样时,通常需要将上述数据集合划分成若干个bucket(即上述数据子集),再从这些bucket中分别进行数据采样。因此,区块链节点设备在调用上述智能合约计算进行分层采样所需的采样数量时,可以获取上述智能合约调用交易携带的计算参数中包含的与近似计算对应的置信概率δ,以及与各个bucket对应的误差值εk,再将获取到的置信概率δ和各个bucket的误差值εk输入维护的上述数学关系中分别进行计算,得到与上述数据集合划分出的各个bucket对应的采样数量。
[0077]
需要说明的是,在对上述数据集合进行分层采样时,需要划分出的bucket的数量k,以及每一个bucket对应的误差值εk,可以由计算发起方来指定,并作为计算参数携带在上述智能合约调用交易中。例如,在这种情况下,上述计算参数中除了需要携带一个计算发起方指定的针对上述数据集合进行近似计算的总误差εg以外,还需要携带k个与各个bucket对应的误差值εk。
[0078]
除此之外,在对上述数据集合进行分层采样时,需要划分出的bucket的数量k,以及每一个bucket对应的误差值εk,具体也可以是由上述智能合约在链上自主的进行计算得到的最优值。
[0079]
在示出的一种实施方式中,需要划分出的bucket的数量k,以及每一个bucket对应的误差值εk,可以是由上述智能合约采用最优化求解方法求解出的最优值。
[0080]
在这种情况下,区块链节点设备在调用上述智能合约包含的采样逻辑,对获取到与上述数据标识对应的数据集合进行分层采样时,可以先采用最优化求解方法,求解在针对上述数据集合进行分层采样时所需划分出的bucket的最优数量k,以及每一个bucket对应的最优误差值εk,再将上述智能合约调用交易中的计算参数中与近似计算对应的置信概率δ,与求解出的各个bucket对应的最优误差值εk,输入维护的上述数学关系中分别进行计算,得到与上述数据集合划分出的各个bucket对应的最优采样数量。然后,可以基于计算出的上述最优数量k和上述最优采样数量,对上述数据集合中的数据样本进行分层采样。
[0081]
需要说明的是,上述智能合约所采用的最优化求解方法的具体类型,在本说明书中不进行特别限定,在实际应用中,本领域技术人员可以基于实际的需求,来灵活的采用不同的最优化求解算法。例如,在实际应用中,具体可以采用诸如梯度下降法(gradient descent)等常用的最优求解算法。
[0082]
其中,对于最优化求解方法而言,通常需要设置一个明确的约束条件。而在实际应用中,通常可以基于具体的求解目标,来设置上述约束条件。
[0083]
在对上述数据集合进行分层采样的场景下,最优化的求解目标可以包括求解划分
出的bucket的最优数量、求解出各个bucket对应的最优误差值,等等。那么,在实际应用中,就可以基于上述优化目标来为上述最优化求解方法设置上述约束条件。
[0084]
在示出的一种实施方式中,基于上述求解目标,为上述最优化求解方法设置约束条件具体可以是:
[0085]
针对各个bucket对应的误差值进行加权平均计算,得到的加权平均误差值最小,并且不大于针对上述数据集合进行近似计算对应的总误差值。
[0086]
例如,上述约束条件可以表示成如下的公式:
[0087][0088]
以上公式中,εg表示针对上述数据集合进行近似计算对应的总误差值。nk表示从第k个bucket中采样的样本数量。n表示从上述数据集合中采样的总样本数量。
[0089]
以下通过附图和具体的实施例来描述采用上述约束条件,来求解分层采样所需的bucket的最优数量和各个bucket的最优误差值的具体算法流程。
[0090]
请参见图2,图2为本说明书示出的一种最优化求解方法的流程图,包括以下的执行步骤:
[0091]
步骤201,初始化i值;其中,所述i值表示初始化设置的各个bucket中包含的样本数量。除了步骤201以外,以下步骤为迭代执行的步骤:
[0092]
步骤202,对初始化的i值对应的数值进行调整;
[0093]
其中,对i值的调整幅度可以灵活设置,在本说明书中不进行特别限定。
[0094]
步骤203,将所述数据集合划分为分别包含i个样本数量的若干bucket;
[0095]
步骤204,将上述置信概率δ(即智能合约调用交易携带的计算参数中包含的置信概率δ)以及调整之后的i值(即与各个bucket对应的样本数量)作为计算参数,输入至所述数学关系中进行计算,得到与各个bucket分别对应的误差值,并对各个bucket对应的误差值进行加权平均计算,得到加权平均误差值;
[0096]
其中,需要说明的是,如果是第一轮迭代,执行完步骤204,会重新执行步骤202-步骤204,执行第二轮迭代。
[0097]
步骤205,确定所述加权平均误差值是否不大于所述总误差值(即智能合约调用交易携带的计算参数中包含的与近似计算对应的误差值),并且小于上一轮迭代计算出的加权平均误差值(即基于本轮迭代调整之前的i值计算出的加权平均误差值);如果否,重新执行以上的步骤202-步骤205,继续执行下一轮迭代,并重复以上的迭代过程,直至最优化求解算法收敛,计算出满足上述约束条件的加权平均误差值时停止迭代。
[0098]
步骤206,在停止迭代后,获取使得计算出的加权平均误差值满足上述约束条件时的最优i值;
[0099]
步骤207,基于所述最优i值确定针对所述数据集合进行分层抽样时,所需划分出的bucket的最优数量,并再次将上述置信概率以及与上述最优i值,输入至所述数学关系中进行计算,得到与各个bucket对应的最优误差值。需要说明的是,在以上实施例中,是基于以上描述的求解目标为上述最优化求解方法设置约束条件的一种具体的实施方式,在实际应用中,显然也可以基于上述求解目标,来为上述最优化求解方法设置其它形式的约束条件。在本说明书中,上述智能合约采用最优化求解方法求解出需要划分出的bucket的最优
数量,以及每一个bucket对应的最优采样数量之后,可以基于该最优数量和该最优误差值对上述数据集合进行分层采样。
[0100]
在示出的一种实施方式中,上述智能合约在基于该最优数量和该最优误差值对上述数据集合进行分层采样时,首先可以按照该最优数量将上述数据集合划分为若干个bucket;比如,假设上述最优数量为k,则可以将上述数据集合划分为k个bucket。然后,可以从划分出的各个bucket中,按照上述最优采样数量分别对各个bucket中的数据样本进行采样。
[0101]
其中,按照上述最优采样数量分别对各个bucket中的数据样本进行采样所采用的具体的采样方式,在本说明书中不进行特别限定。
[0102]
在示出的一种实施方式中,按照上述最优采样数量分别对各个bucket中的数据样本进行采样所采用的具体的采样方式,具体可以采用随机采样的方式。
[0103]
如果采用随机采样的方式,按照上述最优采样数量分别对各个bucket中的数据样本进行采样时,具体可以先获取用于进行随机采样的随机数,然后再基于获取到的该随机数对各个bucket中的数据样本进行随机采样,得到与计算出的上述最优采样数量对应的数据样本。
[0104]
其中,上述随机数具体用于控制从各个bucket中采样的数据样本的随机性,在实际应用中,可以按照获取到的随机数,来确定需要从各个bucket中采样的数据样本。例如,在一个例子中,可以利用随机数来表示待采样的数据样本的样本标识,在进行随机采样的过程中,可以按照该随机数,随机的从bucket中抽取将该随机数的数值作为样本标识的数据样本完成数据采样。
[0105]
需要说明的是,关于上述随机数具体的获取方式,可以在区块链上生成,也可以从链外获取,在本说明书中不进行特别限定。
[0106]
以下是本说明书示出的几种用于获取随机数的具体方式:
[0107]
在示出的一种方式中,在区块链上可以预先部署一个用于生成随机数的随机函数。例如,在实际应用中,上述随机函数具体可以作为一个独立的智能合约部署在区块链上,或者作为上述用于进行近似计算的智能合约包含的执行逻辑部署在该智能合约中。在这种情况下,可以通过调用上述随机函数在区块链上生成随机树;
[0108]
在示出的另一种方式中,上述区块链节点设备上可以搭载一个可信执行环境(trusted execution environment)。在该可信执行环境中,预先可以维护一个用于生成随机数的随机数种子。在这种情况下,可以通过在该可信执行环境中,基于该随机种子来生成随机数。
[0109]
在示出的第三种方式中,也可以从用于进行近似计算的上述智能合约维护的数据相关的数据参数中,来获取可以作为随机数种子的目标数据参数,然后可以基于获取到的目标数据参数在上述智能合约中生成随机数。例如,还可以从上述智能合约维护的历史区块的hash值、历史区块的生成时间戳这些具有唯一性的参数来作为随机数种子,在该智能合约中计算随机数。
[0110]
在示出的第四种方式中,上述随机数可以在链外生成。在这种情况下,上述智能合约,也可以通过与该智能合约对应的预言机程序,来获取在链外生成的该随机数。
[0111]
在示出的第五种方式中,可以在链外生成一个用于进一步生成上述随机数的随机
数种子。在这种情况下,上述智能合约,也可以通过与该智能合约对应的预言机程序,来获取在链外生成的该随机数种子,然后基于获取到的该随机数种子在该智能合约中生成随机数。
[0112]
在示出的第六种方式中,在链外生成的上述随机数种子,具体也可以作为计算参数携带在上述智能合约调用交易中。在这种情况下,可以获取该智能合约调用交易中包括的在链外生成的随机数种子,然后基于获取到的该随机数种子在该智能合约中生成随机数。
[0113]
以上列举了几种用于获取随机数的常见实现方式,需要强调的是,在实际应用中,显然也可以采用以上列举的实现方式以外的方式来获取随机数,在本说明书中不再进行一一列举。
[0114]
需要强调的是,在以上实施例中,以按照上述最优采样数量分别对各个bucket中的数据样本进行随机采样为例进行了说明书,在实际应用中,按照上述最优采样数量分别对各个bucket中的数据样本进行采样所采用的具体的采样方式,不限于是随机采样,也可以采用随机采样以外的其它形式的采样方法,在本说明书中不再进行一一列举。
[0115]
步骤106,进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。
[0116]
在本说明书中,在针对采样得到的数据样本进行近似计算时,可以采用计算发起方指定的计算类型进行近似计算,也可以采用上述智能合约支持的默认计算类型进行近似计算,在本说明书中不进行特别限定。
[0117]
例如,在示出的一种实施方式中,在上述智能合约调用交易中,还可以包括采样算法id。该采样算法id具体可以用于指示计算发起方指定的针对上述数据集合进行近似计算的计算类型。
[0118]
在这种情况下,在针对采样得到的数据样本进行近似计算时,可以获取该智能合约调用交易中包括的采样算法id,然后按照该采样算法id指示的计算类型针对采集得到的数据样本进行近似计算。
[0119]
当然,如果上述智能合约调用交易不包括上述采样算法id,也即计算发起方并没有指定的针对上述数据集合进行近似计算的计算类型,也可以基于上述智能合约支持的默认计算类型针对采样得到的样本数据进行近似计算。
[0120]
需要说明的是,上述近似计算对应的计算类型,在本说明书中不进行特别限定。例如,可以包括求和、求平均值,等等,在本说明书中不再进行一一列举。
[0121]
在示出的一种实施方式中,上述用于进行近似计算的智能合约,具体还可以是一个部署在区块链节点设备搭载的可信执行环境中的隐私智能合约。
[0122]
在这种场景下,上述智能合约调用交易中的计算参数,以及获取到的上述数据集合中的数据样本,通常都预先进行了加密处理。区块链节点设备在调用上述智能合约包含的采样逻辑,对获取到与上述数据标识对应的数据集合进行随机采样之前,还可以在该可信执行环境中,对上述计算参数以及对获取到的上述数据集合中的数据样本分别进行解密,并在解密之后,再按照以上描述的随机采样的方法,对上述数据集合中的数据样本进行随机采样,具体过程不再赘述。
[0123]
例如,在一个例子中,可以为上述可信执行环境分配一对用于对数据进行加解密的非对称密钥对,并将上述非对称密钥的私钥存储在上述可信执行环境中,将上述非对称密钥的公钥发布给上述计算发起方。而上述智能合约调用交易中的计算参数,以及获取到的上述数据集合中的数据样本,都可以预先基于上述公钥进行加密。区块链节点设备在调用上述智能合约包含的采样逻辑,对获取到与上述数据标识对应的数据集合进行随机采样之前,还可以在该可信执行环境中,使用维护的私钥对上述计算参数以及对获取到的上述数据集合中的数据样本分别进行解密。
[0124]
在以上技术方案中,在调用智能合约针对数据集合进行近似计算的场景下,通过在智能合约中引入针对该数据集合的分层采样机制,可以在不牺牲近似计算结果的准确度的基础上,降低对该数据集合进行近似计算时的耗时,提高针对该数据集合进行近似计算时的计算效率。
[0125]
例如,仍以与业务相关的数据集合预先存证在区块链上为例,在智能合约中引入了分层采样机制之后,此时智能合约对与业务相关的数据集合进行计算时的总耗时,通常可以用如下的公式进行表示:
[0126][0127]
其中,在上述公式中,ng表示从数据集合中分层采样得到的数据样本的数量。ng表示数据集合中的数据样本的总数量。由于ng的数值与ng的数值相比,通常是数量级的差异,因此智能合约中引入了分层采样机制之后,通过该智能合约对数据集合进行计算时的耗时,也会数量级的减少。
[0128]
可见,在智能合约中引入了分层采样机制,可以显著的缩短对数据集合进行计算时的耗时,提高针对该数据集合进行近似计算时的计算效率。
[0129]
与上述方法实施例相对应,本技术还提供了装置的实施例。
[0130]
本说明书的装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
[0131]
从硬件层面而言,如图3所示,为本说明书的装置所在电子设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0132]
图4是本说明书一示例性实施例示出的一种基于智能合约的计算装置的框图。
[0133]
请参考图4,所述基于智能合约的计算装置40可以应用在前述图3所示的电子设备中,所述区块链上部署了用于执行近似计算的智能合约,所述装置40包括:
[0134]
接收模块401,接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;
[0135]
采样模块402,响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;
[0136]
计算模块403,进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。
[0137]
在本实施例中,所述装置40还包括:
[0138]
获取模块404(图4中未示出),在所述采样模块对与所述数据标识对应的所述数据集合中的数据样本进行分层采样之前,获取所述区块链上存证的与所述数据标识对应的数据集合;或者,通过与所述智能合约对应的预言机程序,从与所述区块链对接的链外数据库中获取与所述数据标识对应的数据集合。
[0139]
在本实施例中,所述计算参数包括与所述近似计算对应的置信概率;以及,与所述近似计算对应的总误差值;所述置信概率表征所述近似计算的准确度;所述智能合约维护了基于霍夫丁不等式推导出的,用于描述与所述近似计算对应的置信概率,与所述近似计算对应的误差值,以及与参与近似计算的数据集合对应的采样数量三者之间的数学关系;
[0140]
所述采样模块402:
[0141]
采用最优化求解方法,求解在针对所述数据集合进行分层采样时所需划分出的数据子集的最优数量,以及与划分出的各个数据子集对应的最优误差值;
[0142]
将与所述近似计算对应的所述置信概率以及与所述各个数据子集对应的所述最优误差值,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的最优采样数量;
[0143]
基于计算出的所述最优数量和所述最优采样数量,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样。
[0144]
在本实施例中,其中,所述最优化求解方法所采用的约束条件包括:针对各个数据子集对应的误差值进行加权平均计算得到的加权平均误差值最小,并且不大于所述总误差值;
[0145]
所述采样模块402进一步执行如下步骤:
[0146]
步骤a,对初始化的i值对应的数值进行调整;
[0147]
步骤b,将所述数据集合划分为分别包含i个样本数量的若干数据子集;
[0148]
步骤c,将所述置信概率以及与各个数据子集对应的所述样本数量作为计算参数,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的误差值,并对所述各个数据子集对应的误差值进行加权平均计算,得到加权平均误差值;
[0149]
步骤d,确定所述加权平均误差值是否不大于所述总误差值,并且小于基于本次调整之前的所述i值计算出的所述加权平均误差值;如果否,重新执行以上的步骤a-步骤d,直到计算出的所述加权平均误差值满足所述约束条件时停止迭代,并获取使得所述加权平均误差值满足所述约束条件时的最优i值;
[0150]
步骤e,基于所述最优i值确定针对所述数据集合进行分层抽样时所需划分出的数据子集的最优数量,并将所述置信概率以及与所述最优i值,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的最优误差值。
[0151]
在本实施例中,所述数学关系利用如下的公式进行表示:
[0152][0153]
其中,在上述公式中,ng表示所述采样数量;bg、ag分别表示所述数据集合中的数据样本的最大值和最小值;δ表示所述置信概率;εg表示所述误差值;ng表示所述数据集合中的数据样本的总数量。
[0154]
在本实施例中,所述采样模块402进一步:
[0155]
按照所述最优数量将所述数据集合划分为若干个数据子集;
[0156]
按照所述最优采样数据分别对各个数据子集中的数据样本进行采样。
[0157]
在本实施例中,分别对各个数据子集中的数据样本进行采样的方式包括随机采样;
[0158]
所述采样模块402进一步:
[0159]
获取用于进行随机采样的随机数;
[0160]
基于所述随机数分别对各个数据子集中的数据样本进行随机采样,得到与所述最优采样数量对应的数据样本。
[0161]
在本实施例中,所述采样模块402进一步执行以下示出的任一:
[0162]
调用所述区块链上部署的随机函数生成用于进行随机采样的随机树;
[0163]
基于所述节点设备中搭载的可信执行环境中维护的随机数种子,在所述可信执行环境中生成随机数;
[0164]
从所述智能合约维护的数据相关的数据参数中,获取作为所述随机数种子的目标数据参数,并基于获取到的目标数据参数在所述智能合约中生成用于进行随机采样的随机数;
[0165]
通过与所述智能合约对应的预言机程序,获取在链外生成的用于进行随机采样的随机数;
[0166]
通过与所述智能合约对应的预言机程序,获取在链外生成的用于生成随机数的随机数种子,并基于获取到的目标数据参数在所述智能合约中生成用于进行随机采样的随机数;获取所述计算参数中包括的在链外生成的随机数种子,基于所述随机数种子在所述智能合约中生成用于进行随机采样的随机数。在本实施例中,所述计算参数还包括指示所述近似计算对应的计算类型的算法标识;所述计算模块403:
[0167]
基于从所述数据集合中分层采样得到的数据样本,按照所述算法标识指示的计算类型进行近似计算。
[0168]
在本实施例中,所述智能合约部署在所述节点设备搭载的可信执行环境中;所述计算参数和所述数据集合中的数据样本预先经过了加密处理;
[0169]
所述采样模块402进一步:
[0170]
在对与所述数据标识对应的所述数据集合中的数据样本进行分层采样之前,在所述可信执行环境中对所述计算参数以及对获取到的所述数据集合中的数据样本分别进行解密。
[0171]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可
以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0172]
在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0173]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0174]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0175]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0176]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0177]
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0178]
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0179]
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

技术特征:
1.一种基于智能合约的计算方法,应用于区块链中的节点设备,所述区块链上部署了用于执行近似计算的智能合约,所述方法包括:接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。2.根据权利要求1所述的方法,所述对与所述数据标识对应的所述数据集合中的数据样本进行分层采样之前,还包括:获取所述区块链上存证的与所述数据标识对应的数据集合;或者,通过与所述智能合约对应的预言机程序,从与所述区块链对接的链外数据库中获取与所述数据标识对应的数据集合。3.根据权利要求2所述的方法,所述计算参数包括与所述近似计算对应的置信概率;以及,与所述近似计算对应的总误差值;所述置信概率表征所述近似计算的准确度;所述智能合约维护了基于霍夫丁不等式推导出的,用于描述与所述近似计算对应的置信概率,与所述近似计算对应的误差值,以及与参与近似计算的数据集合对应的采样数量三者之间的数学关系;对与所述数据标识对应的所述数据集合中的数据样本进行分层采样,包括:采用最优化求解方法,求解在针对所述数据集合进行分层采样时所需划分出的数据子集的最优数量,以及与划分出的各个数据子集对应的最优误差值;将与所述近似计算对应的所述置信概率以及与所述各个数据子集对应的所述最优误差值,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的最优采样数量;基于计算出的所述最优数量和所述最优采样数量,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样。4.根据权利要求3所述的方法,其中,所述最优化求解方法所采用的约束条件包括:针对各个数据子集对应的误差值进行加权平均计算得到的加权平均误差值最小,并且不大于所述总误差值;采用最优化求解方法,求解在针对所述数据集合进行分层采样时所需划分出的数据子集的最优数量,以及与划分出的各个数据子集对应的最优误差值,包括:步骤a,对初始化的i值对应的数值进行调整;步骤b,将所述数据集合划分为分别包含i个样本数量的若干数据子集;步骤c,将所述置信概率以及调整之后的i值作为计算参数,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的误差值,并对所述各个数据子集对应的误差值进行加权平均计算,得到加权平均误差值;步骤d,确定所述加权平均误差值是否不大于所述总误差值,并且小于基于本次调整之前的所述i值计算出的所述加权平均误差值;如果否,重新执行以上的步骤a-步骤d,直到计
算出的所述加权平均误差值满足所述约束条件时停止迭代,并获取使得所述加权平均误差值满足所述约束条件时的最优i值;步骤e,基于所述最优i值确定针对所述数据集合进行分层抽样时所需划分出的数据子集的最优数量,并将所述置信概率以及与所述最优i值,输入至所述数学关系中进行计算,得到与所述各个数据子集分别对应的最优误差值。5.根据权利要求4所述的方法,所述数学关系利用如下的公式进行表示:其中,在上述公式中,n
g
表示所述采样数量;b
g
、a
g
分别表示所述数据集合中的数据样本的最大值和最小值;δ表示所述置信概率;ε
g
表示所述误差值;n
g
表示所述数据集合中的数据样本的总数量。6.根据权利要求3所述的方法,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样,包括:按照所述最优数量将所述数据集合划分为若干个数据子集;按照所述最优采样数据分别对各个数据子集中的数据样本进行采样。7.根据权利要求6所述的方法,分别对各个数据子集中的数据样本进行采样的方式包括随机采样;按照所述最优采样数据分别对各个数据子集中的数据样本进行采样,包括:获取用于进行随机采样的随机数;基于所述随机数分别对各个数据子集中的数据样本进行随机采样,得到与所述最优采样数量对应的数据样本。8.根据权利要求7所述的方法,所述获取用于进行随机采样的随机数,包括以下示出的任一:调用所述区块链上部署的随机函数生成用于进行随机采样的随机树;基于所述节点设备中搭载的可信执行环境中维护的随机数种子,在所述可信执行环境中生成随机数;从所述智能合约维护的数据相关的数据参数中,获取作为所述随机数种子的目标数据参数,并基于获取到的目标数据参数在所述智能合约中生成用于进行随机采样的随机数;通过与所述智能合约对应的预言机程序,获取在链外生成的用于进行随机采样的随机数;通过与所述智能合约对应的预言机程序,获取在链外生成的用于生成随机数的随机数种子,并基于获取到的目标数据参数在所述智能合约中生成用于进行随机采样的随机数;获取所述计算参数中包括的在链外生成的随机数种子,基于所述随机数种子在所述智能合约中生成用于进行随机采样的随机数。9.根据权利要求1所述的方法,所述计算参数还包括指示所述近似计算对应的计算类型的算法标识;基于从所述数据集合中分层采样得到的数据样本进行近似计算,包括:基于从所述数据集合中分层采样得到的数据样本,按照所述算法标识指示的计算类型
进行近似计算。10.根据权利要求1所述的方法,所述智能合约部署在所述节点设备搭载的可信执行环境中;所述计算参数和所述数据集合中的数据样本预先经过了加密处理;所述对与所述数据标识对应的所述数据集合中的数据样本进行分层采样之前,还包括:在所述可信执行环境中对所述计算参数以及对获取到的所述数据集合中的数据样本分别进行解密。11.一种基于智能合约的计算装置,应用于区块链中的节点设备,所述区块链上部署了用于执行近似计算的智能合约,所述装置包括:接收模块,接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;采样模块,响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;计算模块,进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。12.一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法的步骤。13.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。

技术总结
一种基于智能合约的计算方法,应用于区块链中的节点设备,所述区块链上部署了用于执行近似计算的智能合约,包括:接收计算发起方发起的针对所述智能合约的智能合约调用交易;其中,所述智能合约调用交易包括与所述近似计算对应的计算参数;所述计算参数包括参与近似计算的数据集合的数据标识;响应于所述智能合约调用交易,调用所述智能合约调用交易包含的采样逻辑,对与所述数据标识对应的所述数据集合中的数据样本进行分层采样;进一步调用所述智能合约调用交易包含的近似计算逻辑,基于从所述数据集合中分层采样得到的数据样本进行近似计算,以得到针对所述数据集合的近似计算结果。果。果。


技术研发人员:周晨辉 闫莺
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2022.03.30
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-2463.html

最新回复(0)