Filter: logs.blockNumber = undefiniert

Ich habe folgenden Code:

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));
  }
}

und wenn ich den Code ausführe, bekomme ich:

Found block undefined
[]

Ich hätte erwartet, eine Zahl für logs.blockNumberund ein Objekt als Rückgabewert zu bekommen ( Quelle: https://github.com/ethereum/wiki/wiki/JavaScript-API#watch-callback-return-value )

Frage: Warum erhalte ich möglicherweise nicht das erwartete Ergebnis?

Antworten (2)

Möglicherweise liegt das Problem daran, dass filter.get()Protokolldaten nur zurückgegeben werden, wenn sie web3.eth.filterinitialisiert werden, bevor die gesuchten Transaktionen angezeigt werden.

Mehr Infos in dieser Ausgabe .

ach du meinst nur, wenn die Transaktionen noch nicht zur Blockchain hinzugefügt wurden? Auch wenn ich das auf ändere, toBlock: 'latest'erhalte toBlock: 4076956ich das gleiche Ergebnis.
Ja, es geht aus den Dokumenten nicht hervor, aber anscheinend können Sie nur die Transaktionen anhören, die nach dem Setzen des Filters entstanden sindweb3.eth.filter
hmmm, aber mir wurde gesagt, dass dies filter.watchzum Zuhören sei, während filter.getes dazu diente, aus Blöcken zu kommen. Hier: ethereum.stackexchange.com/questions/21694/…

Ich denke, das liegt daran, dass die an den Rückruf übergebenen Ergebnisse filter.getein Array von Einträgen sind. Ich kann keine Codebeispiele finden, von denen ich dies zuvor getan habe, aber ich bin mir ziemlich sicher, dass logsIhr Callback ein Array von Blöcken oder Protokollen ist, nicht nur ein einzelnes. Versuchen Sie einfach , console.log.bind(console)zu übergehen filter.get, um zu sehen, was die Rohwerte sind?

Hallo danke für die Antwort! Wo im Code soll ich das einfügen console.log.bind(console)?
Statt filter.get(function...)tunfilter.get(console.log.bind(console))