¿Hay algo que me impida usar la cadena de bloques de ethereum como almacenamiento de datos?

Según tengo entendido, los contratos inteligentes actualmente son inmortales por defecto. ¿Significa esto que podría crear un contrato que contenía una forma codificada de fotos de bebés y tenerlo almacenado para siempre? Si no, ¿qué lo impide?

Respuestas (4)

Nada lo impide. Hace 5 meses, demostré el almacenamiento de audio (un archivo mp3 muy comprimido) en la cadena de bloques. ¡Y todavía está allí y está siendo replicado por cada nodo completo hoy! ¡Solo 3.5kB y tuve que pagar un poco de éter, pero aún así es genial!

Echa un vistazo a Lo más extraño de todos: ¡la cadena de bloques ahora tiene voz! hilo en Reddit.

Para que esta respuesta dure la prueba del tiempo (si algo le sucede al enlace anterior), aquí está el comando relevante para ejecutar en su terminal:

geth --exec "eth.getTransaction('0xbb8ee9866ee67277986b6f40775469c7a674810ce99dce3caff0d1117c8dcdac').input" console | xxd -p -r | mpg321 -

Una forma más inteligente usa el almacenamiento solo como un hash como han dicho otras respuestas, use StorJ, IPFS, etc., porque luego puede almacenar más fuera de la cadena de bloques y vincularlo.

¡Eso es increíble! Me tomó un tiempo obtener los datos y reproducirlos, geth no parecía pensar que la dirección existía, xxd no estaba instalado, mpg321 no estaba en los repositorios oficiales, así que tuve que encontrarlo en un sitio de exploración de blockchain , instale xxd, y luego use ffplay, y todo valió la pena XD.
shelvacu: ¡Qué bueno escucharlo! Me alegro de que te hayas divertido un poco, sé que lo hice. :) Tuve el primer contrato funcional en la cadena de bloques de Ethereum.
Nada lo impide... excepto los costos extraordinariamente altos en comparación con cualquier otra solución. Mencione en su respuesta que las personas en realidad no deberían hacer esto; como se mencionó, IPFS es una manera mucho mejor de tener algunos datos almacenados para siempre sin inflar la cadena de bloques de Ethereum. Y, de hecho, si las personas esperan a que se completen proyectos como Swarm, podrán pagar menos del costo del método de almacenamiento de blockchain en un contrato que garantizará lo mismo.
¿Cuánto pagaste?
@MatíasInsaurralde He escuchado $0.25 en Reddit.

Las cosas principales que "te detendrían" serían:

  1. Bloquear los límites de gas que actualmente son "votados" por los mineros
  2. Cantidad de gasolina que tendría que pagar para almacenar sus datos

Cosas como fotos de bebés tendrán, como mínimo, 600 kB sin comprimir. No estoy muy familiarizado con la compresión de imágenes, por lo que solo trabajaremos con la cifra de 600 kB por el bien del ejemplo.

Una transacción que envió 46kB de texto comprimido consumió 1.720.210 de gas y costó 0,0860105 Ether (0,074 USD) a finales de octubre de 2015 . Desde entonces, el precio de Ether continuará subiendo/bajando, pero ignorando eso por un momento, hagamos los cálculos:

Almacenar la imagen de 600 kB costaría 13 veces más gas para almacenar, por lo que se consumirían 22 362 821 gas por un costo de $0,96 (si se cotiza a partir de octubre de 2015). El límite de gas de bloque actual es de 3 141 592 de gas, que es mucho menor que la cantidad requerida para procesar la imagen en 1 transacción.

Por lo tanto, es posible almacenar imágenes en la cadena de bloques de Ethereum, pero una solución mucho más económica sería almacenar una referencia a esa imagen (como una URL) para almacenar permanentemente donde se guarda la imagen, dado que no es tan útil como el almacenamiento permanente. En el futuro, es probable que IPFS pueda almacenar datos de forma indefinida una vez que establezcan un sistema de incentivos para que las personas almacenen los datos. Entonces solo es cuestión de almacenar el hash de IPFS que apunta a la imagen.

Es técnicamente posible, hay algunas aplicaciones que también hacen lo mismo.

  1. http://storj.io
  2. http://filecoin.io
  3. Escalamiento de almacenes de datos basados ​​en blockchain

Los tipos de datos que se pueden almacenar son limitados, por lo que almacenar fotos de bebés requeriría mucho código para asignarlo a los tipos disponibles. Además, por supuesto, debe pagar Ether al contrato para usar su almacenamiento, por lo que no es gratis.