#signer #lightning #grpc #持久化 #状态 #密码学 #操作

无 std 程序+库 lightning-signer-core

一个用于实现 Lightning 签署器的库,将加密操作外部化并加以保护

4 个版本

0.1.0 2021 年 5 月 14 日
0.1.0-5 2021 年 12 月 21 日
0.1.0-4 2021 年 9 月 25 日

#12 in #持久化

Apache-2.0

1MB
18K SLoC

Rust Lightning 签署器

请参阅 Rust Lightning 签署器项目概述 以获取更多信息。

启动 gRPC 服务器

gRPC 服务器是签署器的参考实现,它通过 gRPC 监听来自节点和管理 CLI 的请求。

可以通过以下方式启动

cargo run --bin server

服务器将状态持久化到当前目录的 .lightning-signer 中。

使用管理 CLI

假设服务器正在运行(见上文),可以按以下方式调用管理 CLI

cargo run --bin client -- [ARGUMENTS]

例如,要获取帮助,请运行

cargo run --bin client -- help`

以下是一个示例会话

# this outputs the new mnemonic phrase to stderr
node_id=$(cargo run --bin client -- node new)

# alternatively, supply the mnemonic phrase on stdin
# cargo run --bin client -- node new --mnemonic

# insert an address into the allowlist
cargo run --bin client -- -n $node_id allowlist add tb1qhetd7l0rv6kca6wvmt25ax5ej05eaat9q29z7z
cargo run --bin client -- -n $node_id allowlist list

channel_id=$(cargo run --bin client -- channel new -n $node_id)
cargo run --bin client -- channel list -n $node_id

开发信息

代码格式化

由于某种原因,rustfmt 的 ignore 配置仅在 nightly 频道中可用,尽管它在文档中被标记为稳定。

rustup install nightly

cargo +nightly fmt

构建 Rust Lightning 签署器

cargo build

或者如果您想禁用 grpc(grpc 是唯一默认功能)

cargo build --no-default-features

运行单元测试

cargo test

为了为失败的测试启用日志记录(调整日志级别到您喜欢的级别)

RUST_LOG=trace cargo test

运行服务器

cargo run --bin server

使用 kcov 进行代码覆盖率

依赖项

sudo dnf install -y elfutils-devel
sudo dnf install -y curl-devel
sudo dnf install -y binutils-devel

[email protected]:SimonKagstrom/kcov.git 构建 kcov v38。

更多依赖项

cargo install cargo-kcov
cargo install cargo-coverage-annotations

运行覆盖率

./scripts/run-kcov
./scripts/run-kcov-functional
./scripts/run-kcov-all

查看覆盖率报告

[target/kcov/cov/index.html](target/kcov/cov/index.html)

依赖项

~17–29MB
~357K SLoC