Subido por Antonio Guerrero García

La concurrencia de BlockChain

Anuncio
Facultad de Estudios Superiores Acatlán
Matemáticas Aplicadas y Computación
BLOCKCHAIN CRIPTOMONEDAS
Alumno:
Guerrero García Said Antonio
Profesor:
Santillán Vasconcelos Jorge
1. Marco Teórico
1.1 ¿Que es Bitcoin?
1.2 ¿Qué es la programación concurrente?
1.3 Blockchain
1.4 Bloques
1.5 Minería
1.6 Nodos
1.7 Criptografía Simétrica
1.8 Criptografía Asimétrica
1.9 PoW (Proof of Work)
1.10 Función Hash SHA256
1.11 Token
1.12 Pool de Minería
2. Programación Concurrente
2.1 ¿Cómo se realiza una transacción en Bitcoin?
2.1 ¿Cómo se implementa el algoritmo de BlockChain?
2.2 Operaciones necesarias para descifrar el Hash
3. Bibliografía
BLOCKCHAIN
CONCURRENTE
CRIPTOMONEDAS
PROGRAMACIÓN
1. Marco Teórico
1.1 ¿Qué es Bitcoin?
“Bitcoin es una moneda, como el euro o el dólar estadounidense, que sirve para
intercambiar bienes y servicios. Sin embargo, a diferencia de otras monedas, Bitcoin es una
divisa electrónica que presenta novedosas características y destaca por su eficiencia,
seguridad y facilidad de intercambio.
Su mayor diferencia frente al resto de monedas, se trata de una moneda descentralizada,
por lo que nadie la controla. Bitcoin no tiene un emisor central como los dólares o los euros,
la criptomoneda es producida por las personas y empresas de alrededor del mundo
dedicando gran cantidad de recursos a la minería.” [1]
Bitcoin llegó para convertirse en el dólar descentralizado, existen inversionistas como
Salomundo que venden su Lamborghini Aventador a cambio de Bitcoins, ya que no se
puede comprar una suma grande directamente. También existen otros derivados de
Bitcoin como lo son Etherum, pero su giro no es precisamente la monetización, más bien
es un sistema de contratos inteligentes en el que ambas partes exponen sus requisitos
para llevarlo a cabo, en cuanto ambas partes cumplen, se liberan las “recompensas” y
automáticamente se registra una nueva cadena en el Blockchain, el cual es la base de
ambas criptodivisas.
1.2 ¿Qué es la programación concurrente?
“Se conoce por programación concurrente a la rama de la informática que trata de las
técnicas de programación que se usan para expresar el paralelismo entre tareas y para
resolver los problemas de comunicación y sincronización entre procesos. El principal
problema de la programación concurrente corresponde a no saber en qué orden se ejecutan
los programas (en especial los programas que se comunican). Se debe tener especial cuidado
en que este orden no afecte el resultado de los programas.” [2]
La programación concurrente le ayuda a Bitcoin y todas las derivadas criptodivisas para
la seguridad del sistema, ya que se realizan varias tareas simultáneamente, o bien una
tarea específica en diferentes ordenadores (nodos), la cual es verificar la autenticidad de
la transacción, ya sea en la compra y venta de Bitcoins o en el término de un Smart
Contract en Etherum.
1.3 Blockchain
“Una cadena de bloques es esencialmente solo un registro, un libro mayor de
acontecimientos digitales que está “distribuido” o es compartido entre muchas partes
diferentes. Solo puede ser actualizado a partir del consenso de la mayoría de participantes
del sistema y, una vez introducida, la información nunca puede ser borrada.
La cadena de bloques de Bitcoin contiene un registro certero y verificable de todas las
transacciones que se han hecho en su historia.
La cadena de bloques es un registro de todas las transacciones que tienen lugar
“empaquetadas” en bloques que los mineros se encargan de verificar.
Posteriormente serán incluidas en la cadena una vez validadas y distribuidas a todos los
nodos que forman la red (actualmente, la cadena de bloques ocupa unos 40 gigas).” [3]
La cadena de bloques Blockchain, es un libro contable enorme electrónico en el cual se
lleva un registro de cada transacción a lo largo del tiempo, convirtiendo una transacción
o un Smart contract en una cadena cifrada con HASH SHA 256.
Blockchain no solo tiene aplicación en Bitcoin, y Etherum, también funciona en la
administración pública o en el IoT, un ejemplo de la administración pública sería que
mediante un sistema elaborado con base en Blockchain podrían llevarse a cabo las
elecciones presidenciales, sin duda alguna de que existen n números de votos para el
candidato a, m votos para el candidato b y podríamos decir que existe una “verdadera”
democracia en nuestro país, pero México no está listo para este tipo de tecnología, hay
muchas personas que no saben manejar una computadora, y siempre con el factor
humano podría prestarse a engaños para las personas que desconocen de los sistemas
informáticos.
1.4 Bloques
“Un bloque es un conjunto de transacciones confirmadas e información adicional que se ha
incluido en la cadena de bloques.
Cada bloque que forma parte de la cadena (excepto el bloque generatriz, que inicia la
cadena) está formado por:
1.4.1
1.4.2
1.4.3
Un código alfanumérico que enlaza con el bloque anterior
El “paquete” de transacciones que incluye (cuyo número viene
determinado por diferentes factores)
Otro código alfanumérico que enlazará con el siguiente bloque.
El bloque en progreso lo que intenta es averiguar con cálculos el tercer punto anteriormente
indicado. Un código que sigue unas determinadas reglas para ser válido y sólo puede sacarse
probando sin parar.” [3]
Las transacciones de las cuales se habla aquí pueden ser transacciones financieras
(Bitcoin), el cumplimiento de un SmartContract, o siguiendo el ejemplo anterior un voto
por el presidente de México, se genera un nuevo bloque en progreso después de haber
agregado uno al Blockchain. Para agregar un nuevo bloque se necesitan cierto número de
transacciones exitosas encriptadas con el cifrado Hash, ya que son confirmados, n
cantidad de hashes dependiendo de la criptodivisa, o sistema que esté trabajando con
blockchain, después este bloque necesita ser revisado y autorizado por los nodos, si más
del 50% de los nodos coincide con que es válido, en ese momento se agrega eternamente
al gigantesco libro contable electrónico, el cual es casi invulnerable.
1.5 Minería
“Los mineros son ordenadores/chips dedicados que aportan poder computacional a la red
de bitcoin para verificar las transacciones que se llevan a cabo.
Cada vez que alguien completa un bloque recibe una recompensa en forma de bitcoins
(actualmente 12.5 BTC) y/o por cada transacción que se realiza.”[4]
Se le denomina mineros, a las personas entusiastas que dedican su computadora, su
memoria RAM, su tarjeta de video, como pequeños partícipes dentro de este inmenso
sistema a nivel mundial; nos enfocaremos en Bitcoin. Antes como nodo podías llegar a
conseguir 25 BTC por descifrar las operaciones matemáticas con punto flotante que
lanzan para la verificación del bloque que se añadirá a la nueva cadena, pero ahora se
redujo a 12.5 BTC, ya que con el tiempo va decreciendo, empezó ofreciendo 50, como
tienen una cantidad finita de BTC que se producirán, a manera de que se mina más
Bitcoin, ofrecen menos recompensas.
1.6 Nodos
“Un nodo es un ordenador/chip conectado a la red bitcoin utilizando un software que
almacena y distribuye una copia actualizada en tiempo real de la cadena de bloques.
Cada vez que un bloque se confirma y se añade a la cadena se comunica a todos los nodos y
este se añade a la copia que cada uno almacena.” [4]
“Una de las mayores curiosidades que tiene el protocolo bitcoin es que cada unidad no es un
archivo como tal que se envía como si fuese una película o canción, al estilo de un protocolo
P2P como puede ser BitTorrent.
En realidad, lo que se produce es un registro del cambio de propiedad de una cantidad
determinada de bitcoins en la cadena de bloques.
” [3]
Estas fuentes nos explican la función de los nodos en BlockChain, al hablar de que se
confirma un bloque, está refiriéndose a que alguna pool de minería resolvió en problema
computacional, el cual siempre se resuelve por búsqueda extensiva, y los nodos
actualmente, es casi imposible que logren descifrarlo antes que estas granjas de bitcoin,
alojadas en su mayor parte en China.
Además de intentar minar Bitcoins, todos y cada uno de los Nodos almacena toda la
cadena de bloques, para darle certeza al sistema de que es correcta la transacción que se
pretende realizar, lo hace comparando el cifrado HASH SHA 256 que se genera de cada
transacción, si cada una de ellas coincide con el bloque que se agregará, entonces el nodo
lo aprueba, pero no se detiene ahí, hasta que más del 50% de los nodos lo confirme, el
bloque será agregado a la BlockChain.
1.7 Criptografía Simétrica
“Criptografía simétrica. Conjunto de métodos que permiten tener comunicación segura
entre las partes, siempre y cuando anteriormente se hayan intercambiado la clave
correspondiente que llamaremos clave simétrica. La simetría se refiere a que las partes
tienen la misma llave tanto para cifrar como para descifrar. Este tipo de criptografía se
conoce también como criptografía de clave privada o criptografía de llave privada.
Existe una clasificación de este tipo de criptografía en tres familias:



Criptografía simétrica de bloques (block cipher).
Criptografía simétrica de lluvia (stream cipher).
Criptografia simétrica de resumen (hash functions).
Aunque con ligeras modificaciones un sistema de criptografía simétrica de bloques puede
modificarse para convertirse en alguna de las otras dos formas, sin embargo es importante
verlas por separado dado que se usan en diferentes aplicaciones. La criptografía simétrica
ha sido la más usada en toda la historia, ésta a podido ser implementada en diferente
dispositivos, manuales, mecánicos, eléctricos, hasta los algoritmos actuales que son
programables en cualquier computadora.
La idea general es aplicar diferentes funciones al mensaje que se quiere cifrar de tal modo
que solo conociendo una clave pueda aplicarse de forma inversa para poder así descifrar.
Aunque no existe un tipo de diseño estándar, quizá el más popular es el de Fiestel, que
consiste esencialmente en aplicar un número finito de interacciones de cierta forma, que
finalmente da como resultado el mensaje cifrado. Este es el caso del sistema criptográfico
simétrico más conocido, DES.”[5]
1.8 Criptografía Asimétrica
“Criptografía asimétrica. La criptografía de clave asimétrica o pública fue inventada en
1976 por los matemáticos Whit Diffie y Martin Hellman y es la base de la moderna
criptografía.
La criptografía asimétrica es el método criptográfico que usa un par de claves para el envío
de mensajes. Las dos claves pertenecen a la misma persona que ha enviado el mensaje. Una
clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el
propietario debe guardarla de modo que nadie tenga acceso a ella. Además, los métodos
criptográficos garantizan que esa pareja de claves sólo se puede generar una vez, de modo
que se puede asumir que no es posible que dos personas hayan obtenido casualmente la
misma pareja de claves.
La criptografía asimétrica utiliza dos claves complementarias llamadas clave privada y
clave pública. Lo que está codificado con una clave privada necesita su correspondiente
clave pública para ser descodificado. Y viceversa, lo codificado con una clave pública sólo
puede ser descodificado con su clave privada. La criptografía asimétrica está basada en la
utilización de números primos muy grandes. Si multiplicamos entre sí dos números primos
muy grandes, el resultado obtenido no puede descomponerse eficazmente, es decir,
utilizando los métodos aritméticos más avanzados en los ordenadores más avanzados sería
necesario utilizar durante miles de millones de años tantos ordenadores como átomos
existen en el universo. El proceso será más seguro cuanto mayor sea el tamaño de los
números primos utilizados. Los protocolos modernos de encriptación tales como SET y PGP
utilizan claves generadas con números primos de un tamaño tal que los hace
completamente inexpugnables.
Existen dos tipos de llave, Pública y Privada.
Propiedad de las llaves
Los pares de llaves son identificados o asociados con personas o con entidades.
La propiedad de las llaves públicas, es publicada y conocida por todos aquellos que les
incumbe el mensaje.
La llave privada es "secreta" y debe quedar bajo la responsabilidad del dueño o responsable
del mensaje.”[6]
1.9 PoW Proof of Work
“Prueba de Trabajo, o PoW (por sus siglas en inglés), es el algoritmo de consenso original
en una red de Blockchain.
En la Blockchain, este algoritmo se usa para confirmar transacciones y producir nuevos
bloques en la cadena. Con PoW, los mineros compiten entre ellos para completar
transacciones en la red y obtener recompensas.
En una red, los usuarios se envían unos a otros tokens digitales. Una base de datos
descentralizada reúne todas las transacciones en bloques. Sin embargo, se debe tener
cuidado para confirmar las transacciones y organizar los bloques.
Esta responsabilidad se basa en nodos especiales llamados mineros, y un proceso se llama
minería.
Los principios de trabajo fundamentales son un complicado acertijo matemático y la
posibilidad de probar fácilmente la solución.
”[7]
1.10 HASH SHA256
Una función de hash es simplemente una función que toma el valor de entrada, y desde esa
entrada crea un valor de salida determinista del valor de entrada. Para cualquier valor de
entrada x, siempre recibirá el mismo valor de salida y cuando se ejecute la función hash. De
esta manera, cada entrada tiene una salida determinada.
Una función es básicamente algo que toma una entrada y de esa entrada deriva una salida.
Una función hash es, por lo tanto, algo que toma una entrada (que puede ser cualquier dato,
números, archivos, etc.) y genera un hash. Un hash generalmente se muestra como un
número hexadecimal.
Esta es la función hash md5, que a partir de los datos de entrada crea una salida
hexadecimal de 32 caracteres. Las funciones de hash son generalmente irreversibles
(unidireccionales), lo que significa que no puede descubrir la entrada si solo conoce la
salida, a menos que pruebe todas las entradas posibles (lo que se denomina un ataque de
fuerza bruta).
Las funciones de hash se usan a menudo para probar que algo es lo mismo que otra cosa,
sin revelar la información de antemano. Aquí hay un ejemplo.
Digamos que Alice le presume a Bob que sabe la respuesta a la pregunta del desafío en su
clase de matemáticas. Bob quiere que ella demuestre que sabe la respuesta, sin que ella le
diga qué es. Entonces, Alice responde a su respuesta (digamos que la respuesta fue 42) para
producir este hash:
Alice le da este hash a Bob. Bob no puede descubrir cuál es la respuesta de este hash, pero
cuando él mismo encuentra la respuesta, puede hacerlo y si obtiene el mismo resultado,
entonces sabe que Alice sí tuvo la respuesta. Los hash a menudo se utilizan en este contexto
de verificación de información sin revelarla a la parte que realiza la verificación.
Aplicaciones de SHA-256
SHA-2 se utiliza en un gran número de herramientas de seguridad y protocolos. Algunos de
ellos son TLS, SSL, PGP, SSH, S/MIME, IPsec y Bitcoin.
En el protocolo Bitcoin, SHA-256 se utiliza en la creación de claves o direcciones públicas y
en la minería de Bitcoin.
Creación de direcciones o claves públicas en el protocolo Bitcoin con SHA-256
El proceso de creación de una dirección pública de Bitcoin se inicia con un par de claves
privada y pública de una curva elíptica ECDSA. Las direcciones públicas (por ejemplo,
31uEbMgunupShBVTewXjtqbBv5MndwfXhb) que vemos cuando utilizamos un cliente
monedero/wallet Bitcoin han pasado un proceso de creación de clave pública y hashing en
el que se utilizan las funciones hash SHA-256 y RIPEMD-160 para maximizar su seguridad.
Por ejemplo utilizando la herramienta online Xorbin para crear un hash con SHA-256 con
la palabra “OroyFinanzas.com” (sin paréntesis) obtenemos este hash de 64 dígitos:
bd4526534df7b33772c2f1ee26d97c39ff11379c8848e4e19d74ad849ef66423.
Minería de Bitcoin con SHA-256
Bitcoin fue la primera criptomoneda que utilizó SHA-2 como parte de su esquema de prueba
de trabajo (proof-of-work en inglés). El auge de la minería ASIC en Bitcoin ha llevado a la
creación de otras criptomonedas como Litecoin, la cual utiliza Scrypt (otro algoritmo
criptográfico) para la prueba de trabajo. Bitcoin utiliza el algoritmo SHA-256 para generar
de manera verificable “al azar” los números de manera que requieran una cantidad
previsible de esfuerzo CPU. Generando un hash SHA-256 con un valor menor que el actual
target resuelve un bloque y da una recompensa llamada coinbase (no debe confundirse con
la empresa Coinbase.com que ha adoptado ese nombre como marca). Actualmente la
recompensa es de 12.5 bitcoins.
1.11 Token
“Un Token en el contexto Bitcoin y las criptomonedas
Todas las criptomonedas sean Bitcoin u otra unidad, independientemente de sus
características técnicas, son Token. Un Token en el contexto de Bitcoin representa una
cadena alfanumérica que puede ser una clave pública o una clave privada. Por ejemplo esta
clave publica 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy (multifirma porque empieza por
un 3) es un Token. Un Token en el protocolo Bitcoin puede ser cualquier cadena
alfanumérica que represente un registro en la base de datos descentralizada de consenso de
Bitcoin.”[9]
En otras palabras, se le denominan Token al cifrado HASH SHA 256 resultante de la
transacción, el cual es un eslabón para formar un bloque.
1.12 Pool de Minería
“Los pools de minería son grupos de mineros cooperadores que acuerdan compartir
ganancias de bloques en proporción al poder de hash de minería contribuido.
Mientras que los pools de minería son convenientes para el minero promedio ya que liman
las diferencias de las ganancias y las hacen más predecibles, desafortunadamente
concentran poder en el propietario del pool de minería.
Los mineros, sin embargo, pueden elegir redirigir su poder de hash a un pool de minería
diferente en cualquier momento.”[10]
El poder de hash, se refiere a la capacidad de cómputo de tu ordenador, cuantos hash
puede probar por segundo, un pool de minería se encarga de jutar/conectar todo el poder
de computo de varios nodos, para lograr ganar los 12.5 Bitcoin que se ofrecen de
recompensa por descifrar los algoritmos. Estos pools de minería se concentran en China,
siendo Ant pool el mayor oponente con 25.2 % de la capacidad total con la cual trabaja
BlockChain.
2. ¿Como se realiza una transación en Bitcoin?
Con todo el marco teórico que ya leímos es posible entender la siguiente imagen, pero
que tanto conocemos del proceso, y porque lo podemos denominar como proceso
concurrente.
[11]
2.1
¿Porque Blockchain en Bitcoin es Concurrente?
“Los mineros resuelven el rompecabezas, forman el nuevo bloque y confirman las
transacciones.
La complejidad del rompecabezas depende de la cantidad de usuarios, la potencia actual y
la carga de la red. El hash de cada bloque contiene el hash del bloque anterior, lo que
aumenta la seguridad y evita cualquier violación de bloque.
Si un minero logra resolver el rompecabezas, se forma el nuevo bloque. Las transacciones se
colocan en este bloque y se consideran confirmadas.
”[7]
Conclusiones:
A grandes rasgos BlockChain trabaja de esta manera:
1.- Alguien solicita una transacción
2.- Dicha transacción se emite a una red p2p que consta de computadoras.
3.- La red de nodos valida la transacción y el estado de los usuarios que usan nuevos
algoritmos.
4. Una transacción verificada puede involucrar criptodivisas, contratos, archivos, u otra
información.
5.- Una vez verificada, la transacción es combinada con otras transacciones para crear un
nuevo bloque de datos para el libro mayo contable.
6.- El nuevo bloque es luego agregado a la cadena de bloques existente conocida como
Blockchain, de manera permanente e inalterable.
7.- Transacción completada
Blockchain es un sistema concurrente, todas las operaciones que se realizan en la red se
van agrupando en bloques , y para validarlas los mineros deben encontrar una especie de
clave informática llamada hash. Se trata de fórmulas matemáticas que sintetizan en muy
pocos caracteres una gran cantidad de información. No hay dos hash iguales, y no se
pueden modificar. Cada bloque cuenta con un hash nuevo y con el hash del bloque
inmediatamente anterior, como una especie de sello de lacre. Todo va enlazado, de ahí la
partícula chain. Toda esta búsqueda extensiva se da en TeraHashes por segundo, se lanza
el problema matemático simultáneamente a millones de ordenadores, pools y granjas de
minado y el primer ordenador en descifrarlo se lleva el premio. Por todo este
procesamiento simultaneo se dice que es concurrente.
Su desventaja es que en donde sea que vayas a ayudar a Blockchain, ya sea haciendo
minería, uniéndote a una pool de ordenadores para dedicar tu computadora aportando
RAM y tu GPU, o simplemente siento un pequeño nodo, tienes que almacenar todo el
Bloque de datos que se ha generado con el tiempo, para que puedas validar, y reconocer
cualquier alteración a los hashes del sistema.
3. Bibliografía
[1] Qué es Bitcoin. (2018). Bitcoin, la moneda que está cambiando el mundo. 18/06/2019,
de Qué es Bitcoin Sitio web: https://www.queesbitcoin.info/
[2] Facultad de Ingeniería Universidad de la República - Uruguay. (-). Programación
Concurrente. 18/06/2019, de Facultad de Ingeniería Universidad de la República Uruguay
Sitio
web:
https://www.fing.edu.uy/tecnoinf/mvd/cursos/so/material/teo/so07concurrencia.pdf
[3] Bit2Me Academy. (-). ¿Qué es la Cadena de Bloques (Blockchain)?. 18/06/2019, de
Bit2Me Academy Sitio web: https://academy.bit2me.com/que-es-cadena-de-bloquesblockchain/
[4] J.M. Lacarte. (2018). Dinero, Bitcoin, Criptomonedas y la Blockchain: ¿Qué está
sucediendo?.
18/06/2019,
de
J.M.
Lacarte
Sitio
web:
https://books.google.com.mx/books?id=r8lmDwAAQBAJ&pg=PT19&lpg=PT19&dq=Los
+mineros+son+ordenadores/chips+dedicados+que+aportan+poder+computacional+a+
la+red+de+bitcoin+para+verificar+las+transacciones+que+se+llevan+a+cabo.&source=
bl&ots=BCBEWLqJre&sig=ACfU3U25uSjVxMD8cDBCmiQFKMdPffJQg&hl=es&sa=X&ved=2ahUKEwjm26iEk_TiAhXL5p8KHbTAqwQ6AEwAXoECAkQAQ#v=onepage&q=Los%20mineros%20son%20ordenadores%2
Fchips%20dedicados%20que%20aportan%20poder%20computacional%20a%20la%2
0red%20de%20bitcoin%20para%20verificar%20las%20transacciones%20que%20se
%20llevan%20a%20cabo.&f=false
[5] ECURED. (-). Criptografía simétrica. 18/06/19, de ECURED Sitio web:
https://www.ecured.cu/Criptograf%C3%ADa_sim%C3%A9trica
[6] ECURED. (-). Criptografía asimétrica. 18/06/19, de ECURED Sitio web:
https://www.ecured.cu/Criptograf%C3%ADa_asim%C3%A9trica
[7] COINTELEGRAPH. (-). Prueba de Trabajo (PoW). 18/06/19, de COINTELEGRAPH Sitio
web: https://es.cointelegraph.com/explained/proof-of-work-explained
[8] HASH
[9] OROYFINANZAS.COM. (23 Octubre 2014). Token Bitcoin: ¿Qué es un token en Bitcoin?
– Criptomonedas. 18/06/19, de Oro y Finanzas Diario digital del dinero Sitio web:
https://www.oroyfinanzas.com/2014/10/que-token-bitcoin-criptomonedas/
[10] Jordan Tuwiner. (31 enero 2019). Pools de Minería Bitcoin. 18/06/19, de Buy
Bitcoin
World
Wide
Sitio
web:
https://www.buybitcoinworldwide.com/es/mineria/pools/
[11] Javier Becker. (26 de Julio de 2018). ¿Cómo funciona una transacción de Bitcoin?.
18/06/19, de Platzi Sitio web: https://platzi.com/clases/1317-inversioncriptomonedas/12465-como-funciona-una-transaccion-de-bitcoin1357/
Descargar