Skip to content

aptos-labs/aptos-rust-sdk

Repository files navigation

Aptos Rust SDK

A user-friendly, idiomatic Rust SDK for the Aptos blockchain with feature parity to the TypeScript SDK.

Features

  • Full Blockchain Interaction: Connect, explore, and interact with the Aptos blockchain
  • Multiple Signature Schemes: Ed25519, Secp256k1, Secp256r1 (P-256), and BLS12-381
  • Transaction Building: Fluent builder pattern for constructing transactions
  • Account Management: Single-key, multi-sig, and keyless (OIDC) accounts
  • Type Safety: Strong Rust type system for Move contract interactions
  • Modular Design: Feature flags to include only what you need

Workspace Layout

  • crates/aptos-sdk – Main SDK crate with async clients, account management, transaction building, and crypto
  • crates/aptos-sdk-macros – Procedural macros for type-safe contract bindings

Prerequisites

  • Rust toolchain 1.90+ (tracked in rust-toolchain.toml)
  • Access to an Aptos fullnode REST endpoint (mainnet/testnet/devnet/localnet)

Quick Start

Add to your Cargo.toml:

[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk" }

Basic usage:

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 Flags

Feature Default Description
ed25519 Ed25519 signature scheme
secp256k1 Secp256k1 ECDSA signatures
secp256r1 Secp256r1 (P-256) ECDSA signatures
mnemonic BIP-39 mnemonic phrase support for key derivation
indexer GraphQL indexer client
faucet 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

Minimal Build

For the smallest possible binary:

[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk", default-features = false, features = ["ed25519"] }

Full Build

For all features:

[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk", features = ["full"] }

Examples

See the crates/aptos-sdk/examples/ directory for complete working examples:

Basic Operations

Advanced Transactions

Account Types

Smart Contracts

Development

Building

# Build with default features (ed25519 + secp256k1)
cargo build -p aptos-sdk

# Build with all features
cargo build -p aptos-sdk --all-features

# Release build
cargo build -p aptos-sdk --release

Testing

# Run unit tests
cargo test -p aptos-sdk

# Run tests with all features
cargo test -p aptos-sdk --all-features

# Run E2E tests (requires localnet)
aptos node run-localnet --with-faucet
cargo test -p aptos-sdk --features "e2e" -- --ignored

Linting and Formatting

# Run clippy
cargo clippy -p aptos-sdk --all-features -- -D warnings

# Format code
cargo fmt

# Check formatting
cargo fmt -- --check

Resources

License

Apache-2.0

About

Aptos Rust SDK

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published