尝试监控以太坊区块时获得 "web3.eth.filter is not a function"

Getting "web3.eth.filter is not a function" while trying to monitor Ethereum blocks

我正在尝试使用 web3 监控第 12 次确认。我使用以下代码:

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.
                    console.log("12 confirmations received");
                }
            })
        }
    }
});

但是这会引发错误 web3.eth.filter is not a function

看来您使用的是 web3.js v1.0。 v1中订阅新区块头信息的方式是web3.eth.subscribe('newBlockHeaders', callback);

有关详细信息,请参阅 the docs