Я отправляю транзакцию с web3 1.0.0 из скрипта вроде:
async function sending(deployed_contract) {
await deployed_contract.methods.mymethod(1).send({from: account})
.on('transactionHash', function(hash){
console.log("hash",hash)
})
.on('receipt', function(receipt){
console.log("receipt",receipt)
})
.on('confirmation', function(confirmationNumber, receipt){
console.log("confirmationNumber",confirmationNumber)
})
.on('error', console.error);
}
sending(deployed_contract)
и после получения подтверждений и квитанций программа продолжает выполняться и никогда не завершается. Может ли кто-нибудь объяснить мне, почему это происходит?
ОБНОВЛЕНО: Может ли это быть из-за того, что у меня работает собственный кошелек? или выполнение программы должно быть завершено в любом случае?
var create_wallet = function (){
privateKey = 'xxx';
return new ethers.Wallet(privateKey, web3.currentProvider);
}
wallet = create_wallet()
Попробуйте прокомментировать код для подтверждения, возможно, узлы в сети продолжают подтверждать транзакцию, и именно поэтому она продолжает выполняться.
Другое дело, что вы ничего нигде не вернули, поэтому код не может сломаться.
Исмаэль
deployed_contract
был создан? Похоже на проблему с узлом, если у вас есть ожидающая задача, она не остановится и будет продолжать ждать завершения всей задачи. Некоторые библиотеки создают фоновую задачу, например, для баз данных.сапиенсапиенс
await contract.deploy({ data: '0x' }).send({...}) .then(function(newContractInstance){ deployed_contract = newContractInstance; });
и, как вы говорите, это никогда не кончается. Как я мог закончить это задание?Исмаэль
сапиенсапиенс
Исмаэль
сапиенсапиенс