#node #time #stats #per #fee #block #connection

bitcoinnode-stats

分析节点使用行为的工具

2个版本

0.1.16-alpha.02023年4月2日
0.1.12-alpha.02023年1月19日

#29#fee

Download history 82/week @ 2024-03-11 105/week @ 2024-03-18 167/week @ 2024-03-25 182/week @ 2024-04-01 77/week @ 2024-04-08 103/week @ 2024-04-15 110/week @ 2024-04-22 100/week @ 2024-04-29 125/week @ 2024-05-06 100/week @ 2024-05-13 99/week @ 2024-05-20 68/week @ 2024-05-27 78/week @ 2024-06-03 85/week @ 2024-06-10 85/week @ 2024-06-17 107/week @ 2024-06-24

355 每月下载量
40 个crate中使用 (7 直接)

MIT 许可证

1MB
2K SLoC

bitcoinnode-stats

这个Rust包是比特币系统的子组件,提供了收集和报告网络中节点统计信息的功能。

注意:此包是直接从C++到Rust的比特币核心的翻译的一部分。因此,一些函数体可能仍在翻译过程中。请注意,此系统在翻译过程完成后将可测试。

NodeStats 结构体表示单个节点的统计信息,包括节点版本、服务和最后一次被看到的时间。NodesStats 结构体包含一个 NodeStats 对象的向量,允许报告多个节点。 NodeStateStats 结构体为节点的状态提供额外的统计信息,包括连接数和活动线程数。

此包中的令牌没有特定的数学概念。

95> 我们想跟踪比特币节点哪些统计信息?

对于比特币节点,有几个统计信息可能非常有用,具体取决于你感兴趣的信息。以下是一些示例:

  1. 区块和交易吞吐量:这跟踪节点随时间处理的区块和交易数量。它可以给你一个关于网络总体使用情况和你的节点处理了多少负载的印象。

  2. 正常运行时间和停机时间:这跟踪你的节点在没有问题的情况下运行的时间(正常运行时间)和它已停机或遇到问题的时间(停机时间)。这可以帮助你识别节点或整个网络的任何可靠性问题。

  3. 对等连接:这跟踪你的节点随时间建立的连接数量。它可以给你一个关于你的节点与网络的连接程度以及你是否需要调整设置以建立更多连接的印象。

  4. 内存和磁盘使用:这跟踪你的节点随时间使用的内存和磁盘空间。这可以帮助你确定系统上的任何资源限制,并确定你是否需要优化节点的配置。

  5. 内存池大小:这跟踪了您节点内存池随时间的变化情况。它可以给您一个关于网络中未确认交易流量以及您的节点处理多少流量的概念。

  6. 费用估算精度:这跟踪了您的节点费用估算算法随时间的变化情况。这可以帮助您识别算法中的任何问题,以及是否需要调整以确保您的节点提供准确的费用估算。

这只是几个例子,根据您的具体需求和兴趣,还有许多其他可以跟踪的统计数据。

96>还有其他哪些呢?

以下是一些可能对跟踪比特币节点有用的附加统计数据

  • 运行时间:这会跟踪节点连续运行无任何中断的时间。它可以帮助识别稳定性问题和维护需求。

  • 区块验证时间:这会跟踪节点在接收到新区块后验证该区块所需的时间。它可以帮助识别性能瓶颈和资源利用问题。

  • 内存使用:这会跟踪节点随时间使用的内存量。它可以帮助识别内存泄漏和其他内存相关问题。

  • 磁盘使用:这会跟踪节点随时间使用的磁盘空间量。它可以帮助识别存储相关问题并帮助规划存储需求。

  • 交易处理时间:这会跟踪节点接收到新交易后处理新交易所需的时间。它可以帮助识别性能瓶颈和资源利用问题。

  • 网络延迟:这会跟踪节点从网络中的其他节点接收数据所需的时间。它可以帮助识别连接和网络问题。

  • 连接数:这会跟踪节点与其他网络中节点的连接数。它可以帮助识别网络拓扑问题和资源利用问题。

  • 带宽使用:这会跟踪节点在网络中发送和接收的数据量。它可以帮助识别带宽相关问题并帮助规划带宽需求。

  • 费用估算精度:这会跟踪节点费用估算算法与实际交易费用相比的准确性。它可以帮助识别费用估算算法中的问题并帮助优化交易处理。

  • 内存池大小:这会跟踪当前节点内存池(mempool)中未确认交易的数量。它可以帮助识别内存池相关问题并帮助优化交易处理。

97>这些指标的可接受值是什么?

与比特币节点相关的指标的可接受值将取决于具体指标。以下是一些例子

  • 区块高度:这应该是一个非负整数,表示节点所知当前最佳区块的高度。

  • 难度:这应该是一个正浮点数,表示比特币网络的当前难度。

  • 算力:这应该是一个正浮点数,表示比特币网络每秒的预估算力(以哈希为单位)。

  • 内存使用:这应该是一个非负整数,表示比特币节点当前使用的内存量(以字节为单位)。

  • 运行时间:这应该是一个非负整数,表示节点无中断运行的时间(以秒为单位)。

  • 对等节点:这应该是一个非负整数,表示节点连接的对等节点数量。

  • 交易:这应该是一个非负整数,表示节点处理的总交易数量。

  • 每秒交易量(TPS):这应该是一个正浮点数,表示节点在特定时间段内平均每秒处理的交易数量。

  • 内存池大小:这应该是一个非负整数,表示节点交易内存池(mempool)的当前大小。

  • 费用估算:这些应该是正浮点数,表示为了在特定数量的区块内确认交易所需的估算费用(以每字节satoshis为单位)。

98>它们的实际范围是多少?

各种比特币节点指标的可接受范围可能因具体实现、配置和网络条件而异。以下是一些常见指标的近似范围

  • 区块大小:比特币最大为4 MB,比特币现金最大为32 MB

  • 区块间隔:比特币为10分钟,比特币现金根据难度调整,在10分钟到20秒之间

  • 哈希率:变化范围很大,但对于比特币来说,可以以每秒埃哈希(EH/s)来衡量

  • 每秒交易数:比特币最多每秒几百笔交易,比特币现金每秒几千笔交易

  • 交易费:通常以每字节多少个satoshis(sat/B)来衡量,低优先级交易的典型费用在1-10 sat/B之间,而优先交易的费用可达几百sat/B

  • 内存使用量:根据节点实现的不同,可能变化很大,但通常在几百兆到几吉字节之间

  • 磁盘空间使用量:取决于区块链的大小,截至2023年3月,比特币的区块链大小超过400 GB,比特币现金超过50 GB。

依赖项

~101MB
~882K SLoC