im facing a problem deploying a simple smart contract.
When i use ganacha-cli, the program enter in a loop of confimation event, counting from 1. Thats the first problem.
Output:
Account: 0xd5f75a4F58da4dF050F84dedF07d24f7bf388F8F
trans hash: 0x1ab65a58debce4859a7df358ba54653fe0727b25f9d483622ab412ea7c49a56d
receipt: [object Object]
Contract address: 0xd2039ADAE2a61fADd65C4bec6a7791b2B6e56d08
confirmation: 1
confirmation: 2
confirmation: 3
confirmation: 4
confirmation: 5
...
And when i use a blockchain runing with geth in a server, the send method never is resolved. Only transaction hash is fired, and the contract is created in the blockchain. The second and main problem.
Output:
Account: 0xb5cF1ee3481B45d1A1cB939921f3f6E3f0C97f80
trans hash: 0x387a881262fbfee430bf761724bb5e21706fc2c76bb86dfd69aff526c46b985f
Code (web3 version 1.2):
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://XXX.XXX.XXX.XXX:PPPP'));
var account = '0xb5cF1ee3481B45d1A1cB939921f3f6E3f0C97f80'
console.log('Account: ' + account);
web3.eth.personal.unlockAccount(account, "dos", 50000)
const deployedContract = new web3.eth.Contract([{"constant":true,"inputs":[],"name":"displayMessage","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"displayMessagex","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]);
deployedContract.deploy({
data: '0x6060604052341561000f57600080fd5b6101ad8061001e6000396000f30060606040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632d59dc128114610050578063910dc524146100da575b600080fd5b341561005b57600080fd5b6100636100ed565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561009f578082015183820152602001610087565b50505050905090810190601f1680156100cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100e557600080fd5b61006361012e565b6100f561016f565b60408051908101604052601281527f5768616c652068656c6c6f2074686572652100000000000000000000000000006020820152905090565b61013661016f565b60408051908101604052601781527f5768616c652068656c6c6f2074686572655858585858210000000000000000006020820152905090565b602060405190810160405260008152905600a165627a7a723058208eeb846120df236de217b296df57febcc6f992caf709d5cb6d4637c86b9427a40029'
}).send({
from: account,
gas: 10000000
})
.once('confirmation', function(confirmationNumber, receipt){
console.log('confirmation: ' + confirmationNumber)
})
.on('transactionHash', function(hash){
console.log('trans hash: ' + hash)
})
.on('error', function(error){
console.log('error: ' + error)
})
.on('receipt', function(receipt){
console.log('receipt: ' + receipt.toString())
})
.then(function(contract) {
console.log('Contract address: ' + contract.options.address);
})
.catch(function(error) {
console.log(error);
})
Geth command:
geth --port 3000 --networkid 87936 --nodiscover --datadir=. --maxpeers=0 --rpc --rpcport 8543 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,miner" --allow-insecure-unlock
Thanks!
After start mining the main problem convert in the first problem (is an advance), changed the on('confirmation') to once('confirmation') the output now is:
Account: 0xb5cF1ee3481B45d1A1cB939921f3f6E3f0C97f80
trans hash: 0xc5a2dc489815c205a53658bf5ebcde95593e83da4ead07355fcae4d722636c12
confirmation: 0
receipt: [object Object]
Contract address: 0x6b4A76Ab26e487Fdc502779Abc438d0cF59299bc