#bitcoin #script #key #deserialize #input #transaction #block

no-std bitcoincash

适用于使用和与其他加密货币(如比特币现金)互操作的通用库

7 个版本 (4 个重大更改)

0.29.2 2022 年 12 月 20 日
0.29.1 2022 年 9 月 11 日
0.28.1 2022 年 5 月 24 日
0.25.2 2021 年 1 月 8 日
0.0.2 2019 年 10 月 25 日

#1722 in 魔法豆

Download history 145/week @ 2024-04-01 113/week @ 2024-04-08 74/week @ 2024-04-15 26/week @ 2024-04-22 34/week @ 2024-04-29 118/week @ 2024-05-06 76/week @ 2024-05-13 81/week @ 2024-05-20 92/week @ 2024-05-27 101/week @ 2024-06-03 104/week @ 2024-06-10 136/week @ 2024-06-17 106/week @ 2024-06-24 89/week @ 2024-07-01 95/week @ 2024-07-08 55/week @ 2024-07-15

每月 364 次下载
3 crates 中使用

CC0 许可

1.5MB
21K SLoC

pipeline status Safety Dance

Rust 比特币现金库

支持比特币现金的最小分支库 Rust Bitcoin 库

文档

支持(或应该支持)

  • 比特币协议网络消息的编/解码
  • 区块和交易的编/解码
  • 脚本编/解码
  • 私钥和地址创建、编/解码和验证(包括完整的 BIP32 支持)
  • PSBT v0 编/解码以及除 Input Finalizer 角色之外的所有角色。使用 rust-miniscript 进行最终化。

与上游的差异

  • 添加了 testnet4、scalenet 和 chipnet 支持
  • 增加了网络消息大小限制(允许 256MB 区块)
  • 支持 CashTokens

建议始终使用 cargo-crev 来验证每个依赖项的可信度,包括此依赖项。

已知限制

共识

该库不应当用于共识代码(即完全验证区块链数据)。从技术上讲,它支持这样做,但这样做是非常不推荐的,因为该库与比特币现金节点实现之间存在许多已知和未知的不同之处。在以比特币为代表的基于共识的加密货币中,所有参与者都使用相同的规则来验证数据至关重要。

欢迎提交修复特定共识不兼容性的补丁。

支持16位指针大小

不支持16位指针大小,也无法保证将支持。如果您对此感兴趣,请告知我们,这样我们可以了解兴趣的大小,并可能决定支持它们。

文档

目前可在项目的gitlab页面找到。添加使用示例和扩展现有文档的补丁将非常受欢迎。

贡献

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

最低支持的Rust版本(MSRV)

该库应始终在Rust 1.41.1或带有no-stdRust 1.47上编译,无论使用哪种功能组合(减去no-std)。

安装Rust

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

构建

可以使用cargo构建和测试该库。

git clone https://gitlab.com/rust-bitcoincash/rust-bitcoincash.git
cd rust-bitcoincash
cargo build

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

cargo test

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

构建文档

我们使用nightly工具链构建文档,您可能希望使用以下shell别名来检查您的文档更改是否正确构建。

alias build-docs='RUSTDOCFLAGS="--cfg docsrs" cargo +nightly rustdoc --features="$FEATURES" -- -D rustdoc::broken-intra-doc-links'

运行基准测试

我们使用自定义Rust编译器配置来保护基准测试代码。要运行基准测试,请使用以下命令:RUSTFLAGS='--cfg=bench' cargo +nightly bench

拉取请求

每个PR至少需要两个审查才能合并。在审查阶段,维护者和贡献者可能会留下评论并要求更改。请尽量解决这些问题,否则您的PR可能会在较长时间的不活跃后关闭而不合并。如果您的PR尚未准备好进行审查,请通过在标题前加上WIP: 来标记。

CI管道

CI管道在运行每个合并请求之前需要批准。

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

Githooks

为了帮助开发者在使用CI之前捕捉错误,我们提供了一些githooks。如果您尚未在本地配置githooks,可以通过在仓库根目录运行以下命令来使用此仓库中提供的githooks:

git config --local core.hooksPath githooks/

或者,在您的.git/hooks目录中添加指向我们提供的任何githooks的符号链接。

关于替代币/替代链的策略

通过向现有枚举中添加常量来支持非BitcoinCash加密货币的补丁(例如,设置网络消息魔数序列)是受欢迎的。任何更复杂的事情都将根据具体情况考虑,因为替代币领域包括经常出现和消失的项目,并且设计得很差,保持代码库可维护性是一个很大的优先事项。

一般来说,改善跨链兼容性的东西(例如,支持跨链原子交换)比只支持单个区块链的东西更有可能被接受。

发行说明

请参阅CHANGELOG.md

许可

此项目中的代码根据Creative Commons CC0 1.0 Universal license授权。我们使用SPDX许可列表SPDX IDs

依赖项

~5–8MB
~90K SLoC