#反序列化 #脚本 #密钥 #交易 #区块 #消息 #bip-32

无std bellscoin

通用库,用于使用和与其他加密货币(如Bellscoin)互操作

3个版本

使用旧的Rust 2015

0.28.4 2024年7月29日
0.28.3 2024年7月29日
0.28.2 2024年7月26日

#14 in #bip-32

Download history 106/week @ 2024-07-22 293/week @ 2024-07-29 8/week @ 2024-08-05

407 每月下载量

CC0 许可证

1MB
18K SLoC

Rust Bellscoin

支持反序列化、解析和执行与Bellscoin相关的数据结构和网络消息的库。

文档

支持(或应该支持)

  • Bellscoin协议网络消息的反序列化
  • 区块和交易的反序列化
  • 脚本的反序列化
  • 私钥和地址创建、反序列化和验证(包括完整的BIP32支持)
  • PSBT创建、操作、合并和最终化

已知限制

共识

此库 不得 用于共识代码(即完全验证区块链数据)。技术上支持这样做,但这样做非常不妥,因为此库与Bellscoin Core参考实现之间存在许多差异,已知和未知。在基于共识的加密货币(如Bellscoin)中,所有各方都使用相同的规则来验证数据至关重要,而这个库无法实现与Core相同的规则。

鉴于C++和Rust的复杂性,这可能永远不会得到修复,也没有计划这样做。当然,欢迎修复特定共识不兼容性的补丁。

支持16位指针大小

不支持16位指针大小,并且我们不能保证它们将被支持。如果您关心它们,请告诉我们,这样我们可以了解对此的兴趣有多大,并可能决定支持它们。

文档

目前可在 docs.rs/bellscoin 上找到。添加使用示例和扩展现有文档的补丁将非常受欢迎。

贡献

贡献通常受到欢迎。如果您打算进行较大更改,请在提交PR之前在问题中进行讨论,以避免重复工作和架构不匹配。如果您有任何问题或想要讨论的想法,请加入我们

最低支持的Rust版本(MSRV)

此库应始终能够在任何组合的功能(除 no-std)下在 Rust 1.29Rust 1.47 下编译,包括使用 no-std

由于某些依赖项在次要/修补版本中破坏了构建,要使用 1.29.0 编译,需要运行以下版本锁定命令

cargo update -p cc --precise "1.0.41" --verbose

为了使用 use-serde 功能或使用 1.29.0 构建单元测试,还需要以下版本锁定命令

cargo update --package "serde" --precise "1.0.98"
cargo update --package "serde_derive" --precise "1.0.98"

为了让功能 base64 与 1.29.0 一起工作,我们还需要锁定 byteorder

cargo update -p byteorder --precise "1.3.4"

安装 Rust

可以使用您选择的包管理器或 rustup.rs 安装 Rust。前者被认为更安全,因为它通常不涉及对 CA 系统的信任。但您应该知道,您发行版提供的 Rust 版本可能已经过时。通常,对于 rust-bitcoin 来说这不是问题,因为我们支持比当前稳定版本更旧的版本(参见 MSRV 部分)。

构建

可以使用 cargo 构建和测试此库

git clone [email protected]:rust-bitcoin/rust-bitcoin.git
cd rust-bitcoin
cargo build

您可以使用以下命令运行测试

cargo test

有关更详细说明,请参阅 cargo 文档

拉取请求

每个 PR 至少需要两个审查才能合并。在审查阶段,维护者和贡献者可能会留下评论并要求更改。请尝试解决它们,否则您的 PR 可能会在更长一段时间的不活动后被关闭而不合并。如果您的 PR 尚未准备好审查,请通过在标题前添加 WIP: 来标记。

CI 管道

CI 管道在运行在每个 MR 之前需要获得批准。

为了加快审查过程,可以使用 act 在本地运行 CI 管道。由于目前不支持缓存,使用 act 时将跳过 fuzzCross 作业。我们不 积极 支持 act,但会合并修复 act 问题的 PR。

发行说明

请参阅 CHANGELOG.md

许可

本项目中的代码根据 Creative Commons CC0 1.0 Universal license 许可。

依赖项

~5–8MB
~89K SLoC