使用 Python 发送 TRON 网络上的 USDT 和 TRX 交易

·

TRON 网络作为主流的区块链平台,支持多种数字货币交易,其中 TRX 是其原生代币,而 USDT(TRC-20)则是基于 TRON 的稳定币。本文将详细介绍如何使用 Python 和 tronpy 库来发送 TRON 网络上的 USDT 和 TRX 交易,涵盖环境设置、脚本编写和交易执行的全过程。

准备工作

在开始编写交易脚本前,需要完成以下准备工作。

环境设置

确保你的 Python 环境已安装 tronpy 库。通过 pip 命令即可安装:

pip install tronpy

获取钱包信息

进行任何交易都需要以下关键信息:

请妥善保管私钥,避免泄露。

发送 USDT(TRC-20)交易

USDT 是 TRON 网络上广泛使用的稳定币,遵循 TRC-20 标准。发送 USDT 交易涉及与智能合约的交互。

交易流程

  1. 初始化 Tron 客户端:创建 Tron 客户端对象以连接网络。
  2. 设置钱包地址和私钥:使用你的实际钱包信息替换占位符。
  3. 指定接收方和金额:设置接收方地址和要发送的 USDT 数量。
  4. 设置合约地址:USDT 的合约地址固定为 TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
  5. 创建私钥对象:将私钥字符串转换为 PrivateKey 对象。
  6. 创建合约对象:通过合约地址获取 USDT 合约实例。
  7. 构建交易:调用合约的 transfer 方法,设置手续费上限并签名。
  8. 广播交易:将签名后的交易发送到 TRON 网络。
  9. 检查结果:验证交易是否成功,并处理可能的错误。

完整脚本示例

以下 Python 脚本演示了发送 USDT 交易的完整过程:

from tronpy import Tron
from tronpy.keys import PrivateKey

# 初始化 Tron 客户端
client = Tron()

# 设置钱包地址和私钥
private_key_str = "你的私钥"
wallet_address = "你的钱包地址"

# 接收方地址和转账金额
to_address = "接收方钱包地址"
amount_usdt = 10  # 发送 10 个 USDT

# TRC-20 USDT 合约地址
usdt_contract_address = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"

# 创建私钥对象
private_key = PrivateKey(bytes.fromhex(private_key_str))

# 创建合约对象
contract = client.get_contract(usdt_contract_address)

# 构建交易
txn = (
    contract.functions.transfer(to_address, int(amount_usdt * 1_000_000))  # USDT 有 6 位小数
    .with_owner(wallet_address)
    .fee_limit(1_000_000_000)  # 设置手续费上限
    .build()
    .sign(private_key)  # 签署交易
)

try:
    # 广播交易
    result = txn.broadcast()
    
    # 检查交易结果
    if 'result' in result and result['result'] == True:
        print(f"交易成功!交易 ID: {result['txid']}")
    else:
        print(f"交易失败!错误信息: {result.get('message', '未知错误')}")
except Exception as e:
    print(f"发生异常: {str(e)}")

发送 TRX 交易

TRX 是 TRON 网络的原生代币,用于支付手续费和参与网络治理。发送 TRX 交易相对简单,无需与智能合约交互。

交易流程

  1. 初始化 Tron 客户端:创建客户端对象。
  2. 设置钱包地址和私钥:使用你的实际信息。
  3. 指定接收方和金额:设置接收方地址和 TRX 数量。
  4. 创建私钥对象:将私钥转换为 PrivateKey 对象。
  5. 构建交易:使用 client.trx.transfer 方法创建转账交易。
  6. 广播交易:将交易发送到网络。
  7. 检查结果:验证交易状态,处理错误。

完整脚本示例

以下脚本展示了如何发送 TRX 交易:

from tronpy import Tron
from tronpy.keys import PrivateKey

# 初始化 Tron 客户端
client = Tron()

# 设置钱包地址和私钥
private_key_str = "你的私钥"
wallet_address = "你的钱包地址"

# 接收方地址和转账金额
to_address = "接收方钱包地址"
amount_trx = 5  # 发送 5 个 TRX

# 创建私钥对象
private_key = PrivateKey(bytes.fromhex(private_key_str))

# 构建 TRX 转账交易
txn = (
    client.trx.transfer(wallet_address, to_address, int(amount_trx * 1_000_000))  # TRX 有 6 位小数
    .build()
    .sign(private_key)
)

try:
    # 广播交易
    result = txn.broadcast()
    
    # 检查交易结果
    if 'result' in result and result['result'] == True:
        print(f"交易成功!交易 ID: {result['txid']}")
    else:
        print(f"交易失败!错误信息: {result.get('message', '未知错误')}")
except Exception as e:
    print(f"发生异常: {str(e)}")

👉 查看实时交易工具与更多开发资源

常见问题

1. 如何获取 TRON 钱包地址和私钥?

你可以使用 Trust Wallet、TronLink 等主流钱包生成 TRON 钱包。创建后,导出私钥并妥善保存。切勿将私钥分享给他人。

2. 发送交易时为什么需要设置手续费上限?

TRON 网络需要手续费来处理交易。设置手续费上限可以防止因网络拥堵导致过高的费用。通常,100-1000 TRX 的手续费上限足够覆盖大多数交易。

3. USDT 和 TRX 的小数位是多少?

USDT 和 TRX 都有 6 位小数。在脚本中,需要将金额乘以 1,000,000 转换为最小单位(如 sun)。

4. 交易失败常见的原因有哪些?

常见原因包括余额不足、手续费设置过低、私钥错误或网络问题。检查错误信息并确认所有参数正确。

5. 如何确认交易是否成功?

交易广播后,会返回一个交易 ID。你可以使用 TRON 区块链浏览器(如 Tronscan)输入交易 ID 查询状态。

6. tronpy 库支持其他 TRON 网络功能吗?

是的,tronpy 还支持智能合约部署、调用、查询账户余额等功能。👉 探索更多 TRON 开发策略与进阶方法