首页 > 解决方案 > 如何检查“nonce”号码是否已被占用?

问题描述

我有一个 API 端点,它以严格的顺序创建和发送一些事务。因为我不等待这些事务的结果,所以我为它们中的每一个指定了一个随机数,以便以正确的顺序执行它们。

此终端节点是使用 AWS Lambda 函数构建的。因此,如果我有许多并发请求,则 lambda 会以并发模式运行。在这种情况下,多个并发实例可以获得相同的 nonce(我正在使用eth.getTransactionCount获取最新事务计数的方法)并发送一些具有相同 nonce 的事务。因此,我收到错误,因为它没有创建新事务,而是尝试替换现有事务。

基本上,我需要一种方法来检查在发送交易之前是否已经使用了随机数,或者以某种方式保留随机数(甚至可能吗?)。

标签: node.jsethereumweb3

解决方案


基本上,我需要一种方法来检查在发送交易之前是否已经使用了随机数,或者以某种方式保留随机数(甚至可能吗?)。

你不应该。

相反,您应该在提供原子计数器和多个读取器和写入器的内部数据库(SQL 等)中管理 nonce。只有在 1) 您的系统出现故障 2) 您需要手动重置它时,您才依赖提供的随机数网络。

这是 Web3.py 和 SQLAlchemy 的示例代码


推荐阅读