#modexp #engine #aurora #montgomery #byte #modulo #evm

无std aurora-engine-modexp

Aurora引擎使用的自定义ModExp实现

2个稳定版本

1.1.0 2024年4月16日
1.0.0 2023年10月10日

数学类别中排名第839

Download history 11911/week @ 2024-04-16 14714/week @ 2024-04-23 12868/week @ 2024-04-30 14614/week @ 2024-05-07 12989/week @ 2024-05-14 11498/week @ 2024-05-21 10704/week @ 2024-05-28 12289/week @ 2024-06-04 12356/week @ 2024-06-11 14187/week @ 2024-06-18 12570/week @ 2024-06-25 11656/week @ 2024-07-02 13021/week @ 2024-07-09 13992/week @ 2024-07-16 12508/week @ 2024-07-23 13885/week @ 2024-07-30

每月下载量达55,829
21包中使用(直接使用3个)

CC0许可证

61KB
1.5K SLoC

Aurora modexp实现

此包是什么

此包是EVM modexp预编译的高效实现。此包公开了一个公共函数

pub fn modexp(base: &[u8], exp: &[u8], modulus: &[u8]) -> Vec<u8>

此函数接收基数、指数和模数作为大端编码的字节,并以大端形式返回结果。

这个crate旨在实现高效性,尽可能少地使用内存(例如,它不会复制指数切片)。指数运算使用“二进制方法”。指数运算中的乘法步骤使用“Montgomery乘法”。在偶数模的情况下,Montgomery乘法不能直接应用。但是,我们可以将问题简化为涉及奇数模的问题,以及模数为2的幂的问题。这两个子问题可以有效地解决(前者使用Montgomery乘法,后者在二进制计算机上模运算非常简单),然后使用中国剩余定理将结果合并。

本实现的学术参考文献主要包括

  1. 分析比较Montgomery乘法算法
  2. 偶数模Montgomery简化
  3. Motorola DSP56000的加密库
  4. 计算机编程艺术第2卷

这个crate不是什么

这个crate不是一个通用的大整数库。如果您需要的不仅仅是modexp,那么您应该使用类似num-bigintibig的东西。

依赖项

~1MB
~19K SLoC