使用Python版TronAPI在Shasta网络创建TRX交易遇SIGERROR签名错误
签名权限错误排查方案
核心问题定位
错误信息明确说明:签名地址TNBWAv3eDZ3W9c61etU34DEy2X1kx5v6m5不在发送地址的权限配置中。以下是针对性排查步骤:
1. 验证私钥与地址的对应关系
确保你传入的private_key确实对应TNBWAv3eDZ3W9c61etU34DEy2X1kx5v6m5,而非sender_address。可以用以下代码验证:
# 从私钥推导对应地址 derived_address = tron.address.from_private_key(private_key) print(f"私钥对应地址: {derived_address}") print(f"设置的sender_address: {sender_address}")
如果两者不匹配,说明存在私钥或发送地址配置错误。
2. 检查发送地址的权限配置
Tron账户支持多权限配置(owner/active权限),若sender_address的权限列表未包含签名地址TNBWAv3eDZ3W9c61etU34DEy2X1kx5v6m5,会触发该错误:
- 直接在Shasta测试网区块浏览器查询
sender_address的权限信息,确认是否添加了该签名地址的权限; - 若为首次操作,大概率是误将其他地址的私钥用于
sender_address的交易,直接更换为sender_address对应的私钥即可。
3. 简化代码配置,避免参数冲突
你的代码中同时设置了tron.default_address和options['from'],可能导致参数冲突。建议简化代码:
from tronapi import Tron full_node = 'https://api.shasta.trongrid.io' solidity_node = 'https://api.shasta.trongrid.io' event_server = 'https://api.shasta.trongrid.io' tron = Tron(full_node=full_node, solidity_node=solidity_node, event_server=event_server) # 用私钥初始化后会自动推导对应地址,无需手动设置default_address和from参数 tron.private_key = private_key txn = tron.trx.send_transaction(to=receiver_address, amount=amount, message=memo_text)
4. 确认测试网环境一致性
确保查询地址信息时使用的是Shasta测试网,主网与测试网账户数据完全隔离,不要混淆环境。
内容的提问来源于stack exchange,提问作者chandra prakash meghwal
相关产品推荐
相关产品推荐

