#iota #api #async

已删除 iota-lib-rs-preview

Rust 实现的 IOTA API

0.1.6 2018年8月18日
0.1.5 2018年8月16日
0.1.2 2018年7月22日

#99 in #iota


用于 iota-spammer

MIT 许可证

235KB
5.5K SLoC

在 Rust 中实现的非官方 IOTA API。

Build Status Windows Build status Version Documentation License

这是将 IOTA Java/JS API 转换为 Rust 的一个版本。它可行,但我还不建议用它处理真实货币。话虽如此,如果您有任何建议或遇到任何问题,请告诉我。

以下是一些您可能想使用此库的原因

  1. 它实现了非常快速的本地 PoW(在我的笔记本电脑上,MwM = 14 时为 1-2 秒,MwM = 9 时为 4-6 毫秒)
  2. 您将受益于 Rust 非常优秀的类型系统
  3. 此库比 Jota 更活跃地维护
  4. 既然库已经工作正常,我将沉迷于它,以提高安全性、性能和可用性
  5. 这会让我个人感到高兴 :)

文档

https://docs.rs/iota-lib-rs-preview

此库目前需要 nightly rust 来构建。

已完成的事项

  • 加密
    • Curl
    • Kerl
    • PearlDiver
    • ISS
    • HMAC
    • 签名
  • 模型
    • 输入
    • 输入
    • 邻居
    • 签名
    • 交易
    • 转账
  • 工具
    • 校验和
    • 常量
    • 转换器
    • 输入验证器
    • IotaAPIUtils
    • IotaUnitConversion
    • IotaUnits
    • 多重签名
    • SeedRandomGenerator
    • 计时器
    • TrytesConverter
  • API
    • IRI API 调用和响应
      • 添加邻居
      • 附加到 Tangle
      • 查找交易
      • 获取余额
      • 广播交易
      • 存储交易
      • 获取包含状态
      • 获取邻居
      • 获取节点信息
      • 获取提示
      • 获取待批准的交易
      • 获取 trytes
      • 删除邻居
      • 是否有地址被花费
      • 检查一致性
    • 易于使用的包装器/辅助函数
      • 创建新地址
      • 获取新地址
      • 发送 trytes
      • 存储和广播
      • 获取输入
      • 准备转账
      • 遍历包
      • 发送转账
      • 获取包

以下是如何发送交易的一个示例:(注意,我们在 send_transfer() 中使用地址作为种子……不要这样做)

extern crate iota_lib_rs;
extern crate futures;

use iota_lib_rs::iota_api;
use iota_lib_rs::iota_api::SendTransferOptions;
use iota_lib_rs::utils::trytes_converter;
use iota_lib_rs::model::*;

use futures::executor::block_on;

fn main() {
    let trytes = "HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD";
    let message = trytes_converter::to_trytes("Hello World").unwrap();
    let mut transfer = Transfer::default();
    *transfer.value_mut() = 0;
    *transfer.address_mut() = trytes.to_string();
    *transfer.message_mut() = message;
    let api = iota_api::API::new("https://trinity.iota.fm");
    let options = SendTransferOptions{
        seed: trytes.to_string(),
        depth: 3,
        min_weight_magnitude: 14,
        local_pow: true,
        threads: None,
        inputs: None,
        reference: None,
        remainder_address: None,
        security: None,
        hmac_key: None,
    };    
    // This line is commented out because travis CI can't handle it,
    // but you should uncomment it
    let tx = block_on(api.send_transfers(vec![transfer], options)).unwrap();
    println!("{:?}", tx);
}

捐赠

如果您愿意,您可以在以下地址找到我的捐赠地址

https://ecosystem.iota.org/projects/iota-lib-rs

依赖项

~19–30MB
~527K SLoC