I am trying to deploy a contract with web3js. The contract will be deployed but I never get to see the address, which should be returned from the promise. Instead I always get an error returned:
Error: Failed to check for transaction receipt:
Down below my code. For debugging I introduced the event emitters .on
:
contract.deploy({
data: contractBin,
arguments: [...]
}).send({
from: ownerAddress,
gas: 4000000,
gasPrice: '30000000000000'
}).on('error', (error) => {
console.log(`Error deploying contract ${error}`);
}).on('transactionHash', (transactionHash) => {
console.log(`Successfully submitted contract creation. Transaction hash: ${transactionHash}`);
}).on('receipt', (receipt) => {
console.log(`Receipt after mining with contract address: ${receipt.contractAddress}`);
console.log(`Receipt after mining with events: ${JSON.stringify(receipt.events, null, 2)}`);
}).on('confirmation', (confirmationNumber, receipt) => {
console.log(`Confirmation no. ${confirmationNumber} and receipt for contract deployment: `, receipt);
}).then((instance) => {
console.log(instance);
let address = instance.options.address;
}).catch((error) => {
console.log(error);
});
Everytime I deploy a contract the transaction gets send:
Successfully submitted contract creation. Transaction hash: 0xb87ee45a3249f2079635d987a51cad31adf5eb52f6afd987d07e84ae0d972d92
but in the next step the error of a failed check for transaction receipt appears. The contract gets even deployed as I can see from my geth node:
INFO [03-09|16:51:12] Submitted contract creation fullhash=0xb87ee45a3249f2079635d987a51cad31adf5eb52f6afd987d07e84ae0d972d92 contract=0xFEb009a6eB95bc46DEb3F35E0004D36b4b6BC6F9
And I can get the contract address from the transaction receipt:
web3.eth.getTransactionReceipt("0xb87ee45a3249f2079635d987a51cad31adf5eb52f6afd987d07e84ae0d972d92").then(console.log);
yields:
contractAddress : "0xFEb009a6eB95bc46DEb3F35E0004D36b4b6BC6F9"
What am I doing wrong while deploying a contract?