高峰,毛洪亮,吴震,等.轻量级比特币交易溯源机制[J].计算机学报,2018,41(5):989-1004.


比特币技术发展迅速,交易规模逐步攀升,引起国内外广泛关注.比特币技术具备去中心化和匿名化特征,使得比特币交易者的身份难以识别,为不法行为(如毒品交易、比特币勒索病毒等)提供了隐匿空间.该文提出了一种针对比特币交易的溯源机制,能够追踪交易信息在网络层的传播路径,从而将交易中的匿名比特币地址和发起交易节点的IP地址相关联.通过设计一种基于主动嗅探的邻居节点识别方法,溯源机制支持轻量级监测,而且相比现有溯源技术具有更好的实用性.文中针对比特币系统开发了溯源程序,从有效性、准确率、适用范围等方面对其进行测试与分析评估.实验结果表明,比特币网络中有69.9%的服务器节点适用于这种溯源机制,能够获得召回率50%、准确率31.25%的溯源精度,优于现有的交易溯源方法,具有较强的实践意义和使用价值.
关键词:比特币;对等网络;溯源;区块链;反匿名


  • 针对 服务器节点。因为其能实现基本交易功能,又能够为其他节点提供信息中转、交易验证等服务的比特币服务器。也就是图中的目标节点
  • 邻居节点是指目标节点在比特币网络中相邻的节点,比特币网络中,每个节点维持不超过125个邻居节点。2阶邻居节点是指邻居节点的邻居节点,以此类推。
  • 探针节点是指部署了溯源程序的节点,探针节点负责从比特币网络传输的交易信息中筛选出由目标节点始发的交易信息。围绕目标节点建立监测网络,将持续搜集比特币网络中的交易信息针对一个比特币交易,探针节点将从不同节点收到多个版本。虽然每个版本的交易内容相同,但是由于不同节点转发的交易时间不同(越靠近始发节点的节点转发交易越早),每个版本的交易信息到达探针节点的时间不同。因此,探针节点可以根据时间排序推测交易信息在网络中的传播路径

1 确定溯源目标

  • 探针节点可以利用比特币技术中的节点发现机制搜集比特币网络中服务器节点的信息。
  • 首先,探针节点将连接比特币种子节点(硬编码在比特币客户端程序中的节点IP地址)。
  • 然后向种子节点索取邻居节点信息.通过递归索取,探针节点最终将获得比特币网络中大部分在线服务器节点的信息。
  • 从中选择感兴趣的目标节点进行交易溯源。

2 建立监测网络

(1)探针节点向目标节点发送连接请求。
(2)连接成功后,向目标节点发送“GETADDR”指令,索取目标节点存储的节点地址列表。
(3)探针节点对获得的地址列表中的所有节点重复步骤(1)和步骤(2)。

3.1 监测交易信息

主动嗅探技术
(1)部署一台可控节点,使用比特币系统命令“connect ip:port”,使可控节点只连接目标节点,即目标节点是可控节点唯一的邻居节点.
(2)使用可控节点创建比特币交易并记录交易ID。
(3)利用探针搜集比特币网络中的交易信息.根据第2步记录的交易ID筛选出由可控节点创建的交易的传播路径.
(4)针对第(3)步获得的交易传播路径,研究节点排序规律,并根据排序结果为每个转发交易的节点计算分值.排序越靠前,分值越高。
(5)重复第(2)~(4)步,分值累加。分值前8的节点为邻居节点。

3.2 推测邻居节点

探针节点启动后将记录到达探针节点的每一条交易信息,包括交易的哈希值、来源IP和到达时间.探针节点将搜集到的交易信息按照交易哈希分类,并对每一类交易按照交易到达 探针的时间 进行排序,然后从排序中挑选出目标节点和邻居节点的排序信息组成交易传播路径

4 计算匹配值

  • 匹配值反映了交易传播路径和目标节点网络拓扑的吻合度.匹配值越高,交易信息越有可能是由目标节点始发.理想情况交易的始发节点首先转发交易,始发节点的邻居节点将第二批转发交易,其他n阶邻居节点依次推后。因此,可以依据特定交易的传播路径是否满足上述规则来判断特定交易是否由目标节点始发。
  • 具体的计算公式不再赘述,就是为目标节点和8个邻居节点取一个系数(系数如何取我认为作者没说清楚-_-),计算匹配值。并且为了减少异常数据的干扰可以多次监测取平均值。包括多探针优化(x个探针每个交易将产生x个匹配值)和多次交易优化(相同输入地址的y笔交易产生y个匹配值)。


图中是作者在做实验时的数据。最后一行就是匹配值。“Target”代表目标节点转发交易的排序,“N1~N8”代表8个邻居节点转发交易的排序。

5 输出疑似交易

为了从大量交易中筛选出由目标节点始发的交易,我们设计阈值作为评判标准,当 G_opt的值大于阈值时认为此交易是疑似交易。
阈值的选择
使用准确率、召回率和F值作为评估条件。F值是准确率和召回率的调和平均值,能够综合反映溯源效果,因此我们将F值作为评判标准。在选定阈值最优解时,我们通过实验针对不同的阈值计算准确率、召回率和F值,然后选择F值最高的阈值作为阈值的最优解。

准确率=疑似交易中正确交易条数/疑似交易总数
召回率=疑似交易中正确交易条数/发出的交易数量【召回率辨析
F值=准确率 × 召回率 ×2/(准确率+召回率)


针对非交易型数据区块链技术,本溯源机制难以实现。
本文让我对区块链的结构和缺陷有了更进一步的理解。

 posted on 2020-07-19 22:28  捞起月亮的渔民  阅读(717)  评论(0编辑  收藏  举报