Я изо всех сил пытаюсь реализовать функциональность, которая отправляет несколько транзакций с использованием одного и того же адреса. здесь адрес отправителя одинаков, но адреса получателя разные. Когда я провел исследование по этому вопросу, я обнаружил, что есть два способа реализовать этот подход:
Выполнять все транзакции параллельно, увеличивая одноразовый номер один за другим. Вызовите метод getTransactionCount один раз и увеличьте его счетчик для всех последующих транзакций.
Реализуйте очередь, в которой вторая транзакция не выполняется до тех пор, пока не будет добыта первая транзакция.
Когда я проанализировал два вышеупомянутых подхода, я узнал о некоторых проблемах:
В подходе 1 может быть возможно, что если одна транзакция завершится неудачно, то все транзакции после этого одноразового номера станут неудачными. Но как метамаска справляется с такими случаями? потому что метамаски также делают то же самое, и мы можем выполнять транзакции одну за другой.
В подходе 2 в процессе очереди одна транзакция зависит от предыдущей транзакции и не инициируется до тех пор, пока первая не будет завершена.
По мере того, как я углублялся в этот подход, я обнаружил, что лучшим подходом будет второй. (процесс очереди)
Но я остановился на следующих случаях при реализации второго подхода:
Поскольку мы не знаем точное время транзакции, добытой в блоке, как определить временной интервал, чтобы проверить, добыт ли блок транзакции или нет. (Я знаю, что мы используем ropsten.etherscan для проверки статуса транзакции)
Если мы даем временной интервал 15 сек. тогда вполне возможно, что транзакция не обрабатывалась в течение 1 часа, и сервер был занят отправкой запроса.
Бывает такой случай, когда одна транзакция не могла майнить до 2-3 дней по каким-то причинам. В этом случае, что нам нужно сделать для перезаписи этой транзакции. Каков наилучший подход к этому?
Относительно второго подхода:
Однако вы не указали причины своего предпочтения подхода 2: я не вижу явного преимущества одного подхода над другим.
В случае подхода 1: если транзакция терпит неудачу (например, из-за того, что было предоставлено недостаточно газа), эта транзакция будет добыта в блоке, а следующие транзакции будут выполняться нормально. Вы, кажется, путаете неудачные и ожидающие транзакции.