The shortest path from a wallet file to a TRANSFER confirmed in a block: one dependency, one function, three minutes.
If you have never signed anything on this network, read the sign-and-broadcast guide first.
transferir() already resolves the nonce, builds, signs and submits. What is left is checking.
Inside the monorepo the path is sdk; outside it, point at your local clone.
[dependencies]
eav7-sdk = { path = "../eav7/rust/sdk" }Note the two checks: accepted separates rejection from acceptance, and aguardar_confirmacao separates acceptance from execution.
use eav7_sdk::{Eav7Client, ProductionWallet};
use std::time::Duration;
const UNIT: u128 = 1_000_000;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let carteira = ProductionWallet::from_file("carteira.json")?;
let cliente = Eav7Client::com_carteira("https://eavscan.com", Box::new(carteira));
// transferir() resolve o nonce, monta, assina e envia — uma chamada
let recibo = cliente.transferir("E7DEST…9A02", 5 * UNIT)?;
if !recibo.accepted {
eprintln!("recusada: {}", recibo.reason.unwrap_or_default());
return Ok(());
}
let bloco = cliente.aguardar_confirmacao(&recibo.id, Duration::from_secs(30))?;
println!("confirmada no bloco {}", bloco.block_height);
Ok(())
}By transaction id or by the destination's balance — both read the same chain.
curl -s https://eavscan.com/tx/0x8c1f… -H 'Accept: application/json'
{
"id": "0x8c1f…",
"type": "TRANSFER",
"from": "E7A4B2…9F21",
"to": "E7DEST…9A02",
"amount": "5000000",
"fee": "10000",
"blockHeight": 1284391
}Amount and fee are distinct fields, and the fee is almost never charged in full.
5 EAV7 = 5 000 000 e7Always an integer string in e7 in the JSON — never a decimal number.10 000 e7Authorized burn limit for a TRANSFER.1One unit. Inside the free quota, the effective burn is zero.The same flow, as an executable example of the crate.
cargo run -p eav7-sdk --example enviar -- \ https://eavscan.com carteira.json E7DEST…9A02 5000000