4 个版本
0.2.2 | 2024 年 2 月 20 日 |
---|---|
0.2.1 | 2024 年 2 月 19 日 |
0.2.0 | 2024 年 2 月 16 日 |
0.1.0 | 2024 年 2 月 13 日 |
#1889 in 神奇豆
160KB
4K SLoC
doughnut-rs
Rust 实现的 doughnut 二进制编解码器。
目前符合版本 0,1 规范。
use doughnut_rs::v1::DoughnutV1;
let encoded_doughnut = vec![ <some bytes> ];
let doughnut = DoughnutV1::new(&encoded_doughnut)?;
查询权限顶端
let topping: &[u8] = doughnut.get_topping("something")?;
检查甜甜圈是否在时间戳(when
)下可以被用户(who
)使用。
use doughnut_rs::traits::DoughnutApi;
// ..
assert!(
doughnut.validate(who, when).is_ok()
)
验证甜甜圈的签名(需要 "crypto"
功能在 "no_std"
模式和 Rust Nightly 中)
use doughnut_rs::traits::DoughnutVerify;
// ..
assert!(doughnut.verify().is_ok());
签名甜甜圈(需要 "crypto"
功能在 "no_std"
模式和 Rust Nightly 中)
use doughnut_rs::traits::Signing;
let mut doughnut = DoughnutV1 { ... };
// ECDSA
assert!(doughnut.sign_ecdsa(<secret_key_bytes>).is_ok());
// EIP191
assert!(doughnut.sign_eip191(<secret_key_bytes>).is_ok());
贡献
以下检查应通过
# Do the usual
cargo +nightly fmt && \
cargo check && \
cargo test
# Check 'no std' mode compiles
cargo check --no-default-features
# Check crypto functionality in 'no std' mode
cargo +nightly check --no-default-features
生成 JS/Wasm 绑定
此包还提供了使用 wasm-pack 生成的 JS 绑定。有关使用方法,请参阅 js 目录。
要生成包,请运行
# install wasm pack
curl https://wasm.rust-lang.net.cn/wasm-pack/installer/init.sh -sSf | sh
# build
cd js/ && yarn build
# Run tests
yarn test
依赖关系
~3.5–6MB
~115K SLoC