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) {
// ...
}
}
Как только вы получите статус транзакции, который включает в себя отказ пользователя от нее, вы можете активировать поведение во внешнем интерфейсе.