I am executing a transfer()
function in a solidity contract, and want to know when the transaction is finished. I can get the transaction receipt immediately if the transaction is executed properly, but want a simple way of knowing when it's been mined. This is what I've tried (a bit messy):
deployedContract.transfer(transfer_to, transfer_value, { from:web3.eth.accounts[0], gas: 200000 }, function (error, result) {
if (!error) {
console.log(result + ' is the TxHash')
var test = web3.eth.getTransactionReceipt(result, function (error, result2) {
if (!error) {
if (!result2) {
console.log('waiting for transaction to be mined....')
console.log(result + ' is still the TxHash')
} else {
console.log('transaction done')
}
} else {
console.error(error)
}
})
} else {
console.error(error)
}
})
This will get to the console.log('waiting for transaction to be mined....')
part but even after the transaction is definitely mined, won't get to the console.log('transaction done')
.
If it's relevant, when deploying a new contract I could easily see when the transaction was complete as follows - but doing the same thing isn't working for me for seeing if functions executed on a contract have completed:
let deployedContract = contract.new({ from:web3.eth.accounts[0], data:bytecode, gas: 1300000 }, function (error, result) {
if (!error) {
if (!deployedContract.address) {
// transaction hasn't been mined yet
} else {
// transaction has been mined
}
} else { console.error(error) }
})