use iota_sdk::client::{api::GetAddressesOptions, request_funds_from_faucet, secret::SecretManager, Client, Result};
#[tokio::main]
async fn main() -> Result<()> {
dotenvy::dotenv().ok();
for var in ["NODE_URL", "MNEMONIC", "FAUCET_URL", "EXPLORER_URL"] {
std::env::var(var).expect(&format!(".env variable '{var}' is undefined, see .env.example"));
}
let client = Client::builder()
.with_node(&std::env::var("NODE_URL").unwrap())?
.finish()
.await?;
let secret_manager = SecretManager::try_from_mnemonic(std::env::var("MNEMONIC").unwrap())?;
let address = secret_manager
.generate_ed25519_addresses(GetAddressesOptions::from_client(&client).await?.with_range(0..1))
.await?[0];
println!(
"Requesting funds (waiting 15s): {}",
request_funds_from_faucet(&std::env::var("FAUCET_URL").unwrap(), &address,).await?
);
tokio::time::sleep(std::time::Duration::from_secs(15)).await;
let mut block_builder = client.build_block().with_secret_manager(&secret_manager);
for _ in 0..100 {
block_builder = block_builder.with_output(address, 1_000_000).await?;
}
let block = block_builder.finish().await?;
println!(
"Block with split funds sent: {}/block/{}",
std::env::var("EXPLORER_URL").unwrap(),
block.id()
);
Ok(())
}