#base58 #monero #base58-check

无 std base58-monero

支持编码/解码 Monero base58 字符串的库

9 个版本 (2 个稳定版)

2.0.0 2023年9月15日
1.1.0 2023年3月11日
1.0.0 2022年6月27日
0.3.2 2021年11月15日
0.1.1 2019年3月9日

#1245 in 神奇豆子

Download history 13406/week @ 2024-04-16 13751/week @ 2024-04-23 14114/week @ 2024-04-30 14595/week @ 2024-05-07 11479/week @ 2024-05-14 13756/week @ 2024-05-21 14002/week @ 2024-05-28 11631/week @ 2024-06-04 12602/week @ 2024-06-11 13240/week @ 2024-06-18 11291/week @ 2024-06-25 11521/week @ 2024-07-02 11649/week @ 2024-07-09 11449/week @ 2024-07-16 12972/week @ 2024-07-23 15259/week @ 2024-07-30

53,862 每月下载次数
35 包中使用 (12 个直接使用)

MIT 许可证

65KB
1K SLoC

Build Status Codecov branch unsafe forbidden Crates.io Documentation License: MIT MSRV

Rust Monero Base58

支持编码/解码 Monero base58 字符串的库,包括和不含校验和验证。

比特币 base58 与 Monero base58

Monero base58 与比特币 base58 不同,字节以 8 字节块进行转换。最后一个块可以少于 8 字节,但至少有 1 字节。8 个字节转换成 11 个或更少的 Base58 字符;如果某个块转换成 <11 个字符,转换时会在其后填充 "1" (1 在 Base58 中是 0)。同样,最后一个块可以转换成 11 个或更少的 Base58 数字。

由于条件填充,69 字节的字符串,例如 Monero 地址,总是转换成 95 个 Base58 字符 (8 * 11 + 7);其中 7 是 5 字节块的最后一块的长度。

字母表由 58 个视觉上不相似的字符组成,以避免混淆,例如 1l 都不是字母表的一部分,只有 1 存在。完整的字母表由以下字符组成:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

特性

默认情况下,仅启用 std 功能。如果您想禁用默认功能,请从您的项目中移除默认功能 features

[dependencies.base58-monero]
version = "2"
default-features = false

std

如果您想在 no_std 环境中构建,请禁用此功能。当 steam 启用时,此功能是必需的。

检查

启用 encode_checkdecode_check 函数。默认情况下,check 功能是禁用的。

此功能未经过广泛测试,并且存在性能问题,请自行承担风险使用!

启用 encode_streamdecode_stream 函数。默认情况下,stream 功能未启用。此功能启用编码/解码字节的异步流。在编码大量数据或异步环境中应使用此功能。可以与 check 一起使用 stream 以启用 encode_stream_checkdecode_stream_check。要使用 stream 功能,您可以在 Cargo.toml 中添加以下内容:

[dependencies.base58-monero]
version = "2"
features = ["stream"]

此功能启用了 std 功能。

测试

Doctests 需要启用 stream 功能才能运行,运行所有功能的测试

cargo test --all-features

基准测试

在 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 上使用标准 Monero 地址作为数据源获得的测试结果。性能以每次计算的纳秒数显示,越小越好

操作 常规 _check
编码 652 ns (+/- 107) 1,272 ns (+/- 760)
解码 612 ns (+/- 82) 1,187 ns (+/- 541)

在编码或解码数据时计算或验证校验和。

基准测试可以在 /benches 下找到,并使用以下命令运行:

cargo +nightly bench --all-features

发布和变更日志

请参阅 CHANGELOG.mdRELEASING.md

关于

该项目最初是由 TrueLevel SA 赞助的研究项目。现在由社区成员维护。

许可

此项目中的代码采用 MIT 许可证 许可。

依赖关系

~0–1.5MB
~26K SLoC