Chainlink 节点:交易挂起时怎么办?

Chainlink node: What to do when transactions are pending?

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

大多数情况下,您并没有为您的 Chainlink 节点账户提供燃料。转到您的配置并获取 ACCOUNT_ADDRESS 并将 ETH 发送到该地址。

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


待处理的传出确认:

  1. 您没有为您的 chainlink 节点帐户注入 gas。
  2. ETH 链堵塞。
  3. .env 中的 MIN_OUTGOING_CONFIRMATIONS 变量太高(它被设置为默认值)

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

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

如果#2 你可以:

  1. 您可以从您的数据库中删除待处理的交易并希望一切都清理干净(这是一个好的解决方案,希望智能合约有一个重试参数来处理您的数据。但是如果您的节点保持卡住,那么没有人会能够获取数据。)
DELETE FROM job_runs WHERE status = 'pending_outgoing_confirmations';
DELETE FROM tx_attempts WHERE confirmed = 'f';
  1. 如果您需要完成这些交易,您可以 rebroadcast the transactions 使用更多的 ETH gas 来推动它们更快地完成。这有点棘手。 Chainlink 节点有一个内置系统,无需您执行任何操作即可推送交易,因此希望它们能够发挥作用。

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

对于待处理的传入确认:

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

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

MIN_INCOMING_CONFIRMATIONS=0