Ok, sé que blockchain es de conocimiento público. Pero, luego, hay experimentos como zcash que encriptan el remitente y el receptor y la cantidad de información y todavía funcionan.
Estoy considerando si el servicio de arbitraje blockchain p2p es posible. Por ejemplo, desea intercambiar ETH por BTC. Una cadena de bloques genera 2 direcciones, una de las cuales es para BTC y la otra para ETH. Una vez que se financian ambas direcciones, los fondos de ambas se envían a los destinatarios. Para hacer esto a través de blockchain, debe haber una forma segura de almacenar y usar claves privadas en blockchain.
¿Es esto completamente imposible, o hay alguna indicación de que uno podría hacer algo así?
No hay encriptación involucrada en ninguna parte de una cadena de bloques. No hay claves para cifrar, ya que cada nodo tiene la misma información que todos los demás. La criptografía está involucrada, pero para firmar/probar. No para cifrar.
Incluso en el caso de zcash, el cifrado no está involucrado. Todo lo que hacen las billeteras es demostrarle al resto de la red que tenían los fondos que están gastando. La única diferencia en comparación con Bitcoin es que revela menos información al hacerlo y, como resultado, las pruebas son mucho más complejas.
Las cadenas de bloques no generan claves privadas; eso no tiene sentido, ya que todos pueden ver la cadena.
Las carteras tienen claves privadas. Nunca se comparten con nadie. Entregan las claves públicas correspondientes para que se les pague, y usan la clave privada para luego demostrar a otros que poseen ciertas monedas.
El ejemplo que está describiendo con un intercambio que ocurre entre dos cadenas es posible usando una técnica llamada intercambio atómico de cadena cruzada . Se basa en una transacción bloqueada con hash donde la primera billetera que mueve su dinero en una cadena revela un valor aleatorio que se convierte en un valor que se conoce con anticipación. La otra parte luego usa esta preimagen para desbloquear fondos en el otro lado.
Alguien propuso algo similar, publicar archivos encriptados en la red IPFS (pública como, por ejemplo, la cadena de bloques de Ethereum) y luego enviar las claves a los participantes para que las descifren.
El fundador Juan Bennet destacó la siguiente cita:
'Ejemplo ingenuo: cifre el archivo con algún secreto y comparta el secreto con las personas que tienen "permiso de lectura"'
https://github.com/ipfs/ipfs/issues/86
Lo que realmente necesita es un sistema de capacidad descentralizado.
https://github.com/autocontracts/permissioned-blocks/blob/master/whitepaper.md
(Descargo de responsabilidad, este es un libro blanco que escribí)
No se recomienda enviar una clave asimétrica privada como una transacción de blockchain (que es un canal de comunicación) de esta manera.
Hay un buen documento sobre intercambios clave aquí:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.216.6107&rep=rep1&type=pdf
En este artículo, el autor también deja claro que enviar una clave privada a través de un canal no es un buen diseño:
"Cuando se envía una clave en un mensaje, solo se usa la clave pública, para ser explícitos... Ninguno de los protocolos estudiados en este documento envía una clave secreta por cable".
https://dominictarr.github.io/secret-handshake-paper/shs.pdf
Las claves públicas están diseñadas para enviar a través de un canal. No la clave privada. El cifrado se puede romper por la fuerza bruta. Una vez que alguien tiene la clave privada, puede descifrar todo lo que se cifró con esa clave.
blockchain data == channel
. Es una conexión que creo que has asumido que la gente hace, pero dudo que todos lo hagan. Una oración que explique esto ayudaría, especialmente porque el término "canal" en este foro se usa más a menudo para significar "canal de pago".
muro
Cloe