Cargando

Bitcoin: la seguridad de las cadenas de bloques de transacciones

Transcripción del video

Me gustaría describir una transacción de bitcoins ficticia e imaginaria y luego contarles cómo alguien podría intentar estafar el sistema y por qué esto es matemáticamente muy difícil de lograr pero al mismo tiempo por qué existen incentivos económicos en el sistema de bitcoins para que gente intente comportarse de manera deshonesta. Supongamos que hay una persona llamada Dan. Y Dan quiere pedir una pizza de quezo a la Pizzería de Pete. Supongamos que la Pizzería de Pete acepta bitcoins como método de pago y que cada pizza cuesta 1 BTC (bitcoin). Imagina además que Dan previamente recibió 5 BTC de su prima Carol. Por lo tanto, Carol, etiquetada como "C", le da 5 BTC a Dan ("D"), las que podemos etiquetar como "B" dentro de un círculo. Él quiere usar una de estas bitcoins para comprarle una pizza a Pete. Lo que la plataforma de bitcoins de Dan hará, es crear un registro de transacción que incluye información respecto a cómo Dan recibió estas bitcoins. Por lo tanto, en este caso contiene información de la transacción de Carol, a quien habíamos marcado con una "C", y Dan por 5 bitcoins. Luego especifica que Dan quiere darle una de estas bitcoins a Pete... Etiquetaremos a Pete con una "P". ... y también incluirá que Dan se quedará con las 4 bitcoins restantes entonces se estará dando el cambio a sí mismo. La manera en que las bitcoins funcionan es que tienes que especificar el cambio (vuelto). Todo lo que entra en el sistema de bitcoins tiene que salir del otro lado. Por lo que no puedes tener una transacción donde los números no calzan. Cualquier monto restante se considera cambio (vuelto) o parte puede ser usada como costos de transacción. En este ejemplo, para hacer las cosas simples Asumiré que no existen costos de transacción. El costo de transacción es cero. Sólo nos enfocaremos en la situación donde todo será contabilizado en la transacción. Ahora, esta transacción será notificada a todo el mundo bitcoin. En particular, Pete recibirá una copia de esta transacción. Pero además de que Pete la reciba, también lo hará el resto de la gente en el sistema bitcoin. Si recuerdan, existen nodos especiales, entidades particulares en el mundo bitcoin llamados "mineros" bitcoin. Estos "mineros" bitcoin serán los responsables de corroborar que todas las transacciones calzan desde una perspectiva global. Lo que hacen es revisar todo el registro de transacciones y este registro de transacciones es público, conocido como "cadena de bloques" (o "block chain")... Y pondré una descripción de la cadena de bloques de transacciones acá mismo... y esta cadena de bloques de transacciones contiene el historial de todas las transacciones alguna vez realizadas en el sistema de bitcoins desde el comienzo de los tiempos, el tiempo del primer bloque, también conocido como bloque génesis. Cualquier persona puede revisar los detalles de cualquier transacción si lo quisiera, porque esa información es pública. Específicamente, lo que estos mineros de bitcoins harán será mirar si efectivamente Dan recibió previamente o no 5 bitcoins de alguna otra persona,.. En este caso particular, de su prima Carol... ...si Dan intentó o no gastar estas bitcoins anteriormente, y así sucesivamente. Y estos mieneros de bitcoins están todos colectivamente tratando de tomar estas transacciones recientes que todavía no han sido registradas... que incluye no sólo las transacciones entre Dan y Pete, sino que también pueden haber otras transacciones en algún otro lugar todas ocurriendo al mismo tiempo. Los mineros de bitcoins tomarán todas estas distintas transacciones de una vez y verán la forma de armar un bloque de transacciones con todas aquellas que todavía no han sido registradas. E intentarán sumar este bloque de transacciones al final de la cadena bloques actual. Si recuerdan de los videos anteriores, para que un minero bitcoin sume un bloque a la cadena de bloques tienen que resolver antes un puzzle llamado "prueba de trabajo". El sistema de bitcoins está diseñado, o calibrado mejor dicho, para que, en promedio, un minero pueda resolver este puzzle cada 10 minutos. Vale la pena insistir en que podría tomar mucho tiempo para que una solo minero pueda resolver el puzzle de manera independiente... podría incluso tomarle uno o dos años... pero como hay tantos mineros trabajando al mismo tiempo, uno de ellos tendrá la suerte de resolver el puzzle rápidamente. Cada una de estos puzzles de prueba de trabajo que está asociado a un bloque de transacciones resulta tener un nivel de dificultad asociado. Esta dificultad básicamente representa qué tan difícil fue resolver el puzzle de la prueba de trabajo. Imagina que hay ciertos números Y llamaremos estos números "D sub N" para el nivel de dificultad más reciente. Estará "D sub N-1" Estos sólo son números que representan qué tan difícil fue resolver la prueba de trabajo. Y cuando miras toda la cadena, en lo que el sistema de bitcoins está interesado, es cuán difícil fue construir toda la cadena. Y la razón de por qué es importante que alguien entienda lo difícil que fue construir toda la cadena, es porque el nivel total de la cadena, este nivel de dificultad total de la cadena, es lo que utiliza Pete o cualquier otra persona recibiendo bitcoins para decidir si confían o no en la transacción. Entre más trabajo hay metido en toda la cadena más confiarán en esa transacción. Y la razón de esto es que la manera en que las bitcoins funcionan es que si hay más de una cadena de bloque de transacciones dando vueltas, supongamos que producto de un usuario deshonesto o estafador, o porque alguien no recibió un mensaje en particular a tiempo, o cualquiera sea la razón. Si existe más de una cadena de bloques de transacciones dando vuelta, según el protocolo de bitcoins, todos tendrán que trabajar sobre la cadena en la que se ha puesto más trabajo. Por lo tanto se rechazarán aquellas cadenas donde se ha puesto menos trabajo, y sólo se considerará aquella en la que más mineros han trabajado. En el sistema de bitcoins, esa cadena se suele llamar la cadena más larga. De hecho esta terminología es un poco confusa porque con "la más larga" no nos referimos a que esta cadena es más larga desde un punto de vista físico, sólo nos referimos a que.. Y pondré un signo de igualdad con tres líneas para decir lo que significa. Con la "más larga" nos referimos a que es la cadena sobre la que se ha trabajado más. Y la manera en que definimos "trabajo" es mirando todos los niveles de dificultad, los sumamos y eso nos entrega el nivel de dificultad total o global de la cadena. Ahora, nos interesaremos en la cadena sobre la que se ha puesto más trabajo y la llamaremos la cadena más larga. Imaginémonos que Dan es deshonesto y que luego de comerse la pizza... Supongamos que Pete está convencido que recibió la bitcoin de Dan, espera unos segundos, ve que la cadena más larga contiene la transacción, le envía la pizza a Dan. Dan se come la pizza y luego decide que no quiere pagarla, comportándose deshonestamente. El quiere hacerle trampa a Pete de alguna manera o estafar al sistema. La manera en que Dan intentará estafar el sistema es intentando crear otra transacción donde le asigna los 5 BTC (bitcoins) que recibió de Carol a otra persona. Llamemos a esta otra persona Fred. Fred podría ser el álter ego de Dan, podría ser su amigo... no importa quien es Fred porque sabemos que Fred no es el propietario correcto de esas bitcoins. Lo que Dan intentará hacer es tomar esas 5 BTC que recibió de Carol e intentará asignarle las 5 BTC a Fred. Esto es algo que debemos tratar de evitar porque quiere decir que Dan pudo gastar estos 5 BTC dos veces, logrando realizar un doble gasto de dichas bitcoins. Obviamente una de estas transacciones debiera ser considerada fraudulenta. A la otra se le debiera permitir pasar. Es importante tener en mente que si Dan intentó gastar esas bitcoins nuevamente sin intentar cubrir sus huellas o algo de esa naturaleza, todos sabrían que Dan intenta corromper el sistema porque todos pueden ver en la cadena de bloques de transacciones más larga, es decir la cadena con todos los registros históricos, pueden ver que Dan ya gastó esas bitcoins, y no debiera permitírsele gastarlas nuevamente. Lo que Dan debe hacer es crear una nueva cadena de bloques de transacciones, por su propia cuenta que sólo contenga la segunda transacción fraudulenta que es la transacción a Fred, y que borrará la transacción a Pete. Si tiene suerte todos creerán y aceptarán esta nueva cadena. Como todos en el sistema de bitcoins siguen a la cadena más larga en la que se ha puesto más trabajo, o sea, la cadena de la que hablábamos, Dan tiene una posibilidad y la esperanza de lograr salirse con las suyas. La pregunta es qué tan factible es que esto ocurra. Para que Dan pueda salirse con las suyas, tiene que comenzar con la cadena de bloques que existía previamente y tiene que tratar de sumarle una transacción diferente. Por lo tanto, en vez de tener la transacción correcta donde los bitcoins iban a Pete, él intentará crear una nueva transacción para sumarla a la cadena de bloques que contiene la transacción fraudulenta entre Dan y su amigo Fred. Esta será la transacción fraudulenta entre Dan y Fred que estará en el nuevo bloque. En jerga de bitcoins, esto es conocido como una "bifurcación" en la cadena. Y con bifurcación nos referimos a que de alguna forma se logró que haya más de una versión de la historia. Alguien intentó reescribir sus transacciones y así modificar la historia de como la conocíamos. Esto quiere decir que de alguna manera se logró que haya más de una versión de la historia. En este ejemplo una versión de la bifurcación es legítima y la otra es fraudulenta. La versión correcta es donde Dan le pagó la pizza a Pete y la fraudulenta es la transacción donde Dan intenta pagarle a su amigo Fred con las mismas bitcoins. Recuerda que cualquier bloque sumado a la cadena de bloques de transacciones tiene que contener un puzzle de prueba de trabajo o mejor dicho, una solución a dicho puzzle de prueba de trabajo. Porque de otro modo nadie aceptará la cadena. Por lo tanto, si Dan quiera engañar al sistema, debe resolver el puzzle de la prueba de trabajo secretamente y de manera independiente. Pero el reto para Dan es que está partiendo con desventaja porque ya existe una cadena más larga dando vueltas que la gente ha comenzado a aceptar. Recordar que por la misma razón de que ya hay otra cadena dando vueltas otros nodos pueden haber comenzado a trabajar sobre esta cadena. Cada 10 minutos, en promedio, alguien suma un bloque a esta cadena. Así que existe esta cadena más larga dando vueltas y Dan quiere crear la su propia cadena fraudulenta. Entonces para que su cadena sea creíble debe lograr que su cadena sea la más larga y debe hacer todas estas pruebas de trabajo para crear la cadena más larga. Para lograr crear la cadena más larga por su cuenta, Dan debe superar el trabajo puesto en la cadena existente. Lo que quiere decir que no sólo debe resolver un puzzle de prueba de trabajo, pero puede que deba resolver varios puzzles para crear una cadena que, si tiene suerte, será más larga que la que hay dando vueltas. Si él logra crear la cadena más larga y logra que las demás personas comiencen a usarla.. y esta es la cadena que él quiere utilizar porque contiene la transacción fraudulenta, y borra la transacción donde le paga a Pete. Para resolver esta prueba de trabajo, Dan debe usar todo el poder computacional al que tiene acceso y debe comenzar a trabajar en resolver los puzzles de prueba de trabajo. Y no se conoce ningún atajo para resolver los puzzles. Si recuerdan de alguno de los videos de pruebas de trabajo, tener éxito en las pruebas de trabajo es como ganarse la lotería. Realmente depende del poder computacional que tenga. Entre más poder computacional tengas, tienes más tickets de lotería. Incluso si una persona tiene sólo un ticket de la lotería tiene posibilidades de ganársela, pero son considerablemente menos que una persona que tiene muchos tickets de lotería en la mano. E incluso si logras ganar la lotería con un pequeño número de tickets, la probabilidad de hacerlo varias veces seguidas, es considerablemente más pequeña. Eso es exáctamente lo que debe hacer Dan. Debe ganar la lotería múltiples veces hasta que logre tener la cadena más larga. Entonces lo que hay que mirar es la capacidad computacional de Dan versus la capacidad computacional combinada de todos los nodos honestos en el sistema. Si fuera el caso que todos los nodos honestos... llamémoslo el "poder computacional honesto". Cuando digo "poder computacional honesto" me refiero al poder computacional total de todos los nodos de mineros de bitcoins honestos que hay en la red. Si ese poder computacional total al que tienen acceso es mayor que el poder al que tiene acceso Dan, "el poder computacional de Dan", entonces el sistema estará seguro porque será difícil para Dan crear esta cadena de transacciones fraudulentas, al no poder superar a la gente honesta. La gente honesta ganará la lotería más seguido y creará la cadena más larga por lo que los esfuerzos de Dan serán una batalla difícil de ganar. Siempre es posible que Dan tenga acceso a una gran capacidad computacional, quizás tenga mucho dinero y recursos pero realmente necesitará mucho para lograrlo. Más que toda la gente honesta sumada. Esta es una razón de por qué la cadena de bloques es segura. Porque es muy improbable que un individuo tenga acceso a tanto poder computacional. Ahora, tengo que aclarar que existe otro aspecto en la seguridad de las bitcoins. Si Dan tuviera acceso a esa cantidad de poder computacional para resolver los puzzles de prueba de trabajo, en vez de tratar de luchar la batalla para lograr ingresar su cadena de bloques y así crear transacciones fraudulentas, a Dan probablemente le covendría usar ese poder computacional para minar bitcoins de manera honesta. Recordar que los mineros de bitcoins que resuelven los puzzlez de prueba de trabajo obtienen tanto la recompensa por lograrlo obtienen un número de bitcoins, y además se llevan todos los costos de transacción asociados al bloque que han logrado validar. Por lo que existe un incentivo económico para que Dan se comporte honestamente. Sólo para ir cerrando este video, la seguridad en las transacciones de bitcoins viene de todas las barreras matemáticas que dificultan la tarea para que Dan cree bifurcaciones de manera deshonesta además de incentivos económicos para que se comporte honestamente al minar bitcoins para él mismo. . .