11个版本 (6个重大更新)
0.7.1 | 2024年6月29日 |
---|---|
0.6.2 | 2024年3月27日 |
0.6.1 | 2023年10月30日 |
0.6.0 |
|
0.1.0 | 2022年6月7日 |
#15 in #starknet
66,827 每月下载量
用于 59 个crate(25个直接使用)
52KB
975 行
为Starknet提供的低级密码学工具
starknet-crypto
包含用于在Starknet中执行 低级 密码操作的实用工具。
如果您不熟悉密码学原语,建议您使用由
starknet-core
crate 实现的高级密码学实用工具(或通过starknet::core
重新导出)进行使用。使用这些低级函数不正确可能会导致您的私钥泄露,例如。
此库不提供恒定时间保证。
警告
尽管它已经与从 cairo-lang
随机生成的数据进行了测试,但此crate未经过安全审计或审查。 使用风险自担。
如果您是密码学家,欢迎您通过审查实现进行贡献 :)
基准测试
这些结果是在作者的机器上使用 Apple M3 Max 运行 macOS 14.5 生成的。
有关自行运行基准测试的说明,请参阅此页面。
本地
ecdsa_get_public_key time: [62.223 µs 62.231 µs 62.240 µs]
ecdsa_recover time: [253.15 µs 253.47 µs 254.13 µs]
ecdsa_sign time: [95.633 µs 95.649 µs 95.668 µs]
ecdsa_verify time: [255.70 µs 255.77 µs 255.84 µs]
pedersen_hash time: [13.021 µs 13.023 µs 13.024 µs]
poseidon_hash time: [5.0139 µs 5.0148 µs 5.0155 µs]
poseidon_hash_single time: [5.0239 µs 5.0381 µs 5.0543 µs]
poseidon_hash_many time: [10.077 µs 10.087 µs 10.100 µs]
rfc6979_generate_k time: [4.5806 µs 4.5821 µs 4.5836 µs]
WebAssembly
(这里只提供了 wasmtime
的结果。请参阅基准测试页面以在其他运行时上运行基准测试。)
运行时版本
$ wasmtime --version
wasmtime-cli 21.0.1 (cedf9aa0f 2024-05-22)
wasmtime
结果
ecdsa_get_public_key time: [333.64 µs 334.07 µs 334.48 µs]
ecdsa_recover time: [1.1177 ms 1.1207 ms 1.1248 ms]
ecdsa_sign time: [386.33 µs 387.42 µs 388.68 µs]
ecdsa_verify time: [1.1246 ms 1.1280 ms 1.1320 ms]
pedersen_hash time: [64.934 µs 64.962 µs 64.993 µs]
poseidon_hash time: [20.745 µs 20.772 µs 20.825 µs]
poseidon_hash_single time: [20.790 µs 20.813 µs 20.837 µs]
poseidon_hash_many time: [41.878 µs 41.911 µs 41.945 µs]
rfc6979_generate_k time: [11.564 µs 11.566 µs 11.569 µs]
致谢
此crate中用于Pedersen散列实现的代码大部分是从Equilibrium的pathfinder
启发并修改的。
Poseidon散列实现也已从pathfinder
移植。
基于这个坚实的基础,ECDSA功能受到了启发,并从StarkWare的crypto-cpp
实现中移植过来。
依赖项
约2.6-3.5MB
约79K SLoC