blockchain - Chainlink 节点:交易未决时该怎么办?
解决方案
大多数情况下,你没有用 gas 为你的 chainlink 节点账户注资。转到您的配置并获取ACCOUNT_ADDRESS
并将 ETH 发送到该地址。
第二个最常见的情况是您使用的是过时版本的 chainlink 节点。请使用 0.9.4 或更高版本。
对于待处理的传出确认:
- 你没有用 gas 为你的 chainlink 节点账户注资。
- ETH 链被堵塞了。
- 你的
MIN_OUTGOING_CONFIRMATIONS
变量.env
太高(它被设置为默认值)
如果你在你的预言机合约地址看到待处理的交易,那么很可能是#2。如果您没有看到任何内容,则可能是#1。
如果#1,你可以向你的节点发送一些 ETH,它应该没问题。您可以在 Chainlink GUI 的配置页面中找到您的节点地址ACCOUNT_ADDRESS
。
如果 #2 你可以:
- 您可以从数据库中删除待处理的交易,并希望一切顺利(这是一个好的解决方案,希望智能合约有一个重试参数来处理您的数据。但是如果您的节点卡住了,那么没有人将能够获取数据. )
DELETE FROM job_runs WHERE status = 'pending_outgoing_confirmations';
DELETE FROM tx_attempts WHERE confirmed = 'f';
- 如果您需要通过这些交易,您可以使用更多的 ETH 气体重新广播这些交易,以更快地推动它们通过。这有点棘手。Chainlink 节点有一个内置的系统来推动交易,而你无需做任何事情,所以希望它们会启动。
如果 #3 设置或更改您的MIN_OUTGOING_CONFIRMATIONS
并重新启动节点。
对于待处理的传入确认:
这可能是由于网络拥塞或您正在使用的网络没有很多事务。一个简单的解决方法是减少传入确认的数量并重新启动您的节点。
在您的.env
文件中,添加或设置以下内容:
MIN_INCOMING_CONFIRMATIONS=0
推荐阅读
- parsing - 在解析表达式的评估中将 [IO String] 转换为 IO String
- c++ - 将 int*** 传递给函数
- python - 为什么这种创建目录的尝试会失败?
- deep-learning - DCgAN 仅产生噪声
- ruby-on-rails - AWS Beanstalk 与 AMI1 上的 Ruby 2.6 - 从 Puma 4.3.7 更新到 Puma 5.1.1
- android - 如何从 rxjava 平面图中调用协程用例
- python - 为什么 torchvision.utils.make_grid() 返回所需网格的副本?
- c++ - 出现此错误时我该怎么办:“int”类型的参数与 C++ 中“int(*)[101]”类型的参数不兼容
- sql - 触发以更新没有记录的值
- python - 如何使用 SerializerMethodField 订购查询集?