[Taproot y Firmas Schnorr - Crypto Academy / S5W6 - Homework post for pelon53.]

in hive-108451 •  3 years ago 


image.png
Imagen creada en Canva por @dexsyluz


image.png


1.- Explique en detalle el P2SH y el P2PKH, muestre las diferencias entre ambas direcciones.


El propósito de todo este rollo de tecnología descentralizada que empenza primeramente con Bitcoin y luego se fueron añadiendo las demás criptomonedas, era de enviar dinero imitando a los transacciones bancarias de entidades fiduciarias. Donde tengamos mayor privacidad, escalabilidad, seguridad y transparencia a la hora de realizar las transacciones, sobre todo descentralización, todo un ecosistema donde nosotros mismos somos los dueños de nuestras acciones dentro de una red de bloques.

Han existido diferentes tecnológias que protegen estas transacciones, con el fin de que no puedan ser manipulables y evitar a toda costa ataques maliciosos, a continuación como funcionan dos de las mas usadas.



image.png
Fuente


Pay to Public Key Hash (P2PKH)


Aunque como sabemos han existido muchos tipos de formatos para proteger las transacciones de Bitcoin, este formato de scribd es de los mas usado dentro de la red. Anteriormente cuando se creo Bitcoin en 2009 se utilizaba un formato llamado P2PK, el cual era muy vulnerable a ciber ataques con computadores que tuvieran tecnología cuánticas. La tecnología avanza demasiado rápido y de alguna forma podrían los hackers beneficiarse de una fractura en el sistema.


P2PK funcionaba de manera que cuando un usuario realizaba una transacción, el dinero solo se podia gastar por la persona que tuviera la clave publica correspondiente al destinatario en la transacción. Este destinatario era verificado con su correspondiente clave privada y simplemente desbloquear los fondos en una transaccion.



image.png
Fuente


Al pasar el tiempo se dieron cuenta de la fragilidad del sistema, ya que el Shor modificado podia proporcionar la clave privada de un usuario solo tomando la clave publica deduciendola mediante una computadora con tecnológica cuántica. Pay to Public Key Hash como bien lo dice su nombre, solo la persona que tiene el hash correspondiente a la clave publica del destinatario; puede pagar con los BTC de la transaccion.


En estas transacciones podemos proporcionar diferentes condiciones, en el caso de P2PKH la unica condicion es poseer el hash correspondiente a la clave publica y verificar que realmente sea el dueño de las monedas bloqueadas mediante su clave privada para desbloquear y pagar los BTC.


¿Como funciona Pay to Public Key Hash?


Una clave publica una dirección aleatoria con una serie de dígitos entre numero y letras, con longitud predeterminada, estas las contienen las carteras a donde enviamos y recibimos dinero en BTC. Y las claves privadas son para confirmar o mejor dicho ''firmar'' digitalmente las transacciones que realicemos dentro de la red de bloques, de nuestra wallet a la wallet de nuestro destinatario.


Actualmente las wallet o las direcciones en los intercambios tiene añadido de forma predeterminada el formato scribd de P2PKH, añadiendo esto a sistema de transacciones, mejoraba la seguridad y la privacidad de los usuarios al momento de enviar y recibir BTC. Somo protegidos contra ataques que utilizan tecnología cuántica para aprovecharse de los indefensos.


El proceso comienza desde la creación de la wallet a un usuario operador, en este proceso se genera una dirección de BTC la cual es llamada Clave publica que es la que se utiliza para que te envíen dinero a esa dirección y almacenarlos hasta la hora de gastarlos o mejor dicho, hasta desbloquearlos para pagar con los BTC.


Al momento de la generación de la Clave publica se genera automáticamente una Clave privada, con la que se desbloquean los fondos almacenados en la billetera correspondiente.


El usuario genera una transacción de enviar dinero hacia un receptor, el cual debe proporcionar su Clave publica para que le llegue la cantidad correspondiente, el usuario realiza la transacción con el formato de Scribd P2PKH. Se generá un hash de la Clave publica correspondiente al usuario destinatario. Esta transacción tiene una condición, que solo se puede usar por la persona que tenga el hash correspondiente a la Clave publica, y para verificar que realmente sea la persona, debe verificarse mediante la Clave privada que va a desbloquear dichas monedas en esa transacción.


Pay to ScriptHash (P2SH)


Ahora, continuaremos con el siguiente formato scribd, que es Pay-to-ScriptHash. Deciamos que podemos crear transacciones con ciertas ''condiciones'', la cosa se pone buena cuando hablamos de P2PH, ya en este formato se necesitara la condición de ciertas firmas, que son las que verifican que realmente sean tus BTC al momento de realizar la transacción.



image.png
Fuente


Igual al P2PKH, las monedas de la transacción son bloqueadas temporalmente pero son llevadas a un hash de script para luego desbloquearlas al momento de que se complementen las firmas correspondientes, dándole al usuario receptor el script completo de la transacción.


Es decir, las monedas no son enviadas a la Clave pública o mejor dicho ''direccion'' del usuario receptor, son protegidas dentro de un hash scribd del cual podrán gastar las monedas cuando estas se desbloqueen. Este formato scribd es lo que llamamos ''multi-firma'', donde se requieren firmas para darle utilidad a las monedas retenidas. La dirección proporcionada en la transacción se refiere a la dirección scribd en deducción hash, por lo que vemos una ligera diferencia de 1 a 3 en adelante al comienzo de las direcciones.


¿Como funciona Pay to ScriptHash?


Comenzamos como anteriormente, un usuario que quiera realizar una transacción, para realizar en formado scribd P2PSH va a requerir que scriptPubKey proporcione un hash dentro del scriptSig P2PSH que pueda desbloquearse con ciertas condiciones.


/ ~ / ~ / 2 / k1 / k2 / k3 / 3 / OP_CHECKMULTISIG /


El anterior en un comando dado por scriptPubKey donde el simbolo / ~ / son las firmas. Los simbolos / 2 / 3 / son las personas que requieren firmar, en este caso 2 de 3 personas. / k1 / k2 / k3 / son las claves autorizadas para firmas el comando scribd y por ultimo OP_CHECKMULTISIG(OP_CODEs ) se encarga de verificar que el comando y las firmas esten de forma correcta.


Luego de confirmada la transacción, el scriptPubKey proporciona otro comando que verifica la transacción desbloqueada. Este comando de script son llamados OP_CODEs y se usan para verificar que realmente somos dueños del anterior verificación. Aqui tenemos un ejemplo:


/ OP_HASH160 / 7ABC79025723SJF4W5JS42SS54D2D7POA / OP_EQUAL /

El / OP_HASH160 / se refiere al OP_CODE que realizará hashes SHA-256 y RIPEMD-160. El / 7ABC79025723SJF4W5JS42SS54D2D7POA / son las condiciones del P2PSH en formato hash. Y por ultimo el / OP_EQUAL / se encarga de encontrar concordancias entre el hash de condiciones suministrado para realizar el desbloqueo, con las verdadera condiciones del comando anterior ( el comando scriptSig), si estas resultan se 100% iguales, se realizará el desbloqueo de los fondos suministrados en el script.


Diferencias entre el P2SH y el P2PKH


P2PSHP2PKH
Su nombre indica la condición de ciertas firmas suministradas en el comando de scripbSu nombre indica que los fondos serán desbloqueados solo por la persona que tenga el hash de la clave publica
Los fondos no son almacenados en una clave publica, son alacenados en un hash de scripb para luego ser desbloqueados y utilizadosLos fondos son almacenados en la clave publica del destinatario y este solo podrá utilizarlos para pagar cuando confirme con su clave privada que es el propietario legitimo.
No es un formato de comandos al que estemos acostumbrados.Una persona que posea BTC y esté activo en el ambiente criptografico, estará familiarizado con este formado scribd
Las direcciones comienzan con numero a partir del 3Las direcciones comienzan con el numero 1
Comisiones mas bajas gracias al sistema de hashes scribd.Comisiones un poco mas elevadas, esto es resultado de las nuevas direcciones y su compatibilidad con ellas.
Proceso mas lento, menos escalable.Son super rápidas las verificación con este formato de scribd
Mas compatibilidad, debido a la modernización de la tecnología hash scribdLa ambigüedad hace que tenga menos compatibilidad.

¿Ambas son compatibles?


Todo lo que envuelve a la tecnología de la cadena de bloques de Bitcoin es compatible. Es cierto que algunos formatos son viejos, como el P2PK o el P2PKH, y se ven muy desactualizados en comparación a los demás formados como el P2PSH, pero se hace todo lo posible para que sean compatibles, así sea un poco mas costoso su uso debido a la falta de compatibilidad, no quita que sigan siendo de utilidad actualmente.


Todo se trata de adaptarnos a las nuevas tcnologias de las cadenas de bloques que lo que buscan con estos formatos de scribd es mejorar la privacidad y la seguridad de sus usuarios operadores.


image.png


2. Se requiere transferir 10 BTC que pertenecen a un portafolio de firmas múltiples 3 de 5, a la empresa MTC, para la compra de algunos equipos.


a. Utilice ScriptSig y ScriptPubKey para explicar los pasos que se siguen.


La Relación entre ScriptSig y ScriptPubKey es sencilla, el ScriptSig proporciona una especie de llave, frente al ScriptPubKey. ScriptSig se encarga de desbloquear, quiere decir que es quien va a solicitar una clave publica y una clave privada para desbloquear, estas claves están contenidas en el script bloqueado, el scriptPubKey. Como una especie de combinación de una llave y cerradura.


Este mecanismo de Script permite que los operadores gasten BTC de direcciones no gastados anteriormente, por lo que añaden seguridad y privacidad al momento de operar transacciones en la red.


Tenemos 5 direcciones autorizadas para firmar la transacción hacia la empresa MTC y 3 direcciones que necesitamos como mínimo para confirmar la transacción. Cada usuario que pertenece a la lista, tienen las claves privadas con las cuales confirman la operación de 10 BTC. Solo 3 de estas claves privadas son requeridas para completar la transacción.


El ScriptSig requiere de solo 3 firmas para seguir con el desbloqueo de los BTC para la transacción a la empresa MTC. La transaccion es vaidad una vez el ScriptSig utilice el comando OP_CHECKMULTISIG para verificar que realmente sean las claves publicas que se requieren para completar la transacción las que estén realizando la firma.


Luego el ScriptPubKey se encarga de usar dos comandos de script hash, el primero es OP_HASH160 que se va a encargar con el resultado del comando script anterior, generar sus hashes correspondientes de SHA-256 y RIPEMD-160, esto otorgandole mayor seguridad a la verificación para realizar el desbloqueo. El ScriptPubKey verifica que el hash de las condiciones de firmas correspondientes este completamente correcto. Y el segundo comando script es OP_EQUAL, con el se hace una comparación entre el hash de las condiciones del script, y los datos suministrados en el ScriptSig para el desbloqueo. Si coinciden ambos al hacer la comparación, completaremos la operación pasándolo a la empresa exitosamente.


b. Explique ¿Qué sucede si la transacción se realiza con firmas de Schnorr?


Cuando se elige utilizar las firmas de Schnorr, no necesitaremos todas las firmas. Solo necesitaremos generar una firma única de esa dirección multi-firma. Esta firma se genera con la clave privada de los 5 usuarios a los cuales pertenece la participación en la dirección. Se va a remplezar para todas las acciones, es decir, se requería solo la firma de confirmación de la llave única para realizar la operación de 10 BTC a la empresa de MTC.



image.png
Imagen creada en Canva por @dexsyluz


El propósito de las firmas de Schnorr es aumentar el anonimato y privacidad de las firmas de los usuarios que participan en la validación de transacciones de una cuenta con firmas múltiples. De esta forma los usuarios se puede olvidar de manipular siempre sus claves privadas y estar expuestos. Procediendo solo utilizando la llave única para realizar las operaciones.


image.png


3.- ¿Por qué cree usted que Taproot y las firmas Schnorr ayudarán a la privacidad de la red Bitcoin? Explique.


El desarrollador de BTC Sasoshi Nakamoto, configuró la cadena de bloques de tal manera que a cada usuario se le otorgara una dirección o clave publica y una clave privada con la cual confirmaría transacciones desde su dirección establecida. El Algoritmo capaz de realizar esta función es ECDSA, que se encargara de generar esas claves privadas y publicas.



image.png
Fuente


Pero con el paso del tiempo, se ha necesitado de mas algoritmos para hacer mas escalables las transacciones dentro de la red. Normalmente en la cadena de bloques, si observamos las transacciones dentro de los bloques de la cadena, tendremos información hacer del feed, la cantidad de dinero que se transfirió a cierta dirección, la dirección remitente y la dirección destinatario. Cuando se utilizan dirección con firmas múltiples para cada transacción, se vuelve aun mas pesada la información que entra en el bloque.


Las firmas Schnorr son diferentes a ECDSA aunque se use el mismo tipo de algoritmo para generar claves. Con Schnorr se van a recolectar las firmas de una direccion con multiples firmas, para así simplificar la cantidad de información que entra y es utilizada por los usuarios que manejan esa dirección. Es decir se van a recolectar las claves para así generar una sola que sea manejada por los propietarios de la dirección o clave publica.


Con el algoritmo de firmas de Schnorr, solo necesitaremos una única firma para validar operaciones. disminuyendo la cantidad de información dentro de los bloques de la red, ademas de aumentando la escalabilidad del procedimiento de validación, añadido a esto aumenta la privacidad de los usuarios participantes, ya que no seria expuestas sus claves privadas y su información. La seguridad aumentaría considerablemente, ya que al poseer solo una única clave privada para firmar las transacciones de las direcciones con firma múltiple, son menos vulnerables a ciber-ataques gracias al complejo algoritmo de BIP-340 que utilizan las firmas Schnorr según lo indica el siguiente articulo


Continuando con Taproot, las cualidades que añaden a BTC son muy buenas, ya que aumenta la escalabilidad de las transacciones disminuyendo un poco el peso de la información incorporando hashes, esto es gracias a la tecnología de hash scripts. Se adapto fácilmente sin bruscos cambios que podían provocar una bifurcación dura. Gracias a ella contamos con mayor privacidad, escalabilidad y seguridad de que nuestra información no esta expuesta en el bloque donde se almacene la información de las operación.


image.png


4.- Usando la Demo de Blockchain, escriba exactamente el siguiente mensaje: Schnorr Signatures, genere la firma del mensaje y verifique el mensaje. Luego borre el primer carácter de la firma del mensaje y verifique nuevamente ¿Qué sucedió? Explique. Se requiere captures de pantalla.




image.png
Screenshot de Blockchain Demo


  • Dentro de la pagina lo primero que aparece es el apartado de Sign, en la pestaña de Message colocamos el mensaje correspondiente a esta tarea: Schnorr Signatures. Generamos la firma del mensaje oprimiendo el botón de Sign


image.png
Screenshot de Blockchain Demo


  • Vemos que el resultado es el siguiente:

Mensaje:

Schnorr Signatures


Firma del mensaje:

304502202291d7fdf77d8c54da6b5034148ff38c6cd5124b517b4dc259474c81bfff183e022100a24d6cc16cd9e4f5abcd969af4b1e7eb116bc7042887da5df4eaa37d57604864


  • Si nos vamos al apartado de Verify, podemos verificar el mensaje. El resultado es que el cuadro donde estamos trabajando se pone de color verde, indicado que esta correcto.


image.png
Screenshot de Blockchain Demo


  • Luego borramos la primera letra como parte de la tarea, la ''S'', obtendremos un resultado negativo. El resultado se refleja con un color rojo en la pestaña del mensaje. Quiere decir que el mensaje ''chnorr Signatures'' no concuerda con la firma del mensaje ''Schnorr Signatures''


image.png
Screenshot de Blockchain Demo


image.png


CONCLUSIÓN


La tecnología esta en constante evolución y las tecnologías dentro de las redes descentralizadas no se deben quedar en lo anticuado, si deben tener su actualización ya que los hackers también pueden tener la capacidad de aumentar su nivel de tecnología, tanto así que podrían terminar fracturando la seguridad del ecosistema blockchain.


La buena noticia es que gracias a los algoritmos que se están implementando, tenemos mayor seguridad y garantía estar seguros dentro de un ecosistema descentralizado, seguro y escalable, sin tener que recurrir al pasado donde se utilizaban solo los sistemas centralizados fiduciarios, donde teníamos un espejismo de ''seguridad'' que nos hacía crear que eramos los que controlábamos nuestro dinero. Muchas gracias por la clase profesor @pelon53, espero tenga una feliz navidad y un prospero año nuevo junto a su familia.


Realice la publicación de nuevo para corregir errores ortográficos sin editar

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Realice la publicacion de la tarea y la borre porque me di cuenta que habia un error en la foto que subi de portada, la borre para evitar editarla y la volvi a subir, cuando la subi no me salia en su busqueda del #pelon53-s5week6 y la publicacion aparecia como ''editada'', decidí agregarle ''[ ]'' al titulo para evitar inconvenientes. Disculpe los inconvenientes profesor y que tenga una ¡Feliz Navidad!

Loading...

Excelente explicación amiga, totalmente que la tecnología es la nueva era. Me gustaría también, formar parte de la academia... espero lograrlo pronto!"
Saludos y Bendiciones!

Muchas gracias amiga, bendiciones y espero pronto puedas participar de los cursos