Example Code
This section contains examples demonstrating how to use the NeoRust SDK.
Wallet Management
use neo::prelude::*; use std::path::Path; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { // Create a new wallet let password = "my-secure-password"; let wallet = Wallet::new(password)?; // Generate a new account let account = wallet.create_account()?; println!("New account address: {}", account.address()); // Save the wallet to a file wallet.save("my-wallet.json")?; Ok(()) }
Smart Contract Interaction
use neo::prelude::*; use std::path::Path; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { // Connect to a Neo N3 TestNet node let provider = Provider::new_http("https://testnet1.neo.coz.io:443"); // Load your wallet let wallet_path = Path::new("my-wallet.json"); let password = "my-secure-password"; let wallet = Wallet::load(wallet_path, password)?; // Get the account that will invoke the contract let account = wallet.default_account()?; // Contract script hash (address) let contract_hash = "0x1234567890abcdef1234567890abcdef12345678".parse::<ScriptHash>()?; // Create a transaction to invoke the contract let transaction = TransactionBuilder::new() .version(0) .nonce(rand::random::<u32>()) .valid_until_block(provider.get_block_count().await? + 100) .script( ScriptBuilder::new() .contract_call( contract_hash, "transfer", &[ ContractParameter::hash160(account.address().script_hash()), ContractParameter::hash160("NZNos2WqTbu5oCgyfss9kUJgBXJqhuYAaj".parse::<Address>()?), ContractParameter::integer(1000), ContractParameter::any(None), ], ) .to_array() ) .sign(account)? .build(); // Send the transaction let txid = provider.send_raw_transaction(&transaction).await?; println!("Contract invoked with transaction ID: {}", txid); Ok(()) }
For more examples, see the examples directory in the NeoRust repository.