Iva*_*nha 3 node.js ethereum web3js
我有一个 API 端点,它按严格的顺序创建并发送一些事务。因为我不等待这些交易的结果,所以我为每个交易指定一个随机数,以便以正确的顺序执行它们。
该终端节点是使用 AWS Lambda 函数构建的。因此,如果我有许多并发请求,则 lambda 以并发模式运行。在这种情况下,多个并发实例可以获得相同的随机数(我正在使用eth.getTransactionCount
方法来获取最新的事务计数)并使用相同的随机数发送一些事务。因此,我收到错误,因为它没有创建新事务,而是尝试替换现有事务。
基本上,我需要一种方法来检查在交易发送之前是否已经获取了随机数,或者以某种方式保留随机数(是否可能?)。
web3 getTransactionCount()仅返回已挖掘交易的数量,但目前无法使用 web3 返回最高的待处理随机数(对于地址)。
因此,您需要将待处理的随机数存储在单独的数据库(例如Redis)中。每次 Lambda 运行都需要访问此数据库以获得最高的待处理随机数,计算它将要使用的随机数(可能只是 +1),并将该数字存储到数据库中,以便其他实例无法再使用它。
请注意,建议实现锁(Redis、DynamoDB)以防止多个应用程序实例同时访问数据库并声明相同的值。
归档时间: |
|
查看次数: |
5056 次 |
最近记录: |