为什么没有及时收到交易回执

交易提交之后,然后在查询交易回执的时候出现的提示:“Transaction receipt was not generated after 15 seconds for transaction”。 想了解一下,是什么原因导致链变慢了。期间的交易量一小时大约4000~5000笔。quota是设置的8个9。

原因应该是交易的 quota 设置得太大导致的。

CITA 设计了 BQL (BlockQuotaLimit) 来约束一个块的大小过大,如果在建链的时候没有特别指定 BQL ,它将会是默认 1073741824 。详见:

当一个的交易 quota 设为 99999999 时,意味着一个块只能存放 1073741824 / 99999999 = 10 个交易。
当你的交易数量在某一小段时间内比较多,就会导致有些交易被放到后面的几个块里,从而导致查询得到交易回执的时间变长。

所以,建议:

  • quota 代表一个交易在执行过程中的最大 quota 消耗;需要设置一个合理的值,最好是比实际消耗多一点。
  • 如果你的交易确定需要消耗很大的 quota ,那么可以考虑增加 BQL,但请注意,这将消耗更多的 cpu 时间来执行一个块。