Как утвердить сумму на Metamask с помощью JavaScript и отправить средства позже по логике кода

#javascript #wallet #metamask #signer #ethers.js

Вопрос:

Я кодирую веб-приложение (используя JavaScript ethers.js) для взаимодействия с Метамаской. Если я хочу отправить транзакцию, я бы сделал так:

 const provider = new ethers.providers.Web3Provider(window.ethereum)
const signer = provider.getSigner()

// here Metamask will ask to confirm tracsaction
const tx = await signer.sendTransaction({
  to: "0x.....",
  value: someAmount
});
 

Но что мне делать, если я хочу, чтобы Metamask просто одобрил транзакцию, и программа может выполнить некоторую логику и выполнить транзакцию позже, когда логика будет выполнена? Что-то вроде этого:

 const provider = new ethers.providers.Web3Provider(window.ethereum)
const signer = provider.getSigner()
        
// here Matamask ask to approve the amount
//......

// await for some logic here...

// Could Metamask here NOT ask to confirm transaction anymore (?)
const tx = await signer.sendTransaction({
  to: "0x.....",
  value: someAmount
});