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 ( revert
por 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?
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?)
Cabra teletransportadora
Lauri Peltonen