#starknet #ethereum #web3 #no-std

no-std starknet-crypto

为Starknet提供的低级密码学工具

11个版本 (6个重大更新)

0.7.1 2024年6月29日
0.6.2 2024年3月27日
0.6.1 2023年10月30日
0.6.0 2023年7月3日
0.1.0 2022年6月7日

#15 in #starknet

Download history 16252/week @ 2024-05-05 9336/week @ 2024-05-12 11307/week @ 2024-05-19 10726/week @ 2024-05-26 12240/week @ 2024-06-02 11049/week @ 2024-06-09 13842/week @ 2024-06-16 16345/week @ 2024-06-23 13025/week @ 2024-06-30 8844/week @ 2024-07-07 12150/week @ 2024-07-14 12876/week @ 2024-07-21 16555/week @ 2024-07-28 16469/week @ 2024-08-04 18944/week @ 2024-08-11 14198/week @ 2024-08-18

66,827 每月下载量
用于 59 个crate(25个直接使用)

MIT/Apache

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