本技术涉及区块链,尤其涉及一种确定链外数据源可靠性的方法及装置。
背景技术:
1、随着计算机技术的发展,越来越多的计算机技术应用在金融领域中,这意味着传统金融行业正在逐步向金融科技(fintech)转变,例如,如今很多金融领域都应用了区块链技术。
2、区块链依靠分布式系统和相关技术构造了一个确定的链上世界,链外的绝大部分信息对于区块链而言都处于不透明状态,这些信息在区块链中无法被信任或使用;若区块链想要与外界数据进行数据相互,可以通过在区块链上设置预言机合约来调用链外与区块链连接的预言机节点来完成数据交互,预言机节点需要对数据的提供方,即数据源进行可靠性评分,并将各数据源的可靠性评分传输至链上的预言机合约,由预言机合约根据各数据源的可靠性评分对数据源进行筛选,选择更可靠的数据源使用其数据。
3、然而当数据源过多时,对每一个数据源都进行可靠性评分的计算会导致计算压力过大,效率也会较低;因此,如何提升数据源可靠性评分的效率是亟需考虑的问题。
技术实现思路
1、本技术提供一种确定链外数据源可靠性的方法及装置,用以提高链外数据源可靠性的确定效率。
2、第一方面,本技术提供一种确定链外数据源可靠性的方法,该方法应用于区块链上的预言机合约,该方法包括:
3、根据预配置的m个数据源组成初始数据源序列;m为正整数;
4、通过设定区块的设定交易的标识,确定随机交换机制,并通过所述随机交换机制得到更新数据源序列;所述随机交换机制用于对所述初始数据源序列中的两个数据源的位置进行交换;
5、将所述更新数据源序列中满足延迟率要求的n个数据源确定为待验证数据源序列;数据源的延迟率是根据数据源提交验证数据的时间确定的;n为正整数且n小于或等于m;
6、通知所述待验证数据源序列中的各数据源提交用于本轮可靠性验证的验证数据;
7、通过所述待验证数据源序列中的各数据源提交的验证数据,确定所述待验证数据源序列中的各数据源的可靠性。
8、本技术提供的确定链外数据源可靠性的方法,无需确定m个数据源的可靠性,而是在m个数据源中选取n个数据源进行可靠性的确定即可;本技术在选取前,首先确定随机交换机制,对m个数据源的位置进行多次交换,保证更新数据源序列具有很好的随机性;然后在更新数据源序列中将满足延迟率要求的n个数据源作为待验证数据源序列;如此,仅需n个数据源提交验证数据,降低了链外和链上之间交互的数据量,提高了可靠性的确定效率;此外,本技术提供的确定链外数据源可靠性的方法是在链上进行的,而不是由链外的预言机节点确定数据源的可靠性,再由预言机节点传输至链上的预言机合约,因此,该方法具有更好的实时性,更新速度更快。
9、在一种可能的设计中,所述数据源的延迟率是根据数据源提交验证数据的时间确定的,包括:
10、获取所述数据源的历史可靠性验证记录;所述数据源的历史可靠性验证记录包括所述数据源在上一轮可靠性验证中提交验证数据的时间;
11、根据所述数据源在上一轮可靠性验证中提交验证数据的时间以及在上一轮可靠性验证中通知所述数据源提交验证数据的时间确定所述数据源的延迟率。
12、每个数据源都有历史可靠性验证记录,其中包括了数据源在上一轮提交验证数据的时间,根据数据源在上一轮提交验证数据的时间以及上一轮通知提交验证数据的时间可以确定数据源的延迟率,用于后续n个数据源的确定。
13、在一种可能的设计中,所述区块链节点通过设定区块的设定交易的标识,确定随机交换机制,包括:
14、所述区块链节点根据区块链上最新区块中的第一个交易的标识确定第一整数;
15、根据所述第一整数随机确定对所述初始数据源序列进行数据源交换的次数,并通过随机算法确定每次数据源交换的交换位置。
16、区块链上的每一笔交易都有唯一的交易号,交易号通常为二进制数,可作为交易的标识;在确定随机交换机制时,可以根据设定区块的设定交易的标识来确定,例如,根据区块链上最新区块中的第一个交易的标识确定第一整数,该第一整数可以是将第一个交易的二进制标识转换为整数获得的,然后根据第一整数确定需要进行数据源交换的次数,本技术中的数据源交换主要是指数据源位置的交换,进行多次数据源交换后可以保证更新数据源序列具有很好的随机性。
17、在一种可能的设计中,所述通过所述待验证数据源序列中的各数据源提交的验证数据,确定所述待验证数据源序列中的各数据源的可靠性,包括:
18、根据所述待验证数据源序列中的各数据源提交的用于本轮可靠性验证的验证数据确定所述待验证数据源序列中的各数据源的第一分数和第二分数;所述待验证数据源序列中的任一数据源的第一分数用于表征所述数据源提交的验证数据的真实性,所述数据源的第二分数用于表征所述数据源提交的验证数据与所述待验证数据源序列中其它数据源提交的验证数据之间的偏差程度;
19、根据所述待验证数据源序列中的各数据源的第一分数和第二分数确定所述待验证数据源序列中的各数据源的第三分数;所述待验证数据源序列中的任一数据源的第三分数用于表征所述数据源的可靠性。
20、根据数据源提交的验证数据可以确定验证数据的真实性以及与其它数据源提交的验证数据之间的偏差程度,相较于单一地从某一个维度来确定数据源的可靠性,本技术从验证数据的多维度来确定数据源的可靠性,提升了数据源可靠性确定的合理性。
21、在一种可能的设计中,所述根据所述数据源在上一轮可靠性验证中提交验证数据的时间以及在上一轮可靠性验证中通知所述数据源提交验证数据的时间确定所述数据源的延迟率,包括:
22、获取上一轮可靠性验证的持续时长;
23、确定第一差值;所述第一差值为所述数据源在上一轮可靠性验证中提交验证数据的时间与在上一轮可靠性验证中通知待验证的数据源提交验证数据的时间的差值;
24、根据所述第一差值与所述上一轮可靠性验证的持续时长的比值确定所述数据源的延迟率。
25、在通知待验证数据源序列中的数据源提交验证数据之后,若数据源很快做出响应,提交验证数据,则数据源提交验证数据的时间与通知数据源提交验证数据的间隔时间则较短,那么该数据源的延迟率则较低,因此,数据源的延迟率在一定程度上可以体现数据源的响应速度;相应地,若数据源的响应速度快、延迟率较低,则表明该数据源的负载较低,健康程度较好。
26、在一种可能的设计中,所述将所述更新数据源序列中满足延迟率要求的n个数据源确定为待验证数据源序列,包括:
27、将所述更新数据源序列中的前k个数据源确定为待选择数据源序列,k等于对所述初始数据源序列进行数据源交换的次数;
28、将所述待选择数据源序列中满足延迟率要求的n个数据源确定为所述待验证数据源序列。
29、首先从m个数据源中选取k个数据源,将需要确定可靠性的数据源个数由m减少至k个;然后再从k个数据源中根据延迟率进行筛选,将需要确定可靠性的数据源个数由k减少至n个,提高数据源可靠性的确定效率。
30、在一种可能的设计中,所述m个数据源中的任一数据源均有对应的统计值,任一数据源对应的统计值的初始值为0,所述数据源的统计值用于表征所述数据源跳过可靠性验证的次数;
31、所述将所述待选择数据源序列中满足延迟率要求的n个数据源确定为所述待验证数据源序列,包括:
32、根据所述待选择数据源序列中各数据源的延迟率和对应的统计值进行计算,获得所述待选择数据源序列中各数据源的第一计算结果;
33、若第一数据源的第一计算结果大于或等于第一随机数,则将所述第一数据源添加至所述待验证数据源序列;所述第一数据源为所述待选择数据源序列中的任意一个数据源;所述第一随机数是通过所述随机算法获得的,且所述第一随机数小于预设数值;
34、在将所述待选择数据源序列中满足延迟率要求的n个数据源确定为所述待验证数据源序列之后,还包括:
35、将所述m个数据源中不属于所述待验证数据源序列的数据源对应的统计值均加设定值。
36、若第一数据源的第一计算结果大于或等于第一随机数,则表明第一数据源的延迟率较高或者统计值较大,通常来说,延迟率较高的数据源可靠性则较差,统计值较大则表明第一数据源跳过了此前的多轮历史可靠性验证,则应该将第一数据源添加至待验证数据源序列中;同时,将不属于待验证数据源序列的数据源的统计值均加上设定值,及时更新数据源对应的统计值能够提升数据源第一计算结果的准确性,进而提升确定n个数据源的准确性。
37、在一种可能的设计中,若第二数据源提交的用于所述本轮可靠性验证的验证数据是由多个子数据源提交的待验证数据通过数据计算模板进行计算获得的,则所述第二数据源提交的用于所述本轮可靠性验证的验证数据还包括所述多个子数据源中各子数据源的待验证数据的获取路径以及所述数据计算模板;所述第二数据源为所述待验证数据源序列中的任意一个数据源;
38、所述根据所述待验证数据源序列中的各数据源提交的用于本轮可靠性验证的验证数据确定所述待验证数据源序列中的各数据源的第一分数,包括:
39、根据所述第二数据源提交的用于本轮可靠性验证的验证数据、所述多个子数据源中各子数据源的待验证数据的获取路径以及所述数据计算模板确定所述第二数据源的第一分数。
40、当数据源提交的验证数据是由多个子数据源提交的验证数据经过计算获得的,那么数据源提交的验证数据还应包括多个子数据源中各子数据源的待验证数据的获取路径以及数据计算模板,提升第一分数的准确性。
41、第二方面,本技术还提供一种确定链外数据源可靠性的装置,该装置包括:收发单元和处理单元;
42、所述处理单元,用于根据预配置的m个数据源组成初始数据源序列;m为正整数;通过设定区块的设定交易的标识,确定随机交换机制,并通过所述随机交换机制得到更新数据源序列;所述随机交换机制用于对所述初始数据源序列中的两个数据源的位置进行交换;将所述更新数据源序列中满足延迟率要求的n个数据源确定为待验证数据源序列;数据源的延迟率是根据数据源提交验证数据的时间确定的;n为正整数且n小于或等于m;
43、所述收发单元,用于通知所述待验证数据源序列中的各数据源提交用于本轮可靠性验证的验证数据;
44、所述处理单元,还用于通过所述待验证数据源序列中的各数据源提交的验证数据,确定所述待验证数据源序列中的各数据源的可靠性。
45、在一种可能的设计中,所述收发单元,具体用于获取所述数据源的历史可靠性验证记录;所述数据源的历史可靠性验证记录包括所述数据源在上一轮可靠性验证中提交验证数据的时间;所述处理单元,具体用于根据所述数据源在上一轮可靠性验证中提交验证数据的时间以及在上一轮可靠性验证中通知所述数据源提交验证数据的时间确定所述数据源的延迟率。
46、在一种可能的设计中,所述处理单元,具体用于根据区块链上最新区块中的第一个交易的标识确定第一整数;根据所述第一整数随机确定对所述初始数据源序列进行数据源交换的次数,并通过随机算法确定每次数据源交换的交换位置。
47、在一种可能的设计中,所述处理单元,具体用于根据所述待验证数据源序列中的各数据源提交的用于本轮可靠性验证的验证数据确定所述待验证数据源序列中的各数据源的第一分数和第二分数;所述待验证数据源序列中的任一数据源的第一分数用于表征所述数据源提交的验证数据的真实性,所述数据源的第二分数用于表征所述数据源提交的验证数据与所述待验证数据源序列中其它数据源提交的验证数据之间的偏差程度;以及根据所述待验证数据源序列中的各数据源的第一分数和第二分数确定所述待验证数据源序列中的各数据源的第三分数;所述待验证数据源序列中的任一数据源的第三分数用于表征所述数据源的可靠性。
48、在一种可能的设计中,所述收发单元,具体用于获取上一轮可靠性验证的持续时长;所述处理单元,具体用于确定第一差值;所述第一差值为所述数据源在上一轮可靠性验证中提交验证数据的时间与在上一轮可靠性验证中通知待验证的数据源提交验证数据的时间的差值;根据所述第一差值与所述上一轮可靠性验证的持续时长的比值确定所述数据源的延迟率。
49、在一种可能的设计中,所述处理单元,具体用于将所述更新数据源序列中的前k个数据源确定为待选择数据源序列,k等于对所述初始数据源序列进行数据源交换的次数;将所述待选择数据源序列中满足延迟率要求的n个数据源确定为所述待验证数据源序列。
50、在一种可能的设计中,所述m个数据源中的任一数据源均有对应的统计值,任一数据源对应的统计值的初始值为0,所述数据源的统计值用于表征所述数据源跳过可靠性验证的次数;所述处理单元,具体用于根据所述待选择数据源序列中各数据源的延迟率和对应的统计值进行计算,获得所述待选择数据源序列中各数据源的第一计算结果;
51、若第一数据源的第一计算结果大于或等于第一随机数,则将所述第一数据源添加至所述待验证数据源序列;所述第一数据源为所述待选择数据源序列中的任意一个数据源;所述第一随机数是通过所述随机算法获得的,且所述第一随机数小于预设数值;所述处理单元,还用于将所述m个数据源中不属于所述待验证数据源序列的数据源对应的统计值均加设定值。
52、在一种可能的设计中,若第二数据源提交的用于所述本轮可靠性验证的验证数据是由多个子数据源提交的待验证数据通过数据计算模板进行计算获得的,则所述第二数据源提交的用于所述本轮可靠性验证的验证数据还包括所述多个子数据源中各子数据源的待验证数据的获取路径以及所述数据计算模板;所述第二数据源为所述待验证数据源序列中的任意一个数据源;所述处理单元,具体用于根据所述第二数据源提交的用于所述本轮可靠性验证的验证数据、所述多个子数据源中各子数据源的待验证数据的获取路径以及所述数据计算模板确定所述第二数据源的第一分数。
53、第三方面,本技术还提供一种确定链外数据源可靠性方法的设备,该设备包括:处理器,以及与所述处理器通信连接的存储器;
54、所述存储器存储计算机执行指令;
55、所述处理器执行所述存储器存储的计算机执行指令,以实现上述第一方面所述的方法。
56、第四方面,本技术还提供一种计算机可读存储介质,所述可读存储介质包括程序,当所述程序在装置上执行时,使得所述装置执行如上述第一方面中任一项所述的方法。
57、第五方面,本技术还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
1.一种确定链外数据源可靠性的方法,其特征在于,该方法应用于区块链上的预言机合约,该方法包括:
2.如权利要求1所述的方法,其特征在于,所述数据源的延迟率是根据数据源提交验证数据的时间确定的,包括:
3.如权利要求1所述的方法,其特征在于,所述区块链节点通过设定区块的设定交易的标识,确定随机交换机制,包括:
4.如权利要求1所述的方法,其特征在于,所述通过所述待验证数据源序列中的各数据源提交的验证数据,确定所述待验证数据源序列中的各数据源的可靠性,包括:
5.如权利要求2所述的方法,其特征在于,所述根据所述数据源在上一轮可靠性验证中提交验证数据的时间以及在上一轮可靠性验证中通知所述数据源提交验证数据的时间确定所述数据源的延迟率,包括:
6.如权利要求1或3所述的方法,其特征在于,所述将所述更新数据源序列中满足延迟率要求的n个数据源确定为待验证数据源序列,包括:
7.如权利要求6中任一项所述的方法,其特征在于,所述m个数据源中的任一数据源均有对应的统计值,任一数据源对应的统计值的初始值为0,所述数据源的统计值用于表征所述数据源跳过可靠性验证的次数;
8.如权利要求4所述的方法,其特征在于,若第二数据源提交的用于本轮可靠性验证的验证数据是由多个子数据源提交的待验证数据通过数据计算模板进行计算获得的,则所述第二数据源提交的用于本轮可靠性验证的验证数据还包括所述多个子数据源中各子数据源的待验证数据的获取路径以及所述数据计算模板;所述第二数据源为所述待验证数据源序列中的任意一个数据源;
9.一种确定链外数据源可靠性的装置,其特征在于,该装置包括:收发单元和处理单元;
10.一种确定链外数据源可靠性的设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8中任一项所述的方法。
12.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-8中任一项所述的方法。