sábado, 25 de marzo de 2017

Presentamos Redtooth


Es como el Bluetooth, pero con un alcance global que permite emparejar dispositivos a través de Internet.

Redtooth es el nombre de nuestra tecnología de cliente que estamos construyendo actualmente. Esta es la tecnología que se ejecuta en los dispositivos del usuario final y facilita las conexiones de dispositivo a dispositivo. Utiliza los diversos servicios del Intenet of People (IoP), incluidos los servidores de perfiles, los servidores STUN y TURN, las redes LOC y CAN, etc. Es esencialmente una biblioteca cliente de IoP que ayuda a las aplicaciones que tiene conectadas a gestionar todos los protocolos de bajo nivel necesarios para interactuar con estos servicios; poniendo disponible a las aplicaciones una API fácil de usar, localmente dentro del dispositivo del usuario final.

¿Cómo es Redtooth similar a Bluetooth?
  • Conexión de dos dispositivos: ambas tecnologías se utilizan con el mismo propósito de conectar dos dispositivos.
  • Sin intermediarios: Una vez conectados no hay intermediarios. Nadie sabe que dos dispositivos están conectados a través de Bluetooth. Lo mismo es cierto para Redtooth.
  • Capacidad de usos múltiples: Diferentes aplicaciones pueden utilizar Bluetooth para diferentes propósitos. Lo mismo ocurre con Redtooth.
  • Capa física subyacente: Bluetooth utiliza radiofrecuencia. Redtooth retransmite información a través de Internet. Utiliza Internet of People para localizar el dispositivo remoto y establecer una conexión directa.
  • Concepto de aparejamiento: las personas ya son conscientes de que existe un procedimiento para emparejar dispositivos Bluetooth y, una vez emparejados, los dispositivos se recuerdan entre sí. También saben que un dispositivo puede requerir una autorización de usuario final para poder emparejarse con otro dispositivo. En Redtooth mantenemos estos mismos conceptos.

¿Cuáles son las diferencias entre ambas tecnologías?
  • Estándar: Bluetooth es un estándar ampliamente adoptado que normalmente se incluye en el nivel del sistema operativo. Redtooth nació hoy y necesita ser empaquetado como un servicio que se descargara e instalará, para luego ser utilizado por las aplicaciones. En el caso de los móviles, esperamos que Redtooth tenga una interfaz de usuario similar y conexión a Bluetooth.
  • Conexión simple / múltiple: Bluetooth permite que un dispositivo se conecte a solo otro dispositivo. Redtooth, por el contrario, permite que un dispositivo esté conectado simultáneamente a muchos dispositivos diferentes.

¿Qué hay dentro de la Biblioteca Redtooth?
Si pudiera observar en su interior, encontrará un cliente del servidor de Tokens (IoP SPV Wallet), un cliente CAN NET, un cliente LOC NET y un cliente PRO SRV. También encontrará un módulo para manejar todos los dispositivos emparejados y algunas cosas más. Cada vez que lanzamos un nuevo servidor IoP o un Componente de Red, se necesita una actualización a esta biblioteca y se agrega un módulo cliente para este componente.

¿Quién usa Redtooth?
Redtooth se utiliza raramente de manera directa por las aplicaciones excepto por aplicaciones de bajo nivel como el IoP ​​Explorer. En su lugar, Redtooth es utilizado por otra biblioteca llamada App de Servicios IoP. Esta biblioteca tiene un componente para cada posible caso de aplicaciones IoP conectadas. Este componente encapsula el protocolo de mensajes IoP para ese caso de uso en particular.

Digamos, por ejemplo, que una aplicación de chat desea comunicarse con otra aplicación de chat remoto. La aplicación de chat local va a los Servicios de aplicaciones de IoP y realiza una solicitud para acceder al servicio de aplicaciones de chat de IoP. Procede a solicitar una llamada de servicio de aplicación a la aplicación del chat remoto. Este servicio utiliza Redtooth, que a su vez establece una conexión directa entre dispositivos. Redtooth en el dispositivo local se conecta a Redtooth en el dispositivo remoto. Una vez establecida la conexión, dentro de la biblioteca de Servicios de Aplicaciones IoP, el servicio de aplicaciones de chat de IoP se conecta al servicio remoto de aplicaciones de chat IoP.

Desde el punto de vista de la aplicación de Chat, está conectado al servicio local de chat IoP y todo lo demás es transparente. Desde servicio de aplicación de chat IoP, tiene una referencia local a un objeto que representa el servicio remoto de aplicación de chat IoP, y sólo necesita ejecutar métodos en ese objeto y eso es todo lo que sabe. Este objeto está pasando estos mensajes a la biblioteca del servicio de la aplicación de IoP que a su vez redirige el mensaje a la biblioteca local de Redtooth, que tiene una conexión abierta de TCP / IP a la biblioteca remota de Redtooth.

Conclusión
Redtooth es nuestra infraestructura de bajo nivel que se ejecuta en dispositivos de usuario final. Sobre él los servicios de aplicación de IoP implementan los diferentes protocolos IoP que permiten realizar llamadas de servicio de aplicaciones. Por último, los las aplicaciones utilizan los servicios de aplicaciones de forma transparente sin conocer los detalles subyacentes.
Este es un post técnico que cubre algunos aspectos técnicos de la Internet de las Personas. Si está interesado en encontrar publicaciones técnicas similares sobre el mismo tema, esta lista puede ayudarle:

La estructura de datos asegurada criptográficamente que usamos para almacenar perfiles y sus relaciones.
La arquitectura de Internet of People a fondo.
El software que es la piedra angular del Internet of People.
La red geo-localizada que ayuda a otros servicios a estar ubicados geográficamente.


El Internet Of People se construye por el Proyecto Fermat. Si te gusta lo que lees puedes visitar nuestra comunidad en Slack.

Fermat, el Internet Of People y la Economía Persona a Persona

Esta es mi visión sobre una especie humana descentralizada y conectada. También es un plan de cómo llegar ahí. La descentralización hace a los seres humanos más resilientes y eventualmente libres. Ofrezco una alternativa a la ruta actual donde todos los seres humanos estarán conectados a una entidad como la “Matrix” que controlará todo, o un futuro similarmente sombrío al descrito en la novela de George Orwell "1984".


El Proyecto Fermat
Imaginamos un mundo donde la gente pueda interactuar  electrónicamente de forma libre sin interferencias innecesarias de terceros. Tanto para las interacciones sociales y comerciales. No hay espionaje, no hay censura, no se toma una comisión en las transacciones privadas entre individuos, no se extrae información privada, no hay intermediarios innecesarios. Un mundo donde las personas son más importantes que entidades como empresas y estados, un mundo donde la gente tiene las opciones y los medios para interactuar directamente entre sí.

Hemos estado viviendo dentro de una tendencia en curso hacia la centralización del poder y el control. En la actualidad un puñado de entidades (gigantescas empresas o conglomerados y algunos estados) dicta lo que un enorme porcentaje de la población mundial puede o no puede hacer. En este camino actual no es difícil predecir que algún día en el futuro alguna entidad lo controlará todo y no es cuando las cosas pueden ir realmente mal. Fermat es una comunidad de personas que se oponen a esta tendencia, con el objetivo de crear un futuro donde los seres humanos estarán conectados entre sí, pero de manera descentralizada.

Necesitamos comunicación directa entre dispositivos, con los datos almacenados en los dispositivos del usuario final y las aplicaciones construidas para interactuar entre sí directamente, a través de Internet, pero sin pasar por la web o sin requerir ningún servicio de cualquier empresa o institución. Necesitamos aplicaciones Persona a Persona que pueden funcionar independientemente de cualquier entidad. Esta es la visión del Proyecto Fermat.

¿Cuál es el camino para llegar allí?
Hoy en día, el eCommerce y las interacciones sociales electrónicas están dominadas por un puñado de gigantes de la tecnología. Usando diferentes tecnologías han construido enormes redes privadas de individuos atrapados en esas redes y sujetos a las reglas arbitrarias que imponen y los honorarios que se cobran a los usuarios. Las personas en estas redes privadas usualmente tienen su información privada en manos de los proveedores,  su privacidad expuesta y potencialmente hackeada. El camino para cambiar esta situación es el siguiente:

1.- Comunicación directa entre dispositivos: Tenemos que conectar nuestros dispositivos personales entre sí con conexión directa a través de Internet.

2.- Aplicaciones P2P (Persona a Persona): Necesitamos aplicaciones para nuestros dispositivos personales que saben cómo comunicarse entre sí directamente a través de una conexión de dispositivo a dispositivo.

Comunicación entre dispositivos
Los dispositivos personales, como tu ordenador personal o tu teléfono móvil, se conectan a Internet a través de su proveedor de servicios de Internet. En contraste con los servidores Web de Internet, tus dispositivos personales no tienen una dirección de Internet pública que permite que otros dispositivos personales se conecten a ellos directamente. Eso significa que cuando usas una aplicación para interactuar con otra persona, siempre vas a través de servidores privados propiedad de la compañía que construyó esa aplicación. Esta empresa obtiene beneficios ya sea cobrándole una tarifa por su servicio, tomando una comisión en tus transacciones, forzándote a consumir anuncios, extrayendo tu información personal, espiando tu comunicación, o elevando tu valoración para tenerte en su red privada o cualquier combinación De la anterior.

redcapitulos.png

No hay ninguna limitación física para que mi teléfono se conecte directamente a tu teléfono a través de Internet. Al final, los teléfonos inteligentes también son computadoras. Ellos no pueden hacerlo hoy porque está en contra del interés de poderosos intermediarios que se benefician de actuar como un intermediario entre tú y yo. Hoy en día existen barreras artificiales que evitan que se produzcan estas conexiones de dispositivo a dispositivo. Las soluciones actuales disponibles implican siempre la confianza de la intermediación de un tercero para establecer esa conexión y el riesgo asociado con esa confianza. La buena noticia es que estas barreras técnicas pueden ser superadas sin necesidad de confiar en ningún tercero en particular. Tenemos un plan para eso y la infraestructura que se necesita construir es lo que llamamos el Internet of People.

Internet of People
Internet of People es la nueva infraestructura que necesitamos crear para que las personas puedan comunicarse entre sí utilizando sus propios dispositivos directamente sin depender de ningún tercero de confianza para establecer la conexión. Una vez que esta infraestructura esté lista y desplegada, habremos habilitado Aplicaciones P2P entre dispositivos.

Diapositiva13.PNG

Esta nueva infraestructura debe funcionar en la capa superior de Internet y debe ser tan descentralizada como la propia Internet. Eso significa que nadie será dueño de esta infraestructura y nadie debería ser capaz de controlarla. El Internet es una red de diversas redes que son propiedad de diversas compañías e instituciones que las operan. Ninguna de estas redes en particular es necesaria para que funcione Internet. Necesitamos heredar las mismas propiedades para crear una infraestructura tan resistente como la propia Internet. La forma de hacerlo es con una red P2P de nodos que puedan ser propiedad y operados de manera privada, pero ninguno de ellos es un punto único de falla, lo que significa que la propia red no puede ser controlada por ninguna entidad en particular.

Diapositiva14.PNG

Los proveedores de servicios de Internet, los operadores más comunes de estas redes, se benefician de las suscripciones pagadas por los usuarios finales para acceder a Internet. Estas suscripciones son independientes de las actividades que los usuarios finales hacen en la red o de la empresa que ejecutan en la capa superior de la misma. Los operadores de nodos de Internet of People también cobrarán tarifas de suscripción a los usuarios finales para usar sus nodos o la Red IoP en general. Estas suscripciones también serán independientes del propósito del uso y el negocio que las personas podrían ejecutar en la capa superior de la misma. Lo bueno del software cliente de IoP es que hará todo lo posible para esconder estos costos de los usuarios finales y gestionar los flujos entrantes de criptomonedas para pagar automáticamente por estas tarifas de suscripción, produciendo a los usuarios finales la percepción de que el servicio que las redes IoP ofrecen es completamente gratis.

Aplicaciones P2P (Person to Person Apps)
Puesto que hoy no hay casi ninguna conexión directa entre dispositivos, las aplicaciones de P2P no existen aún. Una vez que resolvamos el problema de cómo conectar un dispositivo a otro sin utilizar terceros de confianza para establecer la conexión, habilitaremos la existencia de aplicaciones P2P directamente conectadas y seguras.

Diapositiva15.PNG

Estas aplicaciones P2P nunca se va a desarrollar si no hay incentivo para los desarrolladores/empresarios para escribir su código y comercializarlos. Al mismo tiempo, los usuarios finales de estas aplicaciones necesitan un fuerte incentivo para usarlas.
El principal incentivo para que los usuarios finales utilicen estas aplicaciones son las transacciones más baratas debido a la desintermediación extrema, o lo que llamamos la Economía P2P, así como una mayor privacidad, anonimato y seguridad. El incentivo para los desarrolladores de P2P Apps provendrá de la demanda de nuevas aplicaciones P2P procedentes de usuarios finales que ya estén en la Economía P2P.

¿Qué es la economía P2P?
La economía de persona a persona es un área de producción, distribución, comercio y consumo de bienes y servicios por diferentes agentes en una ubicación geográfica determinada cuando no hay ninguna empresa como intermediario entre los consumidores que no se conocen o si existe La influencia se minimiza. En otras palabras, es la economía resultante de la desintermediación extrema, donde la mayoría de los intermediarios son eliminados.

Diapositiva16.PNG

Ahorrar dinero de manera consistente en varios casos de uso es una poderosa motivación para que los usuarios finales cambien de las redes privadas a la economía P2P. Necesitamos la economía P2P porque se convertirá en el motor que impulsa el uso de aplicaciones P2P, lo que a su vez creará una demanda de más aplicaciones P2P y, por tanto, un incentivo para los desarrolladores de aplicaciones P2P. La economía P2P es un ciclo virtuoso y deja de crecer cuando casi todos los intermediarios son eliminados y casi todo el valor permanece entre las partes involucradas en cada transacción. La economía de P2P junto con el IoP tiene la ventaja adicional sobre plataformas centralizadas de la innovación sin autorización.

Mapa de ruta

Diapositiva17.PNG

Para cumplir con la visión de Fermat y para lograr un futuro en el que la gente pueda interactuar libremente de manera electrónica sin la interferencia no deseada de terceros redundantes, primero tenemos que construir la Internet of People y luego arrancar la Economía P2P. Una vez que arranque la Economía P2P crecerá por sí misma abarcando todas las industrias hasta que ya no sea posible mayor desintermediación en cualquier actividad económica.

Fase Uno: Construir el Internet de la gente
El IoP ​​es una red P2P cuyo principal objetivo es facilitar la comunicación entre dispositivos. Hay varias otras redes P2P corriendo en Internet, cada una con diferentes propósitos. El más grande es BitTorrent y su propósito es compartir archivos. Cualquiera puede ejecutar un nodo BitTorrent y formar parte de la red. Los nodos son servidores y clientes al mismo tiempo, lo que significa que recuperan archivos de otros usuarios y también proveen de archivos a otros usuarios. Los nodos de BitTorrent no necesitan un incentivo económico ya que los usuarios finales los ejecutan para recibir archivos que quieren de forma gratuita. Otra red P2P es IPFS, o Inter Planetary File System.

Diapositiva18.PNG

La tecnología Blockchain introdujo  redes P2P con un incentivo económico, lo que significa que los operadores pueden ejecutar un nodo en busca de un incentivo económico, como honorarios de transacción o de minería. La red IoP P2P es de la misma categoría. Este incentivo económico suele recibirse en la criptomoneda nativa de la red. La red IoP se está ejecutando actualmente en modo beta con una pequeña cantidad de nodos, alrededor de 30 (a la fecha del artículo, nota del traductor).

Redes P2P de Blockchain
Las redes P2P basadas en Blockchain suelen tener aplicaciones de cliente que consumen servicios de la red. La red bitcoin, por ejemplo, tiene varias aplicaciones cliente como billeteras, ya que el propósito de la red Bitcoin es un sistema de pago en efectivo digital. Las aplicaciones cliente IoP pueden atender cualquier caso de uso, ya que la red IoP es multipropósito.

Diapositiva19.PNG

Todas las redes de blockchain tienen un sistema de criptomonedas que se comercializa en el mercado. Por lo tanto, todos ellas tienen un valor capitalización de mercado. Bitcoin lidera la clasificación en la actualidad con 11 Mil millones USD en la capitalización del mercado. A partir de noviembre de 2016 las criptomonedas IoP tokens serán ser listados con un valor de capitalización de mercado esperado de 25 Millones de USD.

Servicios de la red IoP

Diapositiva20.PNG

La Red IoP debe proporcionar varios servicios a las aplicaciones de los clientes para lograr su objetivo de permitir la comunicación P2P entre dispositivos sin terceros. Los usuarios finales de Aplicaciones P2P tendrán que encontrarse mutuamente, estar de acuerdo en tener algún tipo de relación o no (como amigos, contactos, etc.), acordar los detalles técnicos sobre cómo conectar sus dispositivos y finalmente establecer la conexión dispositivo al dispositivo para realizar negocios o comunicarse a través de dicha conexión.

Diapositiva21.PNG

Antes de que la Red IoP pueda establecer una conexión entre mi teléfono y el tuyo, necesito encontrarte en Internet y el desafío es encontrarte sin utilizar la intermediación de un tercero de confianza. Eso significa no usar Facebook, Google, WhatsApp, sin la participación de  empresa alguna. También hemos ampliado el reto al nivel en el que debería ser capaz de encontrarte sin que me des cualquier referencia, como un número de teléfono, y sin que me envíes cualquier identificación o cuenta a través de canales de comunicación inseguros como el chat o correo electrónico.

Servidor de perfiles
El camino a seguir aquí es tener un servidor de perfiles en la red IoP. Tal servidor te permitirá  cargar y alojar allí alguna información de búsqueda necesaria para poder encontrarte. Puede ser tu alias o tu nombre real. También puedes subir una foto de perfil y otra información que desees utilizar para que las personas te encuentren. De esta manera, esperamos que las aplicaciones P2P puedan crear dichos perfiles y los cargarían a un servidor de perfiles dentro de la red IoP.

Diapositiva22.PNG

Supongamos que te encontré en la Red IoP. Lo siguiente es establecer una relación contigo a nivel personal. Tu teléfono que publica tu perfil en un servidor de perfiles no es suficiente para poder enviarte un mensaje directamente a tu dispositivo, ya que es probable que no tenga una dirección de Internet pública. Esto significa que tu dispositivo requiere mantener una conexión con el servidor de perfiles de la red IoP donde está alojado tu perfil. Esto me permitirá enviarte una solicitud de "amistad" utilizando tu servidor de perfiles como intermediario. Una vez que establecemos una relación personal, puedo considerar interactuar contigo usando una de mis aplicaciones P2P.

Diapositiva23.PNG

Digamos, por ejemplo, que quiero hablar contigo. Lo que haría entonces es entrar en mi aplicación P2P para charlar. Esta aplicación le preguntará a tu servidor de perfiles qué servicios de aplicación tienes en ejecución en tu dispositivo. Hay miles de diferentes Servicios de Aplicación, y las aplicaciones de chat P2P usan uno llamado Chat Application Service. Cada vez que el dispositivo recibe conectividad a Internet, las aplicaciones P2P de tu dispositivo le informarán a tu servidor de perfiles que estás en línea y enviarán una lista de los servicios de aplicaciones disponibles en tu dispositivo. Si Chat es uno de ellos significa que tienes al menos una aplicación P2P Chat instalada. También significa que mi aplicación P2P Chat puede prepararse para hablar con tu aplicación P2P Chat, porque ahora sabe que tienes una.

Diapositiva24.PNG

Para conectar un dispositivo a otro cuando ambos están detrás del cortafuegos (lo que significa que no tienen direcciones públicas de Internet y también el tráfico de Internet es filtrado por estos cortafuegos) hay un conjunto de soluciones técnicas llamadas NAT Traversal (estas soluciones se realizan por especial Servidores llamados STUN). La mayoría de las veces estas soluciones funcionan y ambos dispositivos se conectan directamente uno a otro. En un porcentaje pequeños algunas veces estas soluciones no funcionan y la única opión es utilizar un servidor especializado para retransmitir la información entre dispositivos (se denominan servidores TURN). La negociación entre los dispositivos con respecto a qué servidor STUN utilizar, y otros detalles técnicos se denomina proceso de señalización y, en nuestro caso, el servidor de perfiles está equipado con esta función.

Servidor STUN
Diapositiva25.PNG

Los servidores STUN son una tecnología ya conocida, por lo que no hay necesidad de rehacerla. En su lugar, podemos utilizar una implementación de código abierto ya existente e integrarla como parte de la Red IoP. Lo único que tenemos que hacer en este caso es agregar los mecanismos necesarios para que el operador de este tipo de servidor tenga un incentivo económico.

Servidor TURN
Diapositiva26.PNG

Si el servidor STUN no logra conectarnos directamente entre dispositivos debido a algunas configuraciones especiales de cortafuegos, la única solución es comunicarnos a través de un servidor TURN. Esto te enviará toda la información que envíe, y me enviará toda la información que yo envíe. Esta tecnología ya existe por lo que lo único que tenemos que hacer aquí es tomar una implementación de código abierto y añadirlo al mecanismo de incentivos para los operadores.

Diapositiva27.PNG

Hasta ahora podemos decir que la Red IoP está formada por tres tipos diferentes de servidores, cada uno con un pequeño conjunto de responsabilidades.

Diapositiva28.PNG

De acuerdo, pero ¿cómo mi dispositivo selecciona un servidor de perfiles para alojar mis perfiles? ¿Cómo encuentran los servidores disponibles? Declaramos antes que la identidad de la gente no se debe confiar en los proveedores de identidad como Facebook, Google, LinkedIn, números de teléfono, etc. Hay dos situaciones diferentes en las que usted querría encontrar a alguien: Primero porque conoce a esa persona, segundo cuando no conoce a esa persona.

Diapositiva29.PNG

Si conoces a tu persona objetivo esto significa que sabes su nombre y por lo general la ciudad donde vive. Una manera de encontrar personas sin ninguna otra referencia que no sea su nombre y ubicación usual, implica la organización de los perfiles por ubicación.

Diapositiva30.PNG

Con una cantidad mínima de información no esperamos eficiencia en la búsqueda, pero al menos logramos que sea posible, incluso si eso significa pedir a varios servidores de perfil el reconocimiento de mi amigo. Pero antes de poder hacer eso necesitamos aplicaciones P2P para usar servidores de perfiles no demasiado lejos de la ubicación promedio de los usuarios finales buscados. De esta forma, otros usuarios finales podrán encontrarlos con un conjunto mínimo de información. Para que esto suceda, necesitamos que los servidores de perfiles funcionen en la capa superior de una red P2P basada en ubicación.

Red basada en ubicación
Diapositiva31.PNG

Esta red P2P está geolocalizada. Esto significa que cada nodo define una ubicación física en la tierra (no es necesario ser muy preciso). Una vez en la red, atraerán aplicaciones P2P que estén dispuestas a recibir perfiles de usuarios finales en la región cercana. Si una aplicación P2P selecciona un servidor de perfiles en la ciudad de los usuarios finales de esa aplicación, eso permitiría a cualquier persona en el mundo que conozca a esos usuarios encontrarlos en la red sin ninguna identificación o referencia externa.

Diapositiva32.PNG

El segundo escenario es cuando quieres encontrar a alguien pero no conoces a esa persona. En esta situación hay dos opciones posibles: Es una persona específica y conoces su identificación, o estás tratando de encontrar a alguien que está vendiendo algo, haciendo algo, interesado en algo, etc. Para el primer escenario necesitamos un índice de todos los perfiles por su ID. Para la segunda opción necesitamos una forma de explorar la red, preguntar a los Servidores de Perfil ciertas consultas y ver qué contestan, analizarla, continuar preguntando hasta encontrar la persona que deseas contactar.

Diapositiva33.PNG

En las redes P2P, cuando se necesita mantener un índice distribuido de algo en toda la red, la tecnología utilizada se denomina tabla distribuida de Hash (DHT). Hay muchas implementaciones de código abierto diferentes que podemos reutilizar.

Diapositiva34.PNG

Hay otra situación relacionada con el rendimiento cuando un servidor de perfiles único está alojando perfiles muy populares. En esta situación, el servidor de perfiles puede saturarse fácilmente si mucha gente solicita su información al mismo tiempo. Hay una solución disponible que resuelve ambos problemas: balanceo de carga y la indexación por ID. Esa es una red Content Address.
Red Content Address

Diapositiva35.PNG

Elegimos utilizar una implementación popular de una red Content Address y permitir que los Servidores de Perfiles inserten su información de perfil en esta red CAN para convertirse en una sembradora de esos perfiles. Esto les permite servir la información de perfil por sí mismos, pero también a través de la CAN, nos beneficiamos de sus capacidades de almacenamiento en caché, traducido en el equilibrio de carga de los perfiles populares.

Diapositiva36.PNG

Así que ahora sabemos que los Servidores de Perfiles funcionan bien en modo independiente, pero también participan en dos redes P2P diferentes: la red Content Address y la Red basada en ubicaciones. Eso plantea la pregunta: ¿qué red es la que los servidores STUN y servidores TURN ejecutan en su capa superior? ¿Cómo los encuentran los dispositivos de cliente?

Diapositiva37.PNG

Los servidores STUN no necesitan estar organizados por ubicación, por lo que no deben ejecutarse en la capa superior de la red LOC. Sus ID no son conocidos por los clientes y no proporcionan contenido para que no se ejecuten en la capa superior de la red CAN. La solución es una red P2P  desestructurada.

Red P2P desestructurada
Diapositiva38.PNG

Este tipo de red P2P como su nombre dice, no tiene una estructura particular. Sus nodos están interconectados aleatoriamente entre sí. Por lo general, estas redes tienen un propósito específico o proporcionan un conjunto de servicios específicos. En nuestro caso solo necesitamos una red P2P desestructurada sin propósito, ya que el servicio va a ser proporcionado por un software externo que funciona con el mismo hardware. El propósito de la red se convierte sólo en encontrar nodos funcionando junto con proveedores de servicios externos de un determinado tipo. En este caso particular, los servidores STUN.

Diapositiva39.PNG

Los servidores TURN proporcionan el servicio de retransmisión de información entre dos dispositivos que no pueden conectarse directamente entre sí. La naturaleza de este servicio requiere que se minimice la latencia entre estos dos dispositivos y el servidor TURN. Si los dos dispositivos pudieran elegir un servidor TURN con la latencia mínima, entonces la comunicación entre ellos será óptima.

Diapositiva40.PNG

No hemos encontrado hasta ahora ninguna implementación de una red P2P organizada por latencia entre sus nodos. Tenemos planes para implementar nuestras propias ideas para resolver el problema anterior. El objetivo de esta red es permitir que los servidores TURN funcionen en la capa superior de ellos y ayudar a los dispositivos cliente a elegir el mejor servidor TURN posible en cada situación, en función de la latencia.

Diapositiva41.PNG

Hasta este punto, la familia de componentes IoP ha crecido hasta 3 servidores diferentes y 4 redes P2P diferentes.

Aplicaciones P2P
Nuestro concepto de aplicaciones P2P es un software que se ejecuta en dispositivos de usuario final capaz de interactuar con una instancia de sí mismo que se ejecuta en un dispositivo remoto o incluso con una instancia de otras aplicaciones P2P que también se ejecutan en dispositivos remotos. Por ejemplo, una aplicación P2P podría ser una aplicación de chat. Si proporcionamos los medios para que la aplicación de chat se comunique con otra instancia de sí mismo que se ejecuta en un dispositivo remoto y ambas instancias pueden interactuar, entonces cae bajo la definición de una aplicación P2P.

Diapositiva42.PNG

Propiedades de las aplicaciones P2P
Diapositiva43.PNG

Imaginamos aplicaciones P2P con las siguientes propiedades:

  1. Almacenamiento de datos local: El almacenamiento primario y predeterminado de datos es el propio dispositivo local.
  2. Ejecución local: El entorno de ejecución principal y predeterminado para el código de la Aplicación se encuentra en el propio dispositivo local.

Diapositiva44.PNG

  1. Información indexada: Si hay alguna información que se necesita para localizar al usuario final y conectarse con él, esta información se puede almacenar fuera del dispositivo local. Perfiles de usuario final es un buen ejemplo. Éstos se almacenan en los servidores de perfiles.
  2. Información siempre en línea: Si hay alguna información que necesita estar siempre en línea (suponemos que los dispositivos de usuario final no lo son), esta información podría almacenarse fuera de dispositivos de usuario final (preferiblemente en un sistema de almacenamiento descentralizado como Maidsafe, Storj o IPFS)

Diapositiva45.PNG

  1. Ejecución multidispositivo: si es necesario, la ejecución puede abarcar más de un dispositivo que involucre a varios dispositivos de usuario final que ejecutan las mismas aplicaciones o aplicaciones similares. Por ejemplo, una aplicación que se ejecuta en mi teléfono puede solicitar algo de una aplicación que se ejecuta en tu teléfono, todo ello sin intervención del usuario. Digamos que mi aplicación es una cartera de criptomonedas. Una vez que te agregue como contacto, mi billetera puede solicitar una dirección de tu cartera. Tu billetera que se ejecuta en tu teléfono puede proporcionar esa dirección sin tu intervención.
  2. Contratos Inteligentes: Si es necesario, parte de la lógica puede ejecutarse en un entorno de ejecución de terceros (preferiblemente en entornos descentralizados y sin confianza como Ethereum o Rootstock).

Aplicaciones P2P híbridas
Las aplicaciones que tienen estas propiedades pero al mismo tiempo utilizan algún servicio centralizado para almacenamiento (como almacenamiento en la nube) o un entorno de ejecución centralizado (como Amazon Web Services) se denominan aplicaciones P2P híbridas. Al hacerlo, pierden su independencia y las propiedades de resistencia a la censura que disfrutan las aplicaciones P2P regulares.

Servicios adicionales descentralizados
Diapositiva46.PNG

Las aplicaciones P2P que se ejecutan en los dispositivos de los usuarios finales solucionan una gran cantidad de casos de uso. Sin embargo, algunos son imposibles de resolver sólo con Aplicaciones P2P, por ejemplo Proximidad y Reputación.

Proximidad
Hay varias aplicaciones que requieren encontrar a otros usuarios por proximidad. Por ejemplo, cuando el usuario final de una aplicación de pasajero de Taxi presiona el botón pedir un taxi, la aplicación debe encontrar todos los taxistas alrededor de ese usuario específico. Esta aplicación no se puede conectar al azar a otras aplicaciones para ver si hay un conductor de taxi conduciendo cerca.

La manera correcta de hacer frente a esta situación es permitir que los taxistas informen dónde están y los pasajeros soliciten esa información desde el mismo lugar que se están tomando los informes. Puesto que no queremos una solución centralizada, ya que convertiría las aplicaciones P2P en aplicaciones P2P híbridas, necesitamos un servicio de proximidad descentralizado.

Servicio de proximidad

Diapositiva47.PNG

El servicio de proximidad es un servicio adicional proporcionado por la infraestructura de Internet of People. Se compone de un servidor de proximidad geolocalizado que se ejecuta en la capa superior de la red basada en ubicación (LOC). Funciona así:

Diapositiva48.PNG

  1. Los operadores de servidores de proximidad inicialmente establecen una ubicación para su servidor en términos de latitud y longitud. No tiene por qué ser su ubicación precisa, pero debe ser por lo menos en su misma ciudad.
  2. Estos servidores se registran en la Red basada en localización, lo que significa que cualquiera puede solicitar a esta red el servidor de proximidad más cercano a un punto determinado del mapa.
  3. Siguiendo el ejemplo anterior, la aplicación del conductor de Taxi encontraría el servidor de proximidad más cercano.
  4. A continuación, la Aplicación del conductor de Taxi se registraría utilizando la aplicación, junto con su posición actual.
  5. Los pasajeros de los taxis también consultan la Red basada en la ubicación para encontrar el Servidor de Proximidad más cercano a ellos.
  6. A continuación, consulta este servidor la presencia de conductores de taxi alrededor.
  7. Dado que los taxistas siempre están cambiando su Servidor de Proximidad más cercano, siempre están disponibles para ser encontrados por proximidad.

Reputación
La reputación de la gente es un segundo conjunto de casos de uso que no se pueden resolver sólo con las aplicaciones P2P. No es posible que los usuarios finales almacenen su propia reputación ya que eso conduciría a hacer trampa: borrarían todos los registros malos para que parezcan limpios. Tampoco tiene sentido que mi reputación esté almacenada en tu dispositivo, ya que no siempre estás en línea, no puedes usar esa información cuando se necesita. Además, no podemos esperar que las aplicaciones P2P utilicen una solución centralizada, ya que las transformaría en aplicaciones P2P híbridas, perdiendo importantes propiedades inherentes a ellas.

La manera correcta de hacerlo es con un Servicio de Reputación descentralizado donde cualquiera puede enviar información de reputación de otras personas y también recuperar información de reputación en cualquier momento.

Servicios de Reputación
Diapositiva49.PNG

Los Servicios de Reputación son servicios adicionales proporcionados por Internet of People. Consisten en un servidor de reputación que almacena y proporciona información de reputación. Este servidor se ejecuta en la capa superior de la red de direcciones de contenido que facilita el acceso a la información de reputación en toda la red.

Arquitectura del Internet of People.
Diapositiva50.PNG

Con las últimas incorporaciones, la arquitectura de IoP se amplía para incluir estos nuevos servicios necesarios: Proximidad y Reputación.

Incentivos
La ejecución de todos estos servidores y nodos de red consume recursos: electricidad, espacio en disco, CPU, memoria, ancho de banda, etc. Cada uno de los servidores requiere un conjunto diferente de recursos. ¿Cómo incentivaremos a los operadores de nodos y servidores a ejecutar este software?

Necesitamos un sistema de criptomonedas para eso. Las monedas deben tener un mercado que los operadores podrían utilizar para cobrar y obtener la moneda de curso legal o criptomoneda necesaria para pagar sus gastos y tener un beneficio neto.

Servidor de monedas
Diapositiva51.PNG

Este servidor tiene internamente una blockchain que sirve como la tecnología subyacente para mantener un libro de registro distribuido de transacciones de criptomonedas. Un blockchain basado en bitcoin está diseñado como un sistema electrónico de pago en efectivo. Esto es perfecto para implementar un sistema de criptomonedas de aplicación que se puede utilizar para transacciones entre componentes de software.

Los servidores de monedas se ejecutan en la capa superior del nodo de red desestructurada, lo que permite la interacción entre los servidores de moneda y entre los clientes y los servidores.

Tipos de Incentivos
Diapositiva52.PNG

Blockchains como el que se utiliza en bitcoin, proporcionan dos tipos de incentivos: la emisión de nuevas criptomonedas  a algunos participantes de la red, y las comisiones de transacción pagadas por las entidades de transferencia de valor de una cuenta a la otra.

Diapositiva53.PNG

Bitcoin está diseñado como una sola red y el software realiza todas estas tareas en un solo componente: procesa transacciones, crea nuevos ficheros y ejecuta una red desestructurada. Así que en su caso, los dos incentivos van a quien ejecuta este componente de software. Esto fue cierto por un tiempo, hasta que alguien retiró la operación de minería de ese componente y lo ejecuto fuera, lo que permitió la creación de granjas mineras y piscinas de minado. Ahora ejecutar un componente de software bitcoin no tiene un incentivo económico, lo que resulta en una reducción del número de nodos en la red bitcoin, y una concentración de la minería en algunas entidades. Un número reducido de nodos conduce a una red menos resiliente.

Diapositiva54.PNG

¿Cómo evitamos que ocurra la misma situación en nuestras redes IoP? La solución es recompensar a los operadores con criptomonedas recién emitidas. Esto es cierto para los operadores que ejecutan el conjunto completo de nodos y servidores (nodos completos) o múltiples nodos y servidores si no es posible ejecutar un nodo completo (es posible que no tengan direcciones públicas de Internet para poder ejecutar servidores STUN o TURN por ejemplo). Para eso necesitamos Servidores de acuñación.

Servidor de acuñación.

Diapositiva55.PNG

Un servidor de acuñación es un componente de software IoP que ejecuta la lógica necesaria para emitir nuevas criptomonedas. Como queremos recompensar a los operadores de nodo completo, entonces también debe tener la lógica para detectar quién está ejecutando nodos completos. Los servidores de acuñación funcionan en la capa superior de un nodo de red no estructurado.

Diapositiva56.PNG

El software original de bitcoin tenía múltiples funcionalidades al mismo tiempo, incluyendo la acuñación (o minería). Trasladamos esa lógica a un servidor especializado para permitirnos agregar mejoras sin necesidad de interferir con la tarea de procesamiento de transacciones o mantener el libro de registro. También podemos ver cómo diferimos del software de bitcoin original, dividiéndolo en tres componentes IoP diferentes.

Arquitectura
Diapositiva57.PNG

Hasta ahora, la arquitectura de IoP con todos sus componentes se parece a esto. Voy a entrar en más detalles en futuras entrada. ¡Quédate en sintonía!

Conclusión
Tenemos una visión clara de una especie humana descentralizada y estamos ejecutando un plan a largo plazo para llegar allí. El plan se basa en la lógica, es viable y tiene sentido. El Internet of People y la economía Persona a Persona son enormes innovaciones necesarias para llegar allí. En Fermat estamos muy emocionados de estar construyendo hoy el mundo en el que todos viviremos.

Este es un post técnico que cubre algunos aspectos técnicos de la Internet de las Personas. Si está interesado en leer publicaciones técnicas similares sobre el mismo tema, esta lista podría ayudarle:

La estructura de datos asegurada criptográficamente que usamos para almacenar perfiles y sus relaciones.
Como Bluetooth con alcance global.
El software de la piedra angular de Internet de la gente.
La red geo-localizada que ayuda a la localización geográfica de otros servicios.

El Internet de la gente se está construyendo por el proyecto Fermat. Si te gusta lo que estás leyendo, echa un vistazo a nuestra comunidad en línea en Slack.

Nota.- Traducción realizada por @jmcpcancino del artículo de @Luis_fer_Molina publicada originalmente en Medium.