web3 - дублирование trx ha sh получение - PullRequest
0 голосов
/ 22 января 2020

Не могли бы вы объяснить, почему следующий код получает один и тот же trx ha sh дважды? И есть ли у вас какие-либо рекомендации, чтобы этого избежать?

var Web3 = require('web3')
    const web3Subs = new Web3(new Web3.providers.WebsocketProvider('wss://mainnet.infura.io/ws/v3/XXX'))
    const web3Trx = new Web3(new Web3.providers.WebsocketProvider('wss://mainnet.infura.io/ws/v3/XXX'))
    const subscription = web3Subs.eth.subscribe('pendingTransactions')
    subscription.subscribe((error, txHash) => {
        if (error) console.log(error);
        console.log(txHash + " received.");
    })

вывод:

0x98219dad048aef55649d334a42c69ad094d3be1378f68b294aeaa2ef49ae2f97 received.
test.js:10
0x98219dad048aef55649d334a42c69ad094d3be1378f68b294aeaa2ef49ae2f97 received.
test.js:10
0x7f19d86f3c08c171060b0c29c0ad889dd7b2e69188ff6c8314caa4fb65e5b6a0 received.
test.js:10
0x7f19d86f3c08c171060b0c29c0ad889dd7b2e69188ff6c8314caa4fb65e5b6a0 received.

1 Ответ

0 голосов
/ 23 января 2020

Не похоже на проблему web3, скорее на проблему Rx JS или какую-либо библиотеку, которую вы используете для этих звонков по подписке ... Вы подписываетесь дважды, поэтому я думаю, что именно поэтому вы видя, как вещи запускаются дважды.

const subscription = web3Subs.eth.subscribe('pendingTransactions'); // You subscribe here
subscription.subscribe((error, txHash) => {  // And you subscribe again to that subscription
        if (error) console.log(error);
        console.log(txHash + " received.");
    })

Я мог бы представить, что это даст вам лучшие результаты, если вы напишите это так, поскольку вы не подписываетесь дважды и по-прежнему назначаете подписку на переменную в случае необходимости для ссылки на него:

const subscription = web3Subs.eth.subscribe((error, txHash) => {
        if (error) console.log(error);
        console.log(txHash + " received.");
    });
...