¿Existe una forma práctica para que las redes Ethereum manejen volúmenes de datos considerablemente grandes utilizados por contratos pesados?

No es un secreto que un solo contrato podría potencialmente almacenar un gran volumen de datos ( 1 , 2 ). Por supuesto, se necesita algo de gasolina, pero no parece limitar estrictamente el volumen total de datos que se almacenarán en toda la red. También hay formas recomendadas de evitar eso (como IPFS / Swarm), pero nuevamente no son restrictivas. Incluso siendo ineficientes, estos contratos que consumen datos pueden crearse y llenarse con datos y mantenerse en la profundidad de la red por tiempos.

Ahora, suponiendo que la cadena de bloques se distribuya, ¿cómo vamos a manejar, por ejemplo, algunos contratos pesados ​​​​de TB? ¿Significa que la red necesitaría distribuir estos terabytes en todo el nodo para funcionar correctamente? ¿Tal vez haya algún tipo de retención para tales "piedras perdidas"?

¿O me estoy perdiendo un punto?

Respuestas (1)

Un SSTOREvalor distinto de cero cuesta 20.000 de gasolina. Cada uno SSTOREpuede almacenar 32 bytes de información.

Revisa dos veces mis matemáticas:

1TB / 32 bytes = 31,250,000,000

31,250,000,000 * 20,000 gas * 1 gwei/gas = 625,000 ether * $750/ether = $468,750,000

Entonces, sí, un contrato podría almacenar un terabyte de datos y requerir que todos los nodos lo repliquen. Pero costaría cientos de millones de dólares hacerlo.

Los datos almacenados por los contratos en realidad no forman parte de la estructura principal de la cadena de bloques, ya que se pueden calcular volviendo a ejecutar todas las transacciones. Por lo tanto, es concebible que los nodos simplemente no puedan almacenar esos datos hasta que se necesiten (en ese momento sería costoso reconstruirlos desde el punto de vista computacional). Dicho esto, dependiendo de cómo se crearon los datos en primer lugar, las transacciones en sí mismas pueden ser igual de pesadas. (Tenga en cuenta que también se debe pagar el gas por la carga útil de una transacción).

No conozco los detalles del trabajo de fragmentación que está planeado, pero imagino que incluye no necesitar todos los nodos para almacenar todos los datos. Esto también podría aliviar el costo de almacenamiento por nodo.

Gracias, explicaste muy bien las cosas. El costo podría ser un límite real, de hecho. Probablemente, he subestimado eso