问题描述
在发送交易时,最后选的广播mode,定义里有三种方式,区别是什么?如何使用?
解释说明
- Async:异步模式,无论交易是否被区块链节点接受,都立即返回结果(仅 TxHash)
- Sync:同步模式,交易被区块链节点验证通过,但无需等待被打包即返回结果(若验证通过,则返回 TxHash;若验证失败,则返回错误)
- Commit:确认模式,交易被区块链节点验证通过且被打包出块,被区块链最终确认后再返回结果,结果包含 Tx 的全部内容
使用建议
生产上运行建议使用 sync上链 + 异步检查交易是否成功的方式进行交易,理由有两点:
-
commit 模式需要等待区块打包,交易的上链效率受制于链的出块速度,等待时间长,容易出现超时。
-
sync 模式异步上链,可以在块未打包时不受阻塞地发送多笔交易,相对于 commit模式来说,无阻塞、效率更高,一般来说使用 sync 模式能够得到正确的结果,这笔交易就能够被打包上链了,即使存在特殊情况导致交易未能上链,也能够通过“异步检查”来保证一致性。