¿Hay un límite para el tamaño de la transacción?

¿Existe un límite teórico para el tamaño de los datos de transacción cuando envía una transacción a la red Ethereum?

Árbitro.

¿Existe un límite (teórico) para la cantidad de datos que puede almacenar un contrato?

Respuestas (2)

Wow, esta es una pregunta tan interesante! TL; DR : el límite de tamaño de la transacción, en el momento de escribir este artículo, es de aproximadamente 780 kB (alrededor de 3 millones de gas). Pero sigue leyendo.


No existe un límite directo o fijo , ni para el tamaño de las transacciones ni para el tamaño de los bloques. Esta es una fortaleza de la red Ethereum, escala.

Eso no quiere decir que no haya límites. Actualmente existe un límite de gas por bloque de 3.141.592 de gas que se puede gastar como máximo por bloque.

Eso significa que, en teoría, podría crear una sola transacción que consuma todo el gas de un solo bloque.

Intentemos enviar datos aleatorios de 256kB con un contrato:

trx con datos aleatorios de 256kb

Eso consumiría casi 9 millones de gas, que no está disponible actualmente. Mist intenta crear la transacción, pero no será válida.

Intentemos crear algo cercano al límite de gas, 44 444 bytes aleatorios :

44k bytes aleatorios

Esa transacción se realizó, aquí hay un enlace del explorador . Picadillo:

I0207 11:47:14.558908 eth/api.go:946] Tx(0x25e54394ab4e5f17d6e1240c02c1a6c4bb675ef9471f1105b006988f5fe5aec1) to: 0xfcae7970392f510a985a7eaccd3820b7759d65d9
  • Valor: 60 Finney (0,06 éter)
  • gasolina: 3131800
  • Precio de la gasolina: 50 Gwei (0,00000005 éter)
  • Gas utilizado por transacción: 3031800
  • Costo de transacción real: 151,59 Finney (0,15159 Ether)
  • Gas acumulado utilizado: 3031800

Entonces, acabo de agregar 44kB a la cadena de bloques en el bloque 967163 .

Y ahora, la magia de escalado de Ethereum comienza a hacer efecto. En el bloque 967164 , la red reacciona al alto consumo de gas y aumenta el límite de gas del bloque a 3.142.967 .

límite de gas aumentado

Por lo tanto, si hay una solicitud continua de alto consumo de gas, el límite de gas se puede aumentar en más/menos 1/1024, que es alrededor de 0.09%. Ver ecuaciones de papel amarillo 40-42 .

En resumen, límite: sí, al momento de escribir sobre 780kB para un tx lleno de bytes cero, o 46kB para un tx lleno de bytes distintos de cero. Límites fijos (como en Bitcoin): no.

Actualización: en Homestead, el bloque gasLimit ahora es 4.712.388 (1,5 veces PI millones) y el precio del gas es 20 GWei. (La metodología anterior todavía se puede usar).
Es posible que me haya perdido esto, pero ¿cómo 89kB == 3 millones de gas?
Uhm, no lo es. Bien descrito. Probablemente sea alrededor de 40kB. Alguien, por favor, rehaga los cálculos, 3 millones de gasolina también está desactualizado. :-)
En realidad estabas enviando 44.444 bytes aleatorios. Debido a que tenía 178 bytes cero dentro, el gas intrínseco era 21 000 + (178 * 4) + (44 266 * 68) = 3 031 800. El limite de gas es variable (ahora por ejemplo es 500k por el reciente ataque a la red) asi que creo que no vale la pena actualizar ese valor en la respuesta.
Con esta última respuesta, estoy un poco confundido. ¿GasLimit sigue siendo igual a 3 141 388 gas o se actualiza a 4 712 388? Gracias
Difiere. actualmente alrededor de 4.000.000. consulte ethstats.net para obtener más detalles.
Dado que este lanzamiento de compromiso con geth v1.6.6 eliminará las transacciones de más de 32 kb.

A partir del 08/12/2017 , el límite de gas detallado en EthStats.net es 6,700,314 .

El límite de gas estaba 'atascado' en 4,7 millones. Se recomendó que los mineros cambiaran su configuración para poder aumentar el límite de gas.

Como se describe en este artículo , esto sucedió.

Cada carácter hexadecimal es de 4 bits. 2 caracteres es un byte.

El papel amarillo describe las tarifas para varias operaciones.

Tarifas de papel amarillo

Utilizando cálculos similares a los utilizados por 5hcdn/Giuseppe Bertone, ahora podemos ver que una transacción podría (en principio) contener ****

(6.700.314 - 21.000) / 68 = 98.225 (redondeado hacia abajo) bytes distintos de cero.

Estadísticas de EthGasStation

Ahora... los datos proporcionados por EthGasStation nos permiten ver que podríamos tener una transacción minada con un precio de gas tan bajo como 0.5 Gwei.

6,700,314 * 0.5 = 3,350,157 Gwei = 0.003350157 Ether.

Un precio de gas de 20 Gwei más estándar produciría:

6,700,314 * 20 = 40,201,884 Gwei = 0.040201884 Ether.

Al precio actual de ETH de alrededor de $315 , costaría entre $1,05 y $12,66 enviar esa cantidad de datos a la cadena de bloques.

"A partir del 08/12/2017" ¿Eres del futuro?
No. Yo soy britanico ;)