filtro: logs.blockNumber = indefinido

Tengo el siguiente código:

var filter = web3.eth.filter({
    fromBlock:4076955, 
    toBlock:"latest",
    address:"0x0123456789012345678901234567890123456789"
});

filter.get(function(error,logs){
  if (!error) {
    console.log("Found block " + logs.blockNumber);
    console.log(JSON.stringify(logs,null,2));
  }
}

y cuando ejecuto el código, obtengo:

Found block undefined
[]

Hubiera esperado obtener un número logs.blockNumbery un objeto como valor de retorno ( fuente: https://github.com/ethereum/wiki/wiki/JavaScript-API#watch-callback-return-value )

Pregunta: ¿ Por qué es posible que no obtenga el resultado esperado?

Respuestas (2)

Tal vez, el problema se deba a que filter.get()devuelve datos de registros, solo si web3.eth.filterse inicializa antes de que aparezcan las transacciones que está buscando.

Más info en este número .

oh, ¿quieres decir solo si las transacciones aún no se han agregado a la cadena de bloques? Además, si cambio el toBlock: 'latest'a, toBlock: 4076956obtengo el mismo resultado.
sí, no está claro en los documentos, pero parece que solo puede escuchar las transacciones que nacieron después de configurar el filtro conweb3.eth.filter
hmmm, pero me dijeron que filter.watchera para escuchar, mientras que filter.getera para obtener de bloques. Aquí: ethereum.stackexchange.com/questions/21694/…

Creo que esto se debe a que los resultados pasados ​​a la devolución de llamada filter.getson una matriz de entradas. No puedo encontrar ninguna muestra de código de donde hice esto antes, pero estoy bastante seguro de que logsen su devolución de llamada hay una serie de bloques o registros, no solo uno. Intente simplemente pasar console.log.bind(console)a filter.get, para ver cuáles son los valores sin procesar.

¡Hola, gracias por la respuesta! ¿En qué parte del código debo incluir el console.log.bind(console)?
en lugar de filter.get(function...)hacerfilter.get(console.log.bind(console))