A user-friendly, idiomatic Rust SDK for the Aptos blockchain with feature parity to the TypeScript SDK.
- Full Blockchain Interaction — Connect, explore, and transact on the Aptos blockchain
- Multiple Signature Schemes — Ed25519, Secp256k1, Secp256r1 (P-256), and BLS12-381
- Transaction Building — Fluent builder pattern for entry functions, scripts, and multi-agent transactions
- Account Management — Single-key, multi-key, multi-sig, and keyless (OIDC) accounts
- Type-Safe Contract Bindings — Proc macros for generating Rust bindings from Move ABIs
- Modular Design — Feature flags to include only what you need for minimal binary size
- Async / Await — Built on
tokioandreqwestfor non-blocking I/O
| Crate | Description |
|---|---|
aptos-sdk |
Main SDK — async clients, account management, transaction building, and crypto |
aptos-sdk-macros |
Procedural macros for type-safe contract bindings |
- Rust 1.90+ (pinned in
rust-toolchain.toml) - An Aptos fullnode REST endpoint (mainnet / testnet / devnet / localnet)
Add the SDK to your Cargo.toml:
[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk" }Then use it:
use aptos_sdk::{Aptos, AptosConfig};
use aptos_sdk::account::{Account, Ed25519Account};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Connect to testnet
let aptos = Aptos::new(AptosConfig::testnet())?;
// Create a new account
let account = Ed25519Account::generate();
println!("Address: {}", account.address());
// Check balance
let balance = aptos.get_balance(account.address()).await?;
println!("Balance: {} octas", balance);
Ok(())
}| Feature | Default | Description |
|---|---|---|
ed25519 |
Yes | Ed25519 signature scheme |
secp256k1 |
Yes | Secp256k1 ECDSA signatures |
secp256r1 |
Yes | Secp256r1 (P-256) ECDSA signatures |
mnemonic |
Yes | BIP-39 mnemonic phrase support for key derivation |
indexer |
Yes | GraphQL indexer client |
faucet |
Yes | Faucet integration for testnets |
bls |
— | BLS12-381 signatures |
keyless |
— | OIDC-based keyless authentication |
macros |
— | Procedural macros for type-safe contract bindings |
full |
— | Enable all features |
Include only the signature scheme you need:
[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk", default-features = false, features = ["ed25519"] }Enable everything:
[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk", features = ["full"] }Complete, runnable examples live in crates/aptos-sdk/examples/.
| Example | Description |
|---|---|
transfer.rs |
Basic APT transfer between accounts |
view_function.rs |
Read-only view function calls |
balance_checker.rs |
Check account balances |
transaction_data.rs |
Working with transaction data |
simulation.rs |
Simulate transactions before submission |
| Example | Description |
|---|---|
entry_function.rs |
Entry function transaction building |
script_transaction.rs |
Script-based transactions |
sponsored_transaction.rs |
Fee payer (sponsored) transactions |
multi_agent.rs |
Multi-signer transactions |
transaction_waiting.rs |
Transaction waiting strategies |
advanced_transactions.rs |
Complex transaction combinations |
| Example | Description |
|---|---|
account_management.rs |
Account creation and management |
multi_key_account.rs |
Multi-key (mixed signature) accounts |
multi_sig_account.rs |
MultiEd25519 threshold accounts |
multisig_v2.rs |
On-chain multisig (governance) accounts |
| Example | Description |
|---|---|
deploy_module.rs |
Deploy a Move module |
call_contract.rs |
Call contract entry functions |
read_contract_state.rs |
Read contract state |
nft_operations.rs |
NFT / Digital Asset interactions |
codegen.rs |
Contract binding generation |
contract_bindings.rs |
Using generated type-safe bindings |
| Example | Description |
|---|---|
indexer_queries.rs |
Query the Aptos indexer via GraphQL |
event_queries.rs |
Query on-chain events |
Run any example with:
cargo run -p aptos-sdk --example transfer --features "ed25519,faucet"cargo build -p aptos-sdk # Default features
cargo build -p aptos-sdk --all-features # All features
cargo build -p aptos-sdk --release # Release buildcargo test -p aptos-sdk # Unit tests (default features)
cargo test -p aptos-sdk --all-features # Unit tests (all features)
# E2E tests (requires a running localnet)
aptos node run-localnet --with-faucet
cargo test -p aptos-sdk --features "e2e" -- --ignoredcargo clippy -p aptos-sdk --all-features -- -D warnings
cargo fmt -- --checkcrates/aptos-sdk/src/
├── aptos.rs # Main entry point – combines all API capabilities
├── config.rs # Network configuration (mainnet, testnet, devnet, localnet)
├── account/ # Account types: Ed25519, Secp256k1, Secp256r1, MultiKey, Keyless
├── api/ # REST fullnode, GraphQL indexer, faucet, and ANS clients
├── transaction/ # Builder, authenticator, sponsored & batched transactions
├── crypto/ # Signature schemes, hashing, and cryptographic traits
├── types/ # Addresses, Move types, hash values
└── codegen/ # Generate type-safe Rust bindings from Move ABIs
Apache-2.0