4个版本 (2个重大变更)
0.3.0 | 2024年6月20日 |
---|---|
0.2.1 | 2024年6月17日 |
0.2.0 | 2024年6月13日 |
0.1.0 | 2024年6月12日 |
#2156 in 神奇豆子
每月下载量 99
99KB
1.5K SLoC
Bitcoind
用于运行regtest bitcoind进程的工具,在集成测试环境中非常有用。
当通过激活版本功能之一(例如,比特币核心25.1的25_1
)选择自动下载功能时,启动regtest节点就像那样简单
// the download feature is enabled whenever a specific version is enabled, for example `25_1` or `24_0_1`
#[cfg(feature = "download")]
{
let bitcoind = bitcoind::BitcoinD::from_downloaded().unwrap();
assert_eq!(0, bitcoind.client.get_blockchain_info().unwrap().blocks);
}
构建脚本将自动从比特币核心下载比特币核心版本25.1,验证二进制哈希并将其放置在构建目录中。
当您不使用自动下载功能时,您有以下选项
- 在
bitcoind
执行文件中具有PATH
- 通过
BITCOIND_EXE
环境变量提供bitcoind
执行文件
if let Ok(exe_path) = bitcoind::exe_path() {
let bitcoind = bitcoind::BitcoinD::new(exe_path).unwrap();
assert_eq!(0, bitcoind.client.get_blockchain_info().unwrap().blocks);
}
可以通过使用Conf
结构体来配置启动选项,使用BitcoinD::with_conf
或BitcoinD::from_downloaded_with_conf
特性
- 等待bitcoind守护进程准备好接受RPC命令
bitcoind
使用临时目录作为数据目录。您可以指定您临时目录的根目录,以便您在RAM磁盘(例如/dev/shm
)中具有节点的数据目录- 从操作系统请求空闲端口。由于无法保留指定的端口,仍然可能存在低概率的竞态条件,因此进程尝试使用不同端口进行3次启动。
- 无论测试如何结束,只要结构体超出作用域,进程就会被终止。
- 允许轻松启动像
多亏了这些特性,每个#[test]
都可以轻松地与其自己的环境独立运行。
文档
构建文档
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features download,doc --open
MSRV
对于版本0.35.*,MSRV是1.56.1
注意:为了尊重1.56.1 MSRV,您需要使用一些依赖项的较旧版本,在CI中,以下依赖项版本被锁定
cargo update
cargo update -p tempfile --precise 3.3.0
cargo update -p log --precise 0.4.18
避免在Cargo.toml
中锁定,因为这可能会导致下游编译问题。
Nix
出于可重复性的原因,Nix构建脚本不能访问互联网,但自动下载功能正是如此。要在Nix下成功构建,用户必须本地提供tar包并通过BITCOIND_TARBALL_FILE
环境变量指定其位置。
另一个选项是指定BITCOIND_SKIP_DOWNLOAD
环境变量并通过PATH
提供可执行文件。
或者,使用没有自动下载功能的依赖项。
依赖项
~10-20MB
~244K SLoC