Solidity + Truffle – No se encuentra en la solución de error del Bloque 50

Si alguna vez experimentó el despliegue de un contratista inteligente un poco más complicado de lo habitual en la red Ethereum recientemente, es probable que haya encontrado ese error.

Bueno en Kryptopy lo hicimos. Aquí es cómo conseguimos ese error y sus principales síntomas:

1- El código del contrato pasa todas las pruebas en trufa (escriba todas las pruebas que pueda pensar, incluso si toma más tiempo. Es un salvavidas)
2- Implementación en TestRPC = A1, perfecto sin error alguno
3- Implementación con Geth en Testnet = A1, perfecto también
4- Implementación con Geth en Mainnet = El contrato de migración se bloquea, luego muere con el: Contrato no encontrado en el error Bloque 50. Necesito decir aproximadamente 1 hora de espera pacientemente para obtener ese error, y Nothing on etherscan with the txid.

¡Guauu! Que diablos paso Estaba funcionando en todas partes, ¿por qué no funciona en mainnet?

Después de innumerables horas de depuración, cientos de búsquedas de google, publicaciones en foros de comunidades y chats (gitter, slack) no hubo respuesta. Nadie parece saber cómo arreglar eso.

Para encontrar la solución, utilizamos Parity y el Dapp incluido que muestra qué se ha implementado y si lo está o no. Muy útil para la depuración, ya que también puede ver otros contratos en la red.

Soooo … ¿qué encontramos? Esa trufa nunca está enviando la cantidad correcta de gas a la Red. Seguimos la documentación de la trufa a la carta como probablemente la mayoría de ustedes lo hicieron. Desafortunadamente, la documentación tiene algunas fallas y no está muy actualizada con la última trufa y sus errores.

El problema parece muy complicado al principio (éramos 3 desarrolladores senior que buscaban POR QUÉ). Sin embargo la solución es bastante simple.

Modifique su truffle.js o su archivo equivalente y agregue lo siguiente a su red:

(… cosas habituales de la red aquí),
gas: 4712388,
Precio de gas: 25000000000

¿Ves todos esos ceros? Todos estamos acostumbrados a poner algo así como 21000 allí … bueno, eso no funciona;) El precio mínimo de la gasolina en el momento de esta publicación es de alrededor de 24 shannon. Así que si pones 21000 ni siquiera obtienes 1 shannon. Y es por eso que el error viene y se agota. Su transacción nunca es recogida por el EVM porque su gas era demasiado bajo! Que simple

¡Espero que esto te haya ayudado y siéntete libre de compartir si lo hizo para que otras personas que se encontraron con el mismo problema puedan resolverlo finalmente!

Si encontraste útil este arreglo, cualquier donación es bienvenida;) ¡Me costó $ 200 y una noche de sueño para conseguirlo! Saludos!

Puede enviarme un consejo en esta dirección de correo electrónico: 0xCc2fE68fc20627830ca8527BAFcbCE005E8Aae92