如何在 Truffle 中配置不同的轮询间隔?

How to configure a different polling interval in Truffle?

如何配置 Truffle 本身, 或 Truffle 的 HDWalletProvider 使得轮询间隔不同?

我希望我的 Truffle 实例在 JSON-RPC 上不那么“健谈”, 当它已经提交交易并正在等待结果时, 从默认值开始减少轮询间隔。

我无法在以下文档中找到此选项:


truffle-config.js内,在networks内:

    testnet: {
      provider: () => new HDWalletProvider(
        SEED_PHRASE,
        'https://localhost:4444/',
      ),
      gasPrice: Math.floor(GAS_PRICE),
      networkCheckTimeout: 1e3,
    },

不确定 HDWalletProvider,并且像您一样找不到任何关于它的轮询率的文档。浏览源代码后,我得出的结论是 HDWalletProvider 不包含用于 poll-rate 限制 的 built-in 机制,尽管我可能是不正确的。

I have, however, found a wallet provider implementation that does support it, and has the usage documented.

抱歉,我找不到您要找的东西,但希望这能满足您的需要。本周末我将有更多时间查看源代码,如果发现任何其他内容,我将更新此答案。

更新: 在看到您提到 Web3ProviderEnginepollingInterval 字段后,您可以访问 HDWalletProvider 实例的相应 engine.pollingInterval 字段。如果您不清楚 TypeScript 中的对象实例化和字段,我建议您就该主题打开另一个问题,或者仔细阅读现有资源,例如 .

祝你好运!

已修补 @truffle/hdwallet-provider 以添加 pollingInterval。 现在可以在 truffle@5.1.52.

已修补 truffle 以添加 deploymentPollingInterval。 现在可以在 truffle@5.1.53.

示例:

    testnet: {
      provider: () => new HDWalletProvider({
        mnemonic: {
          phrase: SEED_PHRASE,
        },
        providerOrUrl: 'http://localhost:4444',
        pollingInterval: 8000,
      }),
      gasPrice: Math.floor(GAS_PRICE),
      networkCheckTimeout: 8000,
      deploymentPollingInterval: 8000,
    },

未指定时,pollingIntervaldeploymentPollingInterval的默认值都是4000;因此,上面的示例在轮询块时以及在 运行 truffle migrate 上具有使 half 成为 JSON-RPC 上的“健谈”的效果。