一种用于确定数字资源项的平衡度的方法及系统与流程

文档序号:18415339发布日期:2019-08-13 19:19阅读:215来源:国知局
一种用于确定数字资源项的平衡度的方法及系统与流程

本发明涉及信息技术领域,并且更具体地涉及,一种用于确定数字资源项的平衡度的方法及系统。



背景技术:

数字货币(cryptocurrency)是一种依靠校验和密码技术来创建、发行和流通的电子货币。2009年诞生了第一款数字货币:比特币。此后,各种各样的数字货币应运而生。近年来,数字货币越来越为大众所接受。持有数字货币并参与交易的人也越来越多。

目前,人们所持有的数字货币是极不均匀的。通常,初始发行团队占有了大量的数字货币。此外,某些关联交易也会让数字货币集中到特定的一个或多个账户中。基尼系数是一个评估财富差距的常用指标。基尼系数的最大值为“1”,并且最小值为“0”。基尼系数越接近0则表明财富分配越是趋向平等,而基尼系数越接近1,则表明财富分配越集中在少数人手中。诸如基尼系数的这类指标可以有助于分析数字货币的社会网络关系、内幕交易、关联交易等。

但是,目前发展得较大的数字货币的区块数据都很庞大,如比特币(btc)、以太坊(eth)等。在这种情况下,按照传统手段来分析数据的困难极大。此外,在如下基尼系数的计算方式中,

δ的分子部分是笛卡儿积的计算(具体地,是所有地址的持币数据的集合与自身集合计算)。上述计算方式的时间复杂度为o(n2)指数级别。因此,在诸如比特币(btc)、以太坊(eth)等相关的海量的区块链数据中,这种计算方式将导致计算量很大,并且因此会消耗大量时间。



技术实现要素:

有鉴于此,本发明的目的在于提供了一种依托hive的大数据处理平台,以大数据手段处理区块链地址数据,并合理简化符合数字货币特点的基尼系数计算流程,减小误差并提高计算效率,最后得到按月份变动的基尼系数。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1为根据本发明实施例的用于确定数字资源项的平衡度的方法的流程图;

图2为根据本发明实施例的用于确定数字资源项的平衡度的系统的结构示意图;

图3为根据本发明实施例的计算数字货币的基尼系数的系统的结构示意图;

图4为根据本发明实施例的计算数字货币的基尼系数的方法的流程图;

图5为根据本发明实施例的计算结果的示意图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。

图1为根据本发明实施例的用于确定数字资源项的平衡度的方法100的流程图。如图1所示,方法100从步骤101处开始。在步骤101,对用于存储了网络内所有用户设备的数字资源项的交互记录的数据库文件进行解析,以确定网络内用户设备的设备数量和每个用户设备当前所具有的数字资源项的数量。在本申请中,数字资源项例如可以是视频文件、音频文件、文档文件、数字资源、处理器资源、存储资源以及数字货币等。用户设备可以是各种类型的设备,例如,移动终端、个人计算机、膝上型计算机。此外,用户设备还可以指代能够使用、代表或控制个人账户、个人地址、个人私有资源库等的设备。或者,用户设备可以直接指代个人账户、个人地址、个人私有资源库等。数据库文件包括用于存储交互记录的表结构,所述表结构包括以下属性:区块高度、交互时间、交互标识、数字资源项的数量、交互提供方、交互接收方以及资源类型。例如,在hive中保存网络内所有用户设备的数字资源项的交互记录。交互记录可以包括多条记录,并且每条记录均具有区块高度、交互时间、交互标识、数字资源项的数量、交互提供方、交互接收方以及资源类型等属性。此外,数据库文件包括网络内所有用户设备中每个用户设备的标识符的列表。在这种情况下,通过对列表中每个用户设备的标识符,可以确定网络内用户设备的设备数量。其中,平衡度是指多个用户设备所拥有的数字资源项的平衡程度,例如基尼系数。

根据统计时间区间的起始时间处每个用户设备所具有的数字资源项的数量和用于存储交互记录的表结构中的每条记录来确定统计时间区间的结束时间处每个用户设备当前所具有的数字资源项的数量。例如,统计时间区间为5天,并且起始时间为2015年7月15日。那么,首先确定2015年7月15日每个用户设备所具有的数字资源项的数量。然后,对2015年7月15日至2015年7月20日之间的每条记录进行解析,以确定5天的统计时间区间内的所有交互记录。最后,根据5天的统计时间区间内的所有交互记录和2015年7月15日每个用户设备所具有的数字资源项的数量确定2015年7月20日每个用户设备所具有的数字资源项的数量。将每个用户设备所具有的数字资源项的数量作为每个用户设备当前所具有的数字资源项的数量。

在步骤102,按照数字资源项的数量的降序顺序对网络内的每个用户设备进行排序,以获得用户设备的设备列表。在替代的方案中,还可以按照数字资源项的数量的升序顺序对网络内的每个用户设备进行排序。

在步骤103,将设备列表中的所有用户设备分为第一部分和第二部分,其中第一部分包括数字资源项的数量最多的第一预定数量的用户设备,将第一预定数量的用户设备中每个用户设备确定为计算节点。例如,将设备列表中的所有用户设备中包括数字资源项的数量最多的1000个用户设备中的每个用户设备确定为计算节点。优选地,计算节点是用于计算数字资源项的平衡度的基本单元。其中第一部分中所有用户设备中每个用户设备的数字资源项的数量均大于第二部分中所有用户设备中任意用户设备的数字资源项的数量。由于第一部分中的每个用户设备是数字资源项的数量最多的用户设备的集合,因此第一部分中所有用户设备中每个用户设备的数字资源项的数量均大于第二部分中所有用户设备中任意用户设备的数字资源项的数量。在将第一预定数量的用户设备中每个用户设备确定为计算节点之后,将第一预定数量的用户设备中每个用户设备的数字资源项的数量确定为相应的计算节点的数字资源项的数量。例如,在将数字资源项的数量最多的1000个用户设备中的每个用户设备确定为计算节点后,将1000个用户设备中的每个用户设备的数字资源项的数量确定为相应的计算节点的数字资源项的数量。

此外,本申请根据预先设定的配置文件来确定第一预定数量和第二预定数量。例如,配置文件中记载了第一预定数量或第二预定数量为500、800、1000或1500等。或者,本申请根据网络内用户设备的数量来确定第一预定数量和第二预定数量。例如,当网络内用户设备的数量大于1亿时,将第一预定数量和第二预定数量均确定为1000,或者当网络内用户设备的数量大于1千万并且小于1亿时,将第一预定数量和第二预定数量均确定为800。

在步骤104,将第二部分中的用户设备分为第二预定数量的用户设备组,并将第二预定数量的用户设备组中每个用户设备组确定为计算节点。其中,将第二部分中的用户设备分为第二预定数量的用户设备组是按照第二部分中的用户设备的数字资源项的数量的降序顺序进行分组的。即,第1组中每个用户设备数字资源项的数量大于第2组中任意用户设备数字资源项的数量,并且依次类推。在将第二预定数量的用户设备组中每个用户设备组确定为计算节点之后,将第二预定数量的用户设备组中每个用户设备组内所有用户设备的数字资源项的数量的平均值作为相应的计算节点的数字资源项的数量。举例来说,在将第二部分中所有用户设备分为1000个用户设备组之后,确定1000个用户设备组各自所包括的所有用户设备的数字资源项的数量的平均值。将1000个用户设备组各自所包括的所有用户设备的数字资源项的数量的平均值作为相对应的计算节点的数字资源项的数量。

在步骤105,基于第一预定数量的计算节点和第二预定数量的计算节点进行数字资源项的平衡度计算,将计算得到的平衡度作为网络内所有用户设备的数字资源项的平衡度。其中基于第一预定数量的计算节点和第二预定数量的计算节点进行数字资源项的平衡度计算包括:

使用以下公式来计算所有计算节点的数字资源项的平衡度,

其中,n为计算节点的总数量,u为所有计算节点的数字资源项的数量的平均值,yj为第j个计算节点,yi为第i个计算节点,其中0<j≤n,0<i≤n。

举例来说,当用户设备的数量为162565838个时,若直接对这些用户设备进行数字资源项的平衡度的计算,则耗时将以天为单位,非常不便。通过本实施例的上述方式,将所有用户设备按照数字资源项的数量从大到小排序后,将1000名以后的用户设备分为1000组,前1000名用户设备保持不变,共得到2000个计算节点或2000组数据。这是因为,在网络中,数字资源项的特点是头部的用户设备占有的量极大并且区别极大,越往后的用户设备的数字资源项越小并且越相近。如此,将原本总数为162565838的用户设备数量简化为了2000,计算量极大减小,并且结果误差极小。

现有技术中需要对162565838个用户设备的数字资源项进行两两相减并取绝对值。但是,在本申请中,对2000个计算节点或2000组数据进行上述处理,即,将2000组数据两两相减并取绝对值后,乘以相减的组内的用户设备数量,即得到了原本需要将两个组内的数据两两相减的数据。若yi、yj组内的地址数分别为m、n,使用直接两两相减的计算方法需要进行m*n次计算,用本申请所提供的方法仅需进行一次相减、一次结果乘以m的计算、一次结果乘以n的计算,共三次计算。

图2为根据本发明实施例的用于确定数字资源项的平衡度的系统200的结构示意图。系统200包括:初始化装置201、排序装置202、划分装置203以及计算装置204。其中,初始化装置201对用于存储了网络内所有用户设备的数字资源项的交互记录的数据库文件进行解析,以确定网络内用户设备的设备数量和每个用户设备当前所具有的数字资源项的数量。数据库文件包括用于存储交互记录的表结构,所述表结构包括以下属性:区块高度、交互时间、交互标识、数字资源项的数量、交互提供方、交互接收方以及资源类型。例如,在hive中保存网络内所有用户设备的数字资源项的交互记录。交互记录可以包括多条记录,并且每条记录均具有区块高度、交互时间、交互标识、数字资源项的数量、交互提供方、交互接收方以及资源类型等属性。此外,数据库文件包括网络内所有用户设备中每个用户设备的标识符的列表。在这种情况下,通过对列表中每个用户设备的标识符,可以确定网络内用户设备的设备数量。

根据统计时间区间的起始时间处每个用户设备所具有的数字资源项的数量和用于存储交互记录的表结构中的每条记录来确定统计时间区间的结束时间处每个用户设备当前所具有的数字资源项的数量。例如,统计时间区间为5天,并且起始时间为2015年7月15日。那么,首先确定2015年7月15日每个用户设备所具有的数字资源项的数量。然后,对2015年7月15日至2015年7月20日之间的每条记录进行解析,以确定5天的统计时间区间内的所有交互记录。最后,根据5天的统计时间区间内的所有交互记录和2015年7月15日每个用户设备所具有的数字资源项的数量确定2015年7月20日每个用户设备所具有的数字资源项的数量。将每个用户设备所具有的数字资源项的数量作为每个用户设备当前所具有的数字资源项的数量。

排序装置202按照数字资源项的数量的降序顺序对网络内的每个用户设备进行排序,以获得用户设备的设备列表。在替代的方案中,还可以按照数字资源项的数量的升序顺序对网络内的每个用户设备进行排序。

划分装置203将设备列表中的所有用户设备分为第一部分和第二部分,其中第一部分包括数字资源项的数量最多的第一预定数量的用户设备,将第一预定数量的用户设备中每个用户设备确定为计算节点。例如,将设备列表中的所有用户设备中包括数字资源项的数量最多的1000个用户设备中的每个用户设备确定为计算节点。优选地,计算节点是用于计算数字资源项的平衡度的基本单元。其中第一部分中所有用户设备中每个用户设备的数字资源项的数量均大于第二部分中所有用户设备中任意用户设备的数字资源项的数量。由于第一部分中的每个用户设备是数字资源项的数量最多的用户设备的集合,因此第一部分中所有用户设备中每个用户设备的数字资源项的数量均大于第二部分中所有用户设备中任意用户设备的数字资源项的数量。在将第一预定数量的用户设备中每个用户设备确定为计算节点之后,将第一预定数量的用户设备中每个用户设备的数字资源项的数量确定为相应的计算节点的数字资源项的数量。例如,在将数字资源项的数量最多的1000个用户设备中的每个用户设备确定为计算节点后,将1000个用户设备中的每个用户设备的数字资源项的数量确定为相应的计算节点的数字资源项的数量。

此外,本申请根据预先设定的配置文件来确定第一预定数量和第二预定数量。例如,配置文件中记载了第一预定数量或第二预定数量为500、800、1000或1500等。或者,本申请根据网络内用户设备的数量来确定第一预定数量和第二预定数量。例如,当网络内用户设备的数量大于1亿时,将第一预定数量和第二预定数量均确定为1000,或者当网络内用户设备的数量大于1千万并且小于1亿时,将第一预定数量和第二预定数量均确定为800。

划分装置203将第二部分中的用户设备分为第二预定数量的用户设备组,并将第二预定数量的用户设备组中每个用户设备组确定为计算节点。其中,将第二部分中的用户设备分为第二预定数量的用户设备组是按照第二部分中的用户设备的数字资源项的数量的降序顺序进行分组的。即,第1组中每个用户设备数字资源项的数量大于第2组中任意用户设备数字资源项的数量,并且依次类推。在将第二预定数量的用户设备组中每个用户设备组确定为计算节点之后,将第二预定数量的用户设备组中每个用户设备组内所有用户设备的数字资源项的数量的平均值作为相应的计算节点的数字资源项的数量。举例来说,在将第二部分中所有用户设备分为1000个用户设备组之后,确定1000个用户设备组各自所包括的所有用户设备的数字资源项的数量的平均值。将1000个用户设备组各自所包括的所有用户设备的数字资源项的数量的平均值作为相对应的计算节点的数字资源项的数量。

计算装置204基于第一预定数量的计算节点和第二预定数量的计算节点进行数字资源项的平衡度计算,将计算得到的平衡度作为网络内所有用户设备的数字资源项的平衡度。其中基于第一预定数量的计算节点和第二预定数量的计算节点进行数字资源项的平衡度计算包括:

使用以下公式来计算所有计算节点的数字资源项的平衡度,

其中,n为计算节点的总数量,u为所有计算节点的数字资源项的数量的平均值,yj为第j个计算节点,yi为第i个计算节点,其中0<j≤n,0<i≤n。

举例来说,当用户设备的数量为162565838个时,若直接对这些用户设备进行数字资源项的平衡度的计算,则耗时将以天为单位,非常不便。通过本实施例的上述方式,将所有用户设备按照数字资源项的数量从大到小排序后,将1000名以后的用户设备分为1000组,前1000名用户设备保持不变,共得到2000个计算节点或2000组数据。这是因为,在网络中,数字资源项的特点是头部的用户设备占有的量极大并且区别极大,越往后的用户设备的数字资源项越小并且越相近。如此,将原本总数为162565838的用户设备数量简化为了2000,计算量极大减小,并且结果误差极小。

现有技术中需要对162565838个用户设备的数字资源项进行两两相减并取绝对值。但是,在本申请中,对2000个计算节点或2000组数据进行上述处理,即,将2000组数据两两相减并取绝对值后,乘以相减的组内的用户设备数量,即得到了原本需要将两个组内的数据两两相减的数据。若yi、yj组内的地址数分别为m、n,使用直接两两相减的计算方法需要进行m*n次计算,用本申请所提供的方法仅需进行一次相减、一次结果乘以m的计算、一次结果乘以n的计算,共三次计算。

图3为根据本发明实施例的计算数字货币的基尼系数的系统300的结构示意图。在本实施例中,以计算数字货币的基尼系数为例进行说明。系统300包括:持币量计算模块301、聚合持币地址模块302和基尼系数计算模块303。其中,持币量计算模块301根据区块链的交易数据,计算出每个地址(用于代表每个人或每个用户)按每个月变化的最终持有的币,即得到基尼系数所描述的每个人持有的“财富”。

聚合持币地址模块302用于简化基尼系数的计算量。现有的基尼系数的计算方法中,直接计算法需要计算的地址数量巨大,导致直接计算会以天为单位得到结果。数字货币的持币量满足以下特点:头部占有的数字货币量极大,且数量差别大,之后逐渐差别接近,尾部有极大量的持有量接近于0的地址。针对这个特点,本申请将所有地址排序后分组,取每组的平均值后计算基尼系数。并且,本申请的方法对基尼系数的计算误差很小。

基尼系数计算模块303,根据下面的计算公式以大数据手段来计算数字货币的基尼系数:

其中,n为样本数量(即所有地址的地址数量),u为所有地址所持有的数字货币的平均值,y为每组或每个地址的持币量。系统300计算出每组的y值(记作y1、y2、……yi、yj),以此为依据分别计算出n和u,然后计算y集合的笛卡儿积,最后计算出g。

以数字货币eth为例介绍系统300计算数字货币的基尼系数的过程。系统300在在hive中保存了数字货币的交易记录的表。表的结构包括:区块高度、交易时间、交易id、交易量、交易输出方、交易输入方以及币种。系统300得到每个地址的持有数字货币的数据。例如,最终得到地址数为162565838个,即代表能够持有数字货币的用户或账户有162565838个。系统300将所有地址按持有数字货币的持币量从大到小进行排序,并将排序在1000名以后的所有地址分为1000组(即,从排序为1001名的地址开始),而排序在前1000名的地址保持不变。共得到2000组数据。这是因为根据数字货币持币量的特点,头部占有的量极大并且区别极大,越往后的地址的持币量越小并且越相近。如此,系统300将原本总数为162565838的地址数简化为了2000个(1000个单独的地址和1000个组)。因此计算量极大减小且结果误差极小。

系统300按照计算式

计算数字货币的基尼系数。其中n为总地址数,即162565838,u为所有地址持币量的平均值。现有技术中计算复杂性在于

现有技术中需要对162565838个地址的持币量进行两两相减并取绝对值。而系统300采用得到的2000个数据进行基尼系数的计算。将这2000个数据两两相减并取绝对值后,乘以相减的组内的地址数,即得到了现有技术中需要将两个组内的数据两两相减的数据。若yi和yj组内的地址数分别为m和n,则现有技术使用直接两两相减的计算方法需要进行m*n次计算。本发明的系统300仅需进行一次相减、一次结果乘以m的计算、一次结果乘以n的计算,共三次计算。

图4为根据本发明实施例的计算数字货币的基尼系数的方法400的流程图。方法400包括如下步骤:

步骤401:将数字货币的区块链的转账记录导入hive。转账记录可以包括:转出地址、转入地址、交易量、区块高度、交易时间、交易id、交易量以及币种。

步骤402:通过sql计算每个地址的数字货币的持币量。以下为sql的源代码示例:

其中以“eth”为例,计算“eth”的基尼系数。_time_用于控制计算截止到某个时间点的持币量,改变此值即可计算不同时间范围的持币量。计算中排除了交易量过小的交易(小于0.000001)。具体计算逻辑为,选出截止到_time_的交易记录,排除交易量极小的交易,为转出地址减去交易量,为转入地址加上交易量。

步骤403:将所有地址依据持币量从大到小排序。前1000个地址不变,并且将随后的所有地址分为1000组。

步骤404:计算后1000组数据的每组平均持币量以及2000组数据的平均值。

步骤405:将前1000个数据构建为集合a,并且将后1000组数据构建为集合b。将集合a和集合b合并为集合c。将集合c内的数据两两相减,取绝对值(即计算式中的|yj-yi|,y为每个组的平均值),并将绝对值乘以yi和yj组内的地址数。即若y为集合a内的元素,则乘以1,若y为集合b内的元素,则乘以b中每组所包含的地址数。此过程即是计算c集合与c集合的笛卡儿积。步骤405是为了简化以下公式的计算并且使计算的误差降低:

步骤406:根据以下公式进行计算

将步骤405的结果累加,除以2n2u,此处n为总地址数,u为所有地址持币量的平均值。

步骤406的sql可写为:

由于数字货币持币量的特点,头部的占有比例非常高,之后的长尾甚至趋近于0。故保留前1000个地址,后面的地址分为1000组,并且计算每组间的差值时乘以组内包含的地址数,即可近似地获得以下公式的值:

通过方法400可得到如图5所示的,按月份变化的eth的基尼系数走势图数据。图5为根据本发明实施例的计算结果的示意图,其中横坐标为时间,并且纵坐标为基尼系数。使用本发明所述的计算基尼系数的方法,将原来的指数级别的复杂度化简为了常数级,并且对误差的影响很小。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1