use iota_client::{Client, Result, Seed};
extern crate dotenv;
use dotenv::dotenv;
use std::env;
const EXPLORER_URL: &str = "https://explorer.iota.org/devnet/message/";
#[tokio::main]
async fn main() -> Result<()> {
let iota = Client::builder()
.with_node("https://api.lb-0.h.chrysalis-devnet.iota.cafe")? .with_node_sync_disabled()
.finish()
.await?;
dotenv().ok();
let seed_1 = Seed::from_bytes(&hex::decode(env::var("NONSECURE_USE_OF_DEVELOPMENT_SEED_1").unwrap())?);
let seed_2 = Seed::from_bytes(&hex::decode(env::var("NONSECURE_USE_OF_DEVELOPMENT_SEED_2").unwrap())?);
let message = iota
.message()
.with_seed(&seed_1)
.with_output(
&iota.get_addresses(&seed_2).with_range(0..1).finish().await?[0],
3_000_000,
)?
.finish()
.await?;
println!("First transaction sent: {}{}", EXPLORER_URL, message.id().0);
let _ = iota.retry_until_included(&message.id().0, None, None).await?;
let message = iota
.message()
.with_seed(&seed_1)
.with_output(
&iota.get_addresses(&seed_2).with_range(1..2).finish().await?[0],
3_000_000,
)?
.finish()
.await?;
println!("Second transaction sent: {}{}", EXPLORER_URL, message.id().0);
let _ = iota.retry_until_included(&message.id().0, None, None).await?;
let message = iota
.message()
.with_seed(&seed_1)
.with_output(
&iota.get_addresses(&seed_2).with_range(2..3).finish().await?[0],
3_000_000,
)?
.finish()
.await?;
println!("Third transaction sent: {}{}", EXPLORER_URL, message.id().0);
let _ = iota.retry_until_included(&message.id().0, None, None).await?;
let message = iota
.message()
.with_seed(&seed_2)
.with_output(
&iota.get_addresses(&seed_1).with_range(1..2).finish().await?[0],
3_000_000,
)?
.with_output(
&iota.get_addresses(&seed_1).with_range(2..3).finish().await?[0],
3_000_000,
)?
.finish()
.await?;
println!("Last transaction sent: {}{}", EXPLORER_URL, message.id().0);
let _ = iota.retry_until_included(&message.id().0, None, None).await?;
let message_metadata = iota.get_message().metadata(&message.id().0).await;
println!("Ledger Inclusion State: {:?}", message_metadata?.ledger_inclusion_state);
Ok(())
}