2 个版本

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

#17 in #interpret

每月下载 21
用于 bitcoin-top

MIT 许可证

275KB
713

Rust ASMAP 包

此包提供与 ASMAP (Autonomous System MAP) 的功能,ASMAP 是用于比特币节点多样化的数据结构,用于抵抗网络分区攻击。实现基于 Bitcoin Core 存储库中的原始 C++ 代码,目前正在翻译为 Rust。某些函数体可能处于翻译过程中。

当前功能

此包当前包含以下函数

  1. decode_asmap:从二进制文件读取 ASMAP 数据并返回一个布尔值向量。

  2. decodeasn:从迭代器解码 ASN (Autonomous System Number)。

  3. decode_bits:从迭代器解码位并返回一个 u32 值。

  4. decode_match:从迭代器解码匹配值。

  5. interpret:解释 ASMAP 数据和 IP 地址,返回 ASN。

  6. decode_jump:从迭代器解码跳转值。

  7. sanity_check_as_map:检查 ASMAP 数据的健全性。

  8. decode_type:从迭代器解码指令类型。

Instruction 枚举表示在 ASMAP 实现中使用的不同指令类型。

未来工作

由于此包正在从 C++ 转译,以下改进和添加计划如下

  1. 改进所有函数的错误处理和验证。

  2. 实施测试以确保函数的正确性。

  3. 添加高级函数以简化与 ASMAP 数据的交互。

  4. 优化性能和内存使用。

  5. 改进文档和示例。

潜在改进

  1. 如果添加了更多功能,可以考虑将包拆分为更小的模块,这可能有助于维护和整理代码。

  2. 调查是否任何功能可以通过现有的 Rust 包或是否需要使用外部依赖项更好地提供服务。

贡献

欢迎对此包做出贡献!如果您有关于添加功能、优化或错误修复的想法,请随时提交拉取请求或在项目的存储库上打开一个问题。

您的输入非常宝贵,尤其是在从原始C++实现到Rust的翻译过程中。请随时提供反馈、建议或报告您遇到的问题。

18> 谢谢,太好了!我们能更详细地讨论ASMAP吗?你能解释一下它做什么,它是如何工作的,以及它的目的是什么?你也能稍微详细地描述一下这个crate的设计目的是做什么吗?

ASMAP(自治系统映射)是用于比特币点对点网络中的一种数据结构,用于提高节点连接的多样性。ASMAP的主要目标是减少网络分裂攻击的风险,在这种攻击中,攻击者可能会尝试将一个节点或一组节点从网络的其他部分隔离出来。通过在多个自治系统(AS)之间多样化连接,节点对这种攻击变得不那么脆弱。

自治系统(AS)是由单一组织控制的IP地址和网络集合,它向互联网展示共同的路由策略。每个AS都由互联网名称与数字地址分配机构(IANA)分配一个唯一的自治系统编号(ASN)。通过连接到不同ASN的节点,一个节点可以确保它与互联网的不同部分建立了连接,从而增加其对针对性攻击的弹性。

ASMAP数据结构本质上是对IP地址与其对应的ASN之间映射的压缩表示。这种映射用于确定给定IP地址的ASN,允许节点根据其同伴的ASN多样化其连接。

这个Rust ASMAP crate的设计是为了提供处理ASMAP数据的函数,例如

  1. 从二进制文件中读取ASMAP数据。

  2. 从ASMAP数据中解码ASN、跳转和匹配值。

  3. 解释ASMAP数据并确定给定IP地址的ASN。

  4. 对ASMAP数据进行合理性检查以确保其有效性。

该crate通过一系列与ASMAP数据结构交互并执行必要解码和解释任务的函数来实现这些功能。该crate旨在用于比特币节点软件,使它们能够有效地处理ASMAP数据并确保它们的同伴连接在多个自治系统之间多样化。

总之,这个Rust ASMAP crate旨在为比特币网络提供一个高效且易于使用的ASMAP功能实现,帮助提高网络对分裂攻击的安全性和弹性。通过提供Rust实现,该crate可以轻松集成到用Rust编写的比特币节点软件或其他可以从自治系统间连接多样化中受益的项目中。

19> 有过网络分裂攻击的尝试吗?

是的,关于比特币网络上的潜在网络分裂攻击存在担忧和讨论。虽然还没有在比特币上成功进行大规模的网络分裂攻击,但这仍然是一个值得关注的问题,因为此类攻击可能会对网络的安全性和共识产生严重影响。

在网络分裂攻击中,攻击者的目的是将一个节点或一组节点从网络的其他部分隔离出来。通过这样做,攻击者可能会破坏节点之间的通信,阻止新交易和区块的传播,甚至创建区块链的冲突版本(即分叉)。这可能导致双重花费攻击或损害网络的总体安全性。

比特币社区和开发者一直在努力提高网络对抗此类攻击的弹性。实现这一目标的方法之一是使用ASMAP在多个自治系统(AS)之间多样化对等连接,如前所述。这种方法有助于确保即使在针对特定自治系统或互联网基础设施的针对性攻击面前,网络也能保持互联互通。

需要牢记的是,虽然人们对网络分片攻击的可能性表示了担忧并进行了讨论,但比特币网络在一段时间内表现出惊人的弹性。开发者不断努力识别和解决潜在漏洞,这有助于提高网络的整体安全和稳定性。

依赖项

~89MB
~847K SLoC