Crates.io Crates.io

Description

Rust-idiomatic Tron API client library.

Supported features

| Features | Support | |----------|---------| | Transaction signing & broadcasting | ✓ | | Smart contract calls | ✓ | | Basic network querying | ✓ | | Staking TRX for energy and bandwidth | ✓ | | Offline transaction signing | ✓ | | Offline transaction encoding (without CreateTransaction API) | ✗ | | Voting & Proposals | ✗ |

Structure

| Crate | Description | |--------------|------------------| | heliosphere | Main crate | | heliosphere-core | Core types, nostd compatible but alloc required | | heliosphere-signer | Transaction signing utils, nostd compatible but alloc required |

TRC20 transfer example

``` let api = "https://api.shasta.trongrid.io"; let keypair = Keypair::fromhexkey( std::fs::readtostring(".key") .expect("no ./.key found") .trim(), ) .unwrap(); let client = RpcClient::new(api).unwrap(); let from = keypair.address(); let to: Address = "".parse().unwrap(); let usdt: Address = "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs".parse().unwrap(); // shasta testnet USDT let amount: u64 = 1; // 0.000001 USDT

// Fetch account balance let methodcallbalance = MethodCall { caller: &from, contract: &usdt, selector: "balanceOf(address)", parameter: &ethabi::encode(&[Token::Address(from.into())]), }; let res = &ethabi::decode( &[ParamType::Uint(256)], &client .querycontract(&methodcallbalance) .await .unwrap() .constantresult(0) .unwrap(), ) .unwrap()[0]; let currentbalance = match res { Token::Uint(x) => x, _ => panic!("Wrong type"), }; println!("Balance: {}", currentbalance);

// Transfer tokens let methodcall = MethodCall { caller: &from, contract: &usdt, selector: "transfer(address,uint256)", parameter: &ethabi::encode(&[Token::Address(to.into()), Token::Uint(U256::from(amount))]), }; // Estimate energy usage let estimated = client.estimateenergy(&methodcall).await.unwrap(); println!("Estimated energy usage: {}", estimated); // Send tx let mut tx = client .triggercontract(&methodcall, 0, None) .await .unwrap(); keypair.signtransaction(&mut tx).unwrap(); let txid = client.broadcasttransaction(&tx).await.unwrap(); println!("Txid: {}", txid); println!("Confirming..."); client.awaitconfirmation(txid).await.unwrap(); ```

License

This project is licensed under the [MIT license].