You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过TronAPI合约发送TRC20代币?代码无报错但失效

问题分析与解决方案

你的代码仅完成了TRC20转账交易的构建步骤,但缺少关键的交易签名和广播上链操作,因此代币没有实际完成转账。TRON网络要求所有交易必须经过私钥签名,再广播到区块链节点后才会被执行确认。

具体修正点

  • TRC20标准的transfer(address, uint256)方法中,第二个参数类型应为uint256而非int256,虽然正数不影响,但需严格匹配合约方法定义
  • 添加交易签名与广播逻辑

修正后的完整代码

from tronapi import Tron
from tronapi import HttpProvider

full_node = HttpProvider('https://nile.trongrid.io')
solidity_node = HttpProvider('https://nile.trongrid.io')
event_server = HttpProvider('https://nile.trongrid.io')

tron = Tron(full_node=full_node,
            solidity_node=solidity_node,
            event_server=event_server)

tron.private_key = '59d4b72df50290d7f78e2c16fc27758d6e235f3959f2212f2497fc55da33e888'
tron.default_address = 'TRNDt7bjFoTq7p52iw5u2BLNhsff1ux7Fc'
Towallet = 'TFgmQmr31HxkiZ67KBjwZPseT1G5t4tWdT'
Amount = 11
Tcontract='TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj'

# 1. 构建TRC20转账交易
send = tron.transaction_builder.trigger_smart_contract(
    contract_address=tron.address.to_hex(Tcontract),
    function_selector='transfer(address, uint256)',  # 修正方法参数定义
    fee_limit=30000000,
    call_value=0,
    parameters=[
        {'type': 'address', 'value': tron.address.to_hex(Towallet)},
        {'type': 'uint256', 'value': int(float(Amount)*pow(10,6))}  # 修正参数类型为uint256
    ]
)

# 2. 用私钥签名交易
signed_tx = tron.trx.sign(send)

# 3. 广播签名后的交易到区块链网络
broadcast_result = tron.trx.broadcast(signed_tx)

# 打印广播结果
print("广播结果:", broadcast_result)

验证方式

执行代码后,若广播结果中result.result为True,说明交易已成功广播。你可以拿着返回的txID,在Nile测试网区块浏览器中查询交易的最终确认状态。

内容的提问来源于stack exchange,提问作者Mr2C2R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:16:16