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

使用pytonlib在TON发送交易时遇ExternalMessageNotAccepted错误求助

TON网络发送交易被拒绝的原因及修复方案

错误信息

pytonlib.tonlibjson.ExternalMessageNotAccepted: LITE_SERVER_UNKNOWN: 无法将外部消息应用到当前状态:外部消息未被接受
无法在账户上运行消息:入站外部消息被交易13FB696E8CD9B2F71C7B034A2BB629A14DA4F16143B6395969150C0CDF15F732拒绝:
exitcode=0, steps=0, gas_used=0

触发错误的代码

query = wallet.create_transfer_message(
    to_addr=new_wallet.address.to_string(),
    amount=to_nano(0.05, "ton"),
    seqno=seqno,
    state_init=None  # 或者完全移除
)

await client.raw_send_message(query["message"].to_boc(False))

问题分析与修复方案

从错误的exitcode=0, steps=0可以看出,消息根本没进入执行环节,直接在验证阶段被拒绝。结合你已做的检查,重点排查以下几点:

1. SeqNo是否实时有效

你确认的SeqNo=85143可能是本地缓存的旧值,而非链上最新状态。TON钱包的SeqNo必须严格匹配链上当前值,否则消息会被直接拒绝。
修复:不要用固定值,实时从链上获取SeqNo:

seqno = await wallet.get_seqno()

用这个实时值生成交易消息再尝试发送。

2. 消息签名是否合法

如果钱包初始化时使用的私钥不正确,或者create_transfer_message生成的消息签名无效,也会触发该错误。
修复:检查钱包实例的私钥是否正确,可尝试重新初始化钱包,或用该私钥签名测试数据后验证有效性。

3. 目标地址格式是否正确

确认new_wallet.address.to_string()返回的是标准TON地址(以EQ/UQ开头),地址格式错误会导致消息无法被正确路由和验证。
修复:打印目标地址值,核对格式是否符合要求,若地址生成逻辑有问题,重新生成合法地址。

4. 连接节点是否同步正常

若你连接的TON节点未同步到最新链上状态,会导致消息验证失败。
修复:切换到官方维护的LITE服务器节点,确保节点数据是最新的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:22:36