paint-brush
使用此工具在不到 1 分钟的时间内分析近 10 亿笔比特币交易by@krieker
1,087
1,087

使用此工具在不到 1 分钟的时间内分析近 10 亿笔比特币交易

Alina Arsamakova5m2023/05/26
Read on Terminal Reader

在这篇文章中,我们将讨论一种无人知晓的秘密区块链分析工具,它可以以极快的速度从区块链中查询有用的数据。我们将提供示例查询,人们可以通过这些查询从区块链中获取有用的数据,并且我们将讨论允许以如此高的速度进行分析的工具架构。
featured image - 使用此工具在不到 1 分钟的时间内分析近 10 亿笔比特币交易
Alina Arsamakova HackerNoon profile picture
0-item
1-item
2-item

本文的主图是由 HackerNoon 的AI Image Generator通过提示“白板上的区块链交易哈希”生成的



在这篇文章中,我们将讨论一个无人知晓的秘密开源工具,它可以以极快的速度从区块链中查询有用的数据。


我们将提供示例查询,人们可以通过这些查询从区块链中获取有用的数据,并且我们将讨论允许以如此高的速度进行分析的工具架构。


不过在此之前,让我们先谈谈为什么您需要首先分析来自区块链的交易。


每笔比特币交易都包含

  1. 发件人地址
  2. 收件人地址
  3. 发送金额


但是也


  1. 发件人余额
  2. 硬币在发件人钱包中休眠了多长时间
  3. 收款人余额


从上面,你可以推断并获得关于


  • 发件人在发送之前通常会保留他们的比特币多长时间
  • 区块链上所有钱包的平均余额是多少
  • 平均交易规模


以及 100 多种不同的其他分析。


如您所见,与传统市场相比,我们可以获得的有关比特币市场的数据要全面得多。最重要的是,普通人可以访问它。相比之下,只有对冲基金和银行才能访问传统市场中的此类数据。


因此,通过分析比特币区块链上的交易,可以更好地了解比特币市场,并根据这些数据做出更好的投资决策。


除了将区块链分析应用于交易和投资之外,还有多种其他方式可以使用区块链分析:


  • 钱包地址去匿名化
  • 识别非法活动
  • 遵守


那么这个工具是如何工作的呢?


BlockSci的架构

BlockSci旨在解决现有区块链分析工具的三个痛点:


  1. 表现不佳,
  2. 能力有限
  3. 和繁琐的编程接口。


性能不佳是 BlockSci 最擅长解决的痛点。例如,分析比特币交易的蛮力方法也行得通。您可以在您的计算机/服务器上运行一个比特币节点,并直接查询您自己的节点。但这种方法非常缓慢,可能需要数年时间才能处理完所有 10 亿比特币交易。


其他现有工具也存在性能不佳的问题,尤其是在使用通用图形数据库时,这使得它们的顺序查询速度要慢数百倍,而所有查询(包括图形遍历查询)的速度要慢得多。


资料来源:https://www.usenix.org/system/files/sec20-kalodner.pdf


BlockSci 的设计主要基于这样一个事实,即在区块链中,过去的区块无法更改,并且区块链上出现的所有新数据都是仅附加的。


这意味着事务数据库的 ACID 属性是不必要的,这使得内存分析数据库成为自然的选择。使用内存而不是磁盘存储可以显着加快数据处理速度,这正是我们所需要的。


实际上,BlockSci 是将整个区块链加载到内存中进行计算,避免了分布式处理的方式。这是因为区块链数据是图结构的,因此很难有效地划分。


它的设计者的猜想是,使用传统的分布式事务数据库进行区块链分析具有无限的 COST(优于单线程的配置),因为任何级别的并行性都无法优于优化的单线程实施。


它还应用了多种技术,例如将哈希指针转换为实际指针和删除重复地址数据,以进一步提高速度并减小数据大小。


为了从节点导入数据,BlockSci 使用自己的高性能导入器直接读取磁盘上的原始数据,而不是从内置的 JSON-RPC 接口。即便如此,通常需要 24 小时才能从节点导入和索引所有数据。不过,一旦数据被解析,实际的分析就会很快。


区块链存储在磁盘上的方式不容易分析。它们被用来做其他事情,比如检查交易和在大网络中查找数据。它们还通过在磁盘上以基本格式保存块来节省内存空间。但是我们需要更改数据以使其适合内存,因此 BlockSci 有一个解析器可以处理这一步。确保此解析器得到很好的优化。


该工具实现如此高速度的另一种方式是“布隆过滤器优化”。布隆过滤器是一种概率数据结构,允许测试集合中的成员资格。在区块链的上下文中,它存储所有可见地址并确保现有地址查找的正确性,同时最大限度地减少不存在地址的数据库查询数量。这是基于以下事实实现的:大约 88% 的输入花费了在最后 4000 个区块中创建的输出,并且只有 8.6% 的比特币地址被多次使用。


允许 BlockSci 实现高分析速度的最后一个最重要的优化是数据布局结构,它既提供高分析速度又不会对内存造成太大影响。


BlockSci 的数据布局将可用数据分为三类,并以混合方案组合。大多数分析都需要核心事务图,并且始终加载到内存中,以基于行的格式存储。仅部分分析所需的脚本和附加数据以混合(部分基于列,部分基于行)格式存储并按需加载。通过哈希查找单个交易或地址的索引存储在磁盘上的单独数据库中。


此外,它尽可能对数据字段使用固定大小的编码,优化引用位置的内存布局,将输出链接到输入以实现高效遍历,并共享内存映射和并行性。



最后,这里是在一分钟内找到费用>0.1 比特币的所有交易的查询。


 chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()


概括

BlockSci 是一种区块链分析工具,可以快速查询来自区块链的有用数据。通过分析比特币交易,可以更好地了解市场并做出更好的投资决策。


BlockSci的架构是基于区块链数据是图结构且难以有效分区的特点,因此将整个区块链加载到内存中进行计算。它应用了多种技术来提高速度,包括将散列指针转换为实际指针、删除重复地址数据以及使用布隆过滤器优化。数据布局结构既提供了高分析速度,又不会占用太多内存。