aptos_sdk/transaction/mod.rs
1//! Transaction building and signing.
2//!
3//! This module provides types and utilities for constructing, signing,
4//! and submitting transactions to the Aptos blockchain.
5//!
6//! # Overview
7//!
8//! The transaction module supports several transaction types:
9//!
10//! - **Simple transactions** - Single sender, self-paid gas
11//! - **Multi-agent transactions** - Multiple signers required
12//! - **Sponsored transactions** - Fee payer pays gas on sender's behalf
13//! - **Batch transactions** - Multiple transactions submitted efficiently
14//!
15//! # Example: Simple Transaction
16//!
17//! ```rust,ignore
18//! use aptos_sdk::transaction::{TransactionBuilder, EntryFunction};
19//! use aptos_sdk::types::AccountAddress;
20//!
21//! let payload = EntryFunction::apt_transfer(recipient, 1000)?;
22//!
23//! let signed_txn = TransactionBuilder::new()
24//! .sender(sender.address())
25//! .sequence_number(0)
26//! .payload(payload.into())
27//! .chain_id(ChainId::testnet())
28//! .build_and_sign(&sender)?;
29//! ```
30//!
31//! # Example: Type-Safe Payload Building
32//!
33//! ```rust,ignore
34//! use aptos_sdk::transaction::InputEntryFunctionData;
35//!
36//! // Simple and ergonomic payload construction
37//! let payload = InputEntryFunctionData::new("0x1::aptos_account::transfer")
38//! .arg(recipient)
39//! .arg(1_000_000u64)
40//! .build()?;
41//!
42//! // With type arguments
43//! let payload = InputEntryFunctionData::new("0x1::coin::transfer")
44//! .type_arg("0x1::aptos_coin::AptosCoin")
45//! .arg(recipient)
46//! .arg(amount)
47//! .build()?;
48//! ```
49//!
50//! # Example: Sponsored Transaction
51//!
52//! ```rust,ignore
53//! use aptos_sdk::transaction::{SponsoredTransactionBuilder, EntryFunction};
54//!
55//! let payload = EntryFunction::apt_transfer(recipient, 1000)?;
56//!
57//! let signed_txn = SponsoredTransactionBuilder::new()
58//! .sender(&user_account)
59//! .sequence_number(0)
60//! .fee_payer(&sponsor_account)
61//! .payload(payload.into())
62//! .chain_id(ChainId::testnet())
63//! .build_and_sign()?;
64//! ```
65//!
66//! # Example: Batch Transactions
67//!
68//! ```rust,ignore
69//! use aptos_sdk::transaction::batch::TransactionBatchBuilder;
70//!
71//! let batch = TransactionBatchBuilder::new()
72//! .sender(account.address())
73//! .starting_sequence_number(seq_num)
74//! .chain_id(ChainId::testnet())
75//! .add_payload(payload1)
76//! .add_payload(payload2)
77//! .build_and_sign(&account)?;
78//!
79//! // Submit all in parallel
80//! let results = batch.submit_all(&client).await;
81//! ```
82
83pub mod authenticator;
84pub mod batch;
85pub mod builder;
86pub mod input;
87pub mod payload;
88pub mod simulation;
89pub mod sponsored;
90pub mod types;
91
92pub use authenticator::{AccountAuthenticator, Ed25519Authenticator, TransactionAuthenticator};
93pub use batch::{
94 BatchOperations, BatchSummary, BatchTransactionResult, BatchTransactionStatus,
95 SignedTransactionBatch, TransactionBatchBuilder,
96};
97pub use builder::{TransactionBuilder, sign_transaction};
98pub use input::{
99 InputEntryFunctionData, InputEntryFunctionDataBuilder, IntoMoveArg, MoveI128, MoveI256,
100 MoveU256, functions, move_none, move_some, move_string, move_vec, types as move_types,
101};
102pub use payload::{EntryFunction, Script, ScriptArgument, TransactionPayload};
103pub use simulation::{
104 SimulatedEvent, SimulationOptions, SimulationResult, StateChange, VmError, VmErrorCategory,
105};
106pub use sponsored::{PartiallySigned, Sponsor, SponsoredTransactionBuilder, sponsor_transaction};
107pub use types::{
108 RawTransaction, RawTransactionOrderless, SignedTransaction, SignedTransactionOrderless,
109 TransactionInfo,
110};