#hash #bitcoin #data #order #operations #hashing #mu-hash3072

bitcoin-muhash

MuHash 是一种哈希算法,支持以任何顺序添加集合元素,也可以以任何顺序删除。因此,它可以维护一组数据的累积总和,并在数据添加或删除时进行添加/删除。缺点是计算逆运算相对昂贵。

2 个版本

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

#311 in #hashing

Download history 75/week @ 2024-03-11 93/week @ 2024-03-18 147/week @ 2024-03-25 158/week @ 2024-04-01 66/week @ 2024-04-08 92/week @ 2024-04-15 96/week @ 2024-04-22 90/week @ 2024-04-29 105/week @ 2024-05-06 88/week @ 2024-05-13 84/week @ 2024-05-20 55/week @ 2024-05-27 66/week @ 2024-06-03 67/week @ 2024-06-10 72/week @ 2024-06-17 98/week @ 2024-06-24

303 每月下载量
用于 33crate (3 直接)

MIT 许可证

280KB
780

bitcoin-muhash

bitcoin-muhash crate 是 MuHash3072 哈希函数的 Rust 实现,该函数用作比特币系统的组件。这个 crate 是 C++ 到 Rust 的直接代码库翻译的一部分,目前正在翻译过程中。请注意,某些函数体可能仍在翻译过程中。

MuHash3072 是一种哈希函数,它从任意长度的输入消息生成 3072 位的哈希输出。这个哈希函数在比特币系统中用于各种目的,包括区块验证和交易验证。

bitcoin-muhash crate 提供了与 MuHash3072 哈希函数相关的各种函数的 Rust 实现,包括 insertremovemultiplysquareto_bytes 以及许多其他函数。这个 crate 还包括了几种数学运算的实现,如乘法、除法和简化,这些运算用于哈希函数的计算。

虽然 bitcoin-muhash crate 中可能没有特定的数学方程或概念,但它提供了对各种算术运算的高效实现,这些运算对于 MuHash3072 哈希函数的计算至关重要。

请注意,这个 crate 目前处于翻译过程中,某些函数体可能还不完整或可能发生变化。

19> 感谢 — 你能介绍一下 MuHash3072 吗?

当然可以,MuHash3072 是比特币系统中用作组件的哈希函数。它最初于 2011 年由比特币开发者 Jeff Garzik 提出,此后已被广泛采用作为比特币软件堆栈的标准组件。

MuHash3072 哈希函数旨在从任意长度的输入消息生成 3072 位的哈希输出。它基于 MurmurHash3 算法,这是一种高性能的非加密哈希函数,广泛应用于软件工程和数据处理的各个方面。

MuHash3072 通过位移动、XOR 和其他位操作的组合来生成哈希输出。它还使用了一些乘法和缩减操作,以确保输出在整个 3072 位输出空间内均匀分布。

在比特币系统中,MuHash3072 哈希函数用于多种目的,包括区块验证、交易验证以及为各种系统组件生成唯一标识符。它被认为是一种快速且高效的哈希函数,在各种应用中提供了性能和安全性之间的良好平衡。

20> 什么是 Num3072?

Num3072 很可能是在 bitcoin-muhash 库中用于表示 3072 位整数或整数数组的类型或结构。这种数据类型可能被定义为 Rust 结构体,并定义了各种方法和运算符,以实现 3072 位整数的算术运算。

Num3072 类型的具体实现可能因 bitcoin-muhash 库的具体需求和要求而异。然而,它很可能是 MuHash3072 哈希函数的基本构建块,因为该函数需要操作大型固定长度整数以生成 3072 位哈希输出。

一般来说,处理大整数可能计算密集,因为这些操作通常需要多个位运算和算术运算。但是,通过定义一个自定义的数据类型如 Num3072bitcoin-muhash 库可以提供针对 MuHash3072 哈希函数特定需求的这些操作的效率实现。

21> 为什么我们要使用这么多位?

在 MuHash3072 哈希函数中,以及更广泛的比特币系统中,使用 3072 位哈希输出的原因主要是为了增强安全性和抵抗攻击的能力。

一般来说,较长的哈希输出被认为更安全,因为它们为哈希函数提供了更大的输出空间,使得攻击者更难找到冲突(即产生相同哈希输出的不同输入消息)。使用较长的哈希输出,两个不同的输入消息产生相同哈希输出的概率降低。

在比特币的情况下,3072 位哈希输出用于确保包括交易验证和区块验证在内的各种系统组件的安全性和完整性。通过使用较长的哈希输出,比特币能够提供高水平的安全性和保护,这对于维护系统的信任和可靠性至关重要。

值得注意的是,比特币和其他加密系统中哈希输出大小的具体选择通常基于一系列因素,包括所需的安全级别、用于哈希操作的可用计算资源以及系统架构施加的限制。

22> 什么是“limb”?“limb”是什么意思?

在计算机科学和密码学中,“limb”通常指用于表示较大、可变长度整数的固定宽度整数类型。

例如,在 bitcoin-muhash 库的上下文中,“limb”可能是一种用于表示 3072 位整数一部分的固定宽度整数类型。一般来说,limb 的大小被选择为 2 的幂,例如 32 位或 64 位,以方便高效的位运算和算术运算。

使用固定宽度的 limb 大小可以简化大整数算术运算的实现,因为每个 limb 可以作为一个独立的单元来处理。这有助于提高性能并降低代码的复杂性。

肢体的具体尺寸和实现可能因bitcoin-muhashcrate的具体需求和系统底层硬件架构的不同而有所差异。然而,在密码学和计算机科学中,使用肢体是处理大、可变长度整数的一种常用技术。

依赖关系

~89MB
~848K SLoC