Es scheint nicht möglich, die Optionen in web3.eth.filter() dynamisch zu aktualisieren, also wie würde man auf eine Transaktion achten, die ein bestimmtes Konto betrifft, das im 12. letzten Block erscheint?
Eigene Frage beantworten.
const Web3 = require('web3')
let web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
let account = '0x05430f5201585c2601bb75d9658007202864c993'
let filter = web3.eth.filter('latest')
filter.watch(function(error, result) {
if (!error) {
let confirmedBlock = web3.eth.getBlock(web3.eth.blockNumber - 11)
if (confirmedBlock.transactions.length > 0) {
confirmedBlock.transactions.forEach(function(txId) {
let transaction = web3.eth.getTransaction(txId)
if (transaction.to == account) {
// Do something useful.
}
})
}
}
})
web3.eth.getTransactionReceipt(txId)
Versuchen Sie zuerst, transactionReceipt ( ) abzurufen . Es ist nur möglich, wenn es abgebaut wurde. Als Antwort sollten Sie die Blocknummer finden. Machen blockNumber-txBlock
Sie einen Unterschied, ob es größer als 12 ist, es wurde definitiv bestätigt :) Übrigens, ich habe irgendwo gelesen, dass das Warten auf 8 Blöcke ausreichen sollte.geth
und Parity-Clients, bei der „~165 Blöcke in der jetzt aufgegebenen Kette abgebaut wurden“. Siehe blog.ethereum.org/2016/11/25/… .web3.eth.filter
durch ersetzt wurde web3.eth.subscribe
.
Guenole de Cadoudal
fooboo
Guenole de Cadoudal
fooboo
Guenole de Cadoudal