首页 > 解决方案 > 在 Substrate 中,code: 1012 “Transaction is暂时禁止”是什么意思?

问题描述

该消息的全文是:

{code: 1012, message: "Transaction is temporarily banned"}

这表明该事务保存在 Substrate Runtime 内存池中的某个地方或类似的地方,但尚不完全清楚哪些可能的原因会触发此事件,以及最终结果可能是什么。

例如,

1) 是否从给定帐户、IP 地址或其他地址发送了太多交易?是否达到了某个门槛?

2)交易是否真的无效?

3) 使用“临时”一词表示处理延迟,而不是彻底拒绝交易。因此,这是否表明交易有效但延迟了?如果是这样,需要多久?

基板运行时的评论core/rpc/src/author/errors.rs并不core/transaction-pool/graph/src/errors.rs清楚结果是什么。

标签: substrate

解决方案


前面mempool,存在一个交易黑名单,可以触发这个错误。具体来说,这个错误意味着具有相同哈希的交易是:

  1. 最近开采的区块的一部分
  2. 在出块期间检测为无效并从池中删除。

此外,在以下情况下可能会发生此错误:

  1. 交易到达它的longevity,即TransactionValidation::longevity在被导入池后不会被挖掘出块。

    默认情况下longevity设置为u64::max所以这通常不应该是问题。

在任何情况下-ltxpool=log都应该揭示有关此错误的更多详细信息。

交易只是暂时被禁止,因为它会在以下任一情况下从黑名单中删除:

  1. 30分钟过去
  2. 黑名单上有4000多笔交易

退房core/transaction-pool/graph/src/rotator.rs


推荐阅读