Estoy tratando de crear un script simple para probar la funcionalidad de escucha de eventos de Web3.js CreatedPairs
. Sin embargo, mi secuencia de comandos ejecuta el código una vez y luego sale en lugar de continuar escuchando los pares creados y no puedo entender por qué.
const Web3 = require('web3') const web3 = new Web3(Web3.givenProvider || 'https://mynodeishere'); const IUniswapV2Factory = require("@uniswap/v2-core/build/IUniswapV2Factory.json") const UNI_FACTORY_ADDRESS = '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' const uFactory = new web3.eth.Contract(IUniswapV2Factory.abi, UNI_FACTORY_ADDRESS) const main = async () => { // Create event listener to listen to PairCreated uFactory.events.PairCreated({}, async (error, event) => { console.log(`New pair detected...\n`) }) } main()
Lo que termina sucediendo es cuando ejecuto node ./myapp.js
. El código se ingresa y registra New pair detected...
en la consola y luego sale. Esto que sucede de inmediato me dice que no se está ejecutando cuando se detecta un nuevo par y, en cambio, solo está recorriendo el código.
Sin embargo, lo que anticipé que sucedería era que la aplicación continuaría ejecutándose e iniciando sesión en la consola solo cuando se detectara un nuevo par. Estoy seguro de que estoy pasando por alto algo pequeño, pero cualquier ayuda sería apreciada.
En este contexto, Web3.givenProvider
es null
, por lo que se usa el proveedor HTTP.
Para poder suscribirse a eventos, debe utilizar un proveedor de WSS.
// example connection to a WSS provider const web3 = new Web3('wss://mainnet.infura.io/ws/v3/<yourtoken>');