【问题标题】:Chainlink node: What to do when transactions are pending?Chainlink 节点:交易未决时该怎么办?
【发布时间】:2020-06-29 14:06:20
【问题描述】:

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

【问题讨论】:

    标签: blockchain ethereum solidity smartcontracts


    【解决方案1】:

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

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


    对于待处理的传出确认:

    1. 您没有使用 gas 为您的 chainlink 节点帐户注资。
    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 气体以更快地推动它们。这有点棘手。 Chainlink 节点有一个内置系统来推动交易,而您无需做任何事情,因此希望它们能够发挥作用。

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

    待收到的确认:

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

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

    MIN_INCOMING_CONFIRMATIONS=0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-10
      • 2020-11-27
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多