3 个版本 (破坏性)

0.3.1 2024 年 8 月 26 日
0.3.0 2024 年 8 月 25 日
0.2.0 2023 年 3 月 11 日
0.1.1 2023 年 2 月 17 日
0.1.0 2023 年 2 月 10 日

226神奇豆

Download history 7/week @ 2024-05-06 24/week @ 2024-05-20 81/week @ 2024-05-27 18/week @ 2024-06-03 12/week @ 2024-06-10 52/week @ 2024-06-17 20/week @ 2024-06-24 18/week @ 2024-07-01 29/week @ 2024-07-22 11/week @ 2024-07-29 1/week @ 2024-08-12 96/week @ 2024-08-19

每月下载量 124 次

MIT 许可证

51KB
1K SLoC

Crates.io Crates.io

描述

Rust 编程风格的 Tron API 客户端库。

支持的功能

功能 支持
交易签名与广播
智能合约调用
基本网络查询
为能量和带宽抵押 TRX
离线交易签名
离线交易编码(不使用 CreateTransaction API)
投票与提案

结构

描述
heliosphere 主箱
heliosphere-core 核心类型,与 no_std 兼容但需要 alloc
heliosphere-signer 交易签名实用工具,与 no_std 兼容但需要 alloc

TRC20 转账示例

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

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

// Transfer tokens
let method_call = 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.estimate_energy(&method_call).await.unwrap();
println!("Estimated energy usage: {}", estimated);
// Send tx
let mut tx = client
    .trigger_contract(&method_call, 0, None)
    .await
    .unwrap();
keypair.sign_transaction(&mut tx).unwrap();
let txid = client.broadcast_transaction(&tx).await.unwrap();
println!("Txid: {}", txid);
println!("Confirming...");
client.await_confirmation(txid).await.unwrap();

许可证

本项目采用 MIT 许可证

依赖关系

~13–24MB
~367K SLoC