1 个不稳定版本
使用旧的Rust 2015
0.28.1 | 2023年2月24日 |
---|
#3 在 #litecoin
1.5MB
18K SLoC
支持(或应支持)
- Litecoin协议网络消息的反序列化和序列化
- 区块和交易的反序列化和序列化
- 脚本反序列化和序列化
- 私钥和地址创建、反序列化、验证(包括完整的BIP32支持)
- PSBT创建、操作、合并和最终化
- 支持按附录A所述的合同支付,如Blockstream侧链白皮书
与Litecoin Core进行JSONRPC交互的工作正在进行中.... rust-litecoincore-rpc.
已知限制
共识
此库 不得 用于共识代码(即完全验证区块链数据)。从技术上讲,它支持这样做,但这样做是非常不推荐的,因为此库与Litecoin Core参考实现之间存在许多已知和未知的不同之处。在基于共识的加密货币(如Litecoin)中,所有各方都必须使用相同的规则来验证数据,而此库无法实现与Core相同的规则。
鉴于C++和Rust的复杂性,这可能永远无法修复,也没有计划这样做。当然,欢迎修补特定共识不兼容性问题。
支持16位指针大小
不支持16位指针大小,我们也不能保证会支持。如果您关心这些,请告诉我们,这样我们就可以了解对此的兴趣有多大,并可能决定支持它们。
文档
目前可在 docs.rs/Litecoin 上找到。欢迎添加使用示例和扩展现有文档的补丁。
贡献
贡献通常受到欢迎。如果您打算进行较大更改,请在PR之前在问题中讨论它们,以避免重复工作和架构不匹配。如果您有任何问题或想要讨论的想法,请加入我们的 #bitcoin-rust 通道,在 libera.chat。
最小支持的Rust版本(MSRV)
这个库应该始终可以在任何组合的功能(除no-std
外)下编译,在Rust 1.29
或Rust 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
时将跳过fuzz
和Cross
作业。我们不积极支持act
,但会合并修复act
问题的PR。
关于替代币/替代链的政策
欢迎通过向现有枚举添加常量(例如,设置网络消息魔字节序列)来支持非莱特币加密货币的补丁。任何更复杂的事情都将根据具体情况考虑,因为替代币领域包括经常出现和消失的项目,并且它们的设计本身就很糟糕,保持代码库可维护是一个很大的重点。
一般来说,那些提高跨链兼容性(例如,支持跨链原子交换)的事情比只支持单一区块链的事情更有可能被接受。
发行说明
请参阅CHANGELOG.md。
许可
本项目中使用的代码根据Creative Commons CC0 1.0 Universal license许可。
依赖项
~5–8MB
~89K SLoC