Solana Candy Machine - можно ли узнать, нажимает ли пользователь на подтверждение транзакции

Я использую конфетную машину Solana для чеканки nft.

Когда я вызываю функцию смарт-контракта в javascript

      import * as anchor from "@project-serum/anchor";

let program = new anchor.Program(idl, programId, provider);
let result = await program.rpc.someFunc(); //here is the smart contract function

В браузере появится всплывающее окно для подтверждения транзакции. Есть ли способ узнать, нажимает ли пользователь кнопку "Отмена" или "Утвердить"?

В эфириуме это выглядит примерно так:

                .on("transactionHash", function(hash) {
                …
          })
          .on("error", function(error, receipt) {
        …
          });

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

1 ответ

Да, вы можете добиться чего-то подобного, однако это не будет эффективно напрямую с автомата с конфетами.

Вероятно, есть несколько способов сделать это, но один из них, который я нашел, используетconnection.getSignatureStatuses()из сыворотки.

Код будет выглядеть примерно так, и он похож на то, что вы поделились:

      // Impor the connection dependencies
import * as anchor from '@project-serum/anchor';

// Loop using waiting for a positive status / or timeout
while (...) {

  // Get the status using the transaction ID
  const statusResponse = await connection.getSignatureStatuses([
    txId,
  ]);

  const status = statusResponse?.value[0];

  if (status.err) {
    // ...
  }
}

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

Другие вопросы по тегам