7个稳定版本
2.1.1 | 2020年1月13日 |
---|---|
2.1.0 | 2019年12月12日 |
2.0.2 | 2019年12月12日 |
1.0.2 | 2019年5月27日 |
1.0.1 | 2019年3月25日 |
#6 in #block-height
每月下载量:43
155KB
2.5K SLoC
Factom Rust API客户端
安装
添加到 cargo.toml
[dependencies]
factom = "^2"
快速入门
use factom::*;
// Get current block height from open node
#[tokio::main]
async fn main() {
//Create a re-usable client
let client = Factom::open_node();
// Call the heights function, handle the request result
let response = factomd::heights(&client).await.expect("Network Request");
assert!(response.result.leaderheight > 0);
}
用法
查看示例文件夹中的常见工作流程,或使用 cargo run --example
来查看您可运行的所有示例。
配置
// Default settings
// factomd: https://127.0.0.1:8088
// factom-walletd: https://127.0.0.1:8089
let client = Factom::new();
// Using open node
// factomd: https://api.factomd.net/v2
let client = Factom::open_node();
// Using the tesnet open node
// factomd: https://dev.factomd.net/v2
let client = Factom::testnet_node();
// Using custom node locations
let factomd = "https://api.factomd.net/";
let factom_walletd = "http://192.168.1.42:18089";
let client = Factom::custom_node(factomd, factom_walletd)
获取余额
let client = factom::testnet_node();
let testnet_address = "FA2jK2HcLnRdS94dEcU27rF3meoJfpUcZPSinpb7AwQvPRY6RL1Q";
let response = balance::factoid_balance(&client, testnet_address).await.unwrap();
// factoid balance returns factoshis, convert
let factoids = utils::factoshis_to_fct(response.result.balance);
println!("The testnet balance of {} is {} factoids", FCT_PUB, factoids);
获取条目数据
let client = factom::testnet_node();
let hash = "97c4e7adce9ed277b62adfb9fb7a31ca4778181e49dcdfebca967102dd424fbc";
let response = entry::entry(hash).await.unwrap();
dbg!(response);
遍历链
let client = Factom::open_node();
let chain = "843dbee7a49a9b9510d399759fbce24b1f700268c94508085abce352d70ed1f6";
// traverse_chain is a utility that returns Vec<Entry>, the number of blocks to
// parse can be specified, to traverse the entire chain use a depth of 0, here
// only 1 block,the chainhead itself, will be retrieved.
let response = utils::traverse_chain(&client, chain, 1).await;
dbg!(response);
运行时
此库默认导出 tokio 运行时和执行器,要禁用此功能并使用不同的运行时,请修改带有功能标志的 cargo.toml
[dependencies]
factom = {version="^2", default-features=false}
测试
大多数函数都由测试模块以及所有文档示例覆盖。请注意,使用 nocapture 运行 cargo test
将产生大量输出。要使许多测试通过,您需要运行 factom-walletd,测试交易或地址将在之后清理。
有关说明,请参阅 测试说明文件。
基准测试
提供了一个 criterion 基准测试套件,如果已安装 gnuplot,它还将自动为运行的任何基准测试生成图表,它们可以在 <LIBRARY>/target/criterion/report/index.html
中找到。这可以用来测试 factomd、factom-walletd、网络连接以及库函数本身的性能。
模糊测试
提供了一个使用 rust 实现的 American Fuzzy Lop 模糊测试套件,通过适当的设置,它可以用于模糊测试 Factom Rust 库以及模拟的 Factom 网络和 factom-walletd。有关更多信息,请参阅 模糊测试文件夹说明文件。
贡献
欢迎提交 PR。Fork 该库并将其提交到 dev 分支。通过向该库贡献,您同意将其以 Apache 2.0 许可证许可
依赖项
~12-22MB
~347K SLoC