В документах Web3.js указано, что будет запущено событие подтверждения :
web3.eth.sendTransaction
(см. здесь )myContract.methods.myMethod.send
(см. здесь )Почему разница в количестве запусков события в каждом случае?
Что еще более важно, для чего именно я должен использовать эти события?
В настоящее время я просто await
выполняю функцию, а затем использую возвращаемое значение, которое является разрешением Promise
, содержащим квитанцию транзакции (если мы не имеем дело с развертыванием контракта, и в этом случае он будет содержать экземпляр нового контракта).
Насколько я понимаю, эту квитанцию также можно получить, используя:
myContract.methods.myMethod().send().on('receipt', function(receipt){...});
Я предполагаю, что этот дополнительный способ получения квитанции предназначен для тех случаев, когда вы также хотите обрабатывать другие вещи, такие как события подтверждения , которые, как я заметил, не обязательно происходят до того, как квитанция будет доступна.
Нужно ли мне подсчитывать 12 (или 24) события, чтобы быть уверенным, что получение информации отражает блокчейн?
Спасибо!
Когда транзакция добыта, квитанция доступна для использования, в этот момент номер подтверждения равен 0, поскольку в блокчейн добавляется больше блоков, номер подтверждения увеличивается. С более высоким номером подтверждения у нас будет больше уверенности в том, что транзакция находится на самом длинном пути и не может быть отменена.
Предположим, вы принимаете транзакции с определенным количеством подтверждений, вы можете отфильтровать этот номер подтверждения в событии подтверждения.
.on('confirmation', function(confirmationNumber,receipt){})
По поводу того, почему событие выдает до 12 и 24 подтверждений в разных сценариях, я не очень представляю.
Извините, что наткнулся на очень старый пост, как когда-то наткнулся на него в поисках чего-то другого.
Для тех, кто заинтересован, 24 события подтверждения выдаются из-за того, что 24 являются внутренней настройкой Web3 по умолчанию для количества приемлемых подтверждений. Для этого параметра можно установить меньшее или большее количество подтверждений.
Чтобы прочитать текущую настройку:
web3.eth.transactionConfirmationBlocks
Чтобы изменить настройку:
web3.eth.transactionConfirmationBlocks = <new number>
См. официальную документацию Web3 для получения дополнительной информации здесь Web3
херва
хорошая вибрация
херва
Файзан Байг