在 Substrate 中,代码:1012“交易被暂时禁止”是什么意思?

T9b*_*T9b 5 substrate

邮件全文如下:

{code: 1012, message: "Transaction is temporarily banned"}
Run Code Online (Sandbox Code Playgroud)

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

例如,

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

2)交易实际上是否无效?

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

底物运行时的评论core/rpc/src/author/errors.rscore/transaction-pool/graph/src/errors.rs没有更清楚地说明结果是什么。

Sha*_*izi 5

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

  1. 最近开采的区块的一部分
  2. 在区块生产过程中被检测为无效并从池中删除。

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

  1. 交易到达 it's ,即导入到池中后longevity不会开采区块。TransactionValidation::longevity

    默认情况下longevity设置为u64::max,因此这通常不会成为问题。

无论如何,-ltxpool=log应该揭示有关此错误的更多详细信息。

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

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

查看core/transaction-pool/graph/src/rotator.rs