¿Existe un límite teórico para la cantidad de datos que un contrato puede almacenar mientras se ejecuta en una red privada en la que el gas no es una preocupación?
Contexto: en un Dapp financiero que reemplazará a los sistemas de pago globales, el rendimiento de tx/s es sin duda un factor limitante que se discute ampliamente. Pero eso no es a lo que me refiero aquí. ¿Puede un contrato almacenar 1GB, 1TB,... datos en un contrato? Los datos no se escribirían de una sola vez, sino que se acumularían con el tiempo.
Ejemplo: supongamos el mejor de los casos en el que logramos exprimir una sola transacción de tokens que viven encima de un contrato inteligente en 100 bytes. Con un rendimiento de 1000 tps, esto produciría 100*1000*3600*24*31*12 = 3,2 TB/año. Siéntase libre de adivinar si / cuándo esto será posible.
El almacenamiento del contrato es una clave de 32 bytes y un valor de 32 bytes, por lo que el máximo que puede almacenar un solo contrato es de alrededor de 1,46 GB (32^32).
Falso. Hay 2^256 claves diferentes, y cada clave puede almacenar 32 bytes, por lo que hay un total de 2^261 bytes que se pueden almacenar. Dicho esto, para entonces la cadena de bloques de Ethereum probablemente se romperá debido a una colisión de hash...
break
con que fallará toda la cadena de bloques? ¿No hay comprobaciones de hashes duplicados? ¿Se tendrá que rebobinar/rehacer la transacción hasta que no ocurra ninguna colisión?El almacenamiento del contrato es una clave de 32 bytes y un valor de 32 bytes, por lo que el máximo que puede almacenar un solo contrato es de alrededor de 2^261 bytes (2^256 * 32b).
En una cadena privada donde el gas no es una preocupación, dado que el espacio de direcciones es de 160 bits, suponiendo que se pueda usar todo, se pueden crear 2^160 contratos. Entonces, en teoría, alrededor de 2^421 bytes es el máximo que pueden almacenar los contratos.
struct
, que puede tener más de 32 bytes? @eth♦
maran
SCBuergel