substrate - 在 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
清楚结果是什么。
解决方案
前面mempool
,存在一个交易黑名单,可以触发这个错误。具体来说,这个错误意味着具有相同哈希的交易是:
- 最近开采的区块的一部分
- 在出块期间检测为无效并从池中删除。
此外,在以下情况下可能会发生此错误:
交易到达它的
longevity
,即TransactionValidation::longevity
在被导入池后不会被挖掘出块。默认情况下
longevity
设置为u64::max
所以这通常不应该是问题。
在任何情况下-ltxpool=log
都应该揭示有关此错误的更多详细信息。
交易只是暂时被禁止,因为它会在以下任一情况下从黑名单中删除:
- 30分钟过去
- 黑名单上有4000多笔交易
推荐阅读
- python - 如何在 pandas 中构建表格的比较和更新功能?
- angular - 在 Angular 中显示不同警报的正确条件是什么?
- angular - 如何以角度访问 shibboleth 登录的请求标头?
- angular - Conditional Validator Angular - 检查其他表单控件值并使用正则表达式模式进行验证
- angular - 使离子卡并排高度相同
- vb.net - 为没有意义的 VB ReadAllBytes 方法获取参数异常
- identityserver4 - IdentityServer 是否需要在 IIS 中启用匿名身份验证
- spring - 在 Postgresql 和使用 Springboot 10 分钟后自动删除记录
- android - 当 shouldsimulate 为 false 时,React Native mapbox android 导航崩溃
- react-native - 更改文本输入后对本机平面列表做出反应,它会自动离开输入字段