Estoy tratando de agregar alguna funcionalidad adicional a mi dApp de acuñación de NFT y verificar si una acuñación/transacción es realmente exitosa antes de ejecutar una determinada línea de código. Pero realmente no puedo conectar los puntos en esto.
Encontré muchos ejemplos para obtener el estado usando el hash txn, pero primero hay que obtener este hash de transacción, ¿no? ¿Hay alguna forma de obtener el hash txn después de iniciar/confirmar la transacción? Este es el código real donde envío la transacción al método mint en mi contrato:
const mint = async function (amount) { const id = await ethereum.request({ method: 'eth_chainId' }); if (mintAcc != "") { var totalCost = WEI_COST * amount; // if an account is present if (mintAcc.length > 0 && id == CHAIN_ID) { contract.methods.mint(amount).send({ from: mintAcc[0], to: CONTRACT_ADDRESS, value: String(totalCost), }); } } else { alert("Connect wallet first") } }¿Qué debo agregar para obtener el hash/id de la transacción después de enviar el método mint para rastrear su estado si está extraído o no?
La razón por la que pregunto esto es porque estoy usando una lista de permitidos almacenada en un mapa que contiene el valor de cuántas mentas puede reclamar una dirección específica. Después de que se realizó el reclamo, quiero eliminar la dirección de las personas para que no puedan volver a reclamar.
El método send() devuelve un tipo PromiEvent en el que puede manejar eventos. Uno de estos eventos es transactionHash
Ejemplo de código:
contract.methods.mint(amount).send({ from: mintAcc[0], to: CONTRACT_ADDRESS, value: String(totalCost), }).on("transactionHash", function(hash) { console.log(hash); });Documentos: https://web3js.readthedocs.io/en/v1.7.3/web3-eth-contract.html#methods-mymethod-send