首页 > 解决方案 > Chainlink 节点:交易未决时该怎么办?

问题描述

我有一个 chainlink 节点,有些交易似乎卡住了。如何修复待处理的传出确认?

https://cdn.discordapp.com/attachments/592043790005567499/725936625821155328/unknown.png

标签: blockchainethereumsoliditysmartcontracts

解决方案


大多数情况下,你没有用 gas 为你的 chainlink 节点账户注资。转到您的配置并获取ACCOUNT_ADDRESS并将 ETH 发送到该地址。

第二个最常见的情况是您使用的是过时版本的 chainlink 节点。请使用 0.9.4 或更高版本。


对于待处理的传出确认:

  1. 你没有用 gas 为你的 chainlink 节点账户注资。
  2. ETH 链被堵塞了。
  3. 你的MIN_OUTGOING_CONFIRMATIONS变量.env太高(它被设置为默认值)

如果你在你的预言机合约地址看到待处理的交易,那么很可能是#2。如果您没有看到任何内容,则可能是#1。

如果#1,你可以向你的节点发送一些 ETH,它应该没问题。您可以在 Chainlink GUI 的配置页面中找到您的节点地址ACCOUNT_ADDRESSChainlink 节点 GUI 配置页面

如果 #2 你可以:

  1. 您可以从数据库中删除待处理的交易,并希望一切顺利(这是一个好的解决方案,希望智能合约有一个重试参数来处理您的数据。但是如果您的节点卡住了,那么没有人将能够获取数据. )
DELETE FROM job_runs WHERE status = 'pending_outgoing_confirmations';
DELETE FROM tx_attempts WHERE confirmed = 'f';
  1. 如果您需要通过这些交易,您可以使用更多的 ETH 气体重新广播这些交易,以更快地推动它们通过。这有点棘手。Chainlink 节点有一个内置的系统来推动交易,而你无需做任何事情,所以希望它们会启动。

如果 #3 设置或更改您的MIN_OUTGOING_CONFIRMATIONS并重新启动节点。

对于待处理的传入确认:

这可能是由于网络拥塞或您正在使用的网络没有很多事务。一个简单的解决方法是减少传入确认的数量并重新启动您的节点。

在您的.env文件中,添加或设置以下内容:

MIN_INCOMING_CONFIRMATIONS=0


推荐阅读