¿Cuál es la causa general de la falta de gasolina con MetaMask?

Esto parece una pregunta trivial, pero no puedo encontrar una respuesta.

  • Cuando intenta enviar una transacción con MetaMask, calcula la cantidad de gas necesaria.

  • La mayoría de las veces, si hay un error en su función ( revertpor ejemplo, una prueba no satisfecha), lo notará al calcular el precio del gas y lo establecerá en 0. Si intenta enviar la transacción de todos modos, obtendrá el error. Por lo tanto, puede predecir algunos de los errores.

  • Pero a veces, MetaMask calcula y encuentra una cantidad incorrecta de gas . La mayoría de las veces, si lo configuro más alto manualmente, puedo enviar la transacción.

Eso significa que es un error que no se pudo prever y que el gas real que se necesita es más alto de lo esperado. ¿Cómo sucede eso? ¿No debería MetaMask ser capaz de ver lo que está a punto de suceder?

¿Por qué hay una diferencia entre los errores que Metamask puede predecir y los demás?

Respuestas (1)

A veces es muy difícil estimar la cantidad de gas necesaria. Algunos ejemplos:

1) Matrices. Si el contrato, por ejemplo, itera sobre todos los valores, Metamask no sabe cuántas entradas hay en la matriz.

2) Llamadas a contratos externos. Pueden hacer casi cualquier cosa y consumir todo el gas que se les da.

3) Distintas situaciones de error (¿bajo qué condiciones arroja el contrato, por ejemplo?)

¿Y hay algo que pueda hacer para que sea más fácil evaluar el uso de gas, de modo que el usuario no tenga que corregir el límite de gas cada vez? Especialmente cuando se trata de matrices (mi función no tiene iteraciones, solo asignaciones simples)
Dudo que puedas darle 'pistas'. De todos modos, eso está un poco fuera del alcance de este foro, Metamask es un software de terceros. ¿Quizás preguntar en su foro de soporte o algo así?