如何通过Python发送TRC20 USDT?现有代码误发TRX求解决
解决Python发送TRC20 USDT的问题
你的代码用了client.trx.transfer接口,这是波场原生TRX的转账方法,自然只会发送TRX。要发送TRC20 USDT,需要调用USDT的TRC20合约方法,以下是修正后的代码:
from tronpy import Tron from tronpy.keys import PrivateKey # 初始化主网客户端 client = Tron(network='mainnet') # 替换为你的私钥(十六进制格式) priv_key = PrivateKey(bytes.fromhex("你的私钥")) # 替换为转出地址(base58格式) from_address = "你的转出地址" # 替换为转入地址(base58格式) to_address = "接收地址" # TRC20 USDT的主网合约地址 usdt_contract = client.get_contract("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t") # 注意:USDT是6位小数,所以1 USDT对应1000000个最小单位 amount = 1_000_000 # 这里代表1 USDT # 构建TRC20转账交易 txn = ( usdt_contract.functions.transfer(to_address, amount) .with_owner(from_address) .build() .sign(priv_key) ) # 打印交易ID并广播 print(txn.txid) print(txn.broadcast().wait())
关键说明
- 合约地址:TRC20 USDT主网合约固定为
TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t,测试网请替换为对应合约地址 - 金额处理:TRC20代币有小数位,USDT是6位,转账时要把实际金额乘以10^6转换为最小单位
- 手续费:转账TRC20 USDT需要消耗少量TRX作为链上手续费,确保转出地址有足够TRX余额
- 地址格式:必须使用波场的base58格式地址,不要用十六进制地址
内容的提问来源于stack exchange,提问作者idks
相关产品推荐
相关产品推荐

