#bitcoin #litecoin #crypto

no-std litcoinlib

通用的用于使用和互操作 Litecoin 和其他加密货币的库

2 个版本

使用旧的 Rust 2015

0.29.4 2023年2月24日
0.29.3 2023年2月24日

#2#litecoin

CC0 许可证

1.5MB
18K SLoC

Rust Litecoin

Rust Litecoin logo by Hunter Trujillo, see license and source files under /logo

支持序列化和反序列化、解析和执行与 Litecoin 相关的数据结构和网络消息的库。 感谢 Andrew Poelstra "

Crate Info MIT or Apache-2.0 Licensed CI Status API Docs Rustc Version 1.29+ Chat on IRC Lines of code

文档

支持(或应该支持)

  • Litecoin 协议网络消息的序列化和反序列化
  • 块和交易的序列化和反序列化
  • 脚本序列化和反序列化
  • 私钥和地址创建、序列化和验证(包括完整的 BIP32 支持)
  • PSBT 创建、操作、合并和最终化
  • 支持在 Blockstream 侧链白皮书附录 A 中描述的合约支付

对于与 Litecoin Core 进行 JSONRPC 交互,正在进行中.... rust-litecoincore-rpc.

已知限制

共识

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

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

16 位指针大小支持

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

文档

目前可以在 docs.rs/Litecoin 上找到。欢迎提交添加使用示例和扩展现有文档的补丁。

贡献

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

最低支持的 Rust 版本 (MSRV)

此库应始终在 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

Rust可以通过您选择的包管理器或rustup.rs安装。前一种方法被认为是更安全的,因为它通常不涉及对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