2020/08/09

Qué es una Red (P2P) Peer to Peer?

Las redes P2P o Peer-to-Peer son un tipo de redes descentralizadas que están formadas por cientos e incluso millones de ordenadores ubicados en todo el mundo. Todas ellas funcionando bajo un mismo protocolo de comunicaciones, con el objetivo de crear una enorme red para compartir información de cualquier índole.

Una red P2P, o peer-to-peer, es una red donde un grupo de personas o máquinas participan de forma completamente descentralizada. Es decir, es una red donde no hay un punto central de conexión, y donde las partes actúan de forma autónoma respondiendo a un protocolo común. Con ello, los integrantes de la red pueden intercambiar información de forma directa y sin intermediarios.

Para su funcionamiento, las redes P2P se construyen sobre protocolos que se ejecutan sobre los protocolos de Internet. De allí que sus protocolos se les denominan protocolos de aplicación o Layer 7, según el modelo Open Systems Interconnection u OSI.

Los protocolos P2P, han sido ampliamente utilizados desde su creación para distintos usos. Algunos legales, otros un tanto grises, pero pese a ello, hay una cosa muy clara, el protocolo P2P es muy potente y permite la creación de estructuras descentralizadas, difícilmente censurables y de uso libre. Por esa razón, criptomonedas como Bitcoin fueron construidas sobre la base de protocolos P2P.

Dicho esto, conozcamos un poco más sobre estos protocolos y su evolución.

Origen e historia del P2P:

El origen de la primera red P2P la podemos rastrear hasta la creación del protocolo UUCP o Unix to Unix Copy Protocol, en 1980. Este protocolo dio origen a la red USENET y a los BBS, redes que aún se encuentran activas y funcionando en nuestro tiempo.

El principio de funcionamiento de estos sistemas es sencillo: la máquina realizaba una llamada de conexión (conexión por marcación) usando un modem. Pero gracias al protocolo UUCP, la maquina se podía comunicar con otra máquina objetivo, compartiendo información en ese proceso. Al terminar la llamada la conexión, se podía dar inicio a otra conexión con otra máquina. Y todo era posible sin una estructura como la del Internet que conocemos hoy, una red y tecnología que para ese entonces aún estaba en desarrollo.

En su momento, USENET y el protocolo UUCP fueron la cumbre de las comunicaciones. De hecho, el movimiento cypherpunk inició con el uso de este protocolo. Personajes como Saint Jude, Eric Hughes, Timothy C. May, Davis Chaum, hacían uso de estos sistemas para compartir información en los tablones BBS de la comunidad Cypherpunks.

Más tarde, en 1983, llegó al mundo el protocolo TCP/IP. Este nuevo protocolo buscaba flexibilizar la creación de grandes redes globales. A esto siguió el establecimiento del sistema OSI en 1989, y la creación de la WWW en 1990. La unión de estos tres elementos es lo que permitió crear Internet, la gran red global que todos usamos en la actualidad. La creación de Internet, solo traería consigo mayores avances en la creación de sistemas P2P.

¿Cómo funciona una red P2P?:

El funcionamiento de una red P2P es relativamente sencillo. Básicamente lo que se hace es construir un protocolo (lenguaje) de comunicaciones que permita a las personas que usan dicho software comunicarse de forma directa y sin intermediarios. El mayor problema frente a la construcción de estos sistemas es Cómo diseñar un sistema que permita que esta comunicación pueda ser establecida frente a procesos que puedan impedir, por ejemplo, la existencia de un índice de peers conocidos.

La situación se solventa a sí misma gracias a una mayor distribución entre sus partes. Es decir, mientras más pares tenga la red, más posibilidades hay de que la red no pueda ser censurada. En los primeros sistemas P2P, como USENET o IRC, los sistemas y sus conexiones se hacían conocer por medios escritos, llamadas, o el mismo sistema que tenía un tablero de pares a los cuales poder conectarse. Cada nuevo integrante en la red, tenía acceso a la lista de peers y con ello se auto añadía. No solo eso, ese nuevo peer podía ser la puerta de entrada a la información de peers que pudieran bloquearse.

Pero la creación de redes más grandes como el IRC, DCC, DC++, Napster, Gnutella, BitTorrent e incluso Bitcoin cambió drásticamente esto. Ahora cada nodo se conectaba a un punto, obtienen una lista de peer Iniciales (o nodos semillas). Y a partir de allí, cada nodo es capaz de recrear una lista propia de nodos que pertenecen a la red. Como resultado se obtiene una mejor resistencia a la censura y la red puede crecer más rápidamente.

Por supuesto, el funcionamiento de cada protocolo es distinto. IRC por ejemplo, es un sistema distribuido (casi centralizado) de servidores que pueden darte la capacidad de conectarte punto a punto con una persona. Pero DC+ y Gnutella, son completamente descentralizados, sus redes están pensadas para que de forma automática, la red se ajuste con la entrada y salida de nuevos nodos a la red.

Lo mismo pasa en Bitcoin, donde la red comenzó con una sola semilla, la iniciada por Satoshi Nakamoto, y desde entonces, la red ha ido creciendo paulatinamente para convertirse en una red con un tamaño superior a los 10 mil nodos en activos. Por supuesto, el objetivo de Bitcoin es distinto al de una red como Gnutella, pero los principios del protocolo se mantienen: comunicar a dos partes sin intermediarios.

Ventajas y Desventajas de esta tecnología

Ventajas:

  1. Una red P2P es resistente a la censura. Una red P2P altamente descentralizada es prácticamente imposible de censurar.
  2. Ofrecen un resiliencia inigualable. Si un nodo cae, otro nodo puede tomar su lugar. Por eso dicen que las redes P2P pueden sobrevivir a una catástrofe nuclear, porque estas pueden destruir muchos nodos, pero si solo uno sobrevive, la red puede reconstruirse por completo.
  3. Las redes P2P pueden llevar a soluciones de escalabilidad potentes para presentar servicios únicos con alcance global.
  4. Al no depender de entidades centrales, las P2P generan más confianza en sus usuarios. 
  5. Ofrecen un alto nivel de ancho de banda. Esto gracias a que aprovechan el ancho de banda de cada participantes, para transformarlo en propio de la red.
  6. Sirven para transmitir información digital de cualquier tipo. Desde tu canción favorita a cientos de millones de dólares, en segundos.

Desventajas:

  1. Una red P2P es resistente a la censura, pero no te hace anónimo a menos que esté diseñada para ello, incluso, si esa red usa cifrado. El mejor ejemplo es BitTorrent, donde los ISP pueden detectar el uso del protocolo, y con ello advertir a las autoridades de la descarga ilegal por parte de un usuario.
  2. El diseño de las redes P2P generan que a mayor tamaño aumente la latencia. Es decir, para que una información llegue a todas las partes que forma la red, se tomará más tiempo en una red P2P de gran tamaño que en una de menor tamaño. De allí que se busquen nuevos algoritmos y protocolos que ayuden a superar este problema.
  3. Los protocolos P2P tienen una serie de problemas estructurales conocidos. Casos como los ataques MITM para tomar el control de nodos, debido a que estos deben estar conectados todo el tiempo de forma pública son uno de estos fallos. También los protocolos son susceptibles a ataques de enrutamiento o cosas tan sigilosas como un ataque Eclipse o un ataque Erebus. 


Bitcoin una red P2P para manejar valor:

Bitcoin es una de las redes P2P más grandes que existen en la actualidad, con sus más de 10 mil nodos activos, Bitcoin es una red global que permite a sus usuarios manejar valor sin intermediarios. Lo único que debe hacerse es descargar un software que permita interactuar con esta red, y ya podrás hacer uso de la misma.

La construcción de Bitcoin como una red P2P responde a la necesidad de descentralizar sus capacidades. De nada vale crear una moneda con criptografía, si esta luego es manejada por una entidad central. Eso sería simplemente crear un nuevo banco central. En su lugar, Satoshi Nakamoto deseaba una red global, incensurable, segura y privada que permitiera manejar valor. Así que para ello, Nakamoto diseño Bitcoin sobre la base de una red P2P usando un protocolo propio diseñado bajo los principios del Protocolo Kademlia y Protocolo Gossip.

El resultado, es que Bitcoin es una red P2P que, prácticamente, no se puede detener. Incluso con sus fallas estructurales, el protocolo P2P fue la mejor decisión que Nakamoto pudo tomar en el diseño de Bitcoin. Con ello se aseguró de crear un dinero digital que sirviera a los intereses del mundo y de sus usuarios.

P2P para resolver los problemas del dinero digital:

Lo mejor de todo, es que Bitcoin con su sistema P2P ha logrado crear un sistema de contabilidad distribuido en el que problemas como el doble gasto son cosas del pasado. El doble gasto, era uno de los problemas principales del dinero digital. La posibilidad de duplicar el dinero y falsificarlo, era algo que no había tenido solución hasta que Satoshi Nakamoto diseño la blockchain y su protocolo P2P para Bitcoin.

Desde entonces somos capaces de usar criptomonedas con total seguridad sabiendo que nuestro dinero no solo está en un protocolo abierto, transparente y libre, sino que también jamás podrá ser falsificado. Y todo ello porque cada nodo tiene un historial de transacciones de la red, siendo testigo de cada operación en la misma. Esta enorme red de testigos, permanece como un registro inmodificable de todo lo que sucede y nos da la seguridad de que el sistema no es manipulable.

Algo realmente útil y que permite transformar a Bitcoin en un dinero digital seguro, el más seguro y transparente de todos.

Otros eventos importantes en el origen de P2P

El nacimiento del IRC:

En 1988, un joven llamado Jarkko Oikarinen diseñó el protocolo IRC, con el fin de reemplazar un programa llamado MUT (MultiUser Talk) en un BBS llamado OuluBox en la Universidad de Oulu en Finlandia, donde trabajaba en el Departamento de Ciencia de Procesamiento de Información.

Su intención era extender el software BBS que administraba, para permitir noticias al estilo de USENET, discusiones en tiempo real y características similares al BBS. La primera parte que implementó fue la parte del chat, que hizo con partes prestadas escritas por sus amigos Jyrki Kuoppala y Jukka Pihl. La primera red IRC se estaba ejecutando en un único servidor llamado tolsun.oulu.fi.

El hecho de que el protocolo fuera diseñado para usar TCP/IP le dio una enorme flexibilidad a futuro. De hecho, para 1990 se fundaba la primera red IRC de gran tamaño, la EFNet. El papel de EFNet fue vital para las comunicaciones globales durante el conflicto del Golfo Pérsico, permitiendo que se pudiera conocer en tiempo real lo que pasa en el campo de batalla. Mostraba así que el potencial de IRC frente al correo era superior, al menos en inmediatez e interactividad  de comunicaciones. Lo mismo ocurrió con la Caída de la Unión Soviética, donde el IRC también fue vital en el papel de comunicar lo que pasaba al mundo en tiempo real.

Desde entonces, el protocolo IRC sufrió una enorme expansión y aceptación naciendo redes como UnderNet, DALnet, Freenode (muy usada para proyectos de software libre), Rizon e Immortal-Anime (ahora Xertion). La ampliación en su aceptación trajo más desarrollo al protocolo, y de allí nació uno de los primeros sistemas P2P sobre Internet, el IRC-DCC, o IRC Direct Client-to-Client.  El sistema permitía comunicaciones directas entre las partes sin intermediarios, compartir archivos, comunicación cifrada punto a punto (OTR) y más.

Nacimiento de HotLine Connect:

Para 1996, vendría otra creación  en el mundo del P2P, creada Adam Hinkley. HotLine Connect era una red P2P para compartir archivos que utiliza un sistema de trackers para permitir que dos usuarios pudieran intercambiar información. Muy usado hasta finales de 2000, cayó en desuso gracias a la aparición de otros protocolos más flexibles y el importante ascenso del IRC-DCC.

Gnutella:

Gnutella es un desarrollo de red P2P para compartir archivos desarrollado en el año 2000 por Justin Frankel y Tom Pepper. Frankel y Pepper eran trabajadores de Nullsoft, la empresa creadora del reproductor Winamp y el servicio de streaming de audio Shoutcast

Desde ese entonces y hasta ahora, Gnutella es la mayor red P2P que existe en el mundo, con aproximadamente 12 millones de nodos en todo el mundo.

El nacimiento de Napster:

Napster fue un software desarrollado por Shawn Fanning en 1998 y permitía la descarga de  música de forma gratuita. Si bien Napster no era una red P2P pura (como el caso también de IRC), permitía que dos personas pudieran intercambiar música sin intermediarios externos a los que existían en la red y sus servidores. Pero Napster tocó los bolsillos de la industria musical y tras un largo juicio fue cerrado en julio de 2001.

Sin embargo, lo que Napster había hecho llamó al mundo a desarrollar sistemas más descentralizados.


Alejandro Asharabed
+54911 5665 6060
Buenos Aires, 09 de Agosto 2020

Qué es el Consenso en Criptomonedas?

El consenso es parte fundamental del funcionamiento de la tecnología blockchain y las criptomonedas. Ello se debe a que es el pilar que garantiza la seguridad de la cadena de bloques, ya que controla el hecho de que todos los que participen en la red acepten de forma unánime la información que dicha cadena contiene.

Uno de los principios más importantes en la naturaleza de las criptomonedas es el consenso. El consenso o ‘consensus’ no es más que la aceptación por todos los miembros de la red blockchain de que la información que hay en la misma. De esta forma, todos en la red aceptan que la información no tiene manipulaciones ni datos erróneos o duplicados.

En una red de tipo Blockchain la información se agrupa en bloques y éstos son validados mediante el minado. Por tanto, lo primero que debemos tener en cuenta es que el consenso es el sistema de sincronización entre todos los nodos de la red. Mediante esta sincronización todos los ordenadores que forman parte de la red pueden estar seguros de que la información es correcta y no existen manipulaciones.

Antes esta situación surge la siguiente cuestión:

La respuesta es: mediante un acuerdo entre los nodos de la red. Esto permite una especie de ‘auditoría’ que impide que alguien pueda mandar información manipulada a la blockchain.

Consenso en criptomonedas: Caso Bitcoin

Para evitar que se añadan bloques erróneos en la cadena de bloques, cada uno de esos bloques necesita una revisión y una confirmación. Este proceso sucede en todas las blockchain y la primera en implementarlo fue el Bitcoin. Mediante el sistema de consenso en Bitcoin se establece si el bloque incluye información correcta y, por tanto, si puede ser añadido a la blockchain o no.

Uno de los requisitos que nos garantizan que el proceso de validación sea óptimo es que todos los nodos acepten los datos de  para confirmar la integridad de los datos. Esto incluso, en el caso de que algunos nodos sean fallidos o bien no sean confiables.

Los mineros son imprescindibles para que las transacciones sean incluidas en un bloque. Sin embargo, son los nodos de la red los que trabajan en la realización de la validación de la información incluida en dicho bloque. Por ese motivo es importante que haya el mayor número de nodos completos en la red Bitcoin. Si desear ejecutar un nodo completo de la red Bitcoin, desde la web oficial tienen un excelente tutorial que puedes seguir.

Adicionalmente, con el sistema de consenso de bitcoin nos aseguramos que ninguna entidad pueda manipular o controlar toda la red. 

Cuando no se alcanza el consenso según las normas que nodos y mineros establecen para incluir y validar la información dentro de una cadena o blockchain, se dan situaciones que llevan a realizar bifurcaciones en la cadena, ya sean duras (hard fork) o suaves (soft fork). 

Cabe destacar que cada moneda tiene su propia red de nodos y algunas pueden tener protocolos más exhaustivos para evitar ataques a la cadena de bloques.

Lo más importante es que el consenso evita lo que se conoce como doble gasto. 

Consenso para protegernos del doble gasto en criptomonedas

Ahora bien imaginemos que una persona hace uso de unas criptomonedas determinadas (por ejemplo realiza una transacción de compra) y después de hacerlo decide revertir la operación manipulando la información del bloque donde figuren la/s transacción/es anteriores. En este caso, suponiendo que logre eliminar la información del bloque donde han quedado registradas sus transacciones, podría volver a gastar las monedas de nuevo. Esto es en esencia el doble gasto. 

Adicionalmente, el consenso lo que hace es recompensar e incentivar a los que mantienen viva la Blockchain en funcionamiento 24 horas al día 7 días a la semana. Al hacer este reparto entre los que colaboran en mantener la red, se obtiene un beneficio y esto incentiva a seguir trabajando en la integridad de la red.


Alejandro Asharabed
+54911 5665 6060
Buenos Aires, 09 de Agosto 2020