Skip to main content

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};