T Espe 053618
T Espe 053618
T Espe 053618
SANGOLQUÍ-ECUADOR
2017
i
CERTIFICADO
ii
AUTORÍA DE RESPONSABILIDAD
iii
AUTORIZACIÓN
iv
DEDICATORIA
Este trabajo no hubiera sido posible sin el apoyo incondicional de mis Padres, por este
motivo y al ser las personas que me han guiado desde mi nacimiento, quiero dedicarles
completamente este trabajo de investigación y todo lo que se produzca a partir de él.
v
AGRADECIMIENTO
A todos mis docentes que compartieron sus conocimientos permitiéndome aclarar mis
ideas y plasmarlas en este trabajo de investigación, para finalizar extiendo este
agradecimiento para todas las personas que directa e indirectamente, me permitieron
avanzar en este trabajo de investigación, el cual me ha dado mucha satisfacción
personal y me llena de esperanza en lo que la humanidad y su tecnología es capaz de
lograr.
vi
INDICE DE CONTENIDOS
CARÁTULA
CERTIFICADO .................................................................................... i
DEDICATORIA .................................................................................. iv
AGRADECIMIENTO .......................................................................... v
RESUMEN.......................................................................................... xii
CAPÍTULO 1........................................................................................ 1
INTRODUCCIÓN ................................................................................ 1
1.1. ANTECEDENTES ........................................................................................ 1
CAPÍTULO 2........................................................................................ 6
MARCO TEÓRICO............................................................................. 6
vii
CAPÍTULO 3...................................................................................... 31
CAPÍTULO 4...................................................................................... 39
CAPÍTULO 5...................................................................................... 43
BIBLIOGRAFÍA ................................................................................ 45
ix
INDICE DE TABLAS
INDICE DE FIGURAS
Figura 24 Escenario 1 en Slush Pool.- (a) Duración del bloque en horas; …………..
(b) Pago por bloque en Satoshis. ............................................................... 35
Figura 25 Escenario 1 en GHash.io.- (a) Duración del bloque en horas; ……………..
(b) Pago por bloque en Satoshis. ............................................................... 36
Figura 26 Rendimientos en los diferentes escenarios. ............................................... 36
Figura 27 Escenario 2(Duración del Bloque en Horas y ………………………………
Pago por Bloque en Horas y por pool) ...................................................... 37
Figura 28 Escenario 3(Horas de los Bloques minados por pool y Pago por Pool) .... 38
Figura 29 Interacción de los elementos del Pool ....................................................... 40
Figura 30 User Pass – Aplicación Pool Descentralizado ........................................... 42
xii
RESUMEN
Palabras Clave
BITCOIN
HASH
BLOQUE
POOL DE MINERÍA
SALTO DE POOLS
CONTRATO INTELIGENTE
APLICACIÓN DESCENTRALIZADA
xiii
ABSTRACT
Keywords
BITCOIN
HASH
BLOCK
POOL OF MINING
HOOP INTO POOLS
SMART CONTRACT
DESCENTRALIZED APPLICATION
1
CAPÍTULO 1
INTRODUCCIÓN
1.1. ANTECEDENTES
La red que usa la criptomoneda bitcoin es una red peer-to-peer (P2P) y permite realizar
transacciones financieras basadas bitcoins. Esta red es manejada siguiendo los
lineamientos de un protocolo que recibe el mismo nombre, Protocolo Bitcoin. El
2
La Dificultad de la Prueba de Trabajo causó que los equipos necesarios para minar ya
no sean suficientes para que esta actividad sea rentable, es cuando se diseñaron los
Pools de minería. Al usar un solo pool, la capacidad de generación de criptomonedas
se ve limitada por los mineros que conforman el pool en cuestión. Con el desarrollo
del algoritmo de salto entre pools se alcanzó hasta un 46% de rendimiento superior a
cuando se mina en un solo pool aislado.
En la etapa final del diseño se describen los elementos, que pueden hacer posibles la
implementación de un pool descentralizado, el estudio de diferentes tipos de contratos
inteligentes junto con los aspectos técnicos que lo hacen viable.
3
INVESTIGACIÓN
1.3. JUSTIFICACIÓN
Actualmente el ecosistema de las criptomonedas está definido por sus usuarios y sus
usos. Internacionalmente su uso está regulado por muchos países, esto ha permitido a
vista de los más entendidos un florecimiento de un nuevo tipo de economía.
Uno de los mayores problemas que enfrenta bitcoin son la escalabilidad y seguridad,
respecto a ataques hipotéticos. Esta investigación se centra en la minería de
criptomonedas en general y como descentralizar, optimizar y extender esta actividad.
4
1.4. ALCANCE
1.5. OBJETIVOS
CAPÍTULO 2
MARCO TEÓRICO
INTERNET
que se ofrecen en línea son diversos y las transacciones que se producen en la red son
un punto crítico de la industria.
La manera en que se implementaron las aplicaciones que funcionan sobre una red, dio
lugar a varios modelos de aplicación. Específicamente los P2P tuvieron un auge con
la transferencia y compartición de archivos.
ACTUALES
a ella. 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. Si el
remitente usa la clave pública del destinatario para cifrar el mensaje, una vez
cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya
que es el único que la conoce. Por tanto se logra la confidencialidad del envío
del mensaje e integridad.
Para esto se utiliza funciones de hash, que toman una entrada y retornan un string de
longitud fija, conocida como “message digest”. Es fácil de calcular y es imposible de
obtener el mensaje original a partir del hash. (Page, The International PGP Home,
2016) Los más utilizados actualmente son SHA-256, SHA-512.
11
Estos son llevados a cabo automáticamente por los módulos del hardware y/o software
intervinientes.
Por otra parte el receptor utiliza la clave pública del emisor para descencriptar la firma
digital, y el sistema calcula un nuevo resumen a partir del mensaje recibido y verifica
que coincida con el hash que recibió y si coincide significa que la firma es válida y el
mensaje no fue alterado.
CRIPTOMONEDAS
Transacciones.
Estampa de tiempo (Timestamp server).
Prueba de Trabajo (Proof of Work).
Cadena de Bloques (blockchain)
Funcionamiento de la red P2P.
Incentivo.
2.3.1. DIRECCIONES
El total de direcciones diferentes que pueden existir en la red bitcoin es 2160. Una de
las dudas iníciales que contemplé fue que si no hay ninguna entidad central que
controla la creación de direcciones y esto se hace de manera individual, es decir, es
posible que dos usuarios diferentes generen la misma dirección. Es improbable que se
generen 2 direcciones iguales por la cantidad que existen y por el diseño de las mismas.
15
DIGITALES (ECDSA)
ECDSA es el algoritmo criptográfico usado por Bitcoin para asegurar que solo puede
gastar los fondos el dueño legítimo de estos. En ECDSA encontramos los siguientes
conceptos clave: Clave privada: Es un número secreto, que sólo conoce la persona que
lo ha generado. Una clave privada es esencialmente un número generado
aleatoriamente o elegido por el usuario que lo genera. Es posible generar clave
privadas escribiendo un texto que podemos recordar. En bitcoin solo la persona con la
clave privada que está asociada a unos fondos podrá gastarlos. En bitcoin, una clave
privada es un entero de 256 bits (32 bytes).
Clave pública: Es un número que está asociado a una clave privada, pero que puede
ser anunciado y compartido. Una clave pública se puede calcular a partir de una clave
privada, pero no viceversa. Una clave pública se puede utilizar para determinar si una
firma es auténtica (en otras palabras si se ha generado usando la clave privada
concreta) sin requerir la clave privada para ser comprobado. En bitcoin, la clave
pública se puede representar de manera comprimida o sin comprimir. Las claves
públicas comprimidas son de 33 bytes, que consta de un prefijo o bien 0x02 o 0x03, y
un entero de 256 bits llamado x. Las claves sin comprimir son de 65 bytes, que consta
de prefijo constante (0x04), seguidas de dos números enteros de 256 bits llamados “x”
e “y” (2 * 32 bytes). El prefijo de una clave comprimido permite calcular el valor de
“y” a partir del valor “x”.
Firma: Es un número que demuestra que un mensaje ha sido creado por un usuario
concreto. Una firma es generada matemáticamente a partir de un hash de algo que debe
ser firmado y de la clave privada. La firma en si, consiste en dos números conocidos
como “r” y “s”. Usando la clave pública y un algoritmo matemático se puede verificar
que dicha firma ha sido realizada con la clave privada y con el hash de lo que se
pretendía firmar. Las firmas son de 73, 72, o 71 bytes de longitud, con probabilidades
aproximadamente el 25%, 50% y 25%, respectivamente, aunque tamaños aún más
pequeños son posibles con probabilidad decreciente exponencialmente.
16
Tabla 1
Elementos de Firma Digital en bitcoin.
Elemento Función
Clave privada Genera la clave pública Genera firmas (permite
transferir dinero) No se puede compartir Si se
pierde o destruye no se podrán recuperar los
fondos
Clave pública Identifica una clave privada Se usa para verificar
firmas
Dirección Es el identificador público del monedero
Identificar la cuenta para enviar BTC
Firma Permite verificar que un mensaje ha sido firmado
por el propietario de la clave privada sin
conocerla.
Sería posible usar solo la clave pública para transferir dinero, pero en el protocolo
bitcoin se creó las direcciones. Ello es por una razón concreta. Las direcciones bitcoin
tienen una codificación especial. Bitcoin usa la codificación de binario a texto Base58.
La respuesta de porque no se usa la base-64 la encontramos en el código fuente del
cliente de bitcoin.
17
Se eliminan los caracteres que se parecen para evitar el error humano al copiarlas.
Se parecen a números de cuenta a los que las personas están más acostumbrados al no
usar símbolos especiales y ser solo alfanumérico.
En la Figura 10 se puede observar cuales son las funciones matemáticas para obtener
la dirección de un monedero a partir de su clave pública.
2.3.5. TRANSACCIONES
Las transacciones realizadas por los usuarios de bitcoin son difundidas por los nodos
donde se generan hacia todos los demás nodos que conforman la red P2P, para que una
transacción sea dada como válida debe ser incluida en un bloque y verificada por todos
o al menos la mayoría de nodos mineros, este es el consenso al que se debe llegar
utilizando mecanismos expuestos más adelante.
Las transacciones son líneas en un libro contable de doble entrada. Es decir, cada
transacción contiene una o más entradas (inputs), que son débitos contra un monedero
bitcoin. En el otro lado de la transacción, hay una o más salidas (outputs), que son
créditos añadidos al otro monedero bitcoin. Las entradas y salidas (débitos y créditos)
no suman necesariamente la misma cantidad y su diferencia es entregada a los mineros
como una comisión de transacción implícita, esta diferencia es tomada por el minero
que incluye la transacción en la blockchain, al encontrar un bloque.
ACTUALIDAD
Aunque los nodos en la red P2P bitcoin son iguales, puede que asuman roles distintos
dependiendo de la funcionalidad que soporten. Un nodo bitcoin es una colección de
funciones: enrutamiento, la base de datos de la cadena de bloques (en inglés,
"blockchain"), minado y servicios de cartera.
Un nodo completo con todas estas funciones se detalla en Un nodo de la red bitcoin
con todas sus cuatro funciones: monedero, minero, base de datos de cadena de bloques
completa, y enrutamiento de red.
Los usuarios con más experiencia usan cualquier combinación posible de los 4 tipos
nodos mostrados en la Figura 14, estos funcionan sobre la red bitcoin que se encuentra
extendida alrededor del mundo y cuenta con alrededor de 7000 nodos funcionales.
Los nodos de Minería de color negro en la Figura 14 compiten para crear nuevos
bloques ejecutando hardware especializado para resolver el algoritmo de prueba de
trabajo. Algunos nodos de minería son también nodos completos es decir, mantienen
una copia completa del blockchain y minan independientemente, mientras que otros
son nodos ligeros que participan en un pool de minería y el pool es el que mantiene un
nodo completo.
En la minería con el desarrollo del Protocolo Stratum por parte de Slush Pool
(Palatinus, 2010) ha permitido que no sea necesario un nodo completo para minar. A
continuación se observara como se ha desarrollado la minería en sus diferentes etapas.
Además durante el último semestre de 2010 un cliente GPU de minería fue lanzado
permitiendo así el crecimiento de la capacidad de la red. El aumento de la dificultad
en 2010, fue de 10.000 veces en un solo año, esto hace que surja el primer pool de
minería (Palatinus, 2010) repartiendo así los bitcoins generados bloque entre los
participantes. El 6 de marzo de 2011 en un periodo corto de tiempo la red alcanza un
25
La dificultad de la red bitcoin se encuentra en un valor que alcanza los 350 Billones y
la minería se ha convertido en una actividad especializada con grandes centros
especializados ubicados en lugares donde la energía eléctrica es barata.
Tabla 2
Ejemplo de contrato inteligente
Tabla 3
Código en Derecho vs Código en Informática
Código en Derecho Código en informática
Lógica basada en
Mentes subjetivas, analogías Lógica booleana, bits
Seguridad Desacato / Prisión Replicación + Criptografía
Predictibilidad
Flexible Rígido
Madurez Primeras implementaciones /
Alta evolución / muchos casos
pocas experiencias
Independencia de instituciones
políticas
Área Silos jurisdiccionales
y financieras,
sin fronteras
Costos Demandas: alto Muy bajo
Fuente: (Nick Szabo, Devcon 1, Londres, Noviembre 2015)
29
P2POOL )
Si el servidor del pool cae o se ralentiza por un ataque de denegación de servicio, los
mineros del pool no pueden minar perdiendo así el trabajo realizado y por realizar. En
2011, para resolver estos problemas de la centralización, se propone y se implementa
un nuevo método de minería de pool: P2Pool es un pool de minería de par a par, sin
operador central.
30
La cadena de cuotas permite que los mineros del pool puedan colaborar en un pool
descentralizado, minando cuotas en la cadena de cuotas a una velocidad de un bloque
de cuota cada 30 segundos. Cada uno de los bloques en la cadena de cuotas registra
una participación proporcional en la recompensa para los mineros del pool que
contribuyen con trabajo, arrastrando las cuotas hacia adelante desde el bloque de cuota
anterior. Cuando uno de los bloques de cuota alcanza también el objetivo de dificultad
de la red bitcoin, se propaga y se incluye en la cadena de bloques de bitcoin, premiando
a todos los mineros del pool que contribuyeron con todas las cuotas que precedieron
al bloque de cuota ganador.
CAPÍTULO 3
MINERIA DE BITCOIN
Este Algoritmo que será descrito a continuación puede ser implementado en un ring
de equipos de minería específicos para bitcoin, sin embargo podría ser usado para todo
el ecosistema de criptomonedas existente en la actualidad. En el último capítulo de
este trabajo de investigación se integra este algoritmo a una aplicación descentralizada.
Tabla 4
Algoritmo de Salto automático de pools
Inicio
Paso 1: Capturar el tiempo que tardaron en generar los últimos bloques encontrados
por los pools que van a ser considerados.
Paso 3: El pool cuyo tiempo de actual se acerque más al promedio y además tenga la
desviación estándar más pequeña respecto a su promedio será el elegido para minar,
en primera instancia.
32
Paso 4: Monitorear todos los pools con los que se está trabajando.
Paso 6: El pool cuyo tiempo de actual se acerque más al promedio y además tenga la
desviación estándar más pequeña respecto a su promedio será el elegido para realizar
el salto.
La Figura 20Figura 21 presenta el Escenario 1, el cual está constituido por dos pools.
El usuario inicialmente accede al pool 1, y luego después de un tiempo determinado
accede al pool 2. Ese tiempo determinado es establecido como un día, que es un tiempo
suficiente para obtener resultados confiables. Se aclara que el pool 1 se refiere al Slush
Pool, y el pool 2 se refiere al GHASH.IO pool. Se aclara que el Slush Pool es el pool
con mayor trayectoria éntrelos pools existentes por ser el primero en operar, y que el
GHASH.IO que al momento de realizar el experimento era el pool con mayor
capacidad en la red Bitcoin. En este escenario no existe ninguna implementación
nueva, simplemente se van a recolectar los datos de operación de dos pools diferentes.
La Figura 22 presenta el segundo escenario, el cual es constituido por los dos pools
anteriormente utilizados. La diferencia es que ahora existe ya la implantación del salto
automático de minería. Se van a recolectar los datos de operación en dos pools
diferentes.
34
Figura 22 Escenario 2(Implementación del algoritmo de cambio de pool para dos pools).
Las métricas utilizadas para analizar el algoritmo son tres: la cantidad de bitcoins
generados sobre el tiempo de generación de esta cantidad en horas (rendimiento), el
pago por bloque en Satoshis, y la duración del bloque. Estas tres métricas están
detalladas en la Tabla 5.
35
Tabla 5
Métricas del algoritmo
Métrica Definición
Duración del bloque Es el tiempo que tardo el Pool para
encontrar un bloque.
Pago por bloque en Satoshis Es el pago que dio el Pool al encontrar
un bloque, Satoshis es la unidad mínima
del Bitcoin, 1 Satoshi = 0.00000001
Rendimiento Es la cantidad en Satoshis por hora
producida en los mineros en los
diferentes escenarios.
3.3. RESULTADOS
12 100000
98000
Horas por bloque
10 96000
8 94000
92000
6 90000
4 88000
86000
2 84000
0 1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12
Numero de bloque Numero de bloque
(a) (b)
Figura 24 Escenario 1 en Slush Pool.- (a) Duración del bloque en horas; (b)
Pago por bloque en Satoshis.
36
18500
3 18000
2 17500
17000
1
16500
0 16000
1 5 9 13 17 21 25 29 33 37 41 45 49 1 5 9 13 17 21 25 29 33 37 41 45 49
Numero de bloque Numero de bloque
(a) (b)
Figura 25 Escenario 1 en GHash.io.- (a) Duración del bloque en horas; (b) Pago
por bloque en Satoshis.
Los Rendimientos entre Pools no distan los unos de los otros esto se muestra en la
Figura 26, preliminarmente se muestran los resultados de los Escenarios 2 y 3 para
poder observar la diferencia entre todos los casos experimentales.
RENDIMIENTO EN SATOSHIS
31962
28502
26769
21810
tiene un 12% respecto al escenario 2, un 19% respecto a Slush Pool y un 46% respecto
a GHASH.IO.
15 60000
10 40000
5 20000
0 0
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Slush
Slush
Slush
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Ghash
Slush
Slush
Duración Pago
En este escenario se puede separar los tiempos de generación entre los 2 Pools elegidos
los pagos dependen del Pool elegido y de la manera como paga cada Pool.
38
Escenario 3:
Figura 28 Escenario 3(Horas de los Bloques minados por pool y Pago por Pool)
Las Figura 28 presentan los resultados obtenidos para las métricas en el tercero
escenario. Por los resultados, se puede concluir que existe cierta preferencia a los pools
que tienen mayor velocidad excluyendo a los de menor que pueden brindar un mejor
rendimiento como se observa en el escenario 1. Eso puede ser un motivo de análisis
para posteriores trabajos.
Por fin, observando exclusivamente la Figura 26, se puede concluir que desde el uso
de 2 pools se tiene ventaja al aplicar el algoritmo de salto de pool al incrementar el
número de pools con los que se trabaja se aumenta también el rendimiento sin embargo
se nota claramente que se producen saltos entre los pools con mayor capacidad
excluyendo a los pools de menor capacidad específicamente en el Escenario 3 se
trabajó con seis pools pero solo se produjo el salto entre cuatro.
39
CAPÍTULO 4
Red P2P
Blockchain del Pool descentralizado
Contratos Inteligentes
Criptoacciones y/o Tokens
La red P2P y la Blockchain del pool son similares a la de una criptomoneda sin
embargo se usa la estructura de P2Pool.
40
Uno de los contratos necesarios es el que permita el acceso a los pools externos, su
importancia radica en la dirección de la capacidad del pool, por este motivo es delicado
su uso y función.
El dueño del contrato de acceso a los pools externos, debe entregar una garantía por el
trabajo que va a recibir del pool en su cuenta.
La red P2P se forma con los nodos que forman los usuarios, la aplicación también
manejara los contratos inteligentes que serán los encargados de manejar los incentivos.
41
Para gestionar de manera dinámica la capacidad que es entregada al pool los mineros
pueden crear un contrato fijo o dinámico, esto permite dinamizar la capacidad
entregada a pool, además de existir la capacidad de vender GHs en la plataforma a
través de los contratos inteligentes.
La elección del pool externo para minar se la realiza a través del algoritmo de salto, es
importante mencionar que el acceso a los pools externos se los realiza a través de
usuarios que firman un contrato inteligente garantizando la entrega de fondos al pool
descentralizado.
El funcionamiento del Pool requiere de una aplicación que va a formar un nodo similar
a los nodos de la red bitcoin para acceder al pool descentralizado y para minar.
CAPÍTULO 5
CONCLUSIONES Y RECOMENDACIONES
5.1. CONCLUSIONES
5.2. RECOMENDACIONES
BIBLIOGRAFÍA
García Chávez, J. J., & Da Silva Rodrigues, C. K. (2015). A simple algorithm for automatic
hopping among pools in Bitcoin mining network. The SIJ Transactions on Computer
Networks & Communication Engineering, v. 3, 22-27.
García Chávez, J. J., & Da Silva Rodrigues, C. K. (2016). Automatic Hopping among Pools and
Distributed Applications in the Bitcoin Network. IEEE Xplore.
Herrera-Joancomart, J. A.-S. (2014). The Bitcoin P2P Network. Financial Cryptography and
Data Security, Vol. 8437, 87-102.
Lerner, S. D. (2015, Nov 19). (R. B. Contracts, Ed.) Retrieved from http://www.rsk.co/
Nakamoto, S. (2008). Bitcoin: A peer – to – peer electronic cash system. Recuperado el 2016,
de http://www.bitcoin.org/bitcoin.pdf.
Page, The International PGP Home. (16 de 12 de 2016). How PGP works - The Basics of
Cryptography. Obtenido de http://www.pgpi.org/doc/pgpintro/
Rubin, I. M. (2013). Zerocoin: Anonymous Distributed E-Cash from Bitcoin. Security and
Privacy (SP) 2013 IEEE Symposium on, 397–411.
Stevens, R. (2012). TCP/IP Ilustrated. Upper Saddle River, NJ: Pearson Education, Inc.
Uzun, S. B. (2012). Bitter to Better - How to Make Bitcoin a Better Currency. Financial
Cryptography and Data Security - 16th International Conference, 397-414.
Welten, T. B. (2013). Have a snack, pay with Bitcoins. Peer-to-Peer Computing (P2P) IEEE
Thirteenth International Conference on.