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

如何向HashPack发送交易签名?前端签名Topic交易时报错求助

解决HashConnect签名TopicMessageSubmitTransaction时的"seconds"未定义错误

错误原因

你遇到的TypeError: Cannot read properties of undefined (reading 'seconds'),本质是手动创建的TransactionId没有正确初始化时间戳字段。当HashConnectSigner执行签名操作时,会调用交易的freezeWith方法,此时需要读取交易ID的时间戳(seconds属性),但手动构造的TransactionId缺少这个值,导致报错。

修复方案

替换手动创建TransactionId的方式,改用官方提供的TransactionId.generate()方法,它会自动生成包含有效时间戳的交易ID。同时建议显式设置交易有效期,避免其他潜在问题。

修改后的代码:

const accountId = AccountId.fromString(你的账户ID);
// 改用generate方法创建TransactionId,自动生成时间戳
const transactionId = TransactionId.generate(accountId);

const transaction = new TopicMessageSubmitTransaction()
    .setTopicId(id)
    .setMessage(JSON.stringify(message))
    .setTransactionId(transactionId)
    // 显式设置交易有效期(单位:秒,这里设为60秒)
    .setTransactionValidDuration(60);

const signedTransaction = await transaction.signWithSigner(signer);

额外说明

  • TransactionId.generate()会基于当前时间生成符合要求的交易ID,确保时间戳字段(seconds)正确初始化。
  • 显式设置TransactionValidDuration可以避免因默认有效期过短导致的交易失效问题,提升签名和提交的稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:27:10