一种基于多输入地址聚类的比特币地址增量聚类方法与流程

文档序号:24120266发布日期:2021-03-02 10:54阅读:214来源:国知局
一种基于多输入地址聚类的比特币地址增量聚类方法与流程

[0001]
本发明涉及信息技术及安全技术领域,尤其涉及比特币地址聚类,具体涉及一种基于多输入地址聚类的比特币地址增量聚类方法。


背景技术:

[0002]
比特币是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的加密货币。它不依靠特定机构发行,也不依靠特定机构运维,任何人可以在任意电脑上用比特币直接与其他人进行交易,不需要第三方中介。因此不存在一个拥有所有用户身份信息的中心节点。比特币中的交易是通过双方的比特币地址进行,比特币地址通常是一串无意义的数字,而通过该数字的表面信息本身并不能将其对应某一个具体的对象的真实身份。比特币地址身份鉴别方法的关键在于将比特币地址通过启发式聚类算法划分为到不同的用户地址集群中,以此来鉴别比特币地址身份。
[0003]
当前比特币地址聚类方法大多采用多输入交易的地址聚类和找零交易的地址聚类两种启发式算法。但随着当前的区块链交易网络规模日益庞大,具体体现为交易数量多,交易规模差别较大,再加上比特币协议的不断更新,交易模式发生变化,使得传统的启发式聚类算法的结果不够理想,并且传统聚类算法没有保存聚类信息的机制,导致每次需要将所有比特币地址进行聚类,聚类过程性能不够好,聚类方法不够灵活。
[0004]
综上,目前现存的比特币地址聚类方法均不理想,因此需要一种行之有效基于多输入地址聚类的比特币地址增量聚类方法。
[0005]
本发明针对现有技术的缺陷,基于多输入地址的启发式聚类算法实现了增量聚类,并且通过比特币区块链的信息和链下信息的结合,平衡由聚类算法产生的错误集群部分,增加了聚类算法的灵活性,提高了聚类算法的准确率和效率。


技术实现要素:

[0006]
针对以上问题,本发明提出一种基于多输入地址聚类的比特币地址增量聚类方法,以解决聚类效率不高、聚类结果不理想的问题,该方法包括如下步骤。
[0007]
(1)对比特币交易建立三级复杂网络;
[0008]
(2)读取以前聚类信息,包括集群的id和集群的地址集合;
[0009]
(3)调用增量聚类算法,基于多输入地址聚类算法开始增量聚类;
[0010]
(4)保存新更改的聚类信息;
[0011]
(5)对链下信息进行标签收集,组成互斥对l,合并入加有互斥对的地址集群;
[0012]
(6)通过概率模型的可能性函数平衡启发式聚类和互斥对产生的集群中错误的部分。
[0013]
进一步,步骤1的具体步骤包括:
[0014]
将比特币交易映射为petri网中的变迁t;将交易的输入和输出映射为petri网中的输入库所p;将比特币交易的流向映射为库所和变迁之间的有向弧得
到比特币交易petri网;将地址和交易输出点之间的关系映射为地址与库所p的连接关系,得到比特币交易的三级复杂网络。
[0015]
进一步,步骤3的具体步骤包括:
[0016]
步骤3.1,输入待聚类的地址集合,然后从集合中依次取出集合中的地址;
[0017]
步骤3.2,若集合为空,那么输出带有类id和类id变动信息的地址,否则从集合中依次取出地址,判断地址是否未聚类;
[0018]
步骤3.3,若已聚类那么执行步骤3.1,若未聚类,就调用地址簇发现算法,查找该地址所在的类;
[0019]
步骤3.4,查找并确认该类的id;
[0020]
步骤3.5,将该id分配给该类中的地址;
[0021]
步骤3.6,标记类id发生变化的地址。
[0022]
进一步,步骤3.3的具体步骤包括:
[0023]
步骤3.3.1,输入地址a

,设一个地址集合和一个地址队列,将地址放入集合,将地址入队;
[0024]
步骤3.3.2,若地址队列为空,就输出地址聚类,否则地址出队,然后依次取出该地址的输出点p


[0025]
步骤3.3.3,若输出点未聚类,那么查找把p

当作输入的交易t


[0026]
步骤3.3.4,若能找到该交易,那么依次取出作为t

的输入。若输入对应的输出点未聚类,那么查找输出点映射的地址a”;
[0027]
步骤3.3.5,若地址集合未包括a”,那么将此地址添加到地址集合中,将a”入队,并将输出点设为已聚类。
[0028]
进一步,步骤5的具体步骤包括:
[0029]
步骤5.1,对公布有比特币地址的公共论坛和用户档案的网络进行信息的爬取,或者对比特币组织和系统程序进行人为分析,通过带有公司特定前缀的地址来识别用户。
[0030]
步骤5.2,将比特币组织区分为若干个类别:矿池、交易所、混币器和其他服务。将字典中的每个标签对应一个类别,一个地址可以具有不同类别的标签。设l={(a
i
,a
j
)}为互斥对的集合,其中地址a
i
和a
j
表示来自同一类别的不同标签或来自不同类别的标签。
[0031]
进一步,步骤6中,具体内容为:
[0032]
设可能性函数为:
[0033][0034]
其中a为比特币区块链中输入地址的有限集合,t
h
为多输入启发式算法产生的输入地址的集群,p为交易t∈t
h
满足多输入地址聚类算法的集合addr
h
(t)为一个集群的概率,q为两个地址(a
i
,a
j
)∈l由同一个账户控制的概率,所以l中任意一对地址为互斥对的概率为1-q,对于某些比特币地址s,表示存在一个集群a
l
,使得的概率。
[0035]
则本发明设计的log可能性函数为:
[0036][0037]
进一步,步骤6的具体步骤包括:
[0038]
步骤6.1,重新考虑区块链中的所有交易,在每个交易中,根据log可能性函数决定是否连接与所考虑交易t
j
的地址addr
h
(t
j
)相对应的集群。
[0039]
步骤6.2,设是属于addr
h
(t
j
)的所有集群的并集,为所对应的交易t
j
存在的集群。若合并与addr
h
(t
j
)对应的所有集群后,log可能性函数增量为正,那么就采用与addr
h
(t
j
)合并生成的集群。
[0040]
本发明的有益效果:
[0041]
本发明针对现有的技术的缺陷,实现了增量聚类,提高了地址聚类效率。然后将基于启发式聚类算法生成的地址集群和互斥对产生的地址集群通过概率模型平衡掉错误的部分,提高了地址聚类的准确率。
附图说明
[0042]
图1启发式地址增量聚类算法流程图
[0043]
图2地址增量聚类算法流程图
[0044]
图3地址族发现算法流程图
具体实施方式
[0045]
下面结合附图对本发明作进一步说明。
[0046]
如图1所示,本发明的实施包括如下步骤:
[0047]
(1)对比特币交易建立三级复杂网络。
[0048]
将比特币交易映射为petri网中的变迁t:将交易的输入和输出映射为petri网中的输入库所p;将比特币交易的流向映射为库所和变迁之间的有向弧得到比特币交易petri网;将地址和交易输出点之间的关系映射为地址与库所p的连接关系,得到比特币交易的三级复杂网络。具体地:
[0049]
(1-1)建立比特币区块链有向网络的形式化定义为五元组g=(a,p,t,f,γ),其中a={a1,a2,

,a
m
}为比特币区块链中输入地址的有限集合;p={p1,p2,

,p
n
}为比特币交易petri网中输入库所的有限集合;t={t1,t2,

,t
j
}为比特币交易petri网中变迁的有限集合;为库所和变迁之间的有向弧的有限集合;γ(p)表示与库所p映射的
地址。
[0050]
(1-2)建立关于比特币地址、输入库所和变迁的三级复杂网络。定义网络中的符号,设
°
t={p|(p,t)∈f}为变迁的输入库所的集合;
°
a={p|γ(p)∈a}为与同一地址相关联的输入库所的集合;p
°
={t|(p,t)∈f}为输入库所p的变迁的集合;a
°
={t|γ(p)=a^t∈p
°
}为输入库所映射到地址a上的变迁的集合;
*
t={γ(p)|p∈t
°
}为与t的所有输入库所相关联的地址集合。
[0051]
(1-3)依次取出每个区块中比特币交易t,添加进变迁的有限集合t={t}∪t。
[0052]
(1-4)对于交易t中每一个输出p,将β(p)设为锁定在输出中的比特币数量。将γ(p)设为从输出p的scriptpubkey字段中提取的地址a,将a添加进比特币区块链中输入地址的有限集合a={a}∪a。
[0053]
(1-5)对于交易t中的每一个输入p,添加进输入库所的有限集合p={p}∪p。将输入的有向弧添加进库所和变迁之间的有向弧的有限集合f=(p,t)∪f。
[0054]
(2)读取以前聚类信息。
[0055]
(3)如图2所示,调用增量聚类算法,基于多输入地址聚类算法开始增量聚类。具体如下:
[0056]
(3-1)输入待聚类的地址集合,然后从集合中依次取出集合中的地址。
[0057]
(3-2)若集合为空,那么输出带有类id和类id变动信息的地址,否则从集合中依次取出地址,判断地址是否未聚类。
[0058]
(3-3)若已聚类那么执行(3-1),若未聚类,如图3所示调用地址簇发现算法,查找该地址所在的类。具体地:
[0059]
(3-3-1)输入地址a

,设一个地址集合和一个地址队列,将地址放入集合,将地址入队。
[0060]
(3-3-2)若地址队列为空,就输出地址聚类,否则地址出队,然后依次取出该地址的输出点p


[0061]
(3-3-3)若输出点未聚类,那么查找把p

当作输入的交易t


[0062]
(3-3-4)若能找到该交易,那么依次取出作为t

的输入。若输入对应的输出点未聚类,那么查找输出点映射的地址a”。
[0063]
(3-3-5)若地址集合未包括a”,那么将此地址添加到地址集合中,将a”入队,并将输出点设为已聚类。
[0064]
(3-4)查找并确认该类的id。
[0065]
(3-5)将该id分配给该类中的地址。
[0066]
(3-6)标记类id发生变化的地址。
[0067]
(4)保存新更改的聚类信息。
[0068]
(5)对链下信息进行标签收集,组成互斥对l。具体如下:
[0069]
(5-1)主要分为主动收集和被动收集,被动收集:对公布有比特币地址的公共论坛和用户档案的网络进行信息的爬取;主动收集:对比特币组织和系统程序进行人为分析,通过带有公司特定前缀的地址来识别用户。
[0070]
(5-2)将比特币组织区分为若干个个类别:矿池、交易所、混币器和其他服务。将字典中的每个标签对应一个类别,一个地址可以具有不同类别的标签,不同集群也不可能有
相同类型的不同标签。设l={(a
i
,a
j
)}为互斥对的集合,其中地址和每对中都有来自同一类别的不同标签或来自不同类别的标签。
[0071]
(6)通过概率模型的可能性函数平衡启发式聚类和互斥对产生的集群中错误的部分。具体如下:
[0072]
设可能性函数为:
[0073][0074]
其中p为交易t∈t
h
满足多输入地址聚类算法的地址集合addr
h
(t)为一个集群的概率,q为两个地址(a
i
,a
j
)∈l由同一个账户控制的概率,所以l中任意一对地址为互斥对的概率为1-q,对于某些比特币地址s,表示存在一个集群a
l
,使得
[0075]
本发明设计的log可能性函数为:
[0076][0077]
具体如下:
[0078]
(6-1)重新考虑区块链中的所有交易,在每个交易中,根据log可能性函数决定是否聚合与所考虑的交易t
j
的地址addr
h
(t
j
)相对应的集群。
[0079]
(6-2)设是属于addr
h
(t
j
)的所有集群的并集,加入互斥对后的若合并与addr
h
(t
j
)对应的所有集群后,log可能性函数增量为正,那么就采用与addr
h
(t
j
)合并生成的集群,否则保留多输入地址聚类算法生成的集群,然后进行下一个交易的操作,最终得到带有链下信息标签类别的比特币地址集群。
[0080]
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技术所创的等效方式或变更均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1