41 releases

0.4.1 Oct 14, 2019
0.4.0 Oct 9, 2019
0.3.0 Jun 24, 2019
0.2.0 Jun 20, 2019
0.0.10 Jun 29, 2018

#53 in #iota

Download history 307/week @ 2024-07-28 50/week @ 2024-09-22 16/week @ 2024-09-29

118 downloads per month
Used in iota-pow-box

MIT license

1MB
15K SLoC

Rust 12K SLoC // 0.1% comments Java 3.5K SLoC // 0.2% comments Batch 67 SLoC Shell 29 SLoC

iota.rs

Build status Version Documentation License

This is the WIP Rust client library, which allows you to do the following:

  • Create transactions
  • Sign transactions
  • Generate addresses
  • Interact with an IRI node

This client library is still in the beta stage, so there may be performance and stability issues. As IOTA Foundation currently working on bee, we also decided to re-implement common libraries for security. This library is going to be feature freeze untill fundamental crates are done. Please report any issues in our issue tracker.

Table of contents
Prerequisites
Using the library
Getting started
API reference
Examples
Supporting the project
Joining the discussion
License

Prerequisites

To use the library, we recommend update your Rust to latest stable version rustup update stable. Nightly should be fine but you are expected some changes might not be compatable.

no_std is not supported currently, but we are working on it in bee, and will provide it as feature once new library implementation is ready.

Using the library

Using the library is fairly easy, just add it as dependancy in Cargo.toml:

[dependencies]
iota-lib-rs = "0.4"

Getting started

After you've installed the library, you can connect to an IRI node to send transactions to it and interact with the ledger.

To connect to a local IRI node, we provide a module Client :

use iota_lib_rs::prelude::*;

let mut iota = iota_client::Client::new("https://localhost");

println!("{:#?}", iota.get_node_info().unwrap);

API reference

For details on all available API methods, see the documentation.

Examples

use iota_client::options::SendTransferOptions;
use iota_lib_rs::prelude::*;
use iota_model::Transfer;
use iota_conversion::trytes_converter;

fn main() {
    let trytes =
        "HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD";
    let message = trytes_converter::to_trytes("Hello World").unwrap();
    let transfer = Transfer {
        address: trytes.to_string(),
        // Don't need to specify the field 
        // because the field and variable
        // have the same name
        message,
        // Populate the rest of the fields with default values
        ..Transfer::default()
    };
    let mut api = iota_client::Client::new("https://node01.iotatoken.nl");
    let tx = api
        .send_transfers(
            transfer,
            &trytes,
            SendTransferOptions {
                local_pow: true,
                threads: 2,
                ..SendTransferOptions::default()
            },
        )
        .unwrap();
    println!("{:?}", tx);
}

Supporting the project

Joining the discussion

If you want to get involved in the community, need help with setting up, have any issues related with the library or just want to discuss IOTA, Distributed Ledger Technology (DLT) and IoT with other people, feel free to join our Discord.

License

The MIT license can be found here.

Dependencies

~27MB
~536K SLoC