Tengo problemas para implementar un contrato en la red principal y creo que esto se debe al alto consumo de gas. Una versión anterior del contrato funcionaba en la red principal. La versión actual funciona en mi red de prueba privada (creada con geth --dev
). En la red de prueba, estas creaciones de contratos utilizan alrededor de 2,4 millones de unidades de gas. Intenté implementarlo en la red principal con 2 millones de gasolina al principio y obtuve una excepción de falta de gasolina (sin embargo, TA se extrajo, la creación del contrato simplemente no tuvo éxito).
Después de eso lo probé con 3 millones y obtuve esto (no extraído):
"{"jsonrpc":"2.0","error":{"code":-32010,"message":"Transaction cost exceeds current gas limit. Limit: 2200000, got: 3000000. Try decreasing supplied gas.","data":null},"id":1}[\n]"
Estoy completamente atascado y no tengo idea de cómo puedo implementar mi contrato ahora. Principalmente tengo dos preguntas:
La razón por la que geth se niega a enviar la transacción es porque el límite de gas del bloque varía . En una red de prueba privada, puede ser cualquier cosa, pero por defecto serán 5,5 millones. En la red principal, actualmente son solo 2 millones, por lo que una transacción de gas de 3 millones no encajaría en absoluto. Esto se debe a los recientes ataques de spam en la red: los desarrolladores pidieron a los mineros que redujeran el límite y lo hicieron. Con suerte, los mineros lo volverán a aumentar al valor predeterminado después de la bifurcación entrante. (Digo "con suerte" porque es la decisión de los mineros, los desarrolladores solo pueden sugerir).
Las únicas cosas que usan gas en el momento de la creación son lo que sucede en el constructor y el tamaño del código compilado en sí. Es posible que pueda reducir el tamaño activando el optimizador, pero es muy posible que ya esté activado.
Sin embargo, no estoy tan sorprendido por la cifra que está dando. 264 LoC es en realidad mucho en Ethereum. Tengo un contrato de LoC de 400 ~ que está optimizado para 3 ~ millones de gas .
Hay tres formas de reducir el costo del gas:
La forma más sencilla puede ser simplemente esperar. No eres el único que está atascado con grandes contratos, por lo que los mineros tienen un incentivo para aumentar el límite de gasolina nuevamente, y pronto.
Max Binnewies
Mateo Schmidt
Max Binnewies