Метод фильтра трассировки Web3 не существует в NodeJS

#web3 #web3js

#web3 #web3js

Вопрос:

Я пытаюсь получить внутренние транзакции. Все работает нормально, кроме приведенного ниже кода.

Ниже приведен фрагмент кода, который я использую.

 const Web3 = require('web3');
const web3explorer = require('web3-explorer');

web3 = new Web3(new Web3.providers.WebsocketProvider(`ws://RPC ADDRESS`));

web3explorer(web3);

const filter = { 'fromBlock': '0x...', 'toAddress': [addr] };

web3.trace.filter(filter, (err, tx) => {
    console.log(err)
    if (err || !tx) {
        console.error(`TraceWeb3 error :${err}`);
    }
});
 

Вывод:

Ошибка: возвращенная ошибка: метод trace_filter не существует / недоступен

Вот как выглядит мой package.json

  • «web3»: «^ 1.0.0-бета.37»
  • «web3-explorer»: «1.0.2»

Ответ №1:

Метод trace_filter RPC реализован в программном обеспечении узла OpenEthereum (см. Их документы).

Это их пользовательский метод, построенный поверх официального API Ethereum JSON-RPC (docs).

Поэтому, когда вы подключены к другому программному обеспечению узла, отличному от OpenEthereum, доступность этого метода не гарантируется.

Решение: подключитесь к поставщику узлов, работающему под управлением OpenEthereum, у которого есть этот метод.