Учитывая, что я подключен к сети по крайней мере с одним партнером, могу ли я быть уверен, что отправленная мной транзакция будет выполнена (либо с ошибкой, либо с успехом)? Есть ли вероятность того, что он никогда не попадет в блокчейн, так что отправитель ничего не потратит? Что, если он был включен в какой-то блок, а потом этот блок осиротел? Будет ли моя транзакция «удалена»?
Если есть такая возможность, как с этим бороться? Учитывая, что я записываю TxHash
, могу/должен ли я регулярно проверять его, и если он все еще не существует после «большого» количества блоков, предупреждать пользователя о том, что его транзакция не выполнена, и он должен отправить ее снова? Похоже, что это решение склонно к двойным расходам. Кроме того, из этого ответа я понимаю, что транзакция может исчезнуть и появиться снова намного позже, поэтому «большое» количество блоков для ожидания неопределенно. Итак , как я могу убедиться, что транзакция включена в блокчейн?
Спасибо
Блокчейны, основанные на Proof of Work, являются вероятностными, и чем больше блоков строится на блоке, содержащем транзакцию, тем меньше вероятность того, что реорганизация цепочки удалит этот блок и транзакцию.
могу/должен ли я регулярно проверять его, и если он все еще не существует после «большого» количества блоков, предупредить пользователя о том, что его транзакция не выполнена, и он должен отправить ее снова?
Да, и для некоторого кода см. Как DApp может обнаружить форк или реорганизацию цепочки с помощью web3.js или дополнительных библиотек?
В основной сети около 12 подтверждений считаются безопасными. (На тестнетах вроде Ropsten гарантии намного слабее и даже 64 подтверждения недостаточно ).
Чтобы убедиться, что транзакция включена в блокчейн, убедитесь, что она имеет:
приемлемая цена на газ (чтобы майнеры включили его в блок)
достаточное количество газа (чтобы транзакция не была отменена)
Затем транслируйте транзакцию дюжине пиров и отслеживайте ее с помощью нескольких клиентов.
Джефф
эт