#blazingly #ao #client #sdk #cu #process #dry

rusty_ao

A blazingly fast client for AO written in Rust

2 releases

0.1.1 Oct 10, 2024
0.1.0 Oct 9, 2024

#708 in Asynchronous

MIT license

3MB
407 lines

About

A blazingly fast client for AO written in Rust.

Install

cargo add rusty_ao

Alternatively, in your Cargo.toml, add:

[dependencies]
ao = { git = "https://github.com/weaveVM/rusty-ao.git", branch = "main" }

Usage Examples

Init an AO client

let ao = Ao::new(
  "https://mu.ao-testnet.xyz".to_string(),
  "https://cu.ao-testnet.xyz".to_string(),
  SignerTypes::Arweave("test_key.json".to_string()),
  )
  .unwrap();

or using the default_init method

let ao = Ao::default_init(SignerTypes::Arweave("test_key.json".to_string()))
  .unwrap();

Dry run an AO process message call

// let ao = ...init AO...

let res = ao
    .dry_run(
        "xU9zFkq3X2ZQ6olwNVvr1vUWIjc3kXTWr7xKQD6dh10".to_string(),
        "".to_string(),
        vec![Tag {
            name: "Action".to_string(),
            value: "Info".to_string(),
        }],
    )
    .await;

assert!(res.is_ok());
println!("{}", serde_json::to_string(&res.unwrap()).unwrap());

Spawn a new process

// let ao = ...init AO...

let res = ao
    .spawn(
        "test1".to_string(),
        "rusty-ao".to_string(),
        DEFAULT_MODULE.to_string(),
        DEFAULT_SCHEDULER.to_string(),
        vec![],
    )
    .await;

println!("{:?}", res);
assert!(res.is_ok());
println!("{}", serde_json::to_string(&res.unwrap()).unwrap());

Request CU get process result

// let ao = ...init AO...

let res = ao
    .get(
        "ya9XinY0qXeYyf7HXANqzOiKns8yiXZoDtFqUMXkX0Q".to_string(),
        "5JtjkYy1hk0Zce5mP6gDWIOdt9rCSQAFX-K9jZnqniw".to_string(),
    )
    .await;

println!("{:?}", res);
assert!(res.is_ok());
println!("{}", serde_json::to_string(&res.unwrap()).unwrap());

Credits

  • goao: Golang SDK for interacting with ao processes. link

License

This project is licensed under the MIT License

Dependencies

~24–38MB
~675K SLoC