Как обнаружить и заменить детали транзакции, которые хранятся локально, когда пользователь повторяет транзакцию с более высокой ценой, используя Metamask

Для веб-приложения я сохранил идентификатор транзакции действия. если пользователь повторит транзакцию с более высокой ценой газа в метамаске (в случае, если транзакция займет слишком много времени, метамаска дает эту опцию), есть ли возможность заменить текущий идентификатор транзакции, который я сохранил, новым. как можно обнаружить эту повторную попытку. есть ли какой-нибудь метод web3 для этого?

Ответы (1)

Если вы хотите, чтобы была выполнена та же транзакция, но только с более высокой ценой газа, вам не нужно заменять идентификатор транзакции, поскольку он не меняется.

Вызов функции в вашем интерфейсе с web3.jsвами будет использовать этот фрагмент кода

   function functionYouWantToCall() {
        web3.eth.getAccounts(function(error, result) {
        web3.eth.sendTransaction(
            {from:web3.eth.accounts[0],
            to: YourContractAddress,
            value:  "0", 
            data: "0xTheHashOfTheFuctionYouWantToCall"
                }, function(err, result) {
          if (!err)
            console.log(error); 
        });
    });

    } 

Чтобы найти информацию, которую вы должны поместить в поле данных, перейдите в Remix, а затем на вкладке «Выполнение» выберите детали, прокрутите вниз до хэшей функций и выберите вставить хеш функции, которую вы хотите вызвать перед ней 0x. Также не забудьте ввести свой собственный адрес контракта в поле адреса контракта.

но повторная попытка генерирует новый идентификатор транзакции, а старый всегда будет в состоянии ожидания, через некоторое время этот идентификатор будет удален из etherscan, какое-либо решение для получения нового идентификатора?
Вы делаете это со смарт-контрактом, загруженным в блокчейн?
да. делать с загруженным смарт-контрактом
Я обновил свой ответ, надеюсь, это поможет