Skip to content

Rust SDK - Batching Transactions

The Rust SDK has a built-in way to send many transactions from the same account and wait for them together. This can be a convenient tool when trying to execute multiple transactions quickly from a single account.

Use aptos.batch_transfer_apt for APT transfers, or aptos.submit_batch_and_wait for arbitrary payloads.

use aptos_sdk::{Aptos, AptosConfig, account::Ed25519Account};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let aptos = Aptos::new(AptosConfig::devnet())?;
let sender = Ed25519Account::generate();
let recipient_1 = Ed25519Account::generate();
let recipient_2 = Ed25519Account::generate();
aptos
.fund_account(sender.address(), 1_000_000_000)
.await?;
let results = aptos
.batch_transfer_apt(
&sender,
vec![
(recipient_1.address(), 1_000_000),
(recipient_2.address(), 2_000_000),
],
)
.await?;
for result in results {
println!("{result:?}");
}
Ok(())
}

For arbitrary payloads:

let results = aptos
.submit_batch_and_wait(&sender, vec![payload1, payload2, payload3], None)
.await?;