[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 如图1所示,本发明提供了一种基于图计算的比特币账户聚类方法,本实施方式主要提供一种全量扫描分析整个比特币区块链的交易网络的技术方案,能够精准的识别所有的主体单位,并能够对这些主体单位交易行为进行画像,对有异常的组织进行重点监控,从而达到维护行业安全,健康发展的目的。
[0044] “图计算”是以“图论”为基础的对现实世界的一种“图”结构的抽象表达,以及在这种数据结构上的计算模式。通常,在图计算中,基本的数据结构表达就是:G=(V,E,D);V=vertex(顶点或者节点);E=edge(边); D=data(权重)。
[0045] 图数据结构很好的表达了数据之间的关联性,因此,很多应用中出现的问题都可以抽象成图来表示,以图论的思想或者以图为基础建立模型来解决问题。
[0046] 而在本实施方式中,由于区块链数字货币系统允许用户自由生成多个钱包地址,用户可以采用不同的钱包地址进行交易,以便减少单个钱包地址携带的用户交易特征,因此,通过分析交易记录从大量假名中找出隶属于同一个用户的假名,并分析出特定用户的交易规律,有助于推测用户的身份信息。
[0047] 具体包括以下步骤:
[0048] 步骤100、下载运行比特币节点的客户端,并同步整个网络数据,提取比特币的交易数据;
[0049] 步骤200、将所述交易数据解析成结构化数据,并收集所述结构化数据中的特征参数。
[0050] 在此步骤中,所述结构化数据的特征参数包括每项交易数据的发起人钱包地址、接收人钱包地址、交易发起时间和交易结束时间;
[0051] 所述数据集群中的结构化数据之间形成定点和边的拓扑关系,所述发起人钱包地址和接收人钱包地址为定点,所述交易发起时间和交易结束时间分别为两个定点之间的边数据。
[0052] 所有的所述结构化数据之间的特征参数构建成超大图网络,所述图计算服务对所述超大图网络的定点进行相关性聚类遍历以得到所述超大图网络的联通子图。
[0053] 超大图网络由大量的定点以及连接两个定点的边组成,且在正常的区块链数字货币系统中,一个个体仅申请一个钱包地址进行交易,而只有在非法操作的目的才会申请大量的钱包地址进行交易,以减少单个钱包地址携带的用户交易特征,基于此,本实施方式利用图计算先从超大图网络内截取多个联通子图。
[0054] 同一个联通子图内的某一个定点与其他的定点之间存在一对多的关系,因此也就是说与同一个定点连接的多个定点可能属于同一个用户,通过对多个定点进行遍历溯源和监控,从而可以有效的推测同一个用户的身份信息。
[0055] 步骤300、将所述结构化数据的特征参数倒入数据集群中。
[0056] 步骤400、使用图计算服务对所述数据集群的所有特征参数进行扫描和特征学习,得出比特币聚类结果。
[0057] 在所述步骤400中,所述图计算服务对所述数据集群的所有数据进行扫描和特征学习的实现步骤具体为:
[0058] 步骤401、收集比特币交易的每一项交易数据,并且确定每一项交易数据的发起人和接收人,且所述发起人和接收人通过定点和边点关系建立交易模型并形成具有交易关系的拓扑网络图。
[0059] 一项所述交易数据内的发起人同时可作为另一项交易的接收人,且一项交易内的接收人同时可作为另一项交易的发起人,且所述超大图网络由于所有交易的发起人和接收人关系形成拓扑关系。
[0060] 此步骤中的拓扑网络图即为前文中的联通子图,本实施方式利用图计算系统,计算出每个定点A,A1,A2……(即发起人钱包地址)连接的多个定点B、B1、B2……(即接收人钱包地址),再对多个定点B、B1、B2……进行溯源来确定同一个用户的多个接收人钱包地址,在以多个定点B、B1、B2…… (即接收人钱包地址)为第一视角来确定与其连接的多个定点A,A1,A2……,通过对多个定点A,A1,A2……进行溯源来确定属于同一个用户的发起人钱包地址。
[0061] 步骤402、确定所述拓扑网络图的每一个节点编号并建立比特币账户字典,将所述节点编号当做每一项交易的节点组号。
[0062] 首先,设定所述拓扑网络图每一条连线的两个节点编号,每一个连线上的两个节点编号分别为一项交易的发起人编号和该项交易的接收人编号;
[0063] 然后,设定扫描顺序,按序扫描所述拓扑网络图以建立比特币账户字典,并确定所述拓扑网络图的节点组号。
[0064] 另外,按序扫描所述拓扑网络图以建立比特币账户字典的实现步骤为:
[0065] 第一,优先确定拓扑网络图的定点关系,即确定两个定点之间的发起人和接收人,这样可以确定每项交易的矢量关系,在建立比特币账户字典时,账户字典内的每个集合即为一项交易记录,其中将发起人定义为一个集合的第一个元素,而将接收人定义为一个集合的第二个元素。
[0066] 第二,自定义选择所述拓扑网络图的扫描顺序,根据所述拓扑网络图的节点组号的实现规则确定节点组号。
[0067] 一个拓扑网络图的两个相邻的定点均可以产生一个集合,而对多个集合的扫描顺序可以根据用户自定义选择。
[0068] 其中,确定所述拓扑网络图的节点组号的方式具体为:选择节点编号当做节点组号,具体的实现规则为:可以选择每一条连线的任意一个节点编号当做这条连线上两个节点的组号;也可以直接从所述比特币账户字典内选择认定某一个节点编号作为节点的组号。
[0069] 另外,按序扫描所述拓扑网络图的每一条连线,且依次建立每一条连线的比特币账户字典。
[0070] 具体的,建立比特币账户字典的实现步骤为:
[0071] ①确定对拓扑网络图的扫描顺序后,可以选择一个集合内的任一个节点编号作为节点组号;
[0072] ②初步扫描所述拓扑网络图的第一条连线,并选择第一条连线的两个节点编号中的一个作为节点组号,根据节点组号的大小顺序来建立第一个比特币账户字典;
[0073] ③扫描所述超大图网络的第二条连线,并选择第一条连线的两个节点编号中的一个作为节点组号,将节点组号按序生成新元素且将所述新元素添加到所述第一个所述比特币账户字典内形成第二个所述比特币账户字典;
[0074] ④重复扫描所述超大图网络的其他连线,依次生成新元素且将所述新元素添加到所述第一个所述比特币账户字典内以最终形成包含所有节点编号的比特币账户字典。
[0075] 例如图2所示,两个拓扑网络图存在的矢量关系为(c1,c2)、(c1,c4)、(c2, c3),以及(b1,b2)、(b2,b3);设定按照(c1,c2)–>(c1,c4)–>(c2,c3)–>(b1, b2)–>(b2,b3)的顺序扫这个图,选择节点编号当做节点组号的实现规则,假设都选择小的节点编号作为节点组号。
[0076] 扫到第1条边(c1,c2)时,建立字典{c1:c1,c2:c1}
[0077] 扫到第2条边(c1,c4)时,建立字典{c1:c1,c2:c1,c4:c1}
[0078] 扫到第3条边(c2,c3)时,建立字典{c1:c1,c2:c1,c3:c2,c4:c1}
[0079] 扫到第4条边(b1,b2)时,建立字典{c1:c1,c2:c1,c3:c2,c4:c1,b1:b1, b2:b1}[0080] 扫到第5条边(b2,b3)时,建立字典{c1:c1,c2:c1,c3:c2,c4:c1,b1:b1, b2:b1,b3:b2}
[0081] 当完全扫描成功后,初步建立了一个比特币账户字典,里面包括拓扑网络图的每一个节点,可以看到,节点c3的组号为c2,和节点c1、c2、c4不一致。按照当前的结果,c3被认定为与其它3个c节点都不连通。所以目前还没有完成分组。为了解决这个问题,当我们再次遍历字典时,需要对每个节点得到的组号再次进行寻找组号的操作,直到得到的组号完全相同。
[0082] 也就是说,优先选择节点组号后,建立的比特币账户字典包含了拓扑网络图的每一个节点,且还可以对比每个集合对应的节点组号,如果一个比特币账户字典内的节点组号不同,则认为该节点与同一个网络拓扑图内的其他节点不连通,因此还没有找到网络拓扑图的节点组号,即该节点无法推断与其连接的其他节点是否由同一个账户持有,因此为了解决这个问题,当我们再次遍历字典时,需要对每个节点得到的组号再次进行寻找组号的操作,直到得到的每个集合内的节点组号相同。
[0083] 步骤403、根据组号之间的推理重演再分组,重新确定节点组号直至找到所述组号祖先以保证比特币账户字典中每个节点的节点组号一致,确定所述比特币的聚类结果。
[0084] 在步骤403中,初步建立的所述比特币账户字典内包含每一条连线的节点编号,当所有节点编号对应的组号不一致时,则认定所述拓扑网络图内的所有节点编号不连通且未完成分组。
[0085] 当认定所述拓扑网络图内的所有节点编号不连通且未完成分组时,重复步骤402和步骤403,重新遍历所述拓扑网络图时,利用图计算的超步迭代模型对每个节点得到的所述节点组号再次深度寻找组号,直至所有节点的所述节点组号均相同,图计算的超步迭代模型的计算过程是由一系列被称为“超步”的迭代组成的。
[0086] 在每个超步中,每个顶点上面都会并行执行用户自定义的函数,该函数描述了一个顶点V在一个超步s中需要执行的操作
[0087] 该函数可以读取前一个超步(S‑1)中其他顶点发送给顶点V的消息,执行相应计算后,修改顶点V及其出射边的状态,然后沿着顶点V的出射边发送消息给其他顶点,而且,一个消息可能经过多条边的传递后被发送到任意已知ID 的目标顶点上去这些消息将会在下一个超步(S+1)中被目标顶点接收,然后象上述过程一样开始下一个超步(S+1)的迭代过程。
[0088] 当节点组号相同时,则认为与其连接的其他节点可通过溯源的方式监控是否有同一个用户持有。
[0089] 因此本发明的具体方案通过提供部署在多个区域骨干网络上的数据集群服务,然后在这个集群服务中运行比特币交易网络,再使用图计算服务对整个网络对全量数据进行扫描和特征学习,最后做出聚类结果。
[0090] 以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。