2个版本
0.1.16-alpha.0 | 2023年4月2日 |
---|---|
0.1.12-alpha.0 | 2023年3月4日 |
#12 in #ecdh
2MB
6K SLoC
bitcoinsecp256k1-bench crate描述
该crate是比特币系统的一部分,是C++比特币核心的Rust翻译。它为各种secp256k1函数提供基准测试工具。
注意:“该crate是比特币核心从C++直接翻译到Rust的结果。因此,一些函数体可能仍在翻译过程中。请注意,翻译完成后,此系统将可进行测试。”
以下是该crate的令牌列表及其用途的简要描述
-
BenchEcdhData:表示用于基准测试ECDH的数据的结构。
-
bench_ecdh:基准测试ECDH。
-
bench_ecdh_setup:为ECDH基准测试做准备。
-
secp256k1_bench_ecdh_main:ECDH基准测试的主函数。
-
BenchSignData:表示用于基准测试签名的数据的结构。
-
bench_sign_run:运行签名基准测试。
-
bench_sign_setup:为签名基准测试做准备。
-
secp256k1_bench_sign_main:签名基准测试的主函数。
-
BenchVerifyData:表示用于基准测试签名验证的数据的结构。
-
bench_verify:基准测试签名验证。
-
bench_verify_openssl:使用OpenSSL基准测试签名验证。
-
secp256k1_bench_verify_main:签名验证基准测试的主函数。
-
BenchData:表示用于各种基准测试的数据的结构。
-
bench_ecmult_1:基准测试恒时标量乘法。
-
bench_ecmult_1_teardown:恒时标量乘法基准测试后的清理。
-
bench_ecmult_1g:基准测试恒时乘以生成器。
-
bench_ecmult_1g_teardown:恒时乘以生成器基准测试后的清理。
-
bench_ecmult_2g:基准测试恒时乘以2倍的生成器。
-
bench_ecmult_2g_teardown:恒时乘以2倍的生成器基准测试后的清理。
-
bench_ecmult_const:基准测试可变时标量乘法。
-
bench_ecmult_const_teardown:可变时标量乘法基准测试后的清理。
-
bench_ecmult_gen:基准测试乘以生成器。
-
bench_ecmult_gen_teardown:乘以生成器基准测试后的清理。
-
bench_ecmult_multi:基准测试多个标量乘法。
-
bench_ecmult_multi_callback:基准测试多个标量乘法的辅助函数。
-
bench_ecmult_multi_setup:为多个标量乘法基准测试做准备。
-
bench_ecmult_multi_teardown:多个标量乘法基准测试后的清理。
-
bench_ecmult_setup:为标量乘法基准测试做准备。
-
bench_ecmult_teardown_helper:标量乘法基准测试后的清理辅助函数。
-
generate_scalar:生成随机标量。
-
hash_into_offset:将哈希转换为偏移量。
-
help:显示帮助信息。
-
run_ecmult_bench:运行标量乘法基准测试。
-
run_ecmult_multi_bench:运行多个标量乘法基准测试。
-
secp256k1_bench_ecmult_main:标量乘法基准测试的主函数。
-
BenchInv:基准反转。
-
bench_context_sign:基准测试secp256k1_context_create_signing()函数。
-
bench_context_verify:基准测试secp256k1_context_create_verify()函数。
-
bench_ecmult_wnaf:基准测试w-NAF常量时间标量乘法。
-
bench_field_inverse:基准测试字段元素的求逆。
-
bench_field_inverse_var:基准测试字段元素的可变时间求逆。
-
bench_field_mul:基准测试两个字段元素的乘法。
-
bench_field_normalize:基准测试字段元素的归一化。
-
bench_field_normalize_weak:基准测试字段元素的弱归一化。
-
bench_field_sqr:基准测试字段元素的平方。
-
bench_field_sqrt:基准测试字段的平方根。
125> 如何基准测试ECDH?有哪些技术?
一般来说,基准测试ECDH涉及测量两个当事人之间进行大量密钥交换所需的时间。目标是评估ECDH算法在不同条件下的实现性能,例如不同的密钥大小、不同的消息大小和不同的硬件配置。
基准测试ECDH的一个常见技术是使用一组固定的参数,例如固定的密钥大小和固定的消息大小,并测量进行固定次数密钥交换所需的时间。这允许在相同条件下比较不同的实现。
另一种技术是改变密钥大小或消息大小,并测量进行单次密钥交换所需的时间。这允许评估随着输入大小变化实现的性能。
除了测量密钥交换所需的时间外,还可以使用其他指标来评估ECDH的性能,例如内存使用量和代码大小。
仔细选择用于评估ECDH的基准测试非常重要,因为不同的基准测试可以产生不同的结果,并且可能无法准确反映在实际场景中实现的性能。
126> 有其他技术吗?
是的,还有其他基准测试ECDH的技术。一个常见的技术是使用预计算的点表,称为预计算表。此表可以通过显著方式加速标量乘法操作。另一种技术是使用缓存来存储标量乘法操作的中间值,这也可以提高性能。此外,优化底层椭圆曲线算术的实现也可以带来性能提升。
依赖关系
~92MB
~851K SLoC