¿Cómo almacenar datos en la cadena de bloques?

Me pregunto si es posible darle a alguien una identificación de transacción de bitcoin y con eso puede leer algunos datos ocultos, como las notas de blockchain.info sobre las transacciones, pero de verdad, almacenados en la cadena de bloques para siempre.

Tuve esta idea, pero no creo que sea una buena práctica:

Envía la mínima cantidad de BTC posible, que es 0.00000001 BTC, o 1 satoshi, a una dirección, y en esa dirección estarían los datos.

1 ArFAXhvMbwJuub4ujnVbLFszqX3Mc uzsX

Hasta donde yo sé, la dirección está formada por 30 letras en base 58, pero como el primer carácter debe ser 1 y los últimos cuatro tienen que ser la suma de verificación, entonces tienes 25 letras en base 58, y eso es como 17 bytes.

Entonces, debe pagar 0.0001 BTCla tarifa de transacción, y luego puede agregar datos a esa transacción a un precio de 17 bytes por 1 satoshi, enviando satoshis a muchas direcciones que contienen todos los datos. Imagínese si pudiéramos almacenar datos allí para siempre... y comunicarnos con el futuro...

¿Hay alguna otra técnica para hacer esto? ¿Es esta técnica una buena práctica?

Por favor, no fomente este mal uso de la cadena de bloques. Hay altcoins para este propósito.
Estoy aún más confundido ahora. Las compañías de reaseguros están comenzando a promover/investigar el uso de blockchain para almacenar contratos/reclamos. Pero las respuestas dadas aquí sugieren que es una idea terrible. Qué me estoy perdiendo ? www2.deloitte.com/content/dam/Deloitte/uk/Documents/Innovation/…
Jus12: ¿qué altcoins son para este propósito?
OriginStamp está haciendo algo similar: app.originstamp.org/home

Respuestas (6)

entonces tienes 25 letras en base58, y eso es como 17 bytes.

20, en realidad.

Por lo tanto, debe pagar como 0.0001 BTC por la tarifa de transacción, y luego puede agregar datos a esa transacción a un precio de 17 bytes por 1 satoshi, enviando satoshis a muchas direcciones que contienen todos los datos. Imagínese si pudiéramos almacenar datos allí para siempre... y comunicarnos con el futuro...

Vas a tener dos problemas con esto: tarifas de transacción y reglas de polvo. Las tarifas de transacción significan que cada transacción le costará un par de centavos. Las reglas de polvo significan que las transacciones con salidas por debajo de cierto tamaño simplemente se eliminarán. La razón detrás de esto es que está enviando una transacción tan pequeña que la tarifa requerida para canjearla será mayor que el dinero que está enviando.

A más largo plazo, los datos que está enviando se verán idénticos a todos los demás datos que están en la cadena de bloques. Eso significa que necesita identificar su transacción de alguna manera. Eso generalmente se hace proporcionando el txid, que es de 32 bytes.

¿Es esta técnica una buena práctica?

Depende de lo que estés tratando de lograr. Por ejemplo, ¿estás tratando de comunicarte de forma anónima? Debería usar BitMessage a través de Tor en su lugar. ¿Quiere incrustar datos transaccionales, como lo hace Counterparty? Incrustar los datos en Bitcoin es probablemente la mejor solución para eso.

... y comunicarse con el futuro...

Bueno, Internet Archive rastrea todas las páginas web (¡incluida esta!), por lo que ya está cargando las cosas que ha escrito en un almacén de datos distribuido y de larga duración.

Gracias por la respuesta. ¿Cómo calculas que son exactamente 20 bytes? Estoy seguro de que debe ser muy fácil, pero no puedo pensar en ello.
@NathanParker No lo calculé. Las salidas Pay to Public Key Hash tienen un hash HASH160 de 20 bytes, y eso es lo que codifica la parte principal de una dirección.
Entonces, ¿una dirección es el hash de una clave pública? Entonces, ¿cómo sabes la clave pública dada la dirección? ¿Cómo puede saber que una transacción se firmó con su clave privada si no conoce al público para comparar? La única forma en que pienso en hacer esto sería agregando la clave pública en los datos de la transacción..?
Revelan el pubkey al gastarlo.
Olvidé agradecerte por esto. Así que muchas gracias :)
No. Cuando SE desaparezca, algún intruso de dominios cargará un archivo robots.txt, que archive.org aplica retroactivamente sin cuestionar su autenticidad, y esta conversación desaparecerá.

Se ha hecho. es cojo Es correo no deseado. Está incurriendo en costos en toda la red a perpetuidad (y no, la tarifa no paga por eso).

Si realmente no puede detenerse, mire OP_RETURN, ya que es al menos una forma mucho más amigable para la red de hacerlo.

Podría usar la OP_RETURNoperación en su secuencia de comandos pubkey. Le brinda 80 bytes de datos gratuitos (creo que se actualizó de 40 bytes recientemente, podría verificarlo).

Si eres desarrollador, podrías crear un programa basado en bitcoinj que te ayude a agregar una OP_RETURNoperación a una transacción.

Script script = new ScriptBuilder().op(ScriptOpCodes.OP_RETURN).data("your message".getBytes()).build();
                tx.addOutput(Transaction.MIN_NONDUST_OUTPUT, script);

también puede mirar estas soluciones:

Bitcoin es para transacciones, no para almacenamiento. Se puede usar un sistema derivado de bitcoin como Ethereum para implementar esto. StorJ o FileCoin son sistemas especiales similares a blockchain solo para almacenamiento.

Debe explicar por qué cree que la técnica es una mala práctica. En particular, el ascii bernake usó esencialmente la misma técnica que el autor de la pregunta, solo que con salidas más grandes.

Hasta donde yo sé, los datos se pueden almacenar en blockchain mediante la implementación de contratos inteligentes, utilizando el compilador de solidez. Los datos que queremos almacenar se pueden almacenar en variables de estructura del contrato inteligente y en forma de cadenas. Una vez que se implementa el contrato, se genera un hash. Luego, el hash se almacena en la cadena de bloques en forma de estructura de lista enlazada, que está interconectada con otros hash.