Inicio Rapido con el SDK de Rust
-
Crear un Nuevo Proyecto
Usa Cargo para crear un nuevo proyecto de Rust:
Ventana de terminal cargo new aptos-quickstart && cd aptos-quickstart -
Agregar Dependencias
Abre
Cargo.tomly agrega el SDK de Aptos junto contokiopara el runtime asincrono yanyhowpara el manejo de errores:[dependencies]aptos-sdk = { git = "https://github.com/aptos-labs/aptos-rust-sdk", package = "aptos-sdk" }tokio = { version = "1", features = ["full"] }anyhow = "1" -
Configurar el Cliente de Aptos
El cliente
Aptosmaneja toda la comunicacion con la red de Aptos. Crealo pasando unAptosConfigque especifique a que red conectarse.use aptos_sdk::{Aptos, AptosConfig};use aptos_sdk::account::Ed25519Account;#[tokio::main]async fn main() -> anyhow::Result<()> {println!("This example will create two accounts (Alice and Bob), fund them, and transfer APT between them.");// Connect to testnetlet aptos = Aptos::new(AptosConfig::testnet())?;Ok(())} -
Crear y Financiar Cuentas
Genera dos nuevas cuentas Ed25519. En testnet y devnet, puedes financiar cuentas programaticamente usando el faucet, que envia APT de prueba a tus nuevas cuentas. Financiar una cuenta tambien la crea on-chain.
// Generate two new accountslet alice = Ed25519Account::generate();let bob = Ed25519Account::generate();println!("\n=== Addresses ===\n");println!("Alice's address is: {}", alice.address());println!("Bob's address is: {}", bob.address());// Fund the accounts using the testnet faucetprintln!("\n=== Funding accounts ===\n");aptos.fund_account(alice.address(), 100_000_000).await?;aptos.fund_account(bob.address(), 100_000_000).await?;println!("Alice and Bob's accounts have been funded!"); -
Obtener Datos On-Chain
Usa el cliente
Aptospara consultar los saldos de las cuentas. El metodoget_balancedevuelve el saldo de APT en octas.println!("\n=== Initial Balances ===\n");let alice_balance = aptos.get_balance(alice.address()).await?;let bob_balance = aptos.get_balance(bob.address()).await?;println!("Alice's balance: {} octas", alice_balance);println!("Bob's balance: {} octas", bob_balance); -
Transferir APT
Usa el metodo de conveniencia
transfer_aptpara enviar APT de una cuenta a otra. Este metodo construye, firma, envia y espera la transaccion en una sola llamada.// Transfer 0.1 APT (10_000_000 octas) from Alice to Bobprintln!("\n=== Transfer transaction ===\n");let result = aptos.transfer_apt(&alice, bob.address(), 10_000_000).await?;// Verify the transaction succeededlet success = result.data.get("success").and_then(|v| v.as_bool()).unwrap_or(false);println!("Transaction success: {}", success); -
Verificar la Transferencia
Obtiene los saldos actualizados para confirmar que la transferencia se realizo. El saldo de Alice sera menor de lo esperado debido a la tarifa de gas pagada por la transaccion.
println!("\n=== Balances after transfer ===\n");let new_alice_balance = aptos.get_balance(alice.address()).await?;let new_bob_balance = aptos.get_balance(bob.address()).await?;println!("Alice's balance: {} octas", new_alice_balance);println!("Bob's balance: {} octas", new_bob_balance);
Codigo Completo del Inicio Rapido
Sección titulada «Codigo Completo del Inicio Rapido»Ejecutar el Inicio Rapido
Sección titulada «Ejecutar el Inicio Rapido»cargo run/// This example shows how to use the Aptos Rust SDK to create accounts,/// fund them, and transfer APT between them on testnet.use aptos_sdk::{Aptos, AptosConfig};use aptos_sdk::account::Ed25519Account;
const ALICE_INITIAL_BALANCE: u64 = 100_000_000;const BOB_INITIAL_BALANCE: u64 = 100_000_000;const TRANSFER_AMOUNT: u64 = 10_000_000;
#[tokio::main]async fn main() -> anyhow::Result<()> { println!( "This example will create two accounts (Alice and Bob), fund them, \ and transfer APT between them." );
// Setup the client let aptos = Aptos::new(AptosConfig::testnet())?;
// Generate two new accounts let alice = Ed25519Account::generate(); let bob = Ed25519Account::generate();
println!("\n=== Addresses ===\n"); println!("Alice's address is: {}", alice.address()); println!("Bob's address is: {}", bob.address());
// Fund the accounts using the testnet faucet. // Funding an account creates it on-chain. println!("\n=== Funding accounts ===\n"); aptos.fund_account(alice.address(), ALICE_INITIAL_BALANCE).await?; aptos.fund_account(bob.address(), BOB_INITIAL_BALANCE).await?; println!("Alice and Bob's accounts have been funded!");
// Look up the newly funded account balances println!("\n=== Initial Balances ===\n"); let alice_balance = aptos.get_balance(alice.address()).await?; let bob_balance = aptos.get_balance(bob.address()).await?; println!("Alice's balance: {} octas", alice_balance); println!("Bob's balance: {} octas", bob_balance);
// Transfer APT from Alice to Bob println!("\n=== Transfer transaction ===\n"); let result = aptos.transfer_apt(&alice, bob.address(), TRANSFER_AMOUNT).await?;
// Verify the transaction succeeded let success = result .data .get("success") .and_then(|v| v.as_bool()) .unwrap_or(false); println!("Transaction success: {}", success);
// Check updated balances println!("\n=== Balances after transfer ===\n"); let new_alice_balance = aptos.get_balance(alice.address()).await?; let new_bob_balance = aptos.get_balance(bob.address()).await?; println!("Alice's balance: {} octas", new_alice_balance); println!("Bob's balance: {} octas", new_bob_balance);
// Bob should have received the transfer amount assert_eq!( new_bob_balance, BOB_INITIAL_BALANCE + TRANSFER_AMOUNT, "Bob's balance after transfer is incorrect" );
// Alice should have less than her initial balance minus the transfer, // because gas fees are also deducted assert!( new_alice_balance < ALICE_INITIAL_BALANCE - TRANSFER_AMOUNT, "Alice's balance after transfer is incorrect" );
println!("\nQuickstart complete!");
Ok(())}Resumen
Sección titulada «Resumen»En este inicio rapido aprendiste como:
- Configurar un proyecto de Rust con el SDK de Aptos.
- Conectarte a la testnet de Aptos usando el cliente
Aptos. - Generar nuevas cuentas Ed25519.
- Financiar cuentas usando el faucet de testnet.
- Consultar saldos de cuentas on-chain.
- Transferir APT entre cuentas usando el metodo de conveniencia
transfer_apt. - Verificar los resultados de transacciones y los saldos actualizados.