9 个版本 (2 个稳定版)
2.0.0 | 2023年9月15日 |
---|---|
1.1.0 |
|
1.0.0 | 2022年6月27日 |
0.3.2 | 2021年11月15日 |
0.1.1 | 2019年3月9日 |
#1245 in 神奇豆子
53,862 每月下载次数
在 35 个 包中使用 (12 个直接使用)
65KB
1K SLoC
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 个视觉上不相似的字符组成,以避免混淆,例如 1
和 l
都不是字母表的一部分,只有 1
存在。完整的字母表由以下字符组成:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
特性
默认情况下,仅启用 std
功能。如果您想禁用默认功能,请从您的项目中移除默认功能 features
[dependencies.base58-monero]
version = "2"
default-features = false
std
如果您想在 no_std
环境中构建,请禁用此功能。当 steam
启用时,此功能是必需的。
检查
启用 encode_check
和 decode_check
函数。默认情况下,check
功能是禁用的。
流
此功能未经过广泛测试,并且存在性能问题,请自行承担风险使用!
启用 encode_stream
和 decode_stream
函数。默认情况下,stream
功能未启用。此功能启用编码/解码字节的异步流。在编码大量数据或异步环境中应使用此功能。可以与 check
一起使用 stream
以启用 encode_stream_check
和 decode_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.md 和 RELEASING.md。
关于
该项目最初是由 TrueLevel SA 赞助的研究项目。现在由社区成员维护。
许可
此项目中的代码采用 MIT 许可证 许可。
依赖关系
~0–1.5MB
~26K SLoC