基于区块链的外包支付计算交易实现方法及系统
未命名
09-01
阅读:108
评论:0

1.本发明涉及云计算、大数据外包计算技术领域,特别涉及一种基于区块链的外包支付计算交易实现方法及系统。
背景技术:
2.随着云计算、大数据技术的快速发展,出现了一种新的计算范式一外包计算,即拥有有限计算能力的用户将昂贵的计算任务委托给具有强大计算能力的计算者的行为。用户通过按需购买外包计算服务来达到减轻本地计算开销和时间开销的目的。为确保外包计算的可靠性,外包计算方案至少需要满足结果的可验证性和验证的高效性等基本需求,以实现可验证的外包计算。
3.大规模线性方程组的求解问题,是科学界最基本的代数问题之一。计算机科学、计算流体力学、生命信息科学、图像处理等领域的科学计算问题都可以归结为一个或一些大规模线性方程组的求解问题。这些线性方程组规模很大、系数密集,有时甚至会有几百万个未知变量。求解大规模线性方程组对于计算和存储资源有限的用户来说是很难执行的。目前大规模线性方程组的可验证外包计算方案主要基于冗余策略、密码学方法和矩阵盲化技术,研究主要集中在计算结果的可验证性、验证的高效性、数据的隐私保护等方面,未考虑对外包计算者返回错误结果的不诚实计算行为的审计问题和用户与外包计算者之间的公平支付问题。在实际应用中,公布经常返回错误结果的外包计算者,对外包计算者的外包计算行为进行审计、溯源,对于构建安全、可信的外包计算环境是非常有意义的。此外,在外包支付方面,目前主要关注保护用户的经济权益,却忽略了用户在接收到外包计算者的计算结果后,存在故意抵赖支付的可能。
技术实现要素:
4.为此,本发明提供一种基于区块链的外包支付计算交易实现方法及系统,采用稀疏矩阵盲化与随机分割来实现外包计算中大规模线性方程组安全高效的可验证外包计算,并采用链上链下协同的可审计外包计算来实现对外包计算行为的全程审计,确保外包计算的可靠性。
5.按照本发明所提供的设计方案,提供一种基于区块链的外包支付计算交易实现方法,包含:
6.将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;
7.用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;
8.用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务
并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;
9.外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;
10.区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。
11.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,利用随机选取的稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,并对盲化后的b进行随机分割,包含:
12.首先,针对常数向量b,利用稀疏矩阵m获取系数向量d,并将大规模线性方程组求解问题的表示重写为many=mb;
13.接着,利用稀疏矩阵m和n对系数方阵a进行矩阵盲化处理,其中,矩阵盲化处理过程表示为:h=man;
14.然后,随机选取系数向量d1,并利用该随机选取的系数向量d1对系数向量d进行分割,将ax=b的求解问题分割转换为hy1=d1和hy2=d2加密线性方程组的求解问题,并将h和d1、d2加密上传至星际文件系统ipfs进行存储。
15.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,用户创建的外包计算智能合约包含:用于部署智能合约时自动触发并执行获取外包计算任务结构的构造函数,用于通过用户调用将外包计算任务写入任务集以获取该外包计算任务在链上记录标识的任务提交函数,用于通过外包计算者调用并来获取外包计算任务的任务获取函数,用于通过外包计算者调用来将外包计算结果上传至智能合约中的结果地址上传函数,用于通过区块链中验证者节点调用来验证外包计算结果正确性的验证函数,用于通过用户调用来接收正确的外包计算结果的结果接收函数,和用于通过用户或外包计算者调用来对未按预期执行的外包计算任务进行资金结算的任务终止函数。
16.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录,包含:
17.首先,用户创建外包计算智能合约并将该智能合约部署到区块链上,同时接收区块链返回给用户的外包计算智能合约标识;
18.接着,用户依据智能合约标识通过调用智能合约中的任务提交函数来生成加密线性方程组对应的两个外包计算任务,并通过向智能合约支付酬金来获取外包计算任务在区块链上的任务标识;
19.然后,依据用户标识符、外包计算函数、系数矩阵盲化后数据及常数向量b随机分割后数据加密上传至星际文件系统ipfs的存储地址和外包计算任务在区块链上的任务标识来生成外包计算发布事务,并将外包计算发布事务的审计事务记录在区块链上。
20.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录,包含:
21.首先,外包计算者通过调用智能合约中的任务获取函数来获取外包计算任务,并通过支付押金并依据智能合约中系数矩阵盲化后数据及常数向量b随机分割后数据加密上传至星际文件系统ipfs的存储地址来获取计算参数;
22.接着,外包计算者执行外包计算任务函数来获取对应的计算结果,将计算结果上传至星际文件系统ipfs进行存储,并获取星际文件系统ipfs对应的计算结果存储地址;
23.然后,外包计算者通过调用智能合约中的结果地址上传函数将星际文件系统ipfs对应的计算结果存储地址提交到智能合约,同时外包计算者依据用户标识符、外包计算者标识符、外表计算任务和对应计算结果存储地址来生成外包计算结果事务,并将外包计算结果事务的审计事务记录在区块链上。
24.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,包含:
25.首先,区块链中验证者节点从星际文件系统ipfs中下载计算参数和计算结果,通过调用智能合约中的验证函数对计算参数正确性进行验证,并依据验证执行来获取对应奖励,同时依据用户标识符、外包计算任务、外包计算者标识符、验证者节点标识符和验证结果来生成外包结果验证事务,并将外包结果验证事务的审计事务记录在区块链上;
26.然后,用户调用智能合约中的结果接收函数,根据验证结果判断是否接收外包计算结果,若计算结果均验证通过,则用户根据计算结果的地址从星际文件系统ipfs中获取对应计算结果,并利用自身私钥获取初始问题解,同时外包计算者获取对应酬金和押金,若有计算结果验证失败,则用户获取酬金及押金。
27.作为本发明基于区块链的外包支付计算交易实现方法,进一步地,还包含:针对外包计算未按照预期执行时,则用户或外包计算者通过调用任务终止函数来对外包计算任务进行资金结算,具体包含如下情形:没有外包计算者领取用户发布的外包计算任务时,则用户通过调用任务终止函数来获取酬金;外包计算者领取外包计算任务但未在用户规定时间内提交计算结果,则用户通过调用任务终止函数来获取酬金和押金;外包计算者领取外包计算任务并在规定时间内提交计算结果但用户未在规定时间内完成对正确性验证通过的外包计算结果存储地址的接收,则外包计算者通过调用任务终止函数来获取酬金及押金。
28.进一步地,本发明还提供一种基于区块链的外包支付计算交易实现系统,包含:计算任务转化模块、计算任务准备模块、计算任务外包模块、计算任务执行模块和计算任务验收模块,其中,
29.计算任务转化模块,用于将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;
30.计算任务准备模块,用于通过用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行
随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;
31.计算任务外包模块,用于通过用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;
32.计算任务执行模块,用于通过外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;
33.计算任务验收模块,用于通过区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。
34.本发明的有益效果:
35.本发明利用稀疏矩阵盲化技术与随机分割实现外包数据的隐私保护和外包结果的高效验证,从在外包计算中,将区块链作为用户与外包计算者之间交互的平台,将外包计算任务发布、外包计算结果的验证结果等内容上链,实现对外包计算者外包计算行为的公开审计及恶意外包计算者的追踪溯源,实现对外包计算者的有效监管;通过区块链智能合约完成外包支付,将验证算法写入区块链智能合约,实现对外包计算结果的公开验证,在智能合约中预存用户和外包计算者的资金,用于支付验证操作和对恶意行为的惩罚,实现用户与外包计算者之间的公平支付,保障双方的权益,便于构建可信的外包计算环境。并进一步通过试验数据验证,本案方案能够在保护用户数据隐私的前提下,实现可验证、审计和公平支付的高效外包计算,在云计算和大数据等外包计算领域中具有较好的应用前景。
附图说明:
36.图1为实施例中链上链下协同的可审计外包计算架构示意;
37.图2为实施例中外包计算工作流程示意;
38.图3为实施例中用户在不外包和外包情况下的对比示意;
39.图4为实施例中每个阶段的时间开销对比示意。
具体实施方式:
40.为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
41.对本案涉及到的稀疏矩阵概念及性质、可验证外包计算形式化及其安全需求的基础知识进行如下介绍:
42.当矩阵中零元素的个数远大于非零元素的个数,且零元素的分布没有规律时,称该矩阵为稀疏矩阵(sparse matrix)。相反,当矩阵中大部分元素为非零元素时,称该矩阵为稠密矩阵。
43.设a,b是两个n
×
n的普通(非稀疏)矩阵,计算ab或ba需要进行n3次标量乘法运算,
即计算复杂度为o(n3)。若其中一个为稀疏矩阵,不失一般性,设a为每行最多有ρ个非零元的n
×
n稀疏矩阵(ρ<<n),b为任意n
×
n矩阵,则计算ab或ba至多需要进行ρn2次标量乘法运算。由于ρ<<n,所以此时计算ab的复杂度为o(n2)。
44.一个可验证外包计算方案由以下五种子算法组成:
45.(1)keygen(λ,f)
→
sk:基于一个安全参数λ和外包计算任务f,该算法将生成一个私钥sk,此密钥将由外包计算请求者保存并用来加密输入数据。
46.(2)probgen(sk,x)
→
σ
x
:外包计算请求者执行该算法对输入数据进行加密,该算法将私钥sk和外包计算任务的输入x作为输入,返回被编码的加密结果σ
x
并将其发送给外包计算者。
47.(3)compute(f,σ
x
)
→
σy:外包计算者执行该算法进行外包计算,该算法将外包计算任务f和加密结果σ
x
作为输入,产生最终计算结果y(y=f(x))的编码输出σy,并将σy发送给验证者。
48.(4)verify(sk,σy)
→
true∪false:验证者执行该算法对外包计算结果进行验证,该算法将私钥sk和输出σy作为输入,如果σy是正确的,则输出true;否则,输出false。
49.(5)solve(sk,σy)
→
y:外包计算请求者执行该算法对σy进行解码,用sk生成最终结果y。
50.可验证外包计算方案需要满足的安全需求包括正确性、隐私性、高效性和可验证性。
51.正确性指外包计算者按照方案诚实运算得到计算结果,该结果返回给用户一定能够通过验证。给出验证外包计算者输出结果正确性的实验如下:
[0052][0053]
xi←
a;
[0054]
σi←
probgen(sk,xi);
[0055]
σ
x
←
compute(f,σi);
[0056][0057]
其中a为敌手。假设该实验中的算法均被正确执行。如果其中negli()是关于输入的可忽略函数,则称外包计算方案的计算结果是正确的。
[0058]
隐私性要求外包计算者不能从用户的输入/输出数据中获取任何敏感信息。给出验证外包计算方案隐私性的实验如下:
[0059][0060][0061]
σ0←
probgen(sk,x0);
[0062]
σ1←
probgen(sk,x1);
[0063][0064][0065]
在上述实验中,a为敌手。对于一个安全的外包计算方案,实验中敌手a的优势定义如下:
[0066]
如果对于任意概率多项式时间敌手a,满足:
[0067][0068]
其中negli()是其输入的可忽略函数,则称外包计算方案具有隐私性。
[0069]
高效性指用户对外包数据进行的预处理和验证者执行的验证操作应该是高效的,不应有其他复杂的计算操作,否则也就失去了外包计算的意义。外包计算方案采用α-efficient的概念来衡量方案的高效性。如果:
[0070]
①
用户和外包计算者都正确地执行了外包计算协议;
[0071]
②
对于任意输入,用户的执行时间都小于或等于执行f时间的α倍。
[0072]
则称外包计算方案是f的α-efficient高效实现。
[0073]
可验证性指任何恶意的外包计算者给出的无效输出都无法通过验证,验证者(可以是用户或其他第三方)都能以不可忽略的概率检测到错误。外包计算方案采用β-checkable的概念来衡量可验证性。如果:
[0074]
①
该方案正确实现了f功能;
[0075]
②
对任意输入,外包计算者不遵守外包计算协议的行为都会被以不低于β的概率检测出来。
[0076]
则称该方案是功能f的β-checkable实现。
[0077]
区块链是近几年最具颠覆性的新型信息技术之一,其创新性地融合了p2p网络、密码学、共识以及智能合约等技术,具有分布式、开放共享、不可篡改、可溯源、可编程等特点。本发明实施例,参见图1所示,提供一种基于区块链的外包支付计算交易实现方法,包含:
[0078]
将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;
[0079]
用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;
[0080]
用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;
[0081]
外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;
[0082]
区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。
[0083]
本案中,大规模线性方程组问题的数学表达式表示为:
[0084]
ax=b
ꢀꢀꢀꢀ
(1)
[0085]
其中:a∈rn×n是阶为n的系数方阵(秩为n),x∈rn为待求解向量,b∈rn为已知常数向量。大规模线性方程组外包计算方案需要满足以下需求:
[0086]
(1)外包计算结果的正确性。需要满足的基本需求之一是计算结果正确性,即对于任意有效的输入4、b,诚实的外包计算者总能输出有效值x,满足ax=b。
[0087]
(2)用户的数据隐私性。a、x、b中可能包含用户的一些私有信息,需要在确保用户隐私安全的前提下,外包求解x。应该满足隐私性需求。
[0088]
(3)外包计算的高效性。用户对计算任务进行预处理所花费的时间,连同正确性验证所花费的时间,要远小于直接计算任务本身所需要的时间,这样的外包计算才有价值。应该满足高效性需求。
[0089]
(4)外包计算结果的可验证性。由于外包计算者不是完全可信的,故验证者能对外包计算者返回的计算结果的正确性进行验证。应该满足可验证性需求。
[0090]
(5)外包计算行为的可审计性。在本文研究的外包计算场景中,外包计算者是受利益驱动的。外包计算者想以尽可能少的计算成本获得计算酬金,所以他可能不会认真执行整个计算任务,随意返回一个结果或故意返回错误的计算结果。因此,在对外包计算结果的正确性进行验证的同时,还要对外包计算者的计算行为进行公开审计,以有助于构建一个安全、可信的外包计算环境。
[0091]
(6)公平支付。在实际中,用户和外包计算者之间的不信任可能导致双方利益冲突。因此,一个合理的外包计算方案应该保证用户在支付给外包计算者酬金后可以获得其返回的有效的计算结果,而外包计算者在正确遵循外包计算协议的情况下可以获得奖励,在不诚实的情况下会受到惩罚。
[0092]
对于大规模线性方程组ax=b的求解的可验证外包计算方案,首先利用随机的稀疏矩阵对用户的外包输入数据a和b进行盲化,再对盲化后的b进行随机加法分割,使得原线性方程组求解问题转换成两个加密线性方程组求解问题,并交由两个外包计算者进行并行计算,能够在保证用户输入、输出数据的隐私性的同时,实现外包计算的高效性与可验证性。
[0093]
基于稀疏矩阵盲化与随机分割的大规模线性方程组外包计算方案可设计为一个五元组算法(keygen、probgen、compute、verify、solve),每种算法介绍如下:
[0094]
(1)keygen:为了实现大规模线性方程组的外包求解,用户选择两个随机的稀疏矩阵m,n∈rn×n。m、n由用户秘密保存,用来保护已知系数矩阵a和常数向量b的隐私性。
[0095]
(2)probgen:用户首先计算d=mb,整理式(1)可得max=mb。令x=ny(无需计算),原始的线性方程可以重写为many=mb。然后,用户计算h=man,完成矩阵盲化。用户选取一个随机的系数向量d1,进行随机加法分割,将d减去d1得d2,d=d1+d2。此时,对求解ax=b的问题经过矩阵盲化和随机加法分割后,变成求解hy1=d1和hy2=d2的问题。
[0096]
(3)compute:外包计算者求解probgen阶段得到的两个函数f1:hy1=d1和f2:hy2=d2,得到计算结果y1、y2。
[0097]
(4)verify:验证者验证hy1=d1和hy2=d2是否成立并返回验证结果true/false。
[0098]
(5)solve:如果验证结果为true,则用户根据y1、y2的值,利用私钥n,计算x=n(y1+y2),得到初始问题的解。
[0099]
具体地,利用随机选取的稀疏矩阵进行盲化和随机分割的过程,可具体设计为包含如下内容:
[0100]
首先,针对常数向量b,利用稀疏矩阵m获取系数向量d,并将大规模线性方程组求
解问题的表示重写为many=mb;
[0101]
接着,利用稀疏矩阵m和n对系数方阵a进行矩阵盲化处理,其中,矩阵盲化处理过程表示为:h=man;
[0102]
然后,随机选取系数向量d1,并利用该随机选取的系数向量d1对系数向量d进行分割,将4x=b的求解问题分割转换为hy1=d1和hy2=d2加密线性方程组的求解问题,并将h和d1、d2加密上传至星际文件系统ipfs进行存储。
[0103]
为了实现对外包计算者外包计算行为的审计,通过引入区块链作为用户和外包计算者之间交互的平台,用户和外包计算者之间的所有交互数据都记录在区块链上。但是,由于采用了块链式存储结构和高冗余的存储机制,区块链系统的存储容量有限,一般只有3~4m。同时,在实际中大规模线性方程组涉及的数据规模较大。例如,一个典型的由电磁应用产生的双精度50,000
×
50,000系统矩阵将产生至少20gb的矩阵数据。因此,大规模的线性方程组矩阵数据不适宜直接存储在区块链上。本案实施例中,引入ipfs(星际文件系统,inter planetary file system)作为大规模矩阵数据的链下存储介质,在链上存储数据的链下存储地址,通过链上链下协同的方式解决区块链存储容量有限带来的大规模矩阵数据无法直接上链存储的问题。ipfs是一种基于内容寻址的分布式文件系统,它以文件的哈希值作为存储地址,既实现了根据文件内容进行寻址,又可用于检验文件内容是否被篡改。本文还定义了外包计算审计事务结构,通过定义要在链上记录的所有交互行为的审计必要信息,为实现对外包计算行为的审计、溯源提供可信记录支撑。
[0104]
参见图1所示,可审计外包计算架构由用户、外包计算者、区块链、ipfs组成。其中,用户是大规模线性方程组原始数据的拥有者和外包计算的请求者。用户将加密后的数据上传到ipfs存储,在区块链上部署外包计算智能合约,并将外包求解x的计算任务发布至区块链上,外包计算智能合约能够实现对外包计算结果正确性的验证以及用户和外包计算者之间的公平支付。用户还将从区块链上获得通过其正确性验证的外包计算结果的存储地址。外包计算者是本文方案中大规模线性方程组外包求解计算的具体执行者,其可以是任何具有强大算力的计算设备(比如云服务器、个人计算设备等)。外包计算者从区块链上领取外包计算任务,并在计算完成后,将计算结果记录上链。区块链(blockchain)。区块链是用户和外包计算者交互的平台,主要负责部署执行外包计算智能合约以及记录用户与外包计算者之间交互的外包计算审计事务等。ipfs实现用户在外包计算中已知加密数据和外包计算者返回的外包计算结果的链下存储。
[0105]
为了实现用户与外包计算者之间的交互以及对外包计算行为的审计,设置三类外包计算审计事务如下:
[0106]
(1)外包计算发布事务task
start
[0107]
task
start
={uid,f,haddr,daddr,taskid}
[0108]
其中,uid表示用户的唯一标识符,f表示具体外包计算函数,haddr表示密文h在ipfs中的存储地址,daddr表示系数向量d1/d2在ipfs中的存储地址,taskid表示外包计算任务的唯一标识符。
[0109]
(2)外包计算结果事务task
end
[0110]
task
end
={uid,taskid,wid,yaddr}
[0111]
其中,wid表示成功领取外包计算任务的外包计算者的唯一标识符,yaddr表示外
包计算结果y1/y2在ipfs上的存储地址。
[0112]
(3)外包结果验证事务task
verify
[0113]
task
verify
={uid,taskid,wid,vid,verifyresult}
[0114]
其中,vid表示验证者节点的唯一标识符,verifyresult表示对外包计算结果y1/y2的验证结果。
[0115]
作为优选实施例,进一步地,本案实施例用户创建的外包计算智能合约可设计为包含:用于部署智能合约时自动触发并执行获取外包计算任务结构的构造函数,用于通过用户调用将外包计算任务写入任务集以获取该外包计算任务在链上记录标识的任务提交函数,用于通过外包计算者调用并来获取外包计算任务的任务获取函数,用于通过外包计算者调用来将外包计算结果上传至智能合约中的结果地址上传函数,用于通过区块链中验证者节点调用来验证外包计算结果正确性的验证函数,用于通过用户调用来接收正确的外包计算结果的结果接收函数,和用于通过用户或外包计算者调用来对未按预期执行的外包计算任务进行资金结算的任务终止函数。
[0116]
为了实现用户和外包计算者之间的公平支付,基于具有自动化和强制执行特点的智能合约,通过设计具有外包验证和公平支付功能的外包计算智能合约,该合约具有根据规则自动分配资金的特点,能根据验证结果实现用户和外包计算者之间的公平支付。将用户部署智能合约所需花费设为g,发布外包计算任务需提交的酬金设置为w,w=w1+w2,w1和w2分别是用户支付给外包计算者和验证者节点的酬金,根据外包计算任务量制定,外包计算者领取计算任务需提交的押金设置为d(d>w),用户/外包计算者只有将w/d支付到智能合约才能提交/领取外包计算任务。如果外包计算者返回的计算结果通过正确性验证,则其将获得用户的酬金,押金也会被退还;否则押金将转移给用户作为补偿。智能合约中各函数分别表示为ot、submittask、gettask、uploadresult、verify、receive、terminate。这些函数中,对智能合约调用者的限制通过内置变量msg.sender来实现,该变量是从此合约调用方的签名派生出来的。此外,若某函数被payable修饰,表示需要用一定金额的资金激活该函数,如submittask函数和gettask函数,这个金额数值可以通过内置变量msg.value设置。
[0117]
函数ot是部署智能合约时自动触发执行的构造函数。构造函数中定义了外包计算任务task的结构,即每一个task包括用户的身份标识uid、外包计算者的身份标识wld、外包计算具体函数f、密文数据地址haddr、daddr以及外包计算结果地址yaddr和验证结果verifyresult;定义了tu、tw两个时间,分别是用户接收计算结果的时间和外包计算者完成计算的时间;对外包计算任务集也进行了初始化,还定义了临时变量task_tmpl。ot函数如算法1所示。
[0118][0119][0120]
submittask函数由用户调用,此函数的输入为uid,f,haddr,daddr。用户调用此函数时需要将酬金w(包括w1和w2)支付到智能合约中,这样才能完成一次计算任务的提交,该酬金w将根据智能合约中指定的条件自动转移。用户成功调用此函数后,其发布的外包计算任务将被写入任务集中,函数输出计算任务在链上记录的唯一标识taskid。
[0121]
submittask函数如算法2所示。
[0122][0123]
gettask函数由外包计算者调用,此函数的输入为uid,wid。外包计算者调用此函数时需要向智能合约支付押金d(押金d也将根据智能合约中指定的条件自动转移),这样才
能获取一个计算任务,且此外包计算任务未被其他外包计算者领取。外包计算者成功调用此函数时,合约中的msg.sender将被设置为此外包计算者wid,函数输出算法2中提到的用户上传的外包计算任务具体信息。
[0124]
gettask函数如算法3所示。
[0125][0126][0127]
uploadresult函数由成功获取外包计算任务的外包计算者调用,其输入为外包计算结果在ipfs中的存储地址。外包计算者需要在规定时间tw内,将此函数的输出即结果存储地址上传到区块链智能合约中。
[0128]
uploadresult函数如算法4所示。
[0129][0130]
verify函数由区块链中的验证者节点调用,用来验证外包计算结果的正确性。此函数的输入为f,haddr,daddr,yaddr,在完成hy=d的判断后输出yaddr,verifyresult。当验证者节点给出验证结果后,酬金w2会自动转移给它。
[0131]
verify函数如算法5所示。
[0132][0133][0134]
receive函数由用户调用,用来接收正确的外包计算结果;其输入为yaddr,verifyresult,当verifyresult的值是true且用户在时间tu内响应验证结果,用户将接收外包计算结果地址并下载外包计算结果,酬金w1和押金d将自动转移给外包计算者;当verifyresult的值是false,w1和d将自动转移给用户。
[0135]
receive函数如算法6所示。
[0136][0137]
terminate函数由用户或外包计算者调用,对未按预期进行的外包计算任务进行资金结算。未按预期进行分为以下几种情况:
①
没有外包计算者领取用户发布的外包计算任务,则用户调用智能合约里的terminate函数,得到酬金w(w1和w2);
②
外包计算者领取了任务但并未在用户规定的时间tw内提交计算结果,此时用户调用智能合约里的terminate
函数,获得酬金w(w1和w2)和押金d;
③
外包计算者在规定时间tw内提交了计算结果,而用户并未在规定时间tu内完成对已进行正确性验证的外包计算结果存储地址的接收,则外包计算者调用terminate函数,获得酬金w1和押金d。
[0138]
terminate函数如算法7所示。
[0139][0140][0141]
参见图2所示,本案实施例中外包计算方案工作流程可设计为五个阶段,即准备阶段、外包阶段、计算阶段、验收阶段和终止阶段,除准备阶段、计算过程和最终结果的恢复过程在链下完成,方案中其他过程都将在智能合约中完成。
[0142]
准备阶段中,用户调用keygen算法和probgen算法,利用随机选取的稀疏矩阵m、n,将大型线性方程组中包含用户隐私信息的系数矩阵a、常数向量b进行盲化,将盲化后的b分割为两部分d1、d2,随后将密文h、d1、d2上传至ipfs进行存储并得到密文相应的存储地址haddr、daddr1和daddr2。
[0143]
外包阶段中,用户创建外包计算合约,并将该合约部署到区块链上,区块链返回给用户此合约的标识scid。用户分别调用合约scid中的submittask函数,生成两个外包计算任务,并分别向合约支付酬金w。相应的外包计算任务会被提交到区块链上,用户将得到这两个外包计算任务在链上的标识taskid1和taskid2。此阶段中用户将生成外包计算发布事务task
start1
、task
stark2
,并将这两个审计事务记录在区块链上。其中,
[0144]
task
start1
={uid,f,haddr,daddr1,taskid1}
[0145]
task
start2
={uid,f,haddr,daddr2,taskid2}
[0146]
计算阶段中,外包计算者首先调用合约scid中的gettask函数获取外包计算任务(taskid1或taskid2)并支付押金d;然后,外包计算者分别根据合约scid中密文数据的存储地址获得计算参数h和d1/d2,再调用compute算法进行外包计算求值,并将计算结果上传到ipfs进行存储,获得存储地址yaddr1/yaddr2;最后调用scid中的uploadresult函数将yaddr1/yaddr2提交到智能合约,等待下一步的验证。
[0147]
在两个外包计算者wid1和wid2分别完成taskid1和taskid2的外包计算任务后,分别生成外包计算结果事务task
end1
、task
end2
,并将这两个审计事务记录在区块链上。其中,
[0148]
task
end1
={uid,taskid1,wid1,yaddr1}
[0149]
task
end2
={uid,taskid2,wid2,yaddr2}
[0150]
验收阶段中,区块链中验证者节点调用合约scid中的verify函数来进行结果正确
性验证,验证者节点分别从ipfs中下载h、d1/d2和y1/y2,验证hy1=d1、hy2=d2是否成立。每返回一次验证结果,验证节点将获得奖励w2。此阶段中验证者节点将生成外包结果验证事务task
verify1
、task
verify2
,并将这两个审计事务记录在区块链上。其中,
[0151]
task
verify1
={uid,taskid1,wid1,vid,verifyresult1}
[0152]
task
verify2
={uid,taskdd2,wid2,vid,verifyresult2}然后,用户将调用scid中的receive函数,根据验证结果判断是否接收外包计算结果。若计算结果验证均通过,用户可根据计算结果的地址yaddr1、yaddr2从ipfs中获取y1、y2的值,调用solve算法,利用私钥n,计算x=n(y1+y2)得到初始问题的解,同时外包计算者1和外包计算者2都将获得酬金w1和押金d;若某一外包计算结果验证失败,用户会获得酬金w1和押金d。
[0153]
终止阶段中,如果外包过程没有按照预期进行,用户或外包计算者将调用scid中的terminate函数进行资金结算。
[0154]
进一步地,基于上述的方法,本发明实施例还提供一种基于区块链的外包支付计算交易实现系统,包含:计算任务转化模块、计算任务准备模块、计算任务外包模块、计算任务执行模块和计算任务验收模块,其中,
[0155]
计算任务转化模块,用于将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;
[0156]
计算任务准备模块,用于通过用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;
[0157]
计算任务外包模块,用于通过用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;
[0158]
计算任务执行模块,用于通过外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;
[0159]
计算任务验收模块,用于通过区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。
[0160]
为验证本案方案有效性,下面结合理论推导和实验数据对本案方案性能做进一步解释说明:
[0161]
1、首先结合理论推导来验证本案方案可信性
[0162]
假设1:本案外包计算方案的返回结果x是正确的。
[0163]
证明:假设用户和外包计算者都正确执行方案中的所有算法,则有:
[0164]
d=mb
[0165]
h=man
[0166]
d=d1+d2[0167]
x=n(y1+y2)
[0168]
于是:
[0169][0170]
所以,pr[ax=b]=1≥1-negli(λ)。证毕。
[0171]
假设2:本案外包计算方案能够保护外包大规模线性方程组的系数矩阵a、系数向量b以及最终结果x的隐私安全。
[0172]
证明:从上面的方案流程分析可以看到,在整个过程中,外包计算者分别只能看到盲化后的数据(h,d1)和(h,d2)(两个计算任务同时发布,忽略同一外包计算者同时领取这两个计算任务的情况)。首先证明输入b的隐私安全,为确保b的隐私性,本案方案使用随机稀疏矩阵乘法加密和随机加法分割的操作。原始的b首先乘一个随机稀疏矩阵m:d=mb,然后为隐藏d,使用加法分割将它随机分成两个矩阵d1和d2:d=d1+d2。显然这个操作是安全的,因为d1是不可区分的。外包计算者1无法恢复向量d,因为他只有d1,对外包计算者2可以用相同的方式进行分析。假设这两个外包计算者不合谋,那么b的原始值就得到了很好的保护。
[0173]
下面证明系数矩阵a的隐私性。原始线性方程组中的系数矩阵a经过加密后变为h=man,设m=(m
ij
),n=(n
ij
),m
′
=(m
′
ij
),n
′
=(n
′
ij
)是四个由用户生成的随机非奇异稀疏矩阵。给定两个由敌手a选择的非奇异密集矩阵a=(a
ij
)、a
′
=(a
′
ij
),用户计算h=man=(t
ij
)和h
′
=m
′a′n′
=(t
′
ij
),其中:
[0174][0175][0176]
需要注意的是,四个矩阵m、n、m
′
和n
′
的所有非零元素的数值和位置都是由用户随机选择的,因此h
ij
和h
′
ij
在计算上是无法区分的。因此,敌手a区分h和h
′
的优势可以忽略不计。
[0177]
下面证明最终结果x的隐私性。外包计算者1只能得到线性方程组hy1=d1的计算结果y1,外包计算者2只能得到线性方程组hy2=d2的计算结果y2。假设这两个外包计算者不共谋,外包计算者1和外包计算者2不能通过用户发送的数据信息和运算结果获得用户输出数据x的敏感信息,因此,x会得到很好的隐私保护。
[0178]
假设3:本案外包计算方案是大规模线性方程组的实现。
[0179]
证明:本案方案中,用户需要执行两次矩阵向量乘法(这里省略了向量加法运算),这需要o(n2)计算。此外,用户还需要计算h=man,这也需要o(n2)计算。而用户直接求解线性方程,需要o(n3)计算。因此,本案外包计算方案是大规模线性方程组的)计算。因此,本案外包计算方案是大规模线性方程组的实现。
[0180]
假设4:本案外包计算方案是一个1-checkable的可验证方案。
[0181]
证明:外包计算者给定最终y的值,hy的计算复杂度为o(n2),验证者可以验证方程hy=d是否有效。因此,如果外包计算者在本案方案的计算执行过程中存在不端行为返回错误的y值,则验证者检测出错误y值的概率为1。
[0182]
用户在当前的外包计算方案中是诚实的,然而,在现实生活中他们可能并不诚实。本案使用区块链作为外包计算的审计平台,且将外包计算结果存储在ipfs中,可有效抑制用户拒绝计算结果这类恶意行为的发生。
[0183]
此外,实际应用中会存在方程组无解的可能,下面考虑外包方程组无解的情况。由于4x=b无解等价于hy=d无解,此时外包计算者只需返回y=φ。该结果正确性显而易见。下面对此种情况的隐私性进行说明。由假设2证明过程,系数矩阵a、系数向量b的隐私性与y的存在性无关。唯一会泄露给外包计算者的信息是:外包的方程组无解,即x不存在。这一点在实际应用中并不会造成隐私泄露问题。又假设存在y
*
≠φ可以通过验证,则有hy
*
=d,与方程hy=d无解矛盾。证毕。
[0184]
综上所述,当ax=b无解时,本案方案仍具有正确性和足够的隐私性。于是本方案同样适用于处理无解大规模线性方程组问题。
[0185]
2、结合理论分析来说明本案方案的可审计性和公平支付性。
[0186]
(1)可审计性。外包计算者在外包计算的过程中并不一定是诚实的。本案借助区块链公开透明、数据不可篡改的特性,将区块链作为外包计算的审计平台,并设置三类上链记录的外包计算审计事务,为后续用户提供了外包计算者的审计信息。其中包含的wid和verifyresult,可具体标识外包计算者的计算行为:若verifyresult为true,表示此外包计算者在此次计算任务中是诚实的;若verifyresult为false,表示此外包计算者是不诚实的。通过在链上记录的审计事务信息,可以实现对外包计算者计算行为的公开审计。
[0187]
(2)公平支付。在现实生活中外包计算中的实体(主要包括用户和外包计算者)可能并不诚实,相互之间可能会存在不信任问题。利用区块链智能合约,在用户通过区块链发布外包计算任务之前,需要向智能合约支付酬金;外包计算者通过区块链领取任务时,需要向智能合约支付押金。如果外包计算任务被正常执行,用户获得计算结果,外包计算者将获得用户支付的酬金奖励。若外包计算者存在恶意行为返回错误结果,其押金将转移给用户作为惩罚。在智能合约按所制定规则自动执行奖惩的机制下,可以实现用户与外包计算者之间的公平支付。
[0188]
3、结合实验数据来验证本案方案性能
[0189]
1)时间复杂度
[0190]
本案方案中,用户的计算开销主要涉及3个阶段:keygen阶段,probgen阶段和solve阶段。keygen阶段生成密钥(两个稀疏矩阵m、n)会产生计算开销,稀疏矩阵每一行非零元素的个数都小于某个ρ(1=ρ=n),可得此阶段时间复杂度是o(ρn);probgen阶段用户计算d=mb,h=man,计算d=mb的计算复杂度是o(ρn),计算h=man的时间复杂度是o(ρn2),考虑到针对的是大规模线性方程组的外包,故ρ=n,所以此阶段计算复杂度为o(n2);solve阶段用户计算x=n(y1+y2)会产生计算开销,此阶段时间复杂度是o(ρn)。因此本案外包方案中用户计算复杂度为o(n2),而用户通过本地直接求解ax=b的计算复杂度为o(n3)。所以相比于用户直接对方程组求解,本案方案能大幅降低用户的计算复杂度。
[0191]
2)方案对比
[0192]
表1大规模线性方程组求解外包方案计算性能比较
[0193][0194]
对比方案中提出的大规模线性方程组外包方案同样采用稀疏矩阵盲化技术,且该方案的实现效率较高。本案将从用户预计算的计算量、用户恢复最终结果的计算量以及是否可公开验证这三个方面将本案方案与对比方案进行比较。比较结果如表1示,其中m表示数乘,ρ为所选稀疏矩阵每行(或列)的非零元素的最大数量(是大于2且远小于n的整数),n为大型线性方程组系数矩阵的阶,是一个密码学中大素数级的整数。如表1可知,本案方案的算法效率与对比方案的效率相近,且与对比方案相比,本案方案能实现可公开验证。
[0195]
3)时间开销评估
[0196]
使用matlab r2022a作为实验的测试工具,用户方配置为intel(r)core(tm)i7-8750hz 2.21ghz主频的处理器和16g内存。对于大型线性方程组求解的外包算法,如图3所示,给出了用户在外包和不外包情况下的时间开销,在外包情况下,用户总的计算时间包括probgen和solve两个阶段,其中,横坐标代表矩阵规模,纵坐标代表时间开销(单位:s)。可以看出,使用本方案用户花费的时间明显少于不使用本方案花费的时间,且本方案中用户的时间开销与问题规模呈线性关系。图4给出了本方案各个阶段之间的时间开销。
[0197]
通过以上理论及实验数据进一步说明:本案方案利用稀疏矩阵盲化技术与随机分割方法使得用户能高效的完成数据的加密、结果的验证与恢复,保证用户的数据安全;通过设计的外包计算智能合约实现外包结果的公开验证和用户与外包计算者之间的公平支付;利用外包过程中的交互信息上链记录,能实现对外包计算者的审计,并可对恶意外包计算者进行追溯。由此可知,本案中具有去中心化、不可篡改性及匿名化等特点的区块链技术与可验证外包计算结合,可以在医疗信息系统、机器学习等领域得到很好的具体应用。
[0198]
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
[0199]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0200]
结合本文中所公开的实施例描述的各实例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已按照功能一般性地描述了各示例的组成及步骤。这些功能是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不认为超出本发明的范围。
[0201]
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如:只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形
式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0202]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种基于区块链的外包支付计算交易实现方法,其特征在于,包含:将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。2.根据权利要求1所述的基于区块链的外包支付计算交易实现方法,其特征在于,利用随机选取的稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,并对盲化后的b进行随机分割,包含:首先,针对常数向量b,利用稀疏矩阵m获取系数向量d,并将大规模线性方程组求解问题的表示重写为many=mb;接着,利用稀疏矩阵m和n对系数方阵a进行矩阵盲化处理,其中,矩阵盲化处理过程表示为:h=man;然后,随机选取系数向量d1,并利用该随机选取的系数向量d1对系数向量d进行分割,将ax=b的求解问题分割转换为hy1=d1和hy2=d2加密线性方程组的求解问题,并将h和d1、d2加密上传至星际文件系统ipfs进行存储。3.根据权利要求1所述的基于区块链的外包支付计算交易实现方法,其特征在于,用户创建的外包计算智能合约包含:用于部署智能合约时自动触发并执行获取外包计算任务结构的构造函数,用于通过用户调用将外包计算任务写入任务集以获取该外包计算任务在链上记录标识的任务提交函数,用于通过外包计算者调用并来获取外包计算任务的任务获取函数,用于通过外包计算者调用来将外包计算结果上传至智能合约中的结果地址上传函数,用于通过区块链中验证者节点调用来验证外包计算结果正确性的验证函数,用于通过用户调用来接收正确的外包计算结果的结果接收函数,和用于通过用户或外包计算者调用来对未按预期执行的外包计算任务进行资金结算的任务终止函数。4.根据权利要求3所述的基于区块链的外包支付计算交易实现方法,其特征在于,用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录,包含:
首先,用户创建外包计算智能合约并将该智能合约部署到区块链上,同时接收区块链返回给用户的外包计算智能合约标识;接着,用户依据智能合约标识通过调用智能合约中的任务提交函数来生成加密线性方程组对应的两个外包计算任务,并通过向智能合约支付酬金来获取外包计算任务在区块链上的任务标识;然后,依据用户标识符、外包计算函数、系数矩阵盲化后数据及常数向量b随机分割后数据加密上传至星际文件系统ipfs的存储地址和外包计算任务在区块链上的任务标识来生成外包计算发布事务,并将外包计算发布事务的审计事务记录在区块链上。5.根据权利要求3所述的基于区块链的外包支付计算交易实现方法,其特征在于,外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录,包含:首先,外包计算者通过调用智能合约中的任务获取函数来获取外包计算任务,并通过支付押金并依据智能合约中系数矩阵盲化后数据及常数向量b随机分割后数据加密上传至星际文件系统ipfs的存储地址来获取计算参数;接着,外包计算者执行外包计算任务函数来获取对应的计算结果,将计算结果上传至星际文件系统ipfs进行存储,并获取星际文件系统ipfs对应的计算结果存储地址;然后,外包计算者通过调用智能合约中的结果地址上传函数将星际文件系统ipfs对应的计算结果存储地址提交到智能合约,同时外包计算者依据用户标识符、外包计算者标识符、外表计算任务和对应计算结果存储地址来生成外包计算结果事务,并将外包计算结果事务的审计事务记录在区块链上。6.根据权利要求3所述的基于区块链的外包支付计算交易实现方法,其特征在于,区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,包含:首先,区块链中验证者节点从星际文件系统ipfs中下载计算参数和计算结果,通过调用智能合约中的验证函数对计算参数正确性进行验证,并依据验证执行来获取对应奖励,同时依据用户标识符、外包计算任务、外包计算者标识符、验证者节点标识符和验证结果来生成外包结果验证事务,并将外包结果验证事务的审计事务记录在区块链上;然后,用户调用智能合约中的结果接收函数,根据验证结果判断是否接收外包计算结果,若计算结果均验证通过,则用户根据计算结果的地址从星际文件系统ipfs中获取对应计算结果,并利用自身私钥获取初始问题解,同时外包计算者获取对应酬金和押金,若有计算结果验证失败,则用户获取酬金及押金。7.根据权利要求3或6所述的基于区块链的外包支付计算交易实现方法,其特征在于,还包含:针对外包计算未按照预期执行时,则用户或外包计算者通过调用任务终止函数来对外包计算任务进行资金结算,具体包含如下情形:没有外包计算者领取用户发布的外包计算任务时,则用户通过调用任务终止函数来获取酬金;外包计算者领取外包计算任务但未在用户规定时间内提交计算结果,则用户通过调用任务终止函数来获取酬金和押金;外包计算者领取外包计算任务并在规定时间内提交计算结果但用户未在规定时间内完成对正确性验证通过的外包计算结果存储地址的接收,则外包计算者通过调用任务终止函数来
获取酬金及押金。8.一种基于区块链的外包支付计算交易实现系统,其特征在于,包含:计算任务转化模块、计算任务准备模块、计算任务外包模块、计算任务执行模块和计算任务验收模块,其中,计算任务转化模块,用于将外包计算问题转化为大规模线性方程组求解问题,并将求解问题表示为:ax=b,其中,a代表阶为n的系数方阵,x代表待求解向量,b代表已知常数向量;计算任务准备模块,用于通过用户随机选取稀疏矩阵并利用稀疏矩阵对大规模线性方程组求解问题中作为用户外包输入数据的a和b进行盲化,对盲化后的常数向量b进行随机分割,使大规模线性方程组求解问题转换成加密线性方程组的求解问题,并将计算参数加密并上传至星际文件系统ipfs进行存储,其中,计算参数包含系数矩阵盲化后数据和常数向量b随机分割后数据;计算任务外包模块,用于通过用户创建外包计算智能合约并将该智能合约部署到区块链上,生成外包计算任务并发布至区块链,并通过向外包计算智能合约支付酬金来生成外包计算发布事务,将对应的审计事务在区块链上进行记录;计算任务执行模块,用于通过外包计算者依据外包计算智能合约获取外包计算任务并通过支付押金获取外包计算任务,将外包计算结果上传至星际文件系统ipfs进行存储,同时生成外包计算结果事务,并将外包计算结果事务的审计事务在区块链上进行记录;计算任务验收模块,用于通过区块链中验证者节点依据外包计算智能合约从星际文件系统ipfs中下载待验证数据,对数据结果正确性进行验证,当验证结果均通过时,用户从星际文件系统ipfs中获取外包计算任务的计算结果,同时外包计算者获取相应酬金和押金,如果其中一个验证结果失败,则用户获得酬金和押金。
技术总结
本发明涉及云计算、大数据外包计算技术领域,特别涉及一种基于区块链的外包支付计算交易实现方法及系统,将区块链作为用户和外包计算者之间交互的平台,用户和外包计算者之间的所有交互数据都记录在区块链上;并引入星际文件系统IPFS作为大规模矩阵数据的链下存储介质,在链上存储数据的链下存储地址,通过链上链下协同的方式解决区块链存储容量有限带来的大规模矩阵数据无法直接上链存储的问题。本发明采用稀疏矩阵盲化与随机分割及链上链下协同方案能够在保护用户数据隐私的前提下来实现可验证、审计和公平支付的高效外包计算,实现用户与外包计算者之间的公平支付,能够构建可信外包计算环境,在云计算和大数据等外包计算上具有较好的应用前景。计算上具有较好的应用前景。计算上具有较好的应用前景。
技术研发人员:王娜 杜学绘 丁艳 任志宇 曹利峰
受保护的技术使用者:中国人民解放军战略支援部队信息工程大学
技术研发日:2023.05.11
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/