#signer #lightning #validation #on-chain #output #cryptography #version

无 std vls-core

一个用于实现 Lightning 签署者的库,将加密操作外部化和安全化

21 个版本

新增 0.12.0 2024 年 8 月 9 日
0.12.0-rc.22024 年 6 月 26 日
0.11.0 2024 年 2 月 29 日
0.11.0-rc.12023 年 11 月 29 日
0.2.1 2023 年 3 月 20 日

933魔法豆

Download history 1011/week @ 2024-04-20 320/week @ 2024-04-27 393/week @ 2024-05-04 752/week @ 2024-05-11 496/week @ 2024-05-18 493/week @ 2024-05-25 541/week @ 2024-06-01 338/week @ 2024-06-08 558/week @ 2024-06-15 530/week @ 2024-06-22 331/week @ 2024-06-29 335/week @ 2024-07-06 341/week @ 2024-07-13 380/week @ 2024-07-20 628/week @ 2024-07-27 577/week @ 2024-08-03

1,973 每月下载量
11 仓库(直接使用 8 个)中使用

Apache-2.0

1MB
27K SLoC

验证 Lightning 签署者

请参阅VLS 项目概述以获取更多信息。我们的网站

限制

以下尚未实现

  • vlsd2 --recover-to只能处理我们简单强制关闭。它不能处理对方强制关闭或违约。它也不能处理 HTLC 输出。
  • 没有从签署者状态丢失中恢复的设施。
  • 链上跟踪尚未完全实现,因此恶意节点可以通过未能补救违约(例如)来窃取资金。

附加仓库

开发信息

额外的HOWTO文档

我们仅在特定情况下推荐使用Rust的nightly版本,例如用于cargo fmtno-std。否则,我们明确推荐使用稳定版本。

代码格式化

启用格式化预提交钩子

./scripts/enable-githooks

由于某种原因,即使rustfmt的ignore配置在文档中标注为稳定,但它仅在nightly通道上可用。

rustup install nightly

cargo +nightly fmt

构建验证闪电签名者

构建VLS和相关crate

cargo build

运行单元测试

cargo test

要启用失败测试的日志记录(调整日志级别到偏好设置)

RUST_LOG=trace cargo test

使用llvm-cov进行代码覆盖率

依赖项

cargo +stable install cargo-llvm-cov --locked

运行覆盖率

./scripts/run-llvm-cov

将链接器改为mold而不是ld

cp .cargo/config.sample.toml .cargo/config.toml

基准测试

运行基准测试

cargo bench -p vls-core --bench secp_bench

请注意,如果您想在vls-core中运行所有基准测试,可能需要添加--features=test_utils

无优化

cargo bench -p vls-core --bench secp_bench --profile=dev

预期如下

    test fib1_bench        ... bench:           1 ns/iter (+/- 0)
    test fib_bench         ... bench:      17,247 ns/iter (+/- 198)
    test hash_bench        ... bench:         258 ns/iter (+/- 2)
    test secp_create_bench ... bench:      49,981 ns/iter (+/- 642)
    test sign_bench        ... bench:      25,692 ns/iter (+/- 391)
    test verify_bench      ... bench:      31,705 ns/iter (+/- 1,445)

即每个secp256k1加密操作大约需要30微秒。我们还看到创建secp上下文成本高昂,但不是过分昂贵。

依赖项

~19–33MB
~466K SLoC