https://github.com/aptos-labs/aptos-rust-sdk
Aptos Rust SDK
https://github.com/aptos-labs/aptos-rust-sdk
aptos aptos-sdk sdk-rust
Last synced: 3 months ago
JSON representation
Aptos Rust SDK
- Host: GitHub
- URL: https://github.com/aptos-labs/aptos-rust-sdk
- Owner: aptos-labs
- Created: 2024-04-30T21:28:39.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-02-27T17:21:22.000Z (3 months ago)
- Last Synced: 2026-02-27T21:58:59.367Z (3 months ago)
- Topics: aptos, aptos-sdk, sdk-rust
- Language: Rust
- Homepage:
- Size: 1.13 MB
- Stars: 10
- Watchers: 29
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Security: SECURITY_AUDIT.md
Awesome Lists containing this project
README
# 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`:
```toml
[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk" }
```
Basic usage:
```rust
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:
```toml
[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:
```toml
[dependencies]
aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk", features = ["full"] }
```
## Examples
See the [`crates/aptos-sdk/examples/`](crates/aptos-sdk/examples/) directory for complete working examples:
### Basic Operations
- [`transfer.rs`](crates/aptos-sdk/examples/transfer.rs) - Basic APT transfer
- [`view_function.rs`](crates/aptos-sdk/examples/view_function.rs) - Read-only view function calls
- [`transaction_data.rs`](crates/aptos-sdk/examples/transaction_data.rs) - Working with transaction data
### Advanced Transactions
- [`entry_function.rs`](crates/aptos-sdk/examples/entry_function.rs) - Entry function transaction building
- [`script_transaction.rs`](crates/aptos-sdk/examples/script_transaction.rs) - Script-based transactions
- [`sponsored_transaction.rs`](crates/aptos-sdk/examples/sponsored_transaction.rs) - Fee payer (sponsored) transactions
- [`multi_agent.rs`](crates/aptos-sdk/examples/multi_agent.rs) - Multi-signer transactions
- [`transaction_waiting.rs`](crates/aptos-sdk/examples/transaction_waiting.rs) - Transaction waiting strategies
- [`advanced_transactions.rs`](crates/aptos-sdk/examples/advanced_transactions.rs) - Complex transaction combinations
### Account Types
- [`multi_key_account.rs`](crates/aptos-sdk/examples/multi_key_account.rs) - Multi-key (mixed signature) accounts
- [`multi_sig_account.rs`](crates/aptos-sdk/examples/multi_sig_account.rs) - MultiEd25519 threshold accounts
- [`multisig_v2.rs`](crates/aptos-sdk/examples/multisig_v2.rs) - On-chain multisig (governance) accounts
### Smart Contracts
- [`deploy_module.rs`](crates/aptos-sdk/examples/deploy_module.rs) - Deploy a Move module
- [`call_contract.rs`](crates/aptos-sdk/examples/call_contract.rs) - Call contract entry functions
- [`read_contract_state.rs`](crates/aptos-sdk/examples/read_contract_state.rs) - Read contract state
- [`nft_operations.rs`](crates/aptos-sdk/examples/nft_operations.rs) - NFT/Digital Asset interactions
- [`codegen.rs`](crates/aptos-sdk/examples/codegen.rs) - Contract binding generation
- [`contract_bindings.rs`](crates/aptos-sdk/examples/contract_bindings.rs) - Using generated type-safe bindings
## Development
### Building
```bash
# 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
```bash
# 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
```bash
# Run clippy
cargo clippy -p aptos-sdk --all-features -- -D warnings
# Format code
cargo fmt
# Check formatting
cargo fmt -- --check
```
## Resources
- [Aptos Developer Documentation](https://aptos.dev)
- [TypeScript SDK](https://github.com/aptos-labs/aptos-ts-sdk)
## License
Apache-2.0