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

Apache-2.0

155KB
2.5K SLoC

Factom Rust API客户端

Crates.io Released API docs Build Status dependency status Discord License

安装

添加到 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